uchar code
//数码管显示0-9对应的编码,如0对应0x3F,1对应0x06,具体对应我不确定
xianshi[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//数码管显示函数,dat:要现实的数字,num1:应该是四个数码管,对应第几个数码管显示
void display_num1(uint dat,uchar num1)
{
P0=xianshi[dat]; //应该是p0接在数码管的i/o口
switch(num1)
{
case1: P2=0x01;break;//p2口接在数码管片选上,哪位置一代表哪个数码管显示
case2: P2=0x02;break;
case3: P2=0x04;break;
case4: P2=0x08;break;
default: break;
}
delay1_ms(2); //延迟让人眼可以看到,并且不出现重影
}
//显示要现实的数字
void display_num4(uint num)
{uint qian,bai,shi,ge;
qian=num/1000;
if(qian==0)qian=11; //如果千位为0则显示xianshi中的第11个内容,我也不知道会显示什么,估计是个特殊符号
display_num1(qian,4); //第四个数码管上显示千
bai=(num%1000)/100;
if(qian==11&&bai==0)bai=11;
display_num1(bai,3); //第三个数码管上显示百
shi=(num%100)/10;
if(qian==11&&bai==11&&shi==0)shi=11;
display_num1(shi,2); //第二个数码管上显示十
ge=num%10;
display_num1(ge,1); //第一个数码管显示个位数
}