单片机课程设计 记分牌_第1页
单片机课程设计 记分牌_第2页
单片机课程设计 记分牌_第3页
单片机课程设计 记分牌_第4页
单片机课程设计 记分牌_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、MCS-51单片机课程设计报告电子记分牌设计时间 2009年12月目录一、设计要求3二、设计思路3三、选用器件说明4四、系统设计过程说明及电路图5五、程序流程图6六、汇编源程序9七、总结15八、参考文献15电子计分牌一、设计要求 利用所学的MCS-51知识,制作一个电子记分牌(一)系统功能任务要求: 1) 显示两队英文名(用A,B代表两个队伍)2)显示两队比分(各三位LED数码管)3)显示比赛剩余时间,按分:秒显示 4)可以用按键修改显示内容(二)系统设计说明:1)可以自增系统功能2)允许用MCS-51系列或8086系列3)系统程序采用汇编或C语言编程4)硬件原理图采用电子CAD绘制二、设计思

2、路 通过了解,我们可以做一个篮球比赛的记分牌,根据比赛规则,每节比赛有12分钟,所以时间显示应该初始化为12:00,然后倒计时,当然要设定一个键去控制时间的停止,同时设定其他的键去控制比赛分数的加减。 因此我们用LED动态显示电路来显示比赛信息,LED动态显示是利用了人眼看事物时的延时,同一个时间内只能驱动一个数码管显示,当在我们人眼感觉前一次显示还未熄灭,这个时间根据医学上的研究大约是100MS左右,这样就可以让数码管看起来一直是亮着的。系统开始运行时程序就开始运行按键扫描程序,当扫描到有键按下时就修改存储在寄存器中的显示数据,并在下一次显示中显示出来,从而达到了修改显示内容的效果。 系统原

3、理图如下图一所示:MCS-51LED数码管显示模块外部控制按键74LS154驱动电路图一三、选用器件说明 1、MCS51单片机 MCS-51系列单片机是Intel公司于20世纪80年代初在总结MCS-48系列单片机的基础上推出的高性能8位单片机。由中央处理器,存储器,内部总线,I/O接口,中断系统,特殊功能部件组成。I/O模块有4个8位并口P0,P1,P2,P3。拥有2个16位定时/计数器,5个中断源。 2、74LS154译码器 74LS154是一个4-16线译码器,其功能就是在A3,A2,A1,A0给出编码,然后在A3,A2,A1,A0所译出的Y0-Y15 中的其中一个引脚给出信号,例如A3

4、,A2,A1,A0为0101,则在Y5就为低电平,其他为高电平。其引脚图如下: 3、按键 如图:使用上拉电源,当按键未按下时输入为高电平,当按键按下时接地,为低电平。4、LED数码管 本设计采用的是共阴极的LED数码管, G A b c d e f g dp 共阴极LED数码管四、系统设计过程说明及电路图根据我的设计思路结合MCS-51的结构,功能,我们选择了P0口作为LED数码管的显示输出口,并选择了P2.0,P2.1,P2.2,P2.3连接一个74LS154的416线译码器(只用了其中的12个输出口),并依次连接LED数码管的使能驱动端。我们通过设置P2.0,P2.1,P2.2,P2.3的

5、值选择要在哪个LED数码管上显示,则P0口输出的要显示的值就会在被选中的LED数码管显示器上显示。由于输出电压不足以驱动LED数码管发光,所以需再经过一个为驱动器。为了让系统能每秒钟时间计数的秒单位减1,我们使用定时器中断技术,现在初始化时设置好计时器的基数,使得计时器能每秒中溢出一次。当计时器溢出时程序自动跳到中断程序运行中断服务子程,中断服务子程的任务就是将时间的秒数减1:判断如果时间为00:00则程序应该停止倒计时否则继续运行,并判断如果秒数已经为1,则让秒数归60,分钟数减1。内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.05

6、92MHz,所以定时常数的设置可按以下方法计算:机器周期=1211.0592MHz1.0857S (65536-定时常数)*1.0857S=50mS 定时常数4C00H 在P1.0,P1.1,P1.2接3个电键分别控制系统实现A队分数加一分,B队分数加一分,开始/暂停的功能。电键的状态由键盘扫描程序扫描得到并判断,然后调用相应的子程实现相应的功能。具体的电路图如下:电路图五、程序流程图开始初始化:设置T1的寄存器,开中断调用按键扫描子程KEY进行按键扫描,若有键按下则根据按下的键更改寄存器里的信息 调用显示DISPLAY子程,将要显示的内容在12个LED数码管中显示出来时间是否为 00:00?

7、结束 调用延时子程DELAY进行延时延时50MS 否 是 是 主程流程图按键扫描入口开中断存储的时间数据减1S置定时常数INT-T1入口关中断保护现场恢复现场扫描P1.0,并去抖,是否有按下?A队加一分 是 否B队加一分扫描P1.0,并去抖,是否有按下? 是 扫描P1.0,并去抖,是否有按下? 否控制比赛暂停或开始 是 否 返回中断返回INT-T0中断服务子程流程图 按键扫描子程KEY流程图子程DELAY C1寄存器减一,是否为0 否 将0,1,2寄存器的值压入堆栈 B A 是 2寄存器减一,是否为0设置0寄存器的初值为64H 否设置0寄存器的初值为64H B A将0,1,2寄存器的值压入堆栈

8、0寄存器减一,是否为0 否 是 返回 是 C 延时10MS的子程DELAY框图显示DISPLAY入口向P2口送数据07H,并查表得到要显示的数据往P0口送向P2口送数据01H,并查表得到要显示的数据往P0口送向P2口送数据08H,并查表得到要显示的数据往P0口送向P2口送数据02H,并查表得到要显示的数据往P0口送向P2口送数据09H,并查表得到要显示的数据往P0口送向P2口送数据03H,并查表得到要显示的数据往P0口送向P2口送数据10H,并查表得到要显示的数据往P0口送向P2口送数据04H,并查表得到要显示的数据往P0口送向P2口送数据11H,并查表得到要显示的数据往P0口送向P2口送数据

9、05H,并查表得到要显示的数据往P0口送向P2口送数据12H,并查表得到要显示的数据往P0口送向P2口送数据06H,并查表得到要显示的数据往P0口送返回六、汇编源程序程序:;-开始-TIME1 EQU 0011H ; 存储时间秒的个位TIME2 EQU 0012H ; 存储时间秒的十位TIME3 EQU 0013H ; 存储时间分的个位TIME4 EQU 0014H ; 存储时间分的十位A_SCORE3 EQU 0015H ; A队分数的百位A_SCORE2 EQU 0016H ; A队分数的十位A_SCORE1 EQU 0017H ; A队分数的个位B_SCORE3 EQU 0018H ;

10、B队分数的百位B_SCORE2 EQU 0019H ; B队分数的十位B_SCORE1 EQU 0020H ; B队分数的个位TEAMA EQU 0021H ; 存储A队名的地址TEAMB EQU 0022H ; 存储B队名的地址 ;-ORG 0000HLJMP STARTORG 001BHLJMP INT_T1ORG 0100HSTART: MOV SP,#60H MOV P1.4,#01H ;为1时运行,为0时暂停 MOV TMOD,#10H ;置T1为方式1MOV TL1,#00H ;设置定时常数MOV TH1,#4CHMOV TEAMA,#88H ;设置A队的队名显示为AMOV TEA

11、MB,#83H ; 设置B队的队名显示为BMOV TIME4,#01H ;初始化比赛时间为12:00MOV TIME3,#02HMOV TIME2,#00HMOV TIME1,#00HMOV A_SCORE3,#00H ;设置比赛开始时A,B两队的比分为MOV A_SCORE2,#00H ;000 : 000MOV A_SCORE1,#00HMOV B_SCORE3,#00HMOV B_SCORE2,#00HMOV B_SCORE1,#00HLCALL DISPLAY ;调用显示子程DISPLAYSETB TR1 ;开中断SETB ET1SETB EA LOOP:LCALL KEY ;调用键盘

12、扫描子程KEYLCALL DISPLAYMOV A,TIME4 ;断比赛时间是否为0,为0则比赛结束CJNE A,#00H,DELAY50MOV A,TIME3CJNE A,#00H,DELAY50MOV A,TIME2CJNE A,#00H,DELAY50MOV A,TIME1CJNE A,#00H,DELAY50CLR TR1 ;如果时间为00:00,关中断LAST: LCALL DISPLAY ;一直显示最后的比赛信息MOV R2,#05HLCALL DELAYLJMP LAST DELAY50: MOV R2,#05H ;延时50MS LCALL DELAY LJMP LOOP ;跳到

13、键盘扫描程序继续运行;-主程结束-;-延时子程DELAY延时10MS- DELAY: PUSH 2 PUSH 1 PUSH 0DELAY1: MOV 1,#64HDELAY2: MOV 0,#64H DJNZ 0,$ DJNZ 1,DELAY2 DJNZ 2,DELAY1 POP 0 POP 1 POP 2 RET;-INT_T1中断子程-INT_T1: PUSH ACC ;保护现场 PUSH PSW PUSH DPL PUSH DPH CLR TR1 ;关中断 MOV TL1,#00H ;延时50mS常数 MOV TH1,#4CH SETB TR1 ;开中断 MOV A,TIME1 ;比赛时

14、间减1S CJNE A,#00H,INT1 ;时间秒个位不为0转移 MOV A,TIME2 CJNE A,#00H,INT2 MOV A,TIME3 CJNE A,#00H,INT3 MOV TIME4,#00H ;当时间为10:00时减一秒变成09:59 MOV TIME3,#09H MOV TIME2,#05H MOV TIME1,#09H INT1: ;例如:11:25变成11:24 DEC TIME1 LJMP EXIT INT2: ;例如:11:20变成11:19 DEC TIME2 MOV TIME1,#09H LJMP EXIT INT3: ;例如:11:00变成10:59 DE

15、C TIME3 MOV TIME2,#05H MOV TIME1,#09H EXIT: POP DPH ;恢复现场 POP DPL POP PSW POP ACC RETI-中断服务结束-按键KEY扫描子程- KEY: JB P1.0,KEY_1 MOV R2 #01H LCALL DELAY JNB P1.0,$ LCALL DELAY JB P1.0,KEY_1 MOV A,A_SCORE1 CJNE A,#09H,EA1 MOV A,A_SCORE2 CJNE A,#09H,EA2 INC A_SCORE3 MOV A_SCORE2,#00H MOV A_SCORE1,#00H LJMP

16、 KEY_1 EA1: INC A_SCORE1 LJMP KEY_1 EA2: INC A_SCORE2 MOV A_SCORE1,#00H LJMP KEY_1 ;B队加一分KEY_1: JB P1.1,KEY_2 MOV R2 #01H LCALL DELAY JNB P1.1,$ LCALL DELAY JB P1.1,KEY_2 MOV A,B_SCORE1 CJNE A,#09H,EA1 MOV A,B_SCORE2 CJNE A,#09H,EA2 INC B_SCORE3 MOV B_SCORE2,#00H MOV B_SCORE1,#00H LJMP KEY_2 EA1: IN

17、C B_SCORE1 LJMP KEY_2 EA2: INC B_SCORE2 MOV B_SCORE1,#00H LJMP KEY_2 ;B队加一分 KEY_2: JB P1.0,KEY MOV R2 #01H LCALL DELAY JNB P1.0,$ LCALL DELAY JB P1.0,KEY ;判断P1.4,为1则让比赛暂停,将P1.4置0 JNB P1.4,KEY_3 PUSH A ;比赛暂停,保存现场,关中断 PUSH 2 PUSH 1 PUSH 0 PUSH PSW PUSH TL1 PUSH TH1 PUSH DPL PUSH DPH CLR P1.4 CLR TR1 ;

18、关中断 LCALL DISPLAY MOV R2,#05H LCALL DELAY LCALL KEY_2;判断P1.4,为0则让比赛运行,将P1.4置1KEY_3: SETB P1.4 POP DPH POP DPL POP TH1 ;恢复现场 POP TL1 POP PSW POP 0 POP 1 POP 2 POP A SETB TR1 ;开中断,恢复 计时 RET-按键扫描子程结束-显示子程-DISPLAY: MOV DPTR,#TAB MOV P2,#01H ;显示TIME4 MOV A, TIME4 MOVC A,A+DPTR MOV P0,A MOV P2,#02H ;显示TIM

19、E3 MOV A, TIME3 MOVC A,A+DPTR MOV P0,A MOV P2,#03H ;显示TIME2 MOV A, TIME2 MOVC A,A+DPTR MOV P0,A MOV P2,#04H ;显示TIME1 MOV A, TIME1 MOVC A,A+DPTR MOV P0,A MOV P2,#05H ;显示A队队名为A MOV A,TEAMA MOV P0,A MOV P2,#06H ;显示B队队名为B MOV A,TEAMB MOV P0,A MOV P2,#07H ;显示A_SCORE3 MOV A, A_SCORE3 MOVC A,A+DPTR MOV P0,

20、A MOV P2,#08H ;显示A_SCORE2 MOV A, A_SCORE2 MOVC A,A+DPTR MOV P0,A MOV P2,#09H ;显示A_SCORE1 MOV A, A_SCORE1 MOVC A,A+DPTR MOV P0,A MOV P2,#0AH ;显示B_SCORE3 MOV A, B_SCORE3 MOVC A,A+DPTR MOV P0,A MOV P2,#0BH ;显示B_SCORE2 MOV A, B_SCORE2 MOVC A,A+DPTR MOV P0,A MOV P2,#0CH ;显示B_SCORE1 MOV A, B_SCORE1 MOVC A,A+DPTR MOV P0,A RET-显示子程DISPLAY结束-;LED显示常数表TAB: DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND-整个程序结束-七、总结 通过这次的课程设计,从最初的迷茫,不知道从何入手到尝试着去构思,画电路图,想程序流程。我感觉只有着手去做了才会有方向,有灵感。这次的课程设计我认识了单片机 设计的基本过程,并从中学到了很多,对于51单片机的端口有了更深

温馨提示

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

评论

0/150

提交评论