资源描述:
《单片机倒计时器.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、单片机倒计时器设计一电路原理倒计时采用stc89c52,74hc573驱动四位数码管以及按键构成。原理图如下:RP1为上拉10k排阻晶振采用12Mhz无缘晶振数码管为四位共阴数码管74hc573起所存作用四个按键分别连P3.4~P3.7二工作过程单片机上电初始化,P0口输出0,并把四位数码管全部打开,数码管显示四个0。检测按键如果按键key1按下那么数码管第一位加1。如果按键key2按下那么数码管第一位加1。如果按键key3按下那么启动定时器,开始倒计时。如果按键key4按下倒计时暂停,数码管显示停留在当前数值。倒计时器用到了计时器工作方式0和t
2、0溢出中断设定计时器初值为TH0=(65536-50000)/256;TL0=(65536-50000)%256;即50ms中断一次20次记一秒从而达到记时一秒的目的。三软件程序程序由KeiluVision4软件用c语言编写,内容如下#include#include#defineucunsignedchar;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0
3、x71,0x76,0x79,0x38,0x3f,0};sbitdula=P2^6;sbitwela=P2^7;sbitkey1=P3^4;sbitkey2=P3^5;sbitkey3=P3^6;sbitkey4=P3^7;ucshu,shi,ge,bai,t0,num,ss;voidshuma(shi,ge,ss);voiddelay(unsignedintz);voidinit();voidmain(){P3=0xff;init();while(1){if(key4==0){TR0=0;}if(key3==0)TR0=1;if(key1==0)
4、{delay(5);if(key1==0){shi++;if(shi==10)shi=0;}while(!key1);delay(5);while(!key1);}dula=1;P0=table[shi];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=table[ge];dula=0;shuma(shi,ge,ss);}}voidinit(){shi=0;ge=0;ss=0;TMO
5、D=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;EX0=1;}voidtime0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(t0==2){t0=0;if(ss==0){if(ge==0){if(shi==0)TR0=0;else{ge=9;shi--;ss=9;}}else{ss=9;ge--;}}elsess--;}}voidshuma(shi,ge,ss){dula=1;P0=tab
6、le[shi];dula=0;P0=0xff;delay(10);wela=1;P0=0xfe;wela=0;delay(10);dula=1;P0=table[ge];dula=0;P0=0xff;delay(10);wela=1;P0=0xfd;wela=0;delay(10);dula=1;P0=table[ss];dula=0;P0=0xff;delay(10);wela=1;P0=0xfb;wela=0;delay(10);}voiddelay(unsignedintz){unsignedintx,y;for(x=z;x>0;x--)f
7、or(y=124;y>0;y--);}四实验总结通过这次试验使我们的动手能力得到了很强的锻炼。并加深了对单片机和c语言的理解运用。在编写程序的过程中获得了许多平时在书本上无法获得的经验和教训。在焊接电路的过程中也给我们以后再电路设计上很大的启发的感悟。