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);}
}