资源描述:
《c51倒计时程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C51倒计时程序设计一、总体设计方案总体方案设计:用51单片机控制C语言编写设计时、分、秒计时器,8位数码管显示功能,显示格式:“时-分-秒”;总体设计构思:由C语言编写51单片机控制的时、分、秒计时器首先需要设计好硬件电路,根据电路要求编写程序:步骤:(1)采用定时器控制,精确计时,实现时、分、秒的功能;(2)用八位数码管(共阳)显示;(3)编写程序(设初值为23时59分59秒),用Proteus设计仿真电路验证!程序设计:(1)主函数:初始化中断,循环调用显示等待中断;程序模块:T0中断函数、数码管显示函数
2、仿真构成:8位一体的数码管、STC89C51、排阻RP1等二、模块设计方案#include#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchartemp=0;ucharhour=23,min=59,sec=59;u文件包含u常量定义u变量定义u数据表格
3、定义u。。。。。。。初始化定义voidtimer0init(void){TMOD=0x01;TH0=(65536-50000)/256;/TL0=(65536-50000)%256;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0}v设置定时器工作方式(TMOD)v定时器赋初值(THx,TLx)v开总中断(EA=1)v开定时计数器中断(ETx=1)v启动定时器(TRx=1)定时计数器及其中断初始化函数voidtime0()interrupt1{TH0=(65536-50000)/
4、256;//重装初值TL0=(65536-50000)%256;if(temp==20){temp=0;if(sec==0){if(min==0){if(hour==0){hour=23;}elsehour--;min=59;}elsemin--;sec=59;}elsesec--;}elsetemp++;}延时函数()Ø重装初值Ø对溢出中断计数,并判断是否有20次Ø时间减1,并判断是减到了0定时计数器中断函数²输出秒位位码²输出秒位段码²输出分位位码²输出分位段码²输出时位位码²输出时位段码显示函数l调用初始
5、化函数对定时计数器进行初始化l调用显示函数显示时间主函数仿真电路设计图片三、程序代码/*倒计时及显示程序,适用于寻迹小车实验板*/#include#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳七段编码uchartemp=0;//定义定时器溢出计数
6、变量,每隔50ms产生1次溢出,temp加1ucharhour=23,min=59,sec=59;//定义倒计时变量,当temp计数加20(20x50ms=1s)时,time减1/*--定时计数器T0及其中断初始化函数--*/voidtimer0init(void){TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//16位计数初值除以256得到高8位初值TL0=(65536-50000)%256;//16位计数初值除以256的余数得到低8位初值EA=1;//开总中断
7、ET0=1;//开定时器0中断TR0=1;//启动定时器0}/*----------延时函数---------------*/voiddelay(uintn){uinti,j;for(i=n;i>0;i--)for(j=124;j>0;j--);}/*定时计数器中断程序,每当定时计数器溢出时触发中断,执行该程序*/voidtime0()interrupt1{TH0=(65536-50000)/256;//重装初值TL0=(65536-50000)%256;if(temp==20){temp=0;if(sec==
8、0){if(min==0){if(hour==0){hour=23;}elsehour--;min=59;}elsemin--;sec=59;}elsesec--;}elsetemp++;}/*--------------显示函数------------*/voiddisplay(void){P1=0xfe;//输出个位的位码P0=table[sec%10];//输出时间个位的段码de