1、/此函数实现对数码管的控制显示个十百位数#include #define uint unsigned int#define uchar unsigned charsbit duan=P26;/七段选择sbit wei=P27;/片选,选择哪个数码管uchar aa,bai,shi,ge,temp;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void init();void delay(uint);void display(uchar bai,uc
2、har shi,uchar ge);void main()init();/调用初始化函数,定时器 0初始化,中断开启while(1)if(aa=20) aa=0;temp+;if(temp=100) temp=0;bai=temp/100;/百位shi=temp%100/10;/十位ge=temp%10;/个位display(bai,shi,ge); void delay(uint k)uint i;uchar j;for(i=k;i0;i-)for(j=110;j0;j-);/显示子函数void display(uchar bai,uchar shi,uchar ge)/显示百位duan=1
3、;P0=tablebai;duan=0;P0=0xff; /消影,下一步位选开启时,瞬间传入的是前面的 P0值,所以后 3个数码管有乱码wei=1;P0=0xfe;/6片全选wei=0;delay(1);/显示十位duan=1;P0=tableshi;duan=0;P0=0xff;/消影,下一步位选开启时,瞬间传入的是前面的P0值,所以后 3个数码管有乱码wei=1;P0=0xfd; wei=0;delay(1);/显示个位duan=1;P0=tablege;duan=0;P0=0xff;/消影,下一步位选开启时,瞬间传入的是前面的 P0值,所以后 3个数码管有乱码wei=1;P0=0xfb;
4、wei=0;delay(1); /* void display()if(aa=20)aa=0;ge+;duan=1;P0=tablege;duan=0;wei=1;P0=0xfd;wei=0;if(ge=10)ge=0;shi+;duan=1;P0=tableshi;duan=0;wei=1;P0=0xfe;wei=0;if(shi=6)shi=0;*/void init()duan=0;wei=0;temp=0;TMOD=0x01;TH0=(65536-50000)/256; /定时器装初值 50msTL0=(65536-50000)%256;EA=1;/开总中断ET0=1;/开定时器 0中断TR0=1;/启动定时器 0;使 TR0置位=1,定时器 0开始计数;停止时,使 TR0=0复位;void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;