您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机实训篮球记分牌实训报告
桂林电子科技大学信息科技学院《单片机原理及应用》实训报告学号0951100216姓名刘琦指导老师韩桂明赵志鹏张锟2012年9月19日1.系统设计本次实训的内容为设计一个篮球计分器。1.1设计要求1.1.1基本要求(1)按照题目要求独立设计系统所需电路,并完成硬件电路的制作及调试。(40分)(2)结合硬件能够正常计分(1,2,3)。(10分)(3)能够正常显示分值。(10分)(4)能够正常修改工作模式(计分与24秒)。(10分)(5)能够24秒的误差不小于1秒。(15分)1.1.2发挥部分能够两队球员犯规次数计数。(15分)1.2设计原理主控芯片采用AT89S52,采用C语言进行编程,编程后利用KeiluVision3来进行编译,再生成的HEX文件通过下载口导入芯片中。然后根据按键功能查看是否实现功能。将12MHZ的石英晶体振荡器和单片机对应的引脚正确连接,将晶振产生的时钟信号作为定时信号。篮球计分牌分为三个部分:开关控制、数码管显示和警示电路。P1口接7按键,分别作为显示切换,比分+1、+2、+3功能,秒计时暂停重置,犯规计数。队伍加分会有LED灯提示。P0口和P2口分别接数码管的段选和位选。主要在篮球比赛中用于记录24秒犯规计时和显示红蓝两队在比赛过程中的比分情况,本计时计分器有两部分组成:一部分用来实现计时功能,其基本原理和定时闹钟相似;另一部分用来实现计分功能,其基本原理和计数器相似,只不过所要记录和显示的对象分别是按键按下的次数和扫描脉冲次数。在本题目中用到的参考原理图如下:D1LED-BIBYD2LED-BIRYD3LED-BLUEXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51234567891RP1RESPACK-8R11000R21000R31000D4LED-BLUER41000图1原理图基本框图:图2整体框图1.3方案比较C51单片机显示模块键盘方案一:根据提供的原理图制作开题之时老师给了我们原理图能够按要求实现基本的加分,计时功能。方案二:改进原理图通过改进原理图我们增加了按键和蜂鸣电路从而实现警报和发挥功能的实现。方案二比实现的功能更多,更符合记分牌的实际。实现方案二的条件只需方案一的基础上增加按键和蜂鸣电路即可。所以本次实训我们选择方案一。1.4方案论证1.4.1总体思路系统采用51单片机来实现。设计出篮球记分、计时系统,能实现两队比分的加分、计时和犯规计数功能;程序由延时函数、中断服务函数、主函数等组成,主函数中通过判断按键按下实现加分,犯规计数、警告提示、显示切换和倒计时调控等功能。1.4.2设计方案单片机晶振、复位电路输入控制输出显示外部功能器件2、模块电路的设计2.1AT89S52芯片模块本次实验所用到的主要芯片,AT89S52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),期间采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89S52单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。2.2振荡电路模块晶振模块给电路提供一定频率的稳定的震荡(脉冲)信号。2.3蜂鸣器模块当倒计时到时,通过程序可以将AT89S52的P2.4口置1,经过三极管的开关电路接通蜂鸣器,使蜂鸣器开始工作,表示倒计时时间到了。2.4显示模块排阻保护电路使数码管正常输出相应的数据信息。2.5LED警示通过LED灯来指示队伍、提示犯规、计时提示等功能。2.5按键模块按键控制加分、切换、计时控制等。2.6电源部分为电路提供电源,使其工作。2.7下载口下载口的作用就是程序烧录入口。3、开发软件及编程语言简介3.1KeilC编程软件KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用3.2C编程语言C编程语言有以下特点:(1)仅需要初步了解51系列单片机的存储结构,无需知道单片机指令系统;(2)由C51编译器管理数据类型、存储器寻址、SFR分配使用等;(3)程序可读性强,能够将不同的选择与特定的操作有机结合;(4)编程及调试时间短、效率高;(5)丰富的库函数提供了众多子程序,使程序设计更为方便、简洁;(6)使用模块化编程十分方便,使得以编号的程序易于植入新程序;(7)能够与汇编语言交叉使用,用C语言编写与硬件无关的运算部分程序,用汇编语言编写与硬件有关的部分程序。4、制作与调试过程4.1制作过程设计电路原理图;上网查阅C51管脚及数码管管脚资料;把器件安在打好孔的万用板上,然后焊接;焊接好后,接通5V电源,检查电路是否显示正常;根据硬件写出实现实训要求的对应程序,并进行调试,直到能全部正确实现要求的功能。4.2调试过程测试仪器与设备单片机程序下载线1条万用表1个.PC机1台指标测试:以实现两队比分的正确显示,可以进行24S正常倒计时并报警,能记两队的犯规次数。软件调试还算顺利,没有太大的问题。第一次硬件调试时,发现有一盏LED没有亮,确定是LED灯坏了便从新焊上一个好的。第二次硬件调试时,发现蜂鸣器不响,对照原理图程序查找原因但最终没能发现问题所在。但其他功能基本实现。5、心得体会通过这次实训,让我学习了很多。动手能力得到了进一步加强,对单片机所学的理论知识也有了进一步理解。实训中也暴露出我在理论学习中的不足之处,对单片机的很多方面内容还不够了解,有些地方还需有待加强学习。正是理论学习的不足导致我在一开始无法确定原理图的正确性,实训的宝贵时间就这样流失了。通过不断地翻书查资料确定没问题后才开始焊板子。这次焊板子使用导线连接管脚以前没有试过多次焊错,或焊不好。本以为很好搞定的焊接又花了我大把时间。就是这样我急赶慢赶的完成了硬件部分的全部工作转入程序设计阶段。我找到了一些程序这些程序不是不能用就是共实现太少。我在其基础上增设功能改变编程结构得倒了能够实现计分、计时、计数功能的篮球计分拍程序。在这过程中时间短暂我集中精力边改边下边检验。最终得到了一个可行的程序。程序的结构清晰简单,实现的功能也很全面。这是我最高兴的时候。这就是本次实训给我带来的最好的礼物。6、参考文献【1】喻宗泉,《单片机原理与应用技术》,西安电子科技大学出版社【2】张欣,《单片机原理与C51程序设计基础教程》,清华大学出版社【3】李光飞,《单片机课程设计实例指导》,北京航空航天大学出版社【4】张迎新张俊谟,《单片初级机教程》,北京航空航天大学出版社【5】李光飞胡佳文楼然苗谢象佐,《单片机课程设计》,北京航空航天大学出版社7.附录附录一:原理图附录二:程序#includereg52.h//***************************数码管段代码表**********************************//unsignedcharTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsignedchara=0,b=0,ag=0,bg=0;unsignedcharmiao=24,go=0,qh=0;unsignedintbittime=0,bitdisplay=0;sbits1=P1^0;sbits2=P1^1;sbits3=P1^2;sbits4=P1^3;sbits5=P1^4;sbits6=P1^5;sbits7=P1^6;sbitfm=P2^4;///***************定时中断服务程序***********************//voidtimer0(void)interrupt1using0{TH0=0Xf8;TL0=0x30;//定时器赋初值switch(bitdisplay){case0:P2=0xfe;if(qh==0)P0=Tab[a/10];if(qh==1)P0=Tab[miao/10];if(qh==2)P0=Tab[ag/10];break;case1:P2=0xfd;if(qh==0)P0=Tab[a%10];if(qh==1)P0=Tab[miao%10];if(qh==2)P0=Tab[ag%10];break;case2:P2=0xfb;if(qh==0)P0=Tab[b/10];if(qh==1)P0=0x00;if(qh==2)P0=Tab[bg/10];break;case3:P2=0xf7;if(qh==0)P0=Tab[b%10];if(qh==1)P0=0x00;if(qh==2)P0=Tab[bg%10];break;}bitdisplay++;bittime++;if(bitdisplay==4){bitdisplay=0;}if(bittime==500){bittime=0;if(go)if(miao--==0){go=0;miao=24;P3=0x7f;fm=1;}elsefm=0;//24秒倒计时}}//**延时程序***//voiddelay(unsignedintt){unsignedinti,j;for(i=0;it;i++)for(j=0;j200;j++);}//**************主程序*********************//voidmain(void){TMOD=0x01;TH0=0xf8;TL0=0x30;//定时2msEA=1;ET0=1;TR0=1;//开启定时器while(1){if(!s4){if(!s1){delay(25);if(!s1){a++;P3=0xef;if(a==100)a=0;}}if(!s2){delay(25);if(!s2){b++;P3=0xbf;if(b==100)b=0;}}}//加一分if(!s5){if(!s1){delay(25);if(!s1){a=a+2;P3=0xef;if(a==100)a=0;}}if(!s2){delay(25);if(!s2){b=b+2;P3=0xbf;if(b==100)b=0;}}}//加两分if(!s6){if(!s1){delay(25);if(!s1){a=a+3;P3=0xef;if(a==100)a=0;}}if(!s2){delay(25);if(!s2){b=b+3;P3=0xbf;if(b==100)b=0;}}}//加三分if(!s3){delay(25);if(!s3){if(qh2)qh=qh+1;elseqh=0;}//显示切换}if(!s4){delay(25);if(!s4){if(go++==1)go=0;}//倒计时}if(!s5)//重置24
本文标题:单片机实训篮球记分牌实训报告
链接地址:https://www.777doc.com/doc-4848623 .html