《基于某51单片机地篮球比赛电子记分牌仿真图完整程序.doc》由会员分享,可在线阅读,更多相关《基于某51单片机地篮球比赛电子记分牌仿真图完整程序.doc(21页珍藏版)》请在课桌文档上搜索。
1、目录第1章 绪论11.1 单片机在体育赛事计分的应用11.2 本设计任务1第2 章 总体方案论证与设计22.1 显示模块22.2 按键控制模块22.3 报警模块22.4 总体硬件组成框图3第3章 系统硬件设计43.1 LCD1602显示模块的硬件设计443.3 蜂鸣器报警模块的硬件设计53.4 单片机最小系统的硬件设计6第4章 系统的软件设计74.1 主程序设计74.2 按键控制程序设计84.3 蜂鸣器报警程序设计8第5章 系统调试与测试结果分析105.1 系统调试105.2 测试结果10结 论11参考文献12附录1 程序13附录2 仿真效果图19第1章 绪论体育比赛计时计分系统是对体育比赛过
2、程中所产生的时间、比分等数据进展快速采集记录,加工处理,传递数据的信息系统。根据不同运动项目的不同比赛规如此要求,体育比赛的计时计分系统包括测量类、评分类、命中类、制胜类得分类等多种类型。篮球比赛是根据参赛队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统是一个负责篮球比赛的数据采集和分配的专用系统,它负责比照赛结果、成绩信息的采集处理、传输分配。篮球比赛的计时计分系统由计时器、计分器等多种电子设备组成,由于比赛的不可重复性,决定了篮球计时计分系统是一个实时性很强、可靠性要求极高的电子服务系统,所以计时计分设备是篮球比赛中不可缺少的电子设备,计时计分系统
3、设计是否合理,关系到比赛系统运行的稳定和可靠,并直接影响到比赛的顺利进展。同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能够与现场成绩处理、现场大屏幕、电视转播车等多种设备相联,以便实现高比赛现场感、表演娱乐观众等功能目标。随着比赛规如此的进一步完善,相应的计时计分系统也必须随之改良。1.1 单片机在体育赛事计分的应用传统的篮球比赛计分是由工作人员人工翻动记分牌实现的,而比赛的时间如此由工作人员计表控制。由于人为因素,人工操作的比赛计分板难免会出现误差。而作为微型控制系统的单片机具有集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格廉价,可靠性高,抗干扰能
4、力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。因此单片机在体育比赛记分牌的应用也成为了一种不可防止的趋势。1.2 本设计任务本次设计以AT89C51单片机为核心组成单片机最小系统,构建得分和时间的显示模块、进展控制的按键模块以与能够在规定的时间报警的提示模块,通过在按键控制模块的操作实现比照分和时间的设计,最终在显示模块上显示。第2 章 总体方案论证与设计本系统采用单片机AT89C51为控制核心,系统主要包括显示模块、按键控制模块、蜂鸣器报警模块等。下面对各模块的设计进展论证比拟。2.1 显示模块方案一:采用七段码数码管
5、显示。数码管是指将所有发光二极管的一极接到一起形成公共极,因此数码管有共阴共阳之分。以共阳数码管为例,共阳数码管在应用时应将公共极接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。因此每个数码管有9个接口。数码管的驱动方式有静态扫描和动态扫描两种形式。静态扫描编程简单,但电路复杂;动态扫描变成复杂,而且还需要使用其他芯片。方案二:采用1602液晶显示。液晶的物理特性是:当通电时导通,排列变得有秩序,是光线容易通过,不通电时排列混乱,阻止光线通过。相比于数码管,LCD1602不仅可以显示的图形符号更丰富,而且具有轻薄、无辐射等优点。比拟
6、以上两种方案,系统设计中采用方案二。2.2 按键控制模块方案一:采用矩阵键盘。矩阵键盘的长各分接口分别于单片机的I/O口连接,可以通过连接数量较少的I/O口,扩展出多个按键。但其缺点是电路更复杂,编程更麻烦。方案二:采用独立按键。每个独立按键与单片机I/O连接,虽然不能节省I/O口,但电路简单、编程容易比拟以上两种方案,由于本系统只需要4个按键,因此选者方案二。2.3报警模块报警模块中,信号由单片机输出经PNP型三极管放大后进入蜂鸣器发出声响进展比赛时间的提示功能。2.4 总体硬件组成框图蜂鸣器报警模块液晶显示模块晶振电路按键控制模块复位电路AT89C51图2-1 总体硬件组成框图系统框图如图
7、2-1所示,系统主要由四大模块组成即单片机最小系统模块、液晶显示模块、蜂鸣器报警模块、按键控制模块。单片机最小系统作为整个系统的控制核心,按键模块的4个按键对分数和时间进展控制然后显示在LCD1602上,蜂鸣器报警模块如此根据程序设定的时间进展报警。 第3章 系统硬件设计为使该电子记分牌更加方便和灵活,本设计将其划分为四个模块,下面将对各个模块逐一介绍。3.1 LCD1602显示模块的硬件设计1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有假如干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。1602LCD是指显示的内容为16
8、X2,即可以显示两行,每行16个字符液晶模块。图3-1 液晶显示模块电路按键控制模块的硬件设计按键控制模块采用4个独立按键,Key1、Key2、Key3、Key4分别于单片机的P10、P11、P12、P13连接,每个按键的另一端直接与地相连接,因此是低电平有效。按键控制模块的电路如图3-2所示。这四个独立按键分别实现了比赛的暂停、时间的刷新以与比赛两只队伍的得分值的改变。具体标号和功能如表3-1所示。表3-1 按键功能描述序号接口功能Key1P10比赛开始/暂停Key2P11刷新进攻球队24秒时间Key3P12A队得分值加一Key4P13B队得分值加一图3-2 按键控制模块电路图3.3 蜂鸣器
9、报警模块的硬件设计图3-3 蜂鸣器报警模块电路图蜂鸣器报警模块由一个蜂鸣器和一个PNP型的三极管组成,接单片机的P27口,蜂鸣器为5V驱动,低电平有效。蜂鸣器模块如图3-3所示。3.4单片机最小系统的硬件设计图3-4 最小系统模块电路图AT89C51是一种带4K字节FLASH存储器FPEROMFlash Programmable and Erasable Read Only Memory的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制
10、造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。最小系统模块的晶振电路由12MHz晶振和30pF的电容构成,复位电路由10uF的电解电容和104瓷片电容构成。电路如图3-4所示。第4章 系统的软件设计在本设计中,系统的软件设计也采用了模块化的设计,将系统的各局部功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。4.1 主程序设计本系统中单片机的主要功能就是利用内部的定时器计时,并随时承受控制模块的信息,将比赛的得分和剩余时间显示在1602液晶上。其主程序流程如图4-1所示图
11、4-1 主程序流程图NYNY显示是否按键执行控制程序是否到时蜂鸣器响倒计时初始化开始4.2 按键控制程序设计Key1键配合程序所设定的标志位flag控制比赛的暂停,当Key1按下,flag加一,两种不同的flag值分别带关闭定时器和打开定时器。按下Key2键后给24秒进攻时间的变量miao重新赋值为24,代表上一次进攻完毕,另一只球队开始进攻。每按下Key3和Key4键,A、B两队的得分加一。程序流程如图4-2所示。NNNNYYYY图4-2 按键控制流程图A队分加一Key2按下B队分加一刷新24秒暂停/开始Key1按下延时是否按下Key4按下Key3按下4.3蜂鸣器报警程序设计在程序里设定一个
12、变量,用if语句判断,当该变量等于设定的时间段的时候,蜂鸣器响。在24秒进攻时间只剩5秒时,蜂鸣器响一秒;当24秒进攻时间完毕时,蜂鸣器响4秒;单节比赛完毕蜂鸣器响4秒。流程图如图4-3所示。图4-3 报警程序流程图NNYYNYY蜂鸣器响4秒蜂鸣器响4秒蜂鸣器响5秒单节赛完毕到24秒?到5秒?是否到时第5章 系统调试与测试结果分析5.1 系统调试为预先排除软件和硬件的错误,本设计需经过软件调试、硬件调试和软硬兼联合调试。5.1.1硬件调试本阶段采用实验板ST-3A对各个模块的功能进展调试,主要检查硬件间连线是否正确并调试各模块能否实现指定的功能。5.1.2软件调试软件调试采用Keil软件完成。
13、在写好源程序之后,建新工程,选择AT89C51处理器;接着新建文档编辑程序,编辑完存为.C,把保存的.C文件参加到工程里。检查无语法错误后生成.HEX文件。5.1.3硬件软件联调软硬件联合调试主要是运用Proteus完成。将系统原理图在Proteus环境下画好之后,将软件调试阶段Keil生成的.HEX文件下载到单片机里,在电脑上进展软件仿真。5.2 测试结果本次系统设计结构较好,单片机最小系统能正常工作,按键模块能实现控制功能,液晶显示模块能根据按键模块输入的控制信息进展显示,蜂鸣器报警模块能按程序设定的要求报警。仿真结果图如附录2所示。结 论本次基于单片机的篮球比赛电子记分牌是针对传统篮球比
14、赛人工翻动比分牌的改良,解决篮球比赛时计分与计时准确方便和灵活适用的问题。系统总体电路由单片机最小系统、1602液晶显示模块、5个独立按键控制模块以与蜂鸣器报警模块构成。四个模块分别完成信息的处理、显示、控制等篮球比赛记分牌的根本功能。通过软硬件的仿真调试,实现了本次设计的根本功能:在1602液晶左边局部分别显示比赛队伍的得分,右边局部显示比赛剩余时间,四个按键能完成程序的要求比照分和时间的调整进展控制,蜂鸣器能在规定的时间段鸣叫,给予球员和观众提示。参考文献1 李川,汪秋蒙.ISP技术的原理与实现方法J.科技资讯.2007,35期:93-94.2 万光毅.单片机实验与实践教程M. :航空航天
15、大学.2005.1.3 X毅刚.单片机原理与应用M. :高等教育.2003:160-190.4 胡烨,姚鹏翼,陈明.Protel 99SE原理图与PCB设计教程M.机械工业出社.2005:23-99.56 周润景.基于Proteus的电路与单片机仿真系统设计与仿真M. :航空航天大学. 2005.7 金炯泰,金奎焕. 如何使用KEIL8051C编译器M . :航空航天大学.2002.8 尹仕.电工电子制作根底M.某某:华中科技大学,2008.9 彭介华.电子技术课程设计指导J.:高等教育,1997.附录1 程序#include#define uchar unsigned char#define
16、 uint unsigned intuchar code tab1=A : ;uchar code tab2=B ;uchar code tab3= GAME OVER ; /比赛完毕时显示uchar code tab4= A B ; /比赛完毕时显示sbit lcden=P22;sbit lcdrw=P21; /1602液晶的3个端口sbit lcdrs=P20;sbit key1=P10; sbit key2=P11; /四个按键sbit key3=P12;sbit key4=P13;sbit Bell=P27;/蜂鸣器uint keyflag,flag; /标志位uchar i,num,
17、count;uchar sec,min,miao;uchar Ascore,Bscore; /两队得分/*液晶函数*/void delay(uint z) /液晶延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_(uchar ) /命令子函数mand lcdrs=0;/承受指令P0=; /给P0口送指令码delay(5);lcden=1; /E变为高电平delay(5);/在此延迟期间,将指令送入lcden=0; /E变为低电平,高脉冲完毕void write_dat(uchar date) /数据子函数datalcdrs=1; /承
18、受数据P0=date; /给P0口送数据delay(5);lcden=1; /E变为高电平delay(5); /在此延迟期间,将数据送入lcden=0; /E变为低电平,高脉冲完毕void write_time(uchar add,uchar date) /写入时间函数uchar shi,ge;shi=date/10;ge=date%10;write_(0x80+add);write_dat(0x30+shi);write_dat(0x30+ge);void write_miao(uchar add,uchar date) /写入24秒函数uchar shi,ge;shi=date/10;ge
19、=date%10;write_(0x80+0x40+add);write_dat(0x30+shi);write_dat(0x30+ge);void write_Ascore(uchar add,uchar date) /写入A队得分函数uchar bai,shi,ge;bai=date/100;shi=date/10%10;ge=date%10;write_(0x80+add);write_dat(0x30+bai);write_dat(0x30+shi);write_dat(0x30+ge);void write_Bscore(uchar add,uchar date) /写入B队得分函数
20、uchar bai,shi,ge;bai=date/100;shi=date/10%10;ge=date%10;write_(0x80+0x40+add);write_dat(0x30+bai);write_dat(0x30+shi);write_dat(0x30+ge);void write_score(uchar add,uchar date) /比赛完毕写入得分函数uchar bai,shi,ge;bai=date/100;shi=date/10%10;ge=date%10;write_(0x80+0x40+add);write_dat(0x30+bai);write_dat(0x30+
21、shi);write_dat(0x30+ge);void delay_Bell(uint z) /蜂鸣器延时函数uint x,y;for(x=z;x0;x-)for(y=255;y0;y-);void init() /初始化函数Bell=1;keyflag=0; flag=0;min=12; sec=0; miao=25;Ascore=0; Bscore=0;lcdrw=0;lcden=0; /E的初始值为低电平,后面的程序给高电平从而满足E为高脉冲write_(0x38); /写入显示模式指令write_(0x0e); /显示是否打开以与光标的设置write_(0x06); /地址指针的加减
22、和整屏是否移动write_(0x01); /清屏指令write_(0x80+0x00); /显示字符的初始位置for(num=0;num16;num+)write_dat(tab1num);write_(0x80+0x40); /起始地址为53,将字符调到了第二行for(num=0;num2;num+)write_dat(tab2num);write_Ascore(2,Ascore);write_Bscore(2,Bscore);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1; TR0=1; /开定时器void
23、keyscan() /按键函数if(key1=0)delay(10);if(key1=0)keyflag+; /键一按下,标志位加一while(!key1);if(keyflag=1) TR0=0; /关中断 if(keyflag=2)TR0=1; keyflag=0;if(key2=0) /刷新24秒delay(5);if(key2=0)while(!key2);miao=25;if(key3=0)delay(5);if(key3=0)while(!key3);Ascore+; write_Ascore(2,Ascore);/写入A队得分if(key4=0)delay(5);if(key4=
24、0)while(!key4);Bscore+; write_Bscore(2,Bscore);/写入B队得分void main()init();while(1)keyscan();if(flag=0)write_(0x80+0x40+7); /写入第一节 FIRwrite_dat(F);write_dat(I);write_dat(R);if(flag=1)write_(0x80+0x40+7); /写入第二节 SECwrite_dat(S); write_dat(E);write_dat(C);if(flag=2)write_(0x80+0x40+7); /写入第三节 THRwrite_da
25、t(T);write_dat(H);write_dat(R); if(flag=3)write_(0x80+0x40+7); /写入第四节 FOUwrite_dat(F);write_dat(O);write_dat(U);if(flag=4)/比赛完毕显示GAME OVER“和两队比分TR0=0;write_(0x80);for(i=0;i16;i+)write_dat(tab3i); /GAME OVER字符串数组write_(0x80+0x40); /起始地址为53,将字符调到了第二行for(i=0;i=4&miao=5) /假如只剩5秒,蜂鸣器响1秒 Bell=0; delay_Bel
26、l(510); Bell=1; delay_Bell(510); void timer0() interrupt 1 /定时器TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=18)count=0;sec-;miao-;if(miao=(-1) /假如24秒到,蜂鸣器响4秒 Bell=0; delay_Bell(510); delay_Bell(510); delay_Bell(510); delay_Bell(510);Bell=1;if(miao=(-1) miao=24; if(sec=(-1)sec=59;min-;if(min=(-1)/假如比赛(单节)完毕,蜂鸣器响4秒Bell=0;delay_Bell(510);delay_Bell(510);delay_Bell(510);delay_Bell(510);Bell=1;min=11; flag+;write_time(11,min);write_time(14,sec);write_miao(14,miao); /显示比赛时间附录2 仿真效果图