篮球赛计时计分器课程设计.doc_第1页
篮球赛计时计分器课程设计.doc_第2页
篮球赛计时计分器课程设计.doc_第3页
篮球赛计时计分器课程设计.doc_第4页
篮球赛计时计分器课程设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

篮球赛计时计分器课程设计目录第1章 系统概述11.1 功能简述11.2 按钮设置1第2章 总体方案设计22.1系统框图22.2 软件总体设计2第3章 系统硬件设计3 3.1 80C51单片机33.2 34矩阵式键盘 33.3 8段数码管显示器3 3. 4 系统原理图 3 第4章 软件设计44.1 主函数设计44.2 按键码获取,按键处理函数54.3 显示子函数 64.4 延时子函数 7第5章 系统的安装调试说明8 5.1 软件调试85.2 软硬联调8总结 9参考文献10 附录A 系统原理图 11附录B 源程序清单12第1章 系统概述1.1 功能简述本设计内容为比赛计分器,主要用于各种体育比赛记录分数。采用矩阵式键盘作为输入,用户可分别对两队比分进行加1、加2、加3和减1减2、减3操作,其加减1,2,3分可以通过加减1分、2分和3分的切换按钮实现,并通过指示灯显示其每次按下加减分键所加减的分值。可以实现预置分。比分通过4个8段数码管显示器进行显示,每队比分显示2位,1.2 按钮设置计分器应该有7个按键分别标注于原理图,见图1-1。图1-1按钮功能图其中1/2/3分切换由发光二极管指示,加1减1分别对应。预置分是事先设定分数可以分别设定甲乙两队的初始分数。按下清零后,显示的分数清零。第2章 总体方案设计2.1 系统框图系统框图,见图2-1。4个8段数码显示器3x4矩阵键盘89C52单片机发光二极管复位电路图2-1 系统框图本设计用80C51单片机为核心,利用4个8段数码管显示器.采用动态显示输出比分,用户信息输入则采用34矩阵式键盘。89C52单片机有32根I/O线,所以不用扩展I/O口。用一片单片机即可满足本设计的输入输出。2.2 软件总体设计软件设计主要分为3个部分:信息输入、信息处理、显示输出。主要包括:显示函数,按键获取函数,按键处理函数,进制转换函数。信息输入时采用矩阵式键盘来实现,所以需要检测键盘有无按键的子程序;信息处理需要对用户通过键盘输入的不同信息进行辨别并执行相应的处理;显示输出考虑到成本和电路体积,决定采用动态输出。第3章 系统硬件设计3.1 80C51单片机因为我们上课时学的是MCS-51,所以就选择了STC89C52单片机,因为它与INTEIMCS-51兼容,并且它们都具有相同的CPU和指令系统,引脚功能兼容,容易掌握和使用。3.2 34矩阵式键盘根据设计共需要7个按键,可采用33矩阵式键盘,但考虑到常用键盘为34矩阵式键盘,而且方便以后功能的扩展和方便硬件的连接,所以最终决定采用34矩阵式键盘作为输入。3.3.1 数码管显示器数量选择两个队,每队2位比分,每个显示器只能显示一位,则至少需要采用4个8段数码管显示器。段数码管显示器采用动态显示输出比分。3.3.2 数码管共阴共阳接法的选择51单片机I/O口输出高电平时输出的电流很小,数码管不会太亮;因为本设计采用动态显示,单片机I/O口直接接数码管,所以决定采用共阳数码管。3.3.3 数码管驱动的选择为了使数码管亮度达到要求,数码管的位选端需要驱动,因为单片机I/O口的高电平输出的电流很小,需要驱动电路驱动,从而增加显示亮度。最简单便宜的驱动就是使用三极管,为低电平时开通,所以选择PNP型三极管。3. 4系统原理图(见附录)第4章 软件设计4.1主函数设计主函数程序代码:MAIN: MOV NUMA,#0 MOV NUMB,#0 ;分数清零 MOV TEMP,#1 ;起始时的分数加1 MOV P1,#0DFH ACALL TRANM0: ACALL DISP ;调用显示函数 ACALL KEYSCAN ;调用按键获取函数 SJMP M0 ;首先初始化将储存甲乙两对分数的内存单元清零,起始时TEMP置1,并使LED5点亮,调用进制转换函数,调用显示函数,调用按键获取函数,之后重复调用显示函数,调用按键获取函数.。函数间的调用关系,见图4-1。主函数进制转换函数显示函数延时函数按键获取函数延时函数按键处理函数进制转换函数图4-1函数关系调用图4.2按键获取,按键处理函数按键获取,按键处理函数流程图,见图4-2。键扫描开始有无键按下去抖动键码计算释放键JMP A+DPTRA=06EH,清零键处理A=0D62H, 分值切换键处理A=0E3H, A减分键处理A=0E5H,A加分键处理图4-2按键获取,按键处理函数流程图说明:由于图纸大小有限,还有B加分键处理,B减分键处理,以及按下无关键时显示不变。未在图纸中表示出来。4.3显示子程序 本程序是采用动态显示,用这种方法的好处在于每次刷新显示的时间相同,每个数码管显示的时间也相同,这样就可以让数码管清晰而且稳定的显示数据。显示子程序流程图,见图4-3。位 选 通取 段 码送 段 码调用延时程序关 段 码图4-3 显示子程序流程图4.4 延时子程序给R6放初值执行三条空指令返回R6-1,判断R6是否为0R7-1,判断R7是否为0图4-4 延时子程序流程图延时子程序就是通过执行一些没用但又占用时间的指令的集合。这个子程序可以用于很多延时的地方因为它延时的时间可以通过R7进行改变,所以通用性好,可以将几个延时子程序合为一个,只用在调用前给R7赋值,即可根据用户的需要延时,流程图见图4-4。第5章 系统的安装调试说明5.1 软件调试软件调试主要是在仿真软件完成的。在写好源程序,画出原理图之后,在电脑上进行软件仿真。系统原理图附后。5.2 软硬联调首先将编译成功程序载入单片机系统开发板。通电后,LED5,电源指示灯点亮,数码管显示“0000”.。对应的 “4”键为甲加分按钮,当LED5亮时,每次按下“4”键,甲队分数加1;当LED6亮时,每次按下“4”键,甲队分数加2;当LED7亮时,每次按下“4”键,甲队分数加3;其中LED5,LED6,LED7的点亮与熄灭是通过对应的“1”键来控制,可以通过按“1”键来实现LED5,LED6,LED7之间的切换。对应的“8”键为甲队减分键,当LED5亮时,每次按下“8”键,甲队分数减1;当LED6亮时,每次按下“8”键,甲队分数减2;当LED7亮时,每次按下“4”键,甲队分数减3;“7”键为乙加分键,“B”键为乙队减分键,其实现功能与甲队一样。对应的“0”键为预置分按钮,按下“0”键之后,通过按甲乙队加、减分按钮配合分数切换键实现快速预置分。”RESET”为复位键,按下可以实现复位。数码管显示甲乙队当前分数,复位后,数码管显示“0000”。总 结这次课程设计虽然只有短短的两周时间,但我受益匪浅。刚开始时觉得自己的课题无处入手,但通过老师的讲解和查询资料,开始有了自己的思路,整理出了总体方案,然后设计出硬件原理图,源程序等。在这次设计中困难最大的就是调试,收获最多的也是调试,因为调试的时候你必须对程序相当的熟悉,对每一条指令相当了解,并且硬件的连接也要清晰的印在脑海里,只有这样你才能让软件和硬件结合在一起,实现预期功能。在编程结束时需要编写END指令,这也是初学者编程时经常忘记的。当然也有值得高兴的地方,我的设计通过加减分键和分数切换键配合实现加减1,2,3分只用了3个键,而两队分别设置加减1,2,3分就需6个键。我认为这样的设计更科学。总之,在课程设计中遇到了不少的困难,在老师的细心讲解和辅导下,最终完成了本次设计。在此,由衷感谢汪超老师的指导和帮助。参考文献 1 、微型计算机原理及应用许立梓编 机械工业出版社 20022、微型计算机接口技术及应用刘乐善编 华中理工大学出版社 2000 3、计算机硬件技术基础试验教程邹逢兴编 高等教育出版社 20004、16位微型计算机原理接口及其应用周佩玲编 中国科学技术大学出版社 2000 5、微型计算机原理与接口技术吴秀清编 中国科学技术出版社 20016、微型计算机接口技术邓亚平编 清华大学出版社 20017、单片机原理及及应用王迎旭编 机械工业出版社 20018、单片机应用程序设计技术 周航慈 著 北京航空航天大学出版社 20029、单片机实用技术问答 谢宜仁 主编 人民邮电出版社 2002附录A系统原理图:附录B源程序清单:NUMA EQU 30HNUMB EQU 31H ;甲乙两队的分数D1 EQU 32H ;显示缓存区32h35hD2 EQU 33HD3 EQU 34HD4 EQU 35HDUAN EQU P0 ;段显示端口WEI1 EQU P2.4 ;位选端口P2.4-P2.7WEI2 EQU P2.5WEI3 EQU P2.6WEI4 EQU P2.7TEMP EQU 36H ;存放切换的加减分数1/2/3KEYDATE EQU 37H ;存放按键值ORG 0000HMAIN:MOV NUMA,#0 MOV NUMB,#0 ;分数清零 MOV TEMP,#1 ;起始时的分数加1 MOV P1,#0DFH ACALL TRANM0: ACALL DISP ;调用显示函数 ACALL KEYSCAN ;调用按键获取函数 SJMP M0 ;*KEYSCAN:MOV P2,#0FFH ;采用反转法读取按键值 MOV P2,#0F0HMOV A,P2ANL A,#0F0HCJNE A,#0F0H,K0SJMP K4K0:MOV R5,#5K1:ACALL DELAY2MS ;10ms延时去抖动DJNZ R5,K1MOV A,P2ANL A,#0F0HCJNE A,#0F0H,K2 SJMP K4 ;是抖动返回K2:MOV KEYDATE,A ;存储按键值MOV P2,#0FHMOV A,P2ANL A,#07HORL A,KEYDATE ;取得键值存放在KEYDATE中MOV KEYDATE,AK3:MOV A,P2 ANL A,#07H CJNE A,#07H,K3 ;等待按键松开ACALL CHULI ;调用按键处理函数ACALL TRANK4: RET;*CHULI: MOV A,KEYDATE CJNE A,#0E6H,C0 MOV NUMA,#0 MOV NUMB,#0 MOV TEMP,#1 ;按下清零键,A,B队分数清零,加分为1 MOV P1,#0DFH RETC0: CJNE A,#0D6H,C2 INC TEMP ;按下分值切换键,按一下分值加1, MOV P1,#0BFH MOV A,TEMP CJNE A,#3,C01 MOV P1,#7FHC01: CJNE A,#4,C1 MOV TEMP,#1 ;分值循环1- 2- 3- 1 MOV P1,#0DFHC1: RETC2: CJNE A,#0E5H,C4 MOV A,NUMA ;按下A队加分按键,A队加分 ADD A,TEMP ;分值相加 CJNE A,#99,C3 ; MOV A,#0C3: MOV NUMA,A RETC4: CJNE A,#75H,C6 MOV A,NUMB ;按下B队加分按键,A队加分 ADD A,TEMP ;分值相加 CJNE A,#99,C5 ; MOV A,#0C5: MOV NUMB,A RETC6: CJNE A,#0E3H,C9 MOV A,NUMA ;按下A队减分按键,A队减分 SUBB A,TEMP ;分值相减 CJNE A,#0FCH,C7 RETC7: JC C8 MOV A,#99C8: MOV NUMA,A RETC9: CJNE A,#073H,C12 MOV A,NUMB ;按下B队加减按键,A队减分 SUBB A,TEMP ;分值相减 CJNE A,#0FCH,C10 RETC10: JC C11 MOV A,#99C11: MOV NUMB,AC12: RET ;*TRAN: MOV A,NUMA ;进制转换将10进制分数转化成2进制,然后显示 MOV B,#10 DIV AB MOV D1,A MOV D2,B MOV A,NUMB MOV B,#10 DIV AB MOV D3,A MOV D4,B RET;*DISP: MOV DPTR,#TAB ;显示函数, CLR WEI1 ;位选通 MOV A,D1 ; MOVC A,A+DPTR ;取段码 MOV DUAN, A ;送段码 ACALL DELAY2MS ; SETB WEI1 ;关位选 CLR WEI2 MOV A,D2 MOVC A,A+DPTR MOV DUAN, A ACALL DELAY2MS SETB WEI2 CLR WEI3 MOV A,D3 MOVC A,A+DPTR MOV DUAN, A ACALL DELAY2MS SETB WEI3 CLR WEI4 MOV A,D4 MOVC A,A+DPTR MOV DUAN, A ACALL DELAY2MS SETB WEI4 MOV DUAN,#0FFH; RET ;*DELAY2MS:MOV R6,#5D0: MOV R7,#248 DJNZ R7,$ DJNZ R6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论