1、单片机倒计时器设计一 电路原理倒计时采用 stc89c52, 74hc573 驱动四位数码管以及按键构成。原理图如下:RP1 为上拉 10k 排阻晶振采用 12Mhz 无缘晶振数码管为四位共阴数码管74hc573 起所存作用四个按键分别连 P3.4P3.7二 工作过程单片机 上电初始化, P0 口输出 0,并把四位数码管全部打开,数码管显示四个 0。检测按键 如果按键 key1 按下 那么数码管第一位加 1。如果按键 key2 按下 那么数码管第一位加 1。如果按键 key3 按下 那么启动定时器,开始倒计时。如果按键 key4 按下倒计时暂停,数码管显示停留在当前数值。倒计时器用到了计时器工
2、作方式 0 和 t0 溢出中断设定计时器初值为 TH0=(65536-50000)/256;TL0=(65536-50000)%256;即 50ms 中断一次 20 次记一秒 从而达到记时一秒的目的。三 软件程序程序由 Keil uVision4 软件 用 c 语言编写,内容如下#include#include#define uc unsigned char;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x79,0x38
3、,0x3f,0;sbit dula=P26;sbit wela=P27;sbit key1=P34;sbit key2=P35;sbit key3=P36;sbit key4=P37;uc shu,shi,ge,bai,t0,num,ss;void shuma(shi,ge,ss);void delay(unsigned int z);void init ();void main()P3=0xff;init();while(1)if(key4=0)TR0=0;if(key3=0)TR0=1;if(key1=0)delay(5);if(key1=0)shi+;if(shi=10)shi=0;wh
4、ile(!key1);delay(5);while(!key1);dula=1;P0=tableshi;dula=0;if(key2=0)delay(5);if(key2=0)ge+;if(ge=10)ge=0;while(!key2);delay(5);while(!key2);dula=1;P0=tablege;dula=0;shuma(shi,ge,ss); void init()shi=0;ge=0;ss=0;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;EX0=1;void time0() inter
5、rupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0+;if(t0=2)t0=0;if(ss=0)if(ge=0)if(shi=0)TR0=0;elsege=9;shi-;ss=9;elsess=9;ge-;elsess-;void shuma(shi,ge,ss)dula=1;P0=tableshi;dula=0;P0=0xff;delay(10);wela=1;P0=0xfe;wela=0;delay(10);dula=1;P0=tablege;dula=0;P0=0xff;delay(10);wela=1;P0=0xfd;wela=0;delay(10);dula=1;P0=tabless;dula=0;P0=0xff;delay(10);wela=1;P0=0xfb ;wela=0;delay(10);void delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-)for(y=124;y0;y-);四 实验总结通过这次试验使我们的动手能力得到了很强的锻炼。并加深了对单片机和 c 语言的理解运用。在编写程序的过程中获得了许多平时在书本上无法获得的经验和教训。在焊接电路的过程中也给我们以后再电路设计上很大的启发的感悟。