篮球赛计时计分器课程设计汇总
- 格式:doc
- 大小:217.02 KB
- 文档页数:23
1 电子与电气工程学院 课程设计报告
课 程 名 称 电子技术课程设计 设 计 题 目 计分器 专 业 名 称 电子科学与技术 班 级 13级 2班 学 号 ********** 学 生 姓 名 唐前昆 指 导 教 师 王 欢
2015年 06 月02 日 2
目录 第1章 系统概述 ……………………………………1 1.1 功能简述 ……………………………………1 1.2 按钮设置 ……………………………………1 第2章 总体方案设计 ……………………………………2 2.1 系统框图 ……………………………………2 2.2 软件总体设计 ……………………………………2 第3章 系统硬件设计 ……………………………………3 3.1 80C51单片机 ……………………………………3 3.2 3×4矩阵式键盘 ……………………………………3 3.3 8段数码管显示器 ……………………………………3 3.4 系统原理图 …………………… ………………3 第4章 软件设计 ……………………………………4 4.1 主函数设计 ……………………………………4 4.2按键码获取,按键处理函数……………………………………5 4.3显示子函数 ……………………………………6 4.4延时子函数 ……………………………………7 第5章 系统的安装调试说明 ……………………………………8 5.1 软件调试 ……………………………………8 5.2 软硬联调 ……………………………………8 总结 ……………………………………9 参考文献 ……………………………………10 附录A 系统原理图 ……………………………………11 附录B 源程序清单 ……………………………………12 3
第1章 系统概述 1.1 功能简述 本设计内容为比赛计分器,主要用于各种体育比赛记录分数。采用矩阵式键盘作为输入,用户可分别对两队比分进行加1、加2和减1减2操作,其加减1,2分可以通过加减1分、2分的切换按钮实现,并通过指示灯显示其每次按下加减分键所加减的分值。可以实现预置分。比分通过4个8段数码管显示器进行显示,每队比分显示2位,
1.2 按钮设置 计分器应该有7个按键分别标注于原理图,见图1-1。
p2.1p2.4p2.5p2.2p2.0p2.6p2.7清零1/2/3分切换
甲加1甲减1乙加1
乙减1
图1-1按钮功能图 其中1/2分切换由发光二极管指示,加1减1分别对应。预置分是事先设定分数可以分别设定甲乙两队的初始分数。按下清零后,显示的分数清零。 4
第2章 总体方案设计 2.1 系统框图 系统框图,见图2-1。
图2-1 系统框图 本设计用80C51单片机为核心,利用4个8段数码管显示器.采用动态显示输出比分,用户信息输入则采用3×4矩阵式键盘。89C52单片机有32根I/O线,所以不用扩展I/O口。用一片单片机即可满足本设计的输入输出。
2.2 软件总体设计 软件设计主要分为3个部分:信息输入、信息处理、显示输出。主要包括:显示函数,按键获取函数,按键处理函数,进制转换函数。信息输入时采用矩阵式键盘来实现,所以需要检测键盘有无按键的子程序;信息处理需要对用户通过键盘输入的不同信息进行辨别并执行相应的处理;显示输出考虑到成本和电路体积,决定采用动态输出。
89C52 单片机 3x4矩阵键盘 4个8段数码显示器
发光二极管 复位电路 5
第3章 系统硬件设计 3.1 80C51单片机 因为我们上课时学的是MCS-51,所以就选择了STC89C52单片机,因为它与INTEI MCS-51 兼容,并且它们都具有相同的CPU和指令系统,引脚功能兼容,容易掌握和使用。
3.2 3×4矩阵式键盘 根据设计共需要7个按键,可采用3×3矩阵式键盘,但考虑到常用键盘为3×4矩阵式键盘,而且方便以后功能的扩展和方便硬件的连接,所以最终决定采用3×4矩阵式键盘作为输入。
3.3.1 数码管显示器数量选择 两个队,每队2位比分,每个显示器只能显示一位,则至少需要采用4个8段数码管显示器。段数码管显示器采用动态显示输出比分。
3.3.2 数码管共阴共阳接法的选择 51单片机I/O口输出高电平时输出的电流很小,数码管不会太亮;因为本设计采用动态显示,单片机I/O口直接接数码管,所以决定采用共阳数码管。
3.3.3 数码管驱动的选择 为了使数码管亮度达到要求,数码管的位选端需要驱动,因为单片机I/O口的高电平输出的电流很小,需要驱动电路驱动,从而增加显示亮度。最简单便宜的驱动就是使用三极管,为低电平时开通,所以选择PNP型三极管。 3. 4系统原理图(见附录) 6
第4章 软件设计 4.1主函数设计 主函数程序代码: MAIN: MOV NUMA,#0 MOV NUMB,#0 ;分数清零 MOV TEMP,#1 ;起始时的分数加1 MOV P1,#0DFH ACALL TRAN M0: ACALL DISP ;调用显示函数 ACALL KEYSCAN ;调用按键获取函数 SJMP M0 ; 首先初始化将储存甲乙两对分数的内存单元清零,起始时TEMP置1,并使LED5点亮,调用进制转换函数,调用显示函数,调用按键获取函数,之后重复调用显示函数,调用按键获取函数.。
函数间的调用关系,见图4-1。
图4-1函数关系调用图 主函数 进制转换函数 显示函数 按键获取函进制转换函数 按键处理函数 延时函数
延时函数 7
4.2按键获取,按键处理函数 按键获取,按键处理函数流程图,见图4-2。
图4-2按键获取,按键处理函数流程图 说明:由于图纸大小有限,还有B加分键处理,B减分键处理,以及按下无关键时显示不变。未在图纸中表示出来。
键扫描 开始 有无键按下 去抖动 键码计算 释放键 JMP @A+DPTR
A=06EH,清零键处理 A=0D62H, 分值切换键处理 A=0E3H, A减分键处理 A=0E5H,A加分键处理 8
4.3显示子程序 本程序是采用动态显示,用这种方法的好处在于每次刷新显示的时间相同,每个数码管显示的时间也相同,这样就可以让数码管清晰而且稳定的显示数据。
显示子程序流程图,见图4-3。
图4-3 显示子程序流程图 位 选 通 取 段 码 送 段 码 调用延时程序 关 段 码 9
4.4 延时子程序 延时子程序就是通过执行一些没用但又占用时间的指令的集合。这个子程序可以用于很多延时的地方因为它延时的时间可以通过R7进行改变,所以通用性好,可以将几个延时子程序合为一个,只用在调用前给R7赋值,即可根据用户的需要延时,流程图见图4-4。
给R6放初值 执行三条空指令
返回 R6-1,判断R6是否为0
R7-1,判断R7是否为0
图4-4 延时子程序流程图 10
第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”。 11
总 结 这次课程设计虽然只有不到两周的时间,但我受益匪浅。刚开始时觉得自己的课题无处入手,但通过老师的讲解和查询资料,开始有了自己的思路,整理出了总体方案,然后设计出硬件原理图,源程序等。在这次设计中困难最大的就是调试,收获最多的也是调试,因为调试的时候你必须对程序相当的熟悉,对每一条指令相当了解,并且硬件的连接也要清晰的印在脑海里,只有这样你才能让软件和硬件结合在一起,实现预期功能。在编程结束时需要编写END指令,这也是初学者编程时经常忘记的。当然也有值得高兴的地方,我的设计通过加减分键和分数切换键配合实现加减1,2,-1(-2)分只用了3个键,而两队分别设置加减1,2,-1(-2)分就需6个键。我认为这样的设计更科学。 总之,在课程设计中遇到了不少的困难,在老师的细心讲解和辅导下,最终完成了本次设计。在此,由衷感谢王欢老师的指导和帮助。