1、单片机系统课 程 设 计成绩评定表设计课题 : 基于单片机篮球计分器设计 学院名称 : 电气工程学院 专业班级 : 学生姓名 : 学 号 : 指导老师 : 设计地点 : 设计时间 : 指导老师意见:成绩: 署名: 年 月 日单片机系统课 程 设 计课程设计名称: 基于单片机篮球计分器设计 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计地点: 课程设计时间: 单片机系统 课程设计任务书学生姓名 专业班级学号题 目课题性质工程设计课题起源选题指导老师 关键内容(参数) 利用89C51单片机设计篮球计分器系统,实现以下功效:(1)用4位LED显示器显示两队分数; (
2、2)能够随时手动对A、B两队分别计分; (3)能够手动实现A、B两队分数位置随场地交换而对应调换任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:根据确定方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路设计要有具体叙述。第5-6天:软件设计,编写程序。第7-8天:试验室调试。第9-10天:撰写课程设计汇报。要求内容完整、图表清楚、文理流畅、格式规范、方案合理、设计正确,篇幅合理。关键参考资料1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,2伟福LAB6000系列单片机仿真试验系统使用说明书3 阎
3、石数字电路技术基础(第五版)北京:高等教育出版社,审查意见系(教研室)主任签字: 年 月 日 目录1、概述41.1、研究背景41.2、基础功效及设计思绪42、总体方案设计52.1、方案选择52.2、总体设计53、硬件电路设计63.1、电源电路63.2、晶振电路73.3、键盘电路73.4、复位电路83.5、显示电路84、系统软件设计94.1、主程序设计104.2、加分程序设计104.3、交换程序设计124.4、LED显示程序设计13 4.5、共阴极数码管字形表145、总结15参考文件15附录1:系统原理图17附录2:源程序18附录3:系统调试251、概述1.1、研究背景在这个电子信息技术快速普及
4、今天,大家对电子产品需求越来越多。二十一世纪今天,科学技术迅猛发展,时代前进脚步越迈越宽,应用自动化设备,现代化通讯,计算机处理,数字化信息,现代化显示设备等部分高新技术使人类迈向智能化发展。在智能化产品中,单片机应用已经越来越广泛,单片机以它体积小、质量轻、耗电省、可靠性高、价格低等优点,开始不停发展,并广泛应用于仪器仪表、家用电器、医疗设备、航天航空领域、工业专用设备管理及过程控制等领域,在很多大中型电气设备和小型电子产品中也用到了单片机进行控制。单片机把我们带入了智能化电子领域,很多繁琐系统若由单片机进行设计,便能收到电路更简单、功效更齐全良好效果。若把经典电子系统看成一个僵死电子系统,
5、那么智能化现代电子系统则是一个含有“生命”电子系统。本设计就是基于单片机设计篮球计分系统,经过串口通信动态传输数据,使计分系统有了更多更完善功效。单片机系统硬件结构给了篮球计分器系统“身躯”,而单片机应用程序给予了其新“生命”,使其在传统篮球计分器面前含有电路简单、成本低、运行可靠等特色。1.2、基础功效及设计思绪1、利用89C51单片机设计篮球计分器系统,实现以下功效(1)用4位LED显示器显示两队分数; (2)能够随时手动对A、B两队分别计分;(3)能够手动实现A、B两队分数位置随场地交换而对应调换。2、设计思绪:以AT89C51单片机为关键元件,利用独立式键盘控制,使4位共阴极LED数码
6、管以静态显示方法实时统计A、B两队分数。独立式键盘由K1、K2、K3、K4、K5、K6、K7、K8组成。其功效以下:(1)K1、K2:加1分;(2)K3、K4:加2分;(3)K5、K6:加3分;(4)K7:半场换分;(5)K8:显示复位。A、B两队分别占用两位LED显示器,显示范围为099,能够基础满足通常比赛需要。2、总体方案设计2.1、方案选择 单片机在多种电子产品中应用已经越来越广泛,很多电子产品利用单片机所取得便利得到了大家好评,针对基于单片机篮球计分器设计要求,实现其功效方案有多个,现列举以下: 方案(一)按键控制每次各队加分值为1分或2分,如若进3分球,则需两键相加。并由半场换分按
7、键和复位功效。分数经过4位LED显示器动态显示; 方案(二)系统采取三个按键控制每次各队加分值为1分、2分或3分。一样也有半场换分按键和复位功效。并经过4位LED显示器静态显示分数。这二个方案全部是基于单片机控制,经过按键加分及数码管显示,不一样设计部分在于按键数量和显示方法选择上。方案(一)按键数量较少,加上交换按键和复位按键共需要6个,但也能完成基础功效。不过在显示方面,动态方法编程较为复杂。方案(二)按键即使较多,但功效齐全,使用方便。而且电路不是太过复杂,编程较为简单。 最终方案:经过以上比较,方案(一)按键使用不方便,且软件设计复杂。所以选择方案(二),即以8位独立式键盘分别实现加1
8、分、加2分、加3分、半场换分和显示复位功效,并用4位共阴极LED显示器以静态显示方法显示分数。2.2、总体设计 篮球计分器设计是基于满足设计要求前提而且依据理论上可实现性和硬件上经济实用性,而进行设计关键步骤。本节从大家对系统功效需求出发,在综合考虑多种原因情况下,设计出篮球计分器总体构架。1、加分功效设计:经过显示缓冲区为中间加分媒介。每当按键按下时,首先经过外部中止源实现中止,进入中止后判定键值再进入对应加分子程序,对对应显示缓冲区加分。2、分数调换功效:一样是利用外部中止源实现中止,中止服务程序应能实现中场分数位置调换功效。3、分数显示功效:用同时移位寄存器74HC164实现4位LED数
9、码管静态显示。经过查表指令在字形表中找到和显示缓冲区对应字形码,然后串行移位输出即可。基于89C51单片机篮球计分器总体设计框图图2所表示。 图2 篮球计分器总体框图在框图所表示系统构架中,8位独立式键盘包含6位加分按键,1位分数调换按键和1位复位按键。其中加分按键经过7421实现中止扫描,分数调换按键则直接经过外部中止1入口P3.3实现中止服务。3、 硬件电路设计3.1、源电路 单片机正常工作电压为5V,所以设计电源电路关键是提供单片机工作电压。图3.1是为单片机提供电压电源电路,包含变压、整流、稳压、滤波等步骤。在这个电路中采取了三端集成稳压器LM7805,能够输出5V直流电压以供给单片机
10、。图3.1 电源电路3.2、晶振电路电路中晶振即石英晶体震荡器。因为石英晶体震荡器含有很好频率稳定性和抗外界干扰能力,所以,石英晶体震荡器是用来产生基准频率。经过基准频率来控制电路中频率正确性。同时,它还能够产生振荡电流,向单片机发出时钟信号。图3.2是单片机晶振电路。片内电路和片外器件就组成一个时钟产生电路,CPU全部操作均在时钟脉冲同时下进行。片内振荡器振荡频率很靠近晶振频率,通常多在1.2MHz24MHz之间选择。C1、C2是反馈电容,其值在20pF100pF之间选择,经典值为30pF。本电路选择电容为30pF,晶振频率为12MHz。图3.2 晶振电路3.3、键盘电路键盘电路在篮球计分器
11、中关键作用是用于实现加分和交换分数位置。键盘可分为独立式键盘和行列式键盘。本设计中因为按键数少于8个,所以采取独立式按键电路。另外采取中止扫描方法扫描键盘状态,当然也能够直接用编程扫描方法,二者工作思绪基础一样。具体电路图3.3所表示。AT89C51单片机直流输入电流为15mA,当直流电源电压为+5V时,可选择5.1K上拉电阻确保单片机正常工作。图3.3 键盘电路3.4、复位电路复位电路关键功效是使单片机进行初始化,在初始化过程中需要在复位引脚上加大于2个机器周期高电平。复位后单片机地址初始化为0000H,然后继续从0000H单元开始实施程序。在复位电路中提供复位信号,等到系统电源稳定后,再撤
12、销复位信号。不过为了在复位按键稳定前提下,电源稳定后还要经一定延时才撤销复位信号,以防在按键过程中引发抖动而影响复位。图3.4所表示 RC 复位电路能够实现上述基础功效。图3.4 复位电路3.5、显示电路显示电路是用于显示分数。采取LED数码管进行显示是因为LED数码管含有以下多个优点:(1)能在低电压、小电流条件下驱动发光,能和CMOS、ITL电路兼容。(2)发光响应时间极短(0.1s),高频特征好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。 数码管有共阴极和共阳极两种类型,其公共端关键进行位控制,笔画端则是进行字符控制,数码管有静态显示和动态显示两种方法。本设计采取是4位共阴极
13、LED数码管串行驱动电路来达成显示目标。驱动器采取74HC164,由单片机89C51P3.0和P3.1来控制LED数码管显示。显示电路图如3.5所表示。因为共阴极数码管能够不用外接电阻,所以原理图中电阻可去掉。图3.5 显示电路4、 系统软件设计 系统软件设计关键由加分中止服务程序,交换中止服务程序,LED显示程序等几部分组成。本章节系统介绍了篮球计分器主程序和各关键功效子程序设计步骤,具体程序代码见附录2。4.1、主程序设计主程序组成无限循环,关键完成单片机初始化,等候加分和交换中止功效。主程序步骤图图4.1所表示。图4.1 主程序步骤图主程序步骤说明:电路关键分为以下多个部分,分别是电源部
14、分、按键部分、显示部分,各部分含有不一样子程序。主程序作用关键是先让单片机初始化,包含栈底指针重新赋值、开中止、设置外部中止为脉冲触发等;然后使显示缓冲区清零,使让LED显示为零;再利用无条件转移指令SJMP $,等候加分中止和交换中止。待中止服务程序实施完后,再次返回主程序等候下一次中止。4.2、加分程序设计硬件电路中设计了6个加分按键,采取中止和查询结合方法扩充外部中断源,实现对应加分功效。加分程序步骤图图4.2所表示。图4.2 加分程序步骤图加分程序步骤说明:按下加分按键后,产生外部中止0,CPU从主程序跳转到加分中止服务程序继续实施。当在实施对应加分中止服务程序时,不许可其它按键按下有
15、对应操作,所以必需在进入中止后经过CLR EA指令关中止,又因为为了避免保护现场时,部分寄存器内容出现紊乱,此指令必需放在PUSH指令之前。CPU经过查询方法判定键值后进入对应加分子程序。因为在操作按键时,不管是按下还是松开,触点在闭合和断开时均会产生抖动,此时逻辑电平是不稳,假如得不到正确处理,可能会引发单片机对按键命令错误实施,所以必需实施一段延时子程序,用来软件去抖动。比如延时10ms:MOV R0,#0AHDL2:MOV R1,#7DHDL1:NOPNOPDJNZ R1,DL1DJNZ R0,DL2延时子程序实施完后,再次判定键值,倘若仍然能够检测到对应键值信号,则继续向下实施,不然返
16、回主程序。继续向下实施时,首先让对应显示缓冲区加对应分数,然后经过CJNE指令和10进行比较。若小于10,则串行输出显示,不然向对应高位进1,并减10。进1后高位仍需和10进行比较,若小于10,则将上述减数重新给予对应低位,然后串行输出,不然各位清零。输出刷新后,CPU返回主程序。4.3、交换程序设计 因为篮球比赛中场结束以后,要交换场地,则分数显示位置也要随之调换。硬件电路中设置K7键完成此项功效。交换程序步骤图图4.3所表示。 图4.3 交换程序步骤图交换程序步骤说明:按下交换按键后,产生外部中止1,CPU从主程序跳转到交换中止服务程序中继续实施。经过中间寄存器A和交换指令XCH实现分数位
17、置交换。交换完成后,CPU返回主程序。4.4、LED显示程序设计硬件设计中利用4位LED静态显示电路显示分数。经过显示缓冲区利用MOVC A,A+DPTR查表指令找到指定字形码,并由串行口串行输出显示。LED显示程序步骤图图4.3所表示。图4.3 LED显示程序步骤图LED显示程序步骤说明:首先将高位显示缓冲区值,也就是字形表检索值给累加器A,并将字形表首地址给DPTR,然后利用查表指令找到指定字形码,最终由单片机串行口串行输出。紧接着将下一位缓冲区值给累加器A,一样由查表指令找到对应字形码,并串行输出。依次循环实施上述操作,直至4位全部输出后返回主程序。4.5、共阴极数码管字形表 硬件电路所
18、用数码管为共阴极,所以串行口输出高电平有效。而且4位数码管dp段全部没有使用,所以一直为0。另外应尤其注意是字形码高低位次序应和硬件中数码管引脚连接对应。共阴极数码管字形表如表4.1所表示。表4.1 共阴极数码管字形表字形a b c d e f g dp字形码01234567891 1 1 1 1 1 0 00 1 1 0 0 0 0 01 1 0 1 1 0 1 01 1 1 1 0 0 1 00 1 1 0 0 1 1 01 0 1 1 0 1 1 01 0 1 1 1 1 1 01 1 1 0 0 0 0 01 1 1 1 1 1 1 01 1 1 1 0 1 1 00FCH60H0DA
19、H0F2H66H0B6H0BEH0E0H0FEH0F6H5、总结 此次设计叙述了篮球计分器基础原理及使用方法,给出了一个篮球计分器设计方案。此次设计篮球计分器,电路简单,而且易懂,使操作使用者使用很方便,成本较低,灵敏可靠,计录正确,连接简单,含有很高使用价值。设计内容包含比分显示、比分调换等部分,能够使参与比赛组员、裁判和观众一目了然看到参赛队成绩,以最快速度评出结果.该篮球计分器还能广泛应用于各类知识竞赛。本设计由AT89C51编程控制LED七段数码管作球赛计时计分系统含有赛程定性能稳定、操作方便且易携带等特点。可广泛适合各类学校和小团体作为赛程计分。经过这次篮球计分器设计,能够更清楚了解
20、单片机程序设计基础指令功效、编程步骤和技巧,对AT89C51单片机原理和结构深入熟悉和掌握,并对部分绘图和仿真工具积累了更多使用经验。参考文件: 1 张迎新单片微型计算机原理、应用及接口技术(第二版)北京:国防工业出版社,2 郑锋 王巧芝 程丽平 张清鹏51单片机经典应用开发范例大全北京:中国铁道出版社,3 彭为 黄科 雷道仲单片机经典系统设计实例精讲北京:电子工业出版社,4 阎石数字电子技术基础北京:高等教育出版社,5 夏路易 石宗义电路原理图和电路板设计教程Protel 99SE北京:北京期望电子出版社,附录1:系统原理图附录2:源程序K1 BIT P0.0K2 BIT P0.1K3 BI
21、T P0.2K4 BIT P0.3K5 BIT P0.4K6 BIT P0.5DIS0 EQU 30H;定义显示缓冲区DIS1 EQU 31HDIS2 EQU 32HDIS3 EQU 33HORG 0000HLJMP MAIN;跳转到主程序LJMP GRADE;跳转到加分中止服务程序ORG 0013HLJMP EXCHANGE;跳转到交换中止服务程序ORG 0033HMAIN:MOV SP,#3FH;对堆栈指针进行赋值MOV IE,#85H;开中止MOV TMOD,#05H;外部中止为下降沿脉冲触发LCALL CLEARLCALL DISPLAY1SJMP $;等候中止GRADE:CLR EA
22、;关中止JNB K1,LGRADE1;判定键值JNB K2, LGRADE2JNB K3, LGRADE3JNB K4, RGRADE1JNB K5, RGRADE2JNB K6, RGRADE3LGRADE1:LCALL DELAY;延时去抖动JNB K1,SW1;再次确定K1键是否按下SETB EA;开中止RETISW1:INC DIS1;K1键按下则加分LJMP LCOMPARELGRADE2:LCALL DELAY;延时去抖动JNB K2,SW2;再次确定K2键是否按下SETB EA;开中止RETI SW2:INC DIS1;K2键按下则加分INC DIS1LJMP LCOMPAREL
23、GRADE3:LCALL DELAY;延时去抖动JNB K3,SW3;再次确定K3键是否按下SETB EA;开中止RETI SW3:INC DIS1;K3键按下则加分INC DIS1INC DIS1LJMP LCOMPARELCOMPARE:MOV A,DIS1CJNE A,#10,LCOMP;(DIS1)值和10进行比较SJMP LCARRY;(DIS1)等于10则跳转到进位子程序LCOMP:JC $+2;(DIS1)小于10则输出显示LJMP DISPLAY2SJMP LCARRY;(DIS1)大于10则跳转到进位子程序LCARRY:CLR CMOV A,DIS1SUBB A,#10INC
24、 DIS0MOV A,DIS0CJNE A,#10,$+9;(DIS0)值和10进行比较LCALL CLEAR;(DIS0)等于10则数码管显零LJMP DISPLAY2MOV DIS1,ALJMP DISPLAY2RGRADE1:LCALL DELAY;延时去抖动JNB K4,SW4;再次确定K4键是否按下SETB EA;开中止RETI SW4:INC DIS3;K4键按下则加分LJMP RCOMPARERGRADE2:LCALL DELAY;延时去抖动JNB K5,SW5;再次确定K5键是否按下SETB EA;开中止RETI SW5:INC DIS3;K5键按下则加分INC DIS3LJM
25、P RCOMPARERGRADE3:LCALL DELAY;延时去抖动JNB K6,SW6;再次确定K6键是否按下SETB EA;开中止RETI SW6:INC DIS3;K6键按下则加分INC DIS3INC DIS3LJMP RCOMPARERCOMPARE:MOV A,DIS3CJNE A,#10,RCOMP;(DIS3)值和10进行比较SJMP RCARRY;(DIS3)等于10则跳转到进位子程序RCOMP:JC $+2;(DIS3)小于10则输出显示LJMP DISPLAY2SJMP RCARRY;(DIS3)大于10则跳转到进位子程序RCARRY:CLR CMOV A,DIS3SU
26、BB A,#10INC DIS2MOV A,DIS2CJNE A,#10,$+9;(DIS2)值和10进行比较LCALL CLEAR;(DIS2)等于10则数码管显零LJMP DISPLAY2MOV DIS3,ALJMP DISPLAY2CLEAR:MOV DIS3,#00H;显示缓冲区清零MOV DIS2,#00HMOV DIS1,#00HMOV DIS0,#00HRETDELAY:MOV R0,#0AH;延时10msDL2:MOV R1,#7DHDL1:NOPNOPDJNZ R1,DL1DJNZ R0,DL2RETDISPLAY1:MOV R7,#4H;字形码输出MOV R0,#DIS3L
27、P:MOV A,R0MOV DPTR,#1000HMOVC A,A+DPTR;查表MOV SBUF,A;将字形码串行输出JNB TI,$CLR TI;软件清除串行输出中止标志位DEC R0DJNZ R7,LPRETDISPLAY2:LCALL DISPLAY1SETB EA;开中止RETIEXCHANGE:CLR EA;关中止MOV A,DIS0;分数位置交换XCH A,DIS2MOV DIS0,AMOV A,DIS1XCH A,DIS3MOV DIS1,ALJMP DISPLAY2ORG 1000HDB 0FCH,60H,0DAH,0F2H,66HDB 0B6H,0BEH,0E0H,0FEH,0F6HEND附录3:系统调试