资源描述:
《单片机设计24秒倒计时.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1、具有24s计时功能。2、设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能。3、计时器为24秒递减时,计时间隔为1秒。4、计时器递减到零时,数码显示器不能灭灯,同时发出光电报警信号。5、有直接清零然后恢复到24秒,准备重新开始计数。学生在教师指导下,综合运用所学知识完成基于单片机的篮球比赛24秒计时器设计。要求设计一个24秒计时电路,并具有时间显示的功能。要求:1、设置外部操作开关,控制计数器的直接清零、启动和暂停/连续计时。2、要求计时电路递减计时,每隔1秒钟,计时器减1。3、当计时器减到0时,显示器上显示00,同时发出光电报警信
2、号。硬件电路:设计思路:选用AT89C51作为主控芯片,晶振是6KHz,机械周期为1ms,所以循环10次为1s。P0口作为段码输出,P2.0、P2.1作为位控,高电平有效。数码管是液晶显示,采用动态显示,两个串行口作为中断入口,高电平有效,启动T0定时器/计数器进行计数,低电平有效。图2.2.1是系统硬件设计电路图一。时间设置完后,启动定时器T0开始定时计数。计时采用倒计时,比如:设置的时间为24秒钟,则在LED上显示24两位数。定时T0计数24秒后中断返回,继续定时计数下一个24秒;同时则在2位LED显示器上显示,表示时间已经过去1秒钟,即为2
3、3秒。这样一直持续下去。知道变为“00”时表示赛程结束。如果比赛中裁判叫停,则只要按下键,即可暂停计时。程序设计:根据以上流程图,可以用汇编语言编写出篮球计时器24秒倒计时程序,该程序包括主程序,中断程序,延时程序以及显示程序。#include#include#defineuintunsignedint#defineucharunsignedcharsbitw1=p2^0;//十位位选sbitw2=p2^1;//个位位选sbitkey1=p1^0;//按键为选码sbitkey2=p1^1;sbitkey3=
4、p1^2;sbitBEEP=P2^7;//报警器控制位uintnum,num1,shi,ge;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,//数码管相应的段选码0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelay(unitz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--)}/*voiddelay1(ucharx)//x*0.14MS{uchari;while(x--){for(i=0;i<
5、13;i++){}}}voidbeep(void){uchari;for(i=0;i<50:i++){delay1(4);BEEP=!BEEP;//BEEP取反}}*//*按键扫描函数*/voidkeyscan(){if(key1==0)//开始计算{delay(5);//延时消抖if(key1==0){while(!key1);//松手检测TR0=1;}}if(key2==0)//暂停计数{delay(5);//延时消抖if(key2==0){while(!key2);//松手检测TR0=0;while(!key3);//松手检测num1=24
6、;TR0=1;BEEP=1;//关闭蜂鸣器}}}voidinit(){num1=24;TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)?256;//定时器0的高八位TL0=(65536-50000)%256;//定时器0的低八位EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0//TOCN中有TR0}/*数码管显示函数*/voiddisplay(ucharshi,ucharge){P0=table[shi];//十位显示w1=1;w2=0;//选位设置delay(2);P0=tabl
7、e[ge];//个位显示w1=0;w2=1;//位选设置delay(2);if(num1==0)//如果24秒显示完成后,报警{TR0=0;BEEP=0;}}voidmain(){init();while(1){keyscan();if(num==20){num=0;num1--;}ge=num1%10;//个位shi=num1/10;//十位display(shi,ge);}}voidtime1()interrupt1//定时器计数,50ms产生一次中断{TH1=(65536-50000)/256;TL1=(65536-50000)%256;n
8、um++;}