1、#include #define uint unsigned int /宏定义 #define uchar unsigned char /宏定义 uchar temp,aa,bai,shi,ge; sbit dula=P26; /段选信号位定义 sbit wela=P27; /位选信号未定义 uchar code table= /共阴极数码管编码表 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void display(uchar bai,uchar shi,uchar g
2、e); /显示程序 void delay(uint z); /延时程序 void init(); /初始化程序 void main() /主程序 init();/初始化子程序 while(1) if(aa=20) / 每隔 1s数码管加一 aa=0; temp+; if(temp=100) temp=0; bai=temp/100; /将 temp分离出来分别显示出来 shi=temp%100/10; ge=temp%10; display(bai,shi,ge); void delay(uint z) /延时程序大概 1ms uint x,y; for(x=z;x0;x-) for(y=11
3、0;y0;y-); void display(uchar bai,uchar shi,uchar ge) dula=1; /这里的段选和位选全 P0=tablebai; /部有 P0口输入,所以 dula=0; /用两个锁存器来帮助 P0=0xff; wela=1; P0=0xfe; wela=0; delay(5); dula=1; P0=tableshi; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(5; dula=1; P0=tablege; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(5); void init() wela=0; dula=0; temp=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; void timer0() interrupt 1 /用定时器 0 来进行定时 TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa+;