您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机课程设计 记分牌
《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绘制二、设计思路通过了解,我们可以做一个篮球比赛的记分牌,根据比赛规则,每节比赛有12分钟,所以时间显示应该初始化为12:00,然后倒计时,当然要设定一个键去控制时间的停止,同时设定其他的键去控制比赛分数的加减。因此我们用LED动态显示电路来显示比赛信息,LED动态显示是利用了人眼看事物时的延时,同一个时间内只能驱动一个数码管显示,当在我们人眼感觉前一次显示还未熄灭,这个时间根据医学上的研究大约是100MS左右,这样就可以让数码管看起来一直是亮着的。系统开始运行时程序就开始运行按键扫描程序,当扫描到有键按下时就修改存储在寄存器中的显示数据,并在下一次显示中显示出来,从而达到了修改显示内容的效果。系统原理图如下图一所示:图一外部控制按键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,A2,A1,A0为0101,则在Y5就为低电平,其他为高电平。其引脚图如下:3、按键如图:使用上拉电源,当按键未按下时输入为高电平,当按键按下时接地,为低电平。4、LED数码管本设计采用的是共阴极的LED数码管,GAbcdefgdp共阴极LED数码管四、系统设计过程说明及电路图根据我的设计思路结合MCS-51的结构,功能,我们选择了P0口作为LED数码管的显示输出口,并选择了P2.0,P2.1,P2.2,P2.3连接一个74LS154的4—16线译码器(只用了其中的12个输出口),并依次连接LED数码管的使能驱动端。我们通过设置P2.0,P2.1,P2.2,P2.3的值选择要在哪个LED数码管上显示,则P0口输出的要显示的值就会在被选中的LED数码管显示器上显示。由于输出电压不足以驱动LED数码管发光,所以需再经过一个为驱动器。为了让系统能每秒钟时间计数的秒单位减1,我们使用定时器中断技术,现在初始化时设置好计时器的基数,使得计时器能每秒中溢出一次。当计时器溢出时程序自动跳到中断程序运行中断服务子程,中断服务子程的任务就是将时间的秒数减1:判断如果时间为00:00则程序应该停止倒计时否则继续运行,并判断如果秒数已经为1,则让秒数归60,分钟数减1。内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:机器周期=12÷11.0592MHz=1.0857μS(65536-定时常数)*1.0857μS=50mS定时常数=4C00H在P1.0,P1.1,P1.2接3个电键分别控制系统实现A队分数加一分,B队分数加一分,开始/暂停的功能。电键的状态由键盘扫描程序扫描得到并判断,然后调用相应的子程实现相应的功能。具体的电路图如下:电路图五、程序流程图否是是主程流程图开始初始化:设置T1的寄存器,开中断调用按键扫描子程KEY进行按键扫描,若有键按下则根据按下的键更改寄存器里的信息调用显示DISPLAY子程,将要显示的内容在12个LED数码管中显示出来时间是否为00:00?结束调用延时子程DELAY进行延时延时50MS是否是否是否INT-T0中断服务子程流程图按键扫描子程KEY流程图C否BA是否BA否是是C延时10MS的子程DELAY框图INT-T1入口保护现场关中断置定时常数存储的时间数据减1S开中断恢复现场中断返回按键扫描入口扫描P1.0,并去抖,是否有按下?扫描P1.0,并去抖,是否有按下?扫描P1.0,并去抖,是否有按下?A队加一分B队加一分控制比赛暂停或开始返回子程DELAY将0,1,2寄存器的值压入堆栈设置0寄存器的初值为64H0寄存器减一,是否为0设置0寄存器的初值为64H1寄存器减一,是否为02寄存器减一,是否为0将0,1,2寄存器的值压入堆栈返回向P2口送数据01H,并查表得到要显示的数据往P0口送向P2口送数据02H,并查表得到要显示的数据往P0口送向P2口送数据07H,并查表得到要显示的数据往P0口送向P2口送数据08H,并查表得到要显示的数据往P0口送向P2口送数据09H,并查表得到要显示的数据往P0口送向P2口送数据10H,并查表得到要显示的数据往P0口送向P2口送数据06H,并查表得到要显示的数据往P0口送向P2口送数据03H,并查表得到要显示的数据往P0口送向P2口送数据04H,并查表得到要显示的数据往P0口送向P2口送数据05H,并查表得到要显示的数据往P0口送向P2口送数据12H,并查表得到要显示的数据往P0口送向P2口送数据11H,并查表得到要显示的数据往P0口送显示DISPLAY入口返回六、汇编源程序程序:;------------------------开始----------------------------------TIME1EQU0011H;存储时间秒的个位TIME2EQU0012H;存储时间秒的十位TIME3EQU0013H;存储时间分的个位TIME4EQU0014H;存储时间分的十位A_SCORE3EQU0015H;A队分数的百位A_SCORE2EQU0016H;A队分数的十位A_SCORE1EQU0017H;A队分数的个位B_SCORE3EQU0018H;B队分数的百位B_SCORE2EQU0019H;B队分数的十位B_SCORE1EQU0020H;B队分数的个位TEAMAEQU0021H;存储A队名的地址TEAMBEQU0022H;存储B队名的地址;----------------------------------------------------------------ORG0000HLJMPSTARTORG001BHLJMPINT_T1ORG0100HSTART:MOVSP,#60HMOVP1.4,#01H;为1时运行,为0时暂停MOVTMOD,#10H;置T1为方式1MOVTL1,#00H;设置定时常数MOVTH1,#4CHMOVTEAMA,#88H;设置A队的队名显示为AMOVTEAMB,#83H;设置B队的队名显示为BMOVTIME4,#01H;初始化比赛时间为12:00MOVTIME3,#02HMOVTIME2,#00HMOVTIME1,#00HMOVA_SCORE3,#00H;设置比赛开始时A,B两队的比分为MOVA_SCORE2,#00H;000:000MOVA_SCORE1,#00HMOVB_SCORE3,#00HMOVB_SCORE2,#00HMOVB_SCORE1,#00HLCALLDISPLAY;调用显示子程DISPLAYSETBTR1;开中断SETBET1SETBEALOOP:LCALLKEY;调用键盘扫描子程KEYLCALLDISPLAYMOVA,TIME4;断比赛时间是否为0,为0则比赛结束CJNEA,#00H,DELAY50MOVA,TIME3CJNEA,#00H,DELAY50MOVA,TIME2CJNEA,#00H,DELAY50MOVA,TIME1CJNEA,#00H,DELAY50CLRTR1;如果时间为00:00,关中断LAST:LCALLDISPLAY;一直显示最后的比赛信息MOVR2,#05HLCALLDELAYLJMPLASTDELAY50:MOVR2,#05H;延时50MSLCALLDELAYLJMPLOOP;跳到键盘扫描程序继续运行;----------------------主程结束-----------------------------------;---------------延时子程DELAY延时10MS---------------------------DELAY:PUSH2PUSH1PUSH0DELAY1:MOV1,#64HDELAY2:MOV0,#64HDJNZ0,$DJNZ1,DELAY2DJNZ2,DELAY1POP0POP1POP2RET;--------------------INT_T1中断子程---------------------------------INT_T1:PUSHACC;保护现场PUSHPSWPUSHDPLPUSHDPHCLRTR1;关中断MOVTL1,#00H;延时50mS常数MOVTH1,#4CHSETBTR1;开中断MOVA,TIME1;比赛时间减1SCJNEA,#00H,INT1;时间秒个位不为0转移MOVA,TIME2CJNEA,#00H,INT2MOVA,TIME3CJNEA,#00H,INT3MOVTIME4,#00H;当时间为10:00时减一秒变成09:59MOVTIME3,#09HMOVTIME2,#05HMOVTIME1,#09HINT1:;例如:11:25变成11:24DECTIME1LJMPEXITINT2:;例如:11:20变成11:19DECTIME2MOVTIME1,#09HLJMPEXITINT3:;例如:11:00变成10:59DECTIME3MOVTIME2,#05HMOVTIME1,#09HEXIT:POPDPH;恢复现场POPDPLPOPPSWPOPACCRETI-------------------------中断服务结束-------------------------------------------------------按键KEY扫描子程------------------------------KEY:JBP1.0,KEY_1MOVR2#01HLCALLDELAYJNBP1.0,$LCALLDELAYJBP1.0,KEY_1MOVA,A_SCORE1CJNEA,#09H,EA1MOVA,A_SCORE2CJNEA,#09H,EA2INCA_SCORE3MOVA_SCORE2,#00HMOVA_SCORE1,#00HLJMPKEY_1EA1:INCA_SCORE1LJMPKEY_1EA2:INCA_SCORE2MOVA_SCORE1,#00HLJMPKEY_1;B队加一分KEY_1:JBP1.1,KEY_2MOVR2#01HLCALLDELAYJNBP1.1,$LCALLDELAYJBP1.1,KEY_2MOVA,B_SCORE1CJNEA,#09H,EA1MOVA,B_SCORE2CJNEA,#09H,EA2INCB_SCORE3MOVB_SCORE2,#00HMOVB_SCORE1,#00HLJMPKEY_2EA1:INCB_SCORE1LJMPKEY_2EA2:INCB_SCORE2MOVB_SC
本文标题:单片机课程设计 记分牌
链接地址:https://www.777doc.com/doc-3281112 .html