1、功能描述
在八位数码管上显示自己学号后八位
2、实验原理
数码管就是通过线路将各个LED灯连接在一起。
P2控制LED的段选, P0控制LED位选。读取时从低位向高位读取,P2_2为高位P2_4为地位,例如P2_4 = 1; P2_3 = 0; P2_2 = 1,那么表示的就是LED6这个接口。
3、编程思路
定义一个数码管显示数字的字码表NixieTable,用于将数字转换为数码管能够识别的信号。
创建一个延时函数Delay,用于控制数码管的显示时间。
创建一个Nixie函数,根据传入的位置参数和数字参数,控制对应位置的数码管显示特定的数字。
在main函数中,通过循环调用Nixie函数,依次点亮所有数码管,并显示预设的数字,实现流水灯效果。
4、代码
#include <REGX52.H>
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number];
Delay(1);
P0=0x00;
}
void main()
{
while(1)
{
Nixie(1,1);
// Delay(20);
Nixie(2,1);
// Delay(20);
Nixie(3,1);
// Delay(20);
Nixie(4,1);
Nixie(5,1);
Nixie(6,1);
Nixie(7,1);
Nixie(8,1);
}
}