资源描述:
《篮球比赛24秒计时器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、篮球比赛24秒计时器单片机具有体积小、可靠性高、功能强、灵活方便等许多优点,广泛应用于国民经济的各个领域。单片机的应用从根本上改变了传统的控制系统设计思想和方法,以前由数字和模拟电路实现的大部分功能,现在都能用单片机通过软件的方法来实现。单片机用于各种仪器仪表使其智能化,可以提高测量的自动化程度和精度。本项目主要利用单片机的内部定时器和外部中断;外部的独立按键和数码管显示以及报警器。来实现24秒计时的功能。一设计要求和设计方案1.24秒计时器具有显示24秒的计时功能。2.系统设置外部操作开关控制计时器的暂停和连续功能。3.设置计时器为24秒递减时,其时间间隔为1
2、秒。4.当计时器递减到零时,数码管显示不灭,发出报警信号。二设计的功能单片机启动时系统从24秒开始递减计时同时数码管也递减显示,当按键按下时系统暂停计时,数码管显示当前计时时间,当系统计时到零时数码管显示0同时报警器响发出报警信号。三电路的组成1.晶振电路部分主要有晶振(本电路中的晶振实际是陶瓷谐振器)和电容够成分别接振荡电路反向放大器的输入端和输出端,为单片机提供工作的频率。1.报警电路部分主要由报警器、电阻、电源构成。当单片机P1^7口发低电平时该电路导通报警器响,电阻是限流电阻。2.独立按键部分主要由按键和地组成。按键按下时单片机接受低电平产生外部中断计时
3、器暂停计时,松开时继续计时。4.数码管显示部分主要由数码管、总线、排阻(上拉电阻)构成.单片机的P0、P2口通过总线和导线向数码管发送显示数字的二进制码使数码管显示。数码管(7端数码显示管)为共阴集数码管高电平有效。四设计电路全图五设计电路的程序#include//头文件包含c51的基本I/O口和寄存器的定义#defineuintunsignedint//宏定义将“无符号整型"数据用"uint"代替#defineucharunsignedchar//宏定义将“无符号字符型"数据用"uchar"代替uchartemp,aa,shi,ge;//定义
4、4个无符号字符型数据temp,aa,shi,ge;sbitsounder=P1^7;//定义一个位变量sounder(将P1^0口与位变量sounder建立联系)ucharcodetable[]={//定义了一个无符号字符型数组table数据存放在程序存储器中0x3f,0x06,0x5b,0x4f,//共阴数码管表0,1,2,3,0x66,0x6d,0x7d,0x07,//4,5,6,7,0x7f,0x6f,0x77,0x7c,//8,9,a,b,0x39,0x5e,0x79,0x71};//c,d,e,f,voiddisplay(ucharshi,ucharg
5、e);//显示函数声明voiddelay(uintz);//延时函数声明voidinit(void);//初始化函数声明voidmain(void)//主函数程序的入口{init();//调用初始化函数while(1)//while死循环循环判断变量始终为1{if(aa==20)//判断定时是否为1秒{aa=0;//每次循环后清零将aa(定时器计时1秒清零)temp--;//时间递减计算if(temp<0){//到0后赋值24(计数到达0秒后重新赋值24秒开始递减计时)temp=24;}shi=temp/10;//计算十位的数字ge=temp%10;//计算个位
6、的数字}display(shi,ge);//调用显示函数EA=1;//开总中断EX0=1;//开外部中断INT0if(temp==0){sounder=0;while(1);}}}voiddisplay(ucharshi,ucharge)//定义显示函数{P0=table[shi];//给P0口送显示值(数码管的十位显示)delay(1);//延时1毫秒P2=table[ge];//给P2口送显示值(数码管的个位显示)delay(1);//延时1毫秒}voidinit(void)//定义初始化函数{temp=25;//定时器的计时时间TMOD=0x01;//设置
7、定时器0的工作方式为方式1(16位计数器)TH0=(65536-50000)/256;//定时器的高八位装初值TL0=(65536-50000)%256;//定时器的高八位装初值EA=1;//开总中断ET0=1;//开定时器0的中断TR0=1;//启动定时器0}voiddelay(uintz)//延时函数{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidtimer0(void)interrupt1using0{TH0=(65536-50000)/256;//给定时器T0重装初值TL0=(65536-50000)%2
8、56;aa++;//定时