篮球赛计时计分器课程设计汇总.docx
《篮球赛计时计分器课程设计汇总.docx》由会员分享,可在线阅读,更多相关《篮球赛计时计分器课程设计汇总.docx(25页珍藏版)》请在冰豆网上搜索。
篮球赛计时计分器课程设计汇总
电子与电气工程学院
课程设计报告
名称电子技术课程设计程课
分设计题目计器
技称专业电子科学与术名
级班13级班2
学号2013210825
唐学生姓名前昆
欢师教王导指
2015年02月06日
1
第1章系统概述……………………………………1
1.1功能简述……………………………………1
1.2按钮设置……………………………………1
第2章总体方案设计……………………………………2
2.1系统框图……………………………………2
2.2软件总体设计……………………………………2
第3章系统硬件设计……………………………………3
3.180C51单片机……………………………………3
3.23×4矩阵式键盘……………………………………3
3.38段数码管显示器……………………………………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
2
第1章系统概述
1.1功能简述
本设计内容为比赛计分器,主要用于各种体育比赛记录分数。
采用矩阵式键盘作为输入,用户可分别对两队比分进行加1、加2和减1减2操作,其加减1,2分可以通过加减1分、2分的切换按钮实现,并通过指示灯显示其每次按下加减分键所加减的分值。
可以实现预置分。
比分通过4个8段数码管显示器进行显示,每队比分显示位,2
1.2按钮设置
计分器应该有7个按键分别标注于原理图,见图1-1。
457...分切换清零2221/2/36ppp.2pp2.0乙加甲加11p2.1甲减乙减11p2.2
图1-1按钮功能图分别对应。
预置分是事先设定分数111/2其中分切换由发光二极管指示,加减可以分别设定甲乙两队的初始分数。
按下清零后,显示的分数清零。
3
第2章总体方案设计
2.1系统框图
系统框图,见图2-1。
89C52
矩阵键3x段数码显示单片
复位电路发光二极管
图2-1系统框图采用动态显示输出比.8单片机为核心,本设计用80C51利用4个段数码管显示器线,所以不用分,用户信息输入则采用3×4根32I/O单片机有矩阵式键盘。
89C52口。
用一片单片机即可满足本设计的输入输出。
I/O扩展
2.2软件总体设计
软件设计主要分为3个部分:
信息输入、信息处理、显示输出。
主要包括:
显示函数,按键获取函数,按键处理函数,进制转换函数。
信息输入时采用矩阵式键盘来实现,所以需要检测键盘有无按键的子程序;信息处理需要对用户通过键盘输入的不同信息进行辨别并执行相应的处理;显示输出考虑到成本和电路体积,决定采用动态输出。
4
第3章系统硬件设计
3.180C51单片机
因为我们上课时学的是MCS-51,所以就选择了STC89C52单片机,因为它与INTEIMCS-51兼容,并且它们都具有相同的CPU和指令系统,引脚功能兼容,容易掌握和使用。
3.23×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系统原理图(见附录)
5
第4章软件设计
4.1主函数设计
主函数程序代码:
MAIN:
MOVNUMA,#0
MOVNUMB,#0;分数清零
MOVTEMP,#1;起始时的分数加1
MOVP1,#0DFH
ACALLTRAN
M0:
ACALLDISP;调用显示函数
ACALLKEYSCAN;调用按键获取函数
SJMPM0;
首先初始化将储存甲乙两对分数的内存单元清零,起始时TEMP置1,并使LED5点亮,调用进制转换函数,调用显示函数,调用按键获取函数,之后重复调用显示函数,调用按键获取函数.。
函数间的调用关系,见图4-1。
主函数
延时函数进制转换函数显示函数按键获取函
延时函数按键处理函数进制转换函数
函数关系调用图4-1图
6
按键获取,按键处理函数4.2
按键获取,按键处理函数流程图,见图4-2。
开键扫有无键按去抖动键码计算
释放键JMP@A+DPTR
AA=0E5H,AA=0E3H,分A=06EH,A=0D62H,清零键处理减分键处理值切换键处理加分键处理
4-2图按键获取,按键处理函数流程图以及按下无关键时,加分键处理,B减分键处理B说明:
由于图纸大小有限,还有显示不变。
未在图纸中表示出来。
7
显示子程序4.3
本程序是采用动态显示,用这种方法的好处在于每次刷新显示的时间相同,每个数码管显示的时间也相同,这样就可以让数码管清晰而且稳定的显示数据。
。
4-3显示子程序流程图,见图
调用延时程
关段码
图4-3显示子程序流程图
8
延时子程序4.4
延时子程序就是通过执行一
些没用但又占用时间的指令的R放初值这个子程序可以用于很多延时合。
的地方因为它延时的时间可以通进行改变,所以通用性好,R7执行三条空指令可以将几个延时子程序合为一个,赋值,即可根R7只用在调用前给据用户的需要延时,流程图见是RR6-判0为4-4。
是判RR7-0
为
返回
延时子程序流程图图4-4
9
第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”。
10
结总
这次课程设计虽然只有不到两周的时间,但我受益匪浅。
刚开始时觉得自己的课题无处入手,但通过老师的讲解和查询资料,开始有了自己的思路,整理出了总体方案,然后设计出硬件原理图,源程序等。
在这次设计中困难最大的就是调试,收获最多的也是调试,因为调试的时候你必须对程序相当的熟悉,对每一条指令相当了解,并且硬件的连接也要清晰的印在脑海里,只有这样你才能让软件和硬件结合在一起,实现预期功能。
在编程结束时需要编写END指令,这也是初学者编程时经常忘记的。
当然也有值得高兴的地方,我的设计通过加减分键和分数切换键配合实现加减1,2,-1(-2)分只用了3个键,而两队分别设置加减1,2,-1(-2)分就需6个键。
我认为这样的设计更科学。
总之,在课程设计中遇到了不少的困难,在老师的细心讲解和辅导下,最终完成了本次设计。
在此,由衷感谢王欢老师的指导和帮助。
11
参考文献
[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002
[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000
[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000
中国科学技术大学出版社16[4]、《位微型计算机原理接口及其应用》周佩玲编2000
[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001
[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001
[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001
[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社2002
[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002
12
附录
附录A系统原理图:
13
RP11U1A21939P0.0/AD0XTAL1F338P0.1/AD1B437P0.2/AD218XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD69RSTP0.7/AD7ABP2.0/A8P2.1/A9P2.2/A1029PSENP2.3/A1130ALEP2.4/A1231EAP2.5/A13P2.6/A14P2.7/A15p1.01P1.0/T2P3.0/RXDp1.12P1.1/T2EXP3.1/TXDp1.23P1.2P3.2/INT0p1.34P1.3P3.3/INT1p1.45P1.4P3.4/T0p1.56P1.5P3.5/T1p1.67P1.6P3.6/WRp1.78P1.7P3.7/RDAT89C52NET=s64.分切换清零21/2/3pp2.0甲加1p2.1甲减1p2.2院(部)电气学院学生姓名唐前昆目题
一、指导老师评语
指导老师签名:
二、成绩评定
G365C635DP734D833E932年级专业
学生学号
p2.02110kp2.122p2.2U2:
A23p2.324p2.425p2.526
U2:
Bs1U2:
C21s2U2:
D43
s3p2.6652774LS04s4p2.712281374LS0474LS0410111213
74LS04
141516beep17
75..226pp.2p乙加1乙减1
DDDDDDDDLED-RELED-RELED-RELED-RELED-RELED-RELED-RELED-RERRRRRRRR330330330330330330330330R
B
附录14
源程序清单:
NUMAEQU30H
NUMBEQU31H;甲乙两队的分数
D1EQU32H;显示缓存区32h—35h
D2EQU33H
D3EQU34H
D4EQU35H
段显示端口DUANEQUP0;
位选端口WEI1EQUP2.4;P2.4---P2.7
WEI2EQUP2.5
WEI3EQUP2.6
WEI4EQUP2.7
存放切换的加减分数TEMPEQU36H;1/2/3
存放按键值KEYDATEEQU37H;
ORG0000H
MAIN:
MOVNUMA,#0
分数清零MOVNUMB,#0;
起始时的分数加MOVTEMP,#1;1
MOVP1,#0DFH
ACALLTRAN
调用显示函数M0:
ACALLDISP;
调用按键获取函数ACALLKEYSCAN;
15
SJMPM0;
;********************************************************
KEYSCAN:
MOVP2,#0FFH;采用反转法读取按键值
MOVP2,#0F0H
MOVA,P2
ANLA,#0F0H
CJNEA,#0F0H,K0
SJMPK4
K0:
MOVR5,#5
K1:
ACALLDELAY2MS;10ms延时去抖动
DJNZR5,K1
MOVA,P2
ANLA,#0F0H
CJNEA,#0F0H,K2
SJMPK4;是抖动返回
K2:
MOVKEYDATE,A;存储按键值
MOVP2,#0FH
MOVA,P2
ANLA,#07H
ORLA,KEYDATE;取得键值存放在KEYDATE中
MOVKEYDATE,A
K3:
MOVA,P2
ANLA,#07H
CJNEA,#07H,K3;等待按键松开
ACALLCHULI;调用按键处理函数
ACALLTRAN
16
K4:
RET
;********************************************************
CHULI:
MOVA,KEYDATE
CJNEA,#0E6H,C0
MOVNUMA,#0
MOVNUMB,#0
MOVTEMP,#1;按下清零键,A,B队分数清零,加分为1
MOVP1,#0DFH
RET
C0:
CJNEA,#0D6H,C2
INCTEMP;按下分值切换键,按一下分值加1,
MOVP1,#0BFH
MOVA,TEMP
CJNEA,#3,C01
MOVP1,#7FH
C01:
CJNEA,#4,C1
MOVTEMP,#1;分值循环1-2-3-1
MOVP1,#0DFH
C1:
RET
C2:
CJNEA,#0E5H,C4
MOVA,NUMA;按下A队加分按键,A队加分
ADDA,TEMP;分值相加
CJNEA,#99,C3;
MOVA,#0
C3:
MOVNUMA,A
RET
C4:
CJNEA,#75H,C6
17
MOVA,NUMB;按下B队加分按键,A队加分
ADDA,TEMP;分值相加
CJNEA,#99,C5;
MOVA,#0
C5:
MOVNUMB,A
RET
C6:
CJNEA,#0E3H,C9
MOVA,NUMA;按下A队减分按键,A队减分
SUBBA,TEMP;分值相减
CJNEA,#0FCH,C7
RET
C7:
JCC8
MOVA,#99
C8:
MOVNUMA,A
RET
C9:
CJNEA,#073H,C12
MOVA,NUMB;按下B队加减按键,A队减分
SUBBA,TEMP;分值相减
CJNEA,#0FCH,C10
RET
C10:
JCC11
MOVA,#99
C11:
MOVNUMB,A
C12:
RET
;***********************************************************
TRAN:
MOVA,NUMA;进制转换将10进制分数转化成2进制,然后显示
MOVB,#10
18
DIVAB
MOVD1,A
MOVD2,B
MOVA,NUMB
MOVB,#10
DIVAB
MOVD3,A
MOVD4,B
RET
;***********************************************************
DISP:
MOVDPTR,#TAB;显示函数,
CLRWEI1;位选通
MOVA,D1;
MOVCA,@A+DPTR;取段码
MOVDUAN,A;送段码
ACALLDELAY2MS;
SETBWEI1;关位选
CLRWEI2
MOVA,D2
MOVCA,@A+DPTR
MOVDUAN,A
ACALLDELAY2MS
SETBWEI2
CLRWEI3
MOVA,D3
19
MOVCA,@A+DPTR
MOVDUAN,A
ACALLDELAY2MS
SETBWEI3
CLRWEI4
MOVA,D4
MOVCA,@A+DPTR
MOVDUAN,A
ACALLDELAY2MS
SETBWEI4
MOVDUAN,#0FFH;
RET
;************************************************************
DELAY2MS:
MOVR6,#5
D0:
MOVR7,#248
DJNZR7,$
DJNZR6,D0
RET
TAB:
DB28H;0
DB0EBH;1
DB32H;2
DB0A2H;3
DB0E1H;4
DB0A4H;5
DB24H;6
20
DB0EAH;7
DB20H;8
DB0A0H;9
DB60H;A
DB25H;B
DB3CH;C
DB23H;D
DB34H;E
DB74H;F
DB0D7H;-.
DB0F7H;-
DB61H;H
DB70H;P
DB0DFH;.
DB27H;O
DB0FFH;全黑
END
21
电气学院电子技术课程设计
指导老师评价表
电132********25
指导老师签名:
年月日
22
23