单片机原理及应用实训报告:实篮球记分牌.doc

上传人:罗晋 文档编号:6078573 上传时间:2020-09-06 格式:DOC 页数:19 大小:1.76MB
返回 下载 相关 举报
单片机原理及应用实训报告:实篮球记分牌.doc_第1页
第1页 / 共19页
单片机原理及应用实训报告:实篮球记分牌.doc_第2页
第2页 / 共19页
单片机原理及应用实训报告:实篮球记分牌.doc_第3页
第3页 / 共19页
单片机原理及应用实训报告:实篮球记分牌.doc_第4页
第4页 / 共19页
单片机原理及应用实训报告:实篮球记分牌.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《单片机原理及应用实训报告:实篮球记分牌.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用实训报告:实篮球记分牌.doc(19页珍藏版)》请在三一文库上搜索。

1、 桂林电子科技大学信息科技学院单片机原理及应用实训报告题 目 篮球计分牌 学 号 0951100228 姓 名 谢锎 指导老师 韩桂明 张锟 赵志鹏 2011 年 9 月 23 日1.系统设计1.1设计要求1.1.1.基本要求 1 设计一个基于单片机的篮球计分牌,实现两队的计分功能与24秒计时功能2 结合硬件能够正常计分3 能够正常显示分值。4 能够正常修改工作模式(计分与24秒)5 能够24秒的误差不小于1秒1.1.2.发挥部分1 12分钟倒计时2 能够两队球员犯规次数计数3 重置24秒表4 倒计时结束报警5 12分钟倒计时结束红灯全部亮1.2设计原理1.2.1 框图设计1.2.2 程序流程

2、1.2.2.1加分程序流程 中断开始 中断开始 a队显示分数加1 b队显示分数加1a按键按下 成功否?b按键按下成功否? 中断返回 中断返回YYNN1.2.2.2犯规程序流程 中断开始 中断开始 a队显示犯规加1 b队显示犯规加1a按键按下 成功否?b按键按下成功否? 中断返回 中断返回YYNN1.2.2.3 选择显示程序流程Q=1?Q=0?Q=3?Q=2?Q=?加分显示24秒倒计时显示12分钟倒计时显示犯规次数显示YYYYNNN1.3方案比较1.3.1 方案1:是通过按不同的键来切换不同的输入,使用不同的LED灯的亮灭来显示不同的队加分。电路图: 1.3.2 方案2:通过一个键来切换分数,2

3、4s倒计时,12分钟倒计时和犯规次数,通过LED灯的亮来判断是那个队加分,那个队犯规,12分钟倒计时结束。另外,给a队b队加分和加犯规次数。通过按键,选择哪种显示方式,暂停/开始24s倒计时,重置24s;电路图:1.4方案论证1.4.1总体思路7个按键实现对应功能:P16对应a队加分,第一个红灯亮;P10对应b队加分,第二个红灯亮;P11对应显示切换,切换有四类显示方式,第一类是a队跟b队的比分显示,且各两个数码管显示。第二类是24s倒计时的显示。第三类是12分钟倒计时的显示。第四类是a队跟b队的犯规次数显示;P12对应24秒倒计时暂停/开始;P13对应重置24s倒计时,同时24s倒计时暂停;

4、P14对应a队加犯规次数,同时第三个红灯亮;P15对应b队加犯规次数,同时第四个红灯亮;外加复位键,按下则清零;24秒倒数为0时蜂鸣器响起警报,重新倒数时蜂鸣器关闭。12分钟倒计时结束时,蜂鸣器响起警报,红灯全亮。1.4.2设计方案使用了延时子程序(delay)用来按键消抖,还有定时中断程序来显示数码管,启止24s倒计时,12分钟倒计时,使用了P0口作为数码管的段选和P2口的位选,使用P1口作为按键作为输入,P3口的发光二极管作为判断a队和b队的选择和作为模式的选择部分和蜂鸣器作为倒计时24秒的计时的时间到;在主程序里面有各按键的功能,a队加分,b队加分,切换功能,重置24s功能,a队加犯规,

