#include
//函数声明
void Nixie(unsigned char Location,unsigned char Number);
void Delay(unsigned int xms);
void Zheng_Fan(unsigned char sign);
void main()
{
unsigned char i = 0;
// sige (0 : 正序显示 1 : 倒序显示)
unsigned char sign = 0;
while(1){
Zheng_Fan(sign);
}
}
//显示Location(Location : 1~8)位置的数码管 显示数字为Number(Number : 0~9)
void Nixie(unsigned char Location,unsigned char Number)
{
unsigned char NixieTable [] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};
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;
}
//延时 x ms
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms = xms-1;
}
}
//正序或倒序显示
void Zheng_Fan(unsigned char sign)
{
unsigned char i=0;
if(sign == 0){
for (i=1;i<9;i++){
Nixie(i,i);
}
}else if(sign == 1){
for (i=8;i>0;i--){
Nixie(i,9-i);
}
}
}