静态数码管显示
#include <REGX52.H>
unsigned char nixienum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67}; //数组,分别表示1、2、3、4、5、6、7、8、9
void nixie(unsigned char location,number) //定义函数
{
switch(location) //表示在哪个数码管亮起
{
case 1: P2_4=0;P2_3=0;P2_2=0;break;
case 2: P2_4=0;P2_3=0;P2_2=1;break;
case 3: P2_4=0;P2_3=1;P2_2=0;break;
case 4: P2_4=0;P2_3=1;P2_2=1;break;
case 5: P2_4=1;P2_3=0;P2_2=0;break;
case 6: P2_4=1;P2_3=0;P2_2=1;break;
case 7: P2_4=1;P2_3=1;P2_2=0;break;
case 8: P2_4=1;P2_3=1;P2_2=1;break;
}
P0=nixienum[number]; //数码管表示的数字
}
void main()
{
nixie(4,9); //子函数
while(1);
}
动态数码管显示以及消隐
#include <REGX52.H>
unsigned char nixienum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
void Delay(xms) //延迟函数,用来数码管消隐
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void nixie(unsigned char location,number)
{
switch(location)
{
case 1: P2_4=0;P2_3=0;P2_2=0;break;
case 2: P2_4=0;P2_3=0;P2_2=1;break;
case 3: P2_4=0;P2_3=1;P2_2=0;break;
case 4: P2_4=0;P2_3=1;P2_2=1;break;
case 5: P2_4=1;P2_3=0;P2_2=0;break;
case 6: P2_4=1;P2_3=0;P2_2=1;break;
case 7: P2_4=1;P2_3=1;P2_2=0;break;
case 8: P2_4=1;P2_3=1;P2_2=1;break;
}
P0=nixienum[number];
Delay(1); //延迟1ms
P0=0x00; //使数码管消隐
}
void main()
{
while(1)
{
nixie(1,0);
nixie(2,2);
nixie(3,5);
}
}