5、b队加犯规;2、模块电路的设计2.1 AT89S51单片机芯片 在本设计中P3.7P3.4口接LED灯,P2.7口(28脚)接蜂鸣器电路,P1.0P1.6(17脚)口接7个按键,RST(9脚)接复位电路,P2.0P2.4(2124脚)接四位数码管的位选脚,P0.0P0.7(3239脚)接四位数码管段位脚,18、19脚接晶振电路,20脚接GND,31脚、40脚接VCC。2.2 四位共阴数码管电路2.3 复位电路2.4 内振荡电路(时钟电路)2.5 蜂鸣器电路2.6 下载口电路2.7 二极管显示电路3、开发软件及编程语言简介3.1 Keil C编程软件3.1.1 系统概述Keil C51是德国Ke

6、il Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3.1.2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,其中uVision与Ishell分别是C51 for

7、 Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。3.2 Keil开发工具-uVision3 uVision3集成开发环境是一个基于Wi

8、ndow的开发平台,包括一个全功能的源代码编辑器,一个项目管理器和一个MAKE工具。利用源代码编辑器可以高效地编辑源程序。利用项目管理器可以很方便地创建和维护项目,利用MAKE工具可以汇编,编译和连接。4、制作与调试过程4.1制作过程:4.1.1编程时用C语言编写并需要结合电路原理图编写;4.1.2在使用proteus软件仿真时,要找到元器件相应的符号及其使用方法;4.1.3在制作电路板时,由于使用万用板,在焊接元器件的管脚时需要注意焊锡的使用量,用量过多会导致该焊锡与其它的铜孔相连,有可能导致电路的某条支路短路;4.1.4在焊接按键时,需要分清楚其的管脚,可以用万用表测试管脚的导通,则可以区

9、分管脚;4.1.5在焊接数码管的管脚时,应该注意其管脚的分布;4.1.6在焊接AT89S52的管脚时,需要注意分清各个管脚;4.1.7在焊接晶振的管脚时需要注意将其尽量靠近该芯片的XTAL1,XLAL2的两端;4.1.8在焊接下载端口的管脚时需要注意各管脚与芯片的管脚对应。4.2调试过程:4.2.1初步调试程序时并下载到芯片上时,通过操作验证“暂停部分的程序”在比赛结束后再按暂停按键时,可以实现倒计时,但是当t=0时,开始出现乱码,针对该问题,需要在其暂停部分的程序加以“break”到相应的程序中,经调试,下载可以实现将程序跳出“死循环”。4.2.2在调试电路板时不能将程序下载到芯片的情况,经

10、分析得出晶振接触不良。4.2.3 硬件搭建好后,发现程序下载不了,经检查发现,下载端口接反,下载口连接正确后,程序依然下载失败。经常长时间电路检查依然为发现问题。后面通过仔细查看单片机最小系统,最终发现单片机的EA端没接vcc导致单片机无法读取片内ROM。4.2.4 下载成功后,然后再补充了LED灯跟功能对应的显示。5、心得体会通过本次实训,发现自身在电子制作,程序编写方便有着非常大的不足。对以往学习过的编程知识没有好好掌握,特别是编程这方便的知识较薄弱。学习过的知识在实际应用中仿佛是冰山一角,完全不够用,需要通过查阅很多资料才能解决到碰到的相关问题。而且实训中出现的问题都是实际应用出比较典型

11、的问题。发现问题解决问题,通过不断的了解,对单片机原理及应用这门课有了更深刻的了解掌握。单片机技术在当今各方面领域有着极高的应用率,是一门动手能力非常强的技术。其中的程序和模块化元件看起来很简单,但是真正要自己设计有代表性出来是很难的,需要有扎实的知识基础,和较强的逻辑分析能力。这些条件我们都可以通过平时的努力来积累。碰到问题,先自己思考解决,再请教老师。这次实训还让我深刻的体会了结构化程序设计的优势,让我懂得当我们要进行一个复杂的程序设计时应该先将其分解为多个不同的功能模块再分别编程实现,这样做不仅降低了编程的难度,也容易让编程者思路更加清晰,避免出现不必要的错误。在做仿真时,仿真图正确也不

12、一定就是说明一定正确。做实物时,不仅要做到电路正确,也要尽可能做到布局合理、焊接到位,否则很有可能电路原理图正确、仿真图正确但是任然调试不出结果。另外,焊接的时候不能分心,否则极易出错。6、参考文献【1】喻宗泉单片机原理与应用技术西安:西安电子科技大学出版社。2006【2】李光飞单片机课程设计实例指导北京:航空航天大学出版社。2004【3】张欣单片机原理与C51程序设计基础教程北京:清华大学出版社。20107、 附录7.2.1 电路原理图7.2.2 PCB7.2.3 硬件正面图7.2.4 硬件反面图7.2.5元件清单:序号元件名称规格数量151单片机AT89S521个2晶振12M晶振1个4七段

13、数码管4位共阴极1个5起振电容22pF瓷片电容2个6复位电容10uF1个7电阻1K5个8按键8个9LED4个10蜂鸣器1个11NPN80501个7.2.6 程序#include/*数码管段代码表*/unsigned char Tab=0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0x20;unsigned char a=0,/a队分数 b=0,/b队分数 afg=0,/a队犯规次数 bfg=0;/b队犯规次数 unsigned char t=24,/倒计时24秒 k=0,/倒计时暂停/开始状态 h=0,/显示转换状态 miao=0,/秒钟

14、fen=12;/12分钟倒计时分钟intbittime=0; /循环次数intbitdisplay=0;/显示sbit P16=P16;/a队加分sbit P10=P10;/b队加分sbit P11=P11;/显示状态切换sbit P12=P12;/倒计时暂停/开始sbit P13=P13;/24s倒计时重置sbit P14=P14;/a队犯规加次数sbit P15=P15;/b队犯规加次数sbit fmq=P27;/蜂鸣器/*定时中断服务程序*/void timer0 (void) interrupt 1 using 0TH0=0Xf8;TL0=0x30;/定时器赋初值switch (bit

15、display) case 0: P2=0xfe; if(h=0)P0=Taba/10;/a队分数十位显示 if(h=1)P0=Tabt/10;/倒计时十位显示 if(h=2)P0=Tabfen/10;/每节比赛12分钟,分钟十位显示 if(h=3)P0=Tabafg/10;/犯规的十位显示 break; case 1: P2=0xfd; if(h=0)P0=Taba%10;/a队分数个位显示 if(h=1)P0=Tabt%10; /倒计时个位显示 if(h=2)P0=Tabfen%10;/分钟的个位显示 if(h=3)P0=Tabafg%10;/a犯规的个位显示 break; case 2:

16、 P2=0xfb; if(h=0)P0=Tabb/10; if(h=1)P0=0x00; if(h=2)P0=Tabmiao/10; if(h=3)P0=Tabbfg/10; break; case 3: P2=0xf7; if(h=0)P0=Tabb%10; if(h=1)P0=0x00; if(h=2)P0=Tabmiao%10; if(h=3)P0=Tabbfg%10; break;bitdisplay+;bittime+;if(bitdisplay=4) bitdisplay=0;/数码管扫描 返回if(bittime=500)bittime=0; if(k) if(t-=0) k=0

17、;t=24;fmq=1; else fmq=0; if(miao-=0)if(fen=0)P3=0x0f;fen=12;miao=0;k=0;fen-;miao=59; /12分钟结束,4个灯全亮 /*延时程序*/void delay (unsigned int t)unsigned int aaa,bbb;for(aaa=0;aaa100;aaa+)for(bbb=0;bbb=4)h=0; /显示切换if(!P12)/按键4delay(100);if(!P12) if(k+=2)k=0;/倒计时 if(!P13)/按键5delay(100);if(!P13)t=24;k=0;fmq=1;/重置24s倒计时if(!P14)/按键6delay(100);if(!P14)afg+;k=0;P3=0xbf;if(afg=60) afg=0;/a队犯规 if(!P15)/按键7delay(100);if(!P15)bfg+;k=0;P3=0x7f;if(bfg=60) bfg=0;/b队犯规

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1