《单片机原理与外围电路课程论文电子记分牌说明书.doc》由会员分享,可在线阅读,更多相关《单片机原理与外围电路课程论文电子记分牌说明书.doc(20页珍藏版)》请在三一办公上搜索。
1、塔里木大学信息工程学院单片机原理与外围电路课程论文题目: 电子记分牌 姓名: 王兵 学号: 5011211423 班级: 计算机15-4 篮球赛电子记分牌摘要:篮球赛电子计时记分牌是根据篮球比赛特点设计的独立的信息采集、分配、评判和显示的系统,能实现比赛时间和分数的实时、准确、快捷处理和呈现。本设计原理简单,主要采用AT89C51单片机作为微控制器,集合控制器、lCD液晶显示和报警,控制器控制记分牌的工作状态,通过lCD液晶显示和报警来反馈信息。本设计在充分考虑了篮球比赛的实际情况基础上设计,具有友好的人机交互接口,并且可以防止人为误操作造成的不良后果,具有一定的实用性。关键字 单片机 AT8
2、9C51 LCD1液晶显示,篮球记分牌In this paper:asketball match electronic timing scoreboard is designed based on the characteristics of basketball game independent information collection, allocation, evaluation and display system, can realize the game time and scores of real-time, accurate and fast processing and
3、 rendering. This simple design principle, mainly AT89C51 single-chip microcomputer as the controller, set controller, lCD liquid crystal display and alarm, control the working state of the scoreboard, feedback information through the lCD liquid crystal display and alarm. This design in fully conside
4、ring the actual situation of the basketball match on the basis of design, with a friendly human-computer interaction interface, and can prevent the operating error caused by the adverse consequences, has a certain practicality.The keyword Single chip microcomputer AT89C51 Liquid crystal display (LCD
5、) Basketball scoreboard目录1绪论21.1课题背景及研究意义21.2设计任务与要求31.3 单片机在体育赛事计分的应用31.4方案设计说明32系统概述42.1显示模块42.2按键控制模块42.3报警模式42.4总体硬件组成框图43系统硬件设计53.1 主控电路设计53.2 LCD1602显示模块的硬件设计63.2按键控制模块63.3蜂鸣器报警模块的硬件设计74 软件控制系统84.1主程序设计84.2仿真结果95 结论10参考文献11附录1:11附录2:121绪论1.1课题背景及研究意义目前球场记分牌在传统操作模式下,采用记分员手动翻动记分牌记分,工作方式单一。由于种种弊端
6、,电子记分板已经开始在一些大型的体育场流行起来,不仅发展速度迅猛并会逐渐取代传统的电子记分牌。电子记分板根据篮球比赛的特点,采用单片机为核心控制LED数码管,具有亮度高、可视性好、功耗小、使用寿命长等优点;具有性能稳定,尺寸适中,运输安装方式灵活,物美价廉等特点,特别适用于小型篮球体育馆和露天运动场。1.2设计任务与要求l设计题目:篮球赛电子记分牌l 设计要求:(1)分别设计篮球比赛甲乙两个队的记分牌;(2)能实现两张记分牌的切换;(3)能按照篮球赛记分规则记分并显示;(4)将原有的一个指示灯基础上进一步改进为两个指示灯,作分别指示。1.3 单片机在体育赛事计分的应用传统的篮球比赛计分是由工作
7、人员人工翻动记分牌实现的,而比赛的时间则由工作人员计表控制。由于人为因素,人工操作的比赛计分板难免会出现误差。而作为微型控制系统的单片机具有集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。3因此单片机在体育比赛记分牌的应用也成为了一种不可避免的趋势。1.4方案设计说明设计方案之前,得先分解设计任务。本次的设计任务是篮球记分牌,据常识,篮球记分牌应有分别给两队加分,暂停,显示屏既要显示时间又要显示分数。在进行设计之前,应自己提出几个问
8、题,待问题回答之后。基本功、的设计方案就出来了。在设计之前我提出了一下几个问题:a:硬件部分如何控制给A对B对加分,如何控制时间与分数的显示?场地交换的时候又是如何实现分数显示交换的?应该如何连接硬件,在硬件上设置控制端,控制端与单片机各引脚之间的连,如何选择?b:单片机只有一个CPU,如何实现即要扫描按键,又要显示比分,显示时间。数码管工作的本质是将要显示的数据的字型码送给他,如何采集到变化的分数和时间并送给数码管。用查表吗?c:分数时间显示都应该有对应的液晶显示,如何控制液晶显示,使时间和分数都显示在相对应的液晶显示屏上?加分与倒计时在程序中最本质的东西是什么,如何用程序来说明这样的事件,
9、各事件之间又是如何联系的。虽然这些问题看似很普通,似乎在设计过程中都要面对这样的问题,何不事先就解决这些问题呢,在逐一回答这些问题的同时,该任务的设计方案已见雏形。以下就是该方案的详细内容以及我问题的答案。2系统概述本系统采用单片机AT89C51为控制核心,系统主要包括显示模块、按键控制模块、报警模块等;2.1显示模块方案一:采用七段码数码管显示。数码管是指将所有发光二极管的一极接到一起形成公共极,因此数码管有共阴共阳之分。以共阳数码管为例,共阳数码管在应用时应将公共极接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。因此每个数码管有
10、9个接口。数码管的驱动方式有静态扫描和动态扫描两种形式。静态扫描编程简单,但电路复杂;动态扫描变成复杂,而且还需要使用其他芯片。方案二:采用1602液晶显示。液晶的物理特性是:当通电时导通,排列变得有秩序,是光线容易通过,不通电时排列混乱,阻止光线通过。相比于数码管,LCD1602不仅可以显示的图形符号更丰富,而且具有轻薄、无辐射等优点。比较以上两种方案,系统设计中采用方案二。2.2按键控制模块方案一:采用矩阵键盘。矩阵键盘的长各分接口分别于单片机的I/O口连接,可以通过连接数量较少的I/O口,扩展出多个按键。但其缺点是电路更复杂,编程更麻烦。方案二:采用独立按键。每个独立按键与单片机I/O连
11、接,虽然不能节省I/O口,但电路简单、编程容易比较以上两种方案,由于本系统只需要4个按键,因此选者方案二。2.3报警模式 报警模块中,信号由单片机输出经PNP型三极管放大后进入蜂鸣器发出声响进行比赛时间的提示功能。2.4总体硬件组成框图图1-1 系统基本方框图3系统硬件设计3.1 主控电路设计AT89S51为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,在本系统中,AT89S51单片机内部的功能单元已经能够满足系统设计需要,不需要系统扩展。AT89S51具有以下的特点:l CPU与MCS-51 兼容l 1000写/擦循环l 8K字节可编程FLASH存储器l 全静态工作:0-33
12、MHzl 三级加密程序存储器l 256*8位内部RAMl 32个可编程I/O线l 三个16位定时器/计数器l 8个中断源l 可编程串行通道3.2 LCD1602显示模块的硬件设计1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块图1-2液晶显示模块电路其中A代表的是甲队记分牌、B代表乙队记分牌3.2按键控制模块 按键控制模块采用4个独立按键,K1、K2、K3、K4分别于单片机的P10、P11P12、P
13、13连接,每个按键的另一端直接与地相连接,因此是低电平有效。其中K1、K2、K3、K4表示暂停、刷新24秒、A加1分、B加1分图1-3按键控制模块电路图3.3蜂鸣器报警模块的硬件设计蜂鸣器报警模块由一个蜂鸣器和一个PNP型的三极管组成,接单片机的P27图1-4报警模块模块电路图4 软件控制系统4.1主程序设计本系统中单片机的主要功能就是利用内部的定时器计时,并随时接受控制模块的信息,将比赛的得分和剩余时间显示在1602液晶上。程序流程图:图1-5程序流程图4.2仿真结果1.如图4-3所示。点击K3表示给A加分按下K4表示给B加分5 结论这一次的课程设计,我的课题是篮球赛电子计时记分牌。由于这一
14、系统包含单片机基础、数码管动态显示、矩阵键盘扫描、定时器和中断等知识体系,涉及面较广,通过这一课程设计,可以更好地检测和巩固学到的知识,加深自己对电子世界的认识。在本次的设计中,针对每一个模块都曾有好几个方案,在反复比较论证之后,才得出最佳方案并应用于系统。在各个模块的设计中,我除了得到了正确的结果之外,更多的是面对错误和失败,而这些错误大多数是由于自己对该部分电路原理掌握的不够透彻而造成的。通过查阅资料,连接、调试电路和程序,我得出了一下几条心得体会,以后在设计过程中可以借鉴:在Proteus里,电路状态不正常且不易发现问题时,使用电流计和电压计可直观检测电路动态变化,这也是Proteus里
15、非常好用的一个功能;参考文献1李川,汪秋蒙.ISP技术的原理及实现方法J.科技资讯.2009,35期:93-94.2万光毅.单片机实验与实践教程M.北京:北京航空航天大学出版社.2009.1.3张毅刚.单片机原理及应用M.北京:高等教育出版社.2008:160-190.4胡烨,姚鹏翼,陈明.Protel99SE原理图与PCB设计教程M.机械工业出社.2005:23-99.5马忠梅.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社.20066周润景.基于Proteus的电路与单片机仿真系统设计与仿真M.北京:北京航空航天大学出版社.2005.7金炯泰,金奎焕.如何使用KEIL8051C
16、编译器M.北京:北京航空航天大学出版社.2010.8尹仕.电工电子制作基础M.武汉:华中科技大学出版社,2008.9彭介华.电子技术课程设计指导J.北京:高等教育出版社,2009.9 徐泓.医疗设备维护保养方法J.黑龙江科技信息.2008(21)10 冯梅琳,王芸,温家旺.基于Proteus的温湿度数据采集系统设计与仿真J.仪表技术.2010(02)11 Behzad Razavi.Design of Analog CMOS Integrated CircuitsM. . 2001 12 WANG Xinhuan 1,ZHOU Fei 2,ZHANG Hongwei 1 1 School of
17、 Electrical Engineering & Automation 2 Modern educational technology center Henan Polytechnic University Jiaozuo,China.The Research and Practice of Teaching Method Reform for Single-chip Microcomputer CourseA. Proceedings of 2012 4th International Conference on Education Technology and Computer(ICET
18、C 2012)C. 201213 郑威,潘定.基于MAX038和单片机的高频精密函数信号发生器A. Proceedings of 2010 Third International Conference on Education Technology and Training(Volume 4)C. 201014 周亚训,金炜.基于MATLAB/FDATooL的数字信号处理课程实验教学A. Proceedings of 2010 Third International Conference on Education Technology and Training(Volume 8)C. 2010
19、15 Mathematic modeling and stability analysis of three-order self-biased PLLA. Proceedings of 2011 4th IEEE International Conference on Computer Science and Information Technology(I CCSIT 2011) VOL10C. 2011附录1:仿真效果图PBC效果三维效果图附录2:源代码: #include #define uchar unsigned char #define uint unsigned int uch
20、ar 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,count; uch
21、ar 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_com(uchar com) /命令子函数 lcdrs=0; /接受指令 P0=com; /给P0口送指令码 delay(5); lcden=1; /E变为高电平 delay(5); /在此延迟期间,将指令送入 lcden=0; /E变为低电平,高脉冲结束 void write_dat(uchar date) /数据子函数data
22、 lcdrs=1; /接受数据 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_com(0x80+add); write_dat(0x30+shi); write_dat(0x30+ge); void write_miao(uchar add,uchar date) /写入24秒函
23、数 uchar shi,ge; shi=date/10; ge=date%10; write_com(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_com(0x80+add); write_dat(0x30+bai); write_dat(0x30+shi); write_dat(0x30+ge);
24、 void write_Bscore(uchar add,uchar date) /写入B队得分函数 uchar bai,shi,ge; bai=date/100; shi=date/10%10; ge=date%10; write_com(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
25、=date%10; write_com(0x80+0x40+add); write_dat(0x30+bai); write_dat(0x30+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的初始值为低电平,后面的程序给高
26、电平从而满足E为高脉冲 write_com(0x38); /写入显示模式指令 write_com(0x0e); /显示是否打开以及光标的设置 write_com(0x06); /地址指针的加减和整屏是否移动 write_com(0x01); /清屏指令 write_com(0x80+0x00); /显示字符的初始位置 for(num=0;num16;num+) write_dat(tab1num); write_com(0x80+0x40); /起始地址为53,将字符调到了第二行 for(num=0;num2;num+) write_dat(tab2num); write_Ascore(2,A
27、score); write_Bscore(2,Bscore); TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; /开定时器 void 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
28、) 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=0) while(!key4); Bscore+; write_Bscore(2,Bscore); /写入B队得分 void main() init();while(1) keyscan(); if(flag=0) write_com(0x80+0x40+7); /写入第一节 FIR write_dat(F); wr
29、ite_dat(I); write_dat(R); if(flag=1) write_com(0x80+0x40+7); /写入第二节 SEC write_dat(S); write_dat(E); write_dat(C); if(flag=2) write_com(0x80+0x40+7); /写入第三节 THR write_dat(T); write_dat(H); write_dat(R); if(flag=3) write_com(0x80+0x40+7); /写入第四节 FOU write_dat(F); write_dat(O); write_dat(U); if(flag=4)
30、 /比赛结束显示”GAME OVER“和两队比分 TR0=0; write_com(0x80); for(i=0;i16;i+) write_dat(tab3i); /GAME OVER字符串数组 write_com(0x80+0x40); /起始地址为53,将字符调到了第二行 for(i=0;i=4&miao=5) /若只剩5秒,蜂鸣器响1秒 Bell=0; delay_Bell(510); Bell=1; delay_Bell(510); void timer0() interrupt 1 /定时器 TH0=(65536-50000)/256; TL0=(65536-50000)%256;
31、 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); /显示比赛时间