版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及其接口技术课程设计报告设计课题:基于MCS-51单片机的时钟秒表设计专业班级:08自动化小组成员:周剑(08118090)指导教师:阮海容
基于MCS-51单片机的时钟秒表设计设计任务书基本设计要求(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。
(2)程序的首地址应使目标机可以直接运行,即从0000H开端。在主程序的开端部分必须设置一个合适的栈底。程序放置的地址须持续且靠前,不要在中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。
(3)6位显示器数码管从左到右分辨显示时.分.秒(各占用2位),采用24小时标准计时制。开端计时时为000000,到235959后变成000000.
(4)在4*4矩阵键盘上选定3个键分辨作为小时.分.秒的调校键。每按一次键,对应的显示值便加1。分.秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变).
(5)软件设计必须应用8031片内定时器,采用定时中断结构,不得应用软件延时法选作项目(1)另设三个键,分别作小时、分、秒的减1调校。(2)在以上设计的基础上,修改程序制作一个电子秒表。分、秒各占用2位显示,1/10秒、1/100秒各占用1位显示。设定二个键分别作启动/停止、清零。(3)在做完(2)后,将时钟与秒表合二为一,并且在同时使用时互不影响。即可在时钟与秒表之间任意切换,而不影响走时、计秒。.目录第一章设计阐明
1.1设计内容
1.2设计请求
1.3设备及工作环境第二章硬件计划
2.1设计思路2.2原理电路图2.3硬件工作原理论述第三章软件计划3.1分析论证3.2程序流程图3.3程序清单
第四章调试过程及成果分析第五章设计总结
参考文献
第一章设计阐明1.1设计内容
用ZY15MCU12BD型综合单片机实验箱及串口电路设计实现显示时间并能够调校时间的时钟,还能够实现秒表的启动/暂停,复位功能
1.2设计请求
(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。
(2)程序的首地址应使目标机可以直接运行,即从0000H开端。在主程序的开端部分必须设置一个合适的栈底。程序放置的地址须持续且靠前,不要在中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。
(3)6位显示器数码管从左到右分别显示时.分.秒(各占用2位),采用24小时标准计时制。开端计时时为000000,到235959后变成000000.
(4)在键盘上选定6个键分别作为小时.分.秒的调校键。每按一次键,对应的显示值便加1或减1。分.秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变)再选一个键用作时钟的复位键.另外选一个键作为秒表的启动/暂停键,再选一个键作为秒表的复位键。
(5)软件设计必须应用8031片内定时器,采用定时中断结构,不得应用软件延时法。
(6)上机调试程序。
(7)写出设计报告。
1.3设备及工作环境
(1)硬件:盘算机一台、ZY15MCU12BD型综合单片机实验箱一台、通信电缆一根。
(2)软件:Windows操纵系统、KeilC51软件。
第二章硬件计划
2.1设计思路
电子时钟程序由显示模块、校时模块和时钟运算模块三大部分组成。其中校时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒算到60时,要自己清零并向分进1;分算到60时,要自己清零并向时进1;时算到24时,要清零。这样,才能循环记时。秒表程序也由显示模块,启动/暂停复位模块和时钟运算模块组成。其中校时模块和时钟模块要对1/100秒,1/10秒,秒,分的数值进行操作并且1/100秒算到10时,要自己清零并向1/10秒进1;1/10秒算到10时,要自己清零并向秒进1;秒时算到60时,要自己清零并向分进1,秒时算到60时,要自己清零。用按键决定是进入时钟程序还是秒表程序。
2.2原理电路图2.3硬件工作原理论述硬件由8031芯片、74LS373锁存器、8255A串口芯片、74LS240驱动器、显示器数码显示管和4*4键盘组成.由8031片内定时器定时中断,并取一存储单元作为计数器应用,每中断一次,在中断服务程序中使计数器加1、用8031片内定时器T0定时中断服务程序完成秒、分、时的运算即计时功效,T1定时中断服务程序完成1/100秒、1/10秒、秒,分的运算即秒表功效。8255A负责将内存里的时位、分位和秒位数值或1/100秒、1/10秒、秒,分位数值输出到数码管。同时按键01键、02键、03键是分别对时、分、秒的加1校订;05键、06键、07键时分别对时、分、秒的减1校订;00键是清零键。并且开机时时钟时从000000开端计时的,到235959时在回到000000.09键实现秒表的启动/暂停,0A0键实现秒表的复位。
第三章软件计划
3.1分析论证
此时钟秒表的设计与实现,主要采用了6只显示器数码管,8031内部二进制16位定时器/计数器,可编程并行I/O接口8255芯片和矩阵键盘等,包含显示模块,运算模块和校时模块三大功效模块。
3.1.1、显示模块:
用8255,数码管的显示功效来设计。显示部分硬件用六只显示器为显示管,这些显示器发光二极管的阳极是互相连接在一起的,所以称为共阳极数码管。通过在这8只发光二极管的阴极加-5V或0V的电压使不同的二极管发光,形成不同的数字。该模块重要是将运算模块和校时模块运算出来并存放在内存单元里的十六进制表现的时位、分位和秒位或或1/100秒、1/10秒、秒,分数值转化为十进制,并通过6只数码管显示出来。该模块实现的硬件是实验箱中的显示器单元,采用软件译码,即在程序中设置一个段选码表。CPU直接往显示器输出八段代码,省去了硬件译码器。只要做到每送一次段选码时也送一次位扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现由左向右使6只显示器依次呈现数字显示。
3.1.2、运算模块:
该模块的重要功效是对时、分、秒或或1/100秒、1/10秒、秒,分的运算,并把运算出的终极成果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为定时模块和运算模块。定时模块负责供给中断信号,由于CPU运算模块中的指令耗费必定的时间,所以中断信号最好通过硬件来实现。本实验中用8031定时器/计数器,但由于8031供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是8031工作方法为方法1,产生一个50ms的脉冲信号。运算模块负责时、分、秒或或1/100秒、1/10秒、秒,分的计算,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。当时加到24时,直接清零,然后转到调用处。秒表也是如此。
3.1.3、校时模块:
该模块重要功效是修正时、分、秒内存单元的数值。每按一次键,对应的显示值便加1。分、秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不产生转变)。要注意在主程序中对时间进行调校前应封闭中断,以防在调校过程中定时中断服务程序也对时间进行修正而造成混杂。3.1.4、启动/暂停,复位模块该模块的功能是实现秒表的启动/暂停,复位。本实验中第一次按下09键进入秒表程序,开始跑时,第二次按下09键暂停秒表,按下0A0键秒表清零并返回到主程序
3.1.5、整体功效:
在6块显示器数码管上能实现数字时钟的时、分、秒显示和秒表,并能对时、分、秒进行加1校订、减1校订和清零。本实验中01键、02键、03键是分别对时、分、秒的加1校订;05键、06键、07键时分别对时、分、秒的减1校订;00键是清零键。并且开机时时钟时从000000开端计时的,到235959时在回到000000.
3.2程序流程图开始开始初始化(定时器、显示区、初始化(定时器、显示区、中断系统、计数单元等)开中断开中断调用显示子程序调用显示子程序调用键盘扫描子程序调用键盘扫描子程序有键按下?有键按下?YY关中断关中断YY09键?进入秒表程序09键?进入秒表程序09键?暂停N09键?暂停N复位0A键?进入时钟程序复位0A键?进入时钟程序小时加1处理小时+1键?小时加1处理小时+1键?YY分+1?分加1处理分+1?分加1处理NN秒加1处理秒+1?秒加1处理秒+1?时-1?时减1处理时-1?时减1处理图1主程序流程图图1主程序流程图分减1处理分-1?分减1处理分-1?秒减1处理秒-1?
主程序流程图秒减1处理秒-1?定时器中断处理定时器中断处理重送初值重送初值保护现场保护现场计数单元加1计数单元加1NN到1秒?到1秒?秒加1秒加1N秒清0、分加1秒到60?N秒清0、分加1秒到60?NN分清0、小时加1分到60?分清0、小时加1分到60?N小时到24?小时清0N小时到24?小时清0恢复现场恢复现场中断返回中断返回图2定时器图2定时器 T0中断程序流程图3.3程序清单…ORG0000HLJMPSTARTORG000BHLJMPINTT0ORG001BHLJMPINTT1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START:MOVSP,#60HMOVR0,#5LOOP1:MOVR1,#200LOOP2:MOVR2,#250DJNZR2,$DJNZR1,LOOP2DJNZR0,LOOP1;延时0.5SMOVDPTR,#4003H;8255初始化MOVA,#81HMOVX@DPTR,AMOVR0,#20HMOVR7,#07HCLEAR:MOV@R0,#00HMOV@R1,#00HINCR0DJNZR7,CLEAR;20H-26H30H-36H清零MOVTMOD,#11H;选择方法.MOVTH1,#0D8HMOVTL1,#0F0HMOVTH0,#3CHMOVTL0,#0B0H;赋初值LOOP:SETBEASETBET0SETBTR0;启动T0计数LCALLDISPLAY1;调用时钟显示程序LCALLKEYSCAN;键盘扫描CJNEA,#0FFH,CHOOSE;若有键按下,则CHOOSESJMPCLOCK;无键按下,则转LOOPCHOOSE:CJNEA,#09H,CLOCKLJMPSECONDS;若秒表启动键按下,则进入秒表CLOCK:LCALLDISPLAY1LCALLKEYSCAN;再次扫描键盘CJNEA,#0FFH,SET_A;若有键按下则进入调校SJMPLOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;秒表程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SECONDS:MOV30H,#00HMOV31H,#00HMOV32H,#00HMOV33H,#00HMOV34H,#00HMOV35H,#00HSETBTR1LOOP3:SETBET1LCALLDISPLAY2LCALLKEYSCANCJNEA,#0FFH,PAUSE;若有键按下,则PAUSESJMPLOOP3PAUSE:CLRET1;关中断CJNEA,#09H,RESET1CPLTR1;暂停SJMPLOOP3RESET1:CJNEA,#0AH,LOOP5MOVTH1,#0D8HMOVTL1,#0F0HSETBTR1MOV30,#00HMOV31,#00HMOV32,#00HMOV33,#00HMOV34,#00HMOV35,#00H;清零CLRTR1LCALLDISPLAY2LJMPLOOPLOOP5:AJMPLOOP3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SET_A:CLRET0;关中断CJNEA,#03H,ADDMM;按下的键为秒键往下履行INC25HMOVA,25HCJNEA,#10,LOOP4MOV25H,#0INC24H MOVA,24HCJNEA,#6,LOOP4MOV24H,#0SJMPLOOPADDMM:CJNEA,#02H,ADDHH;按下的键为分键往下履行INC23HMOVA,23HCJNEA,#10,LOOP4MOV23H,#0INC22HMOVA,22HCJNEA,#6,LOOP4MOV22H,#0LJMPLOOPADDHH:CJNEA,#01H,REST;按下的键为小时键往下履行INC21HMOVA,21HCJNEA,#10,A_HOURMOV21H,#0INC20HREST:CJNEA,#00H,DECSSMOV20H,#00HMOV21H,#00HMOV22H,#00HMOV23H,#00HMOV24H,#00HMOV25H,#00HA_HOUR:MOVA,20HSWAPAORLA,21HCJNEA,#24H,LOOP4MOV20H,#0MOV21H,#0LOOP4:LJMPLOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;减1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SET_D:LJMPLOOPDECSS:CJNEA,#07H,DECMMMOVA,25HDEC25HCJNEA,#0,SET_DMOV25H,#9MOVA,24HDEC24HCJNEA,#0,SET_DMOV24H,#5SJMPSET_DDECMM:CJNEA,#06H,DECHHMOVA,23HDEC23HCJNEA,#0H,SET_DMOV23H,#9MOVA,DEC22HCJNEA,#0,SET_DMOV22H,#5SJMPSET_DDECHH:CJNEA,#05H,SET_DMOVA,21HCJNEA,#0,D_HOUR1MOVA,20HCJNEA,#0,D_HOUR2MOV21H,#3MOV20H,#2SJMPSET_DD_HOUR1:DEC21HLJMPSET_DD_HOUR2:DEC20HMOV21H,#9LJMPSET_D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;时钟显示程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示数据在20H-25H单元内,用六位LED共阳数码管显示,DISPLAY1:MOVPSW,#08HMOVR0,#20HMOVR2,#0FEHLD0:MOVA,@R0MOVDPTR,#DTABMOVCA,@A+DPTR;查字形代码MOVDPTR,#4001H;字形代码送B段口MOVX@DPTR,AMOVA,R2MOVDPTR,#4000H;字形代码送A位口MOVX@DPTR,AMOVR1,#250DJNZR1,$MOVA,#0FFH;封闭所有的显示位即位口置高电平MOVX@DPTR,AMOVA,R2RLAMOVR2,AINCR0CJNER0,#26H,LD0RETDTAB:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90HDB88H,83H,0C6H,0A1H,86HDB8EH,40H,79H,24H,30HDB19H,12H,02H,78H,00HDB80H,08H,03H,46H,21HDB06H,0EH,0BFH,0FFH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;秒表显示程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示数据在30H-35H单元内,用六位LED共阳数码管显示,DISPLAY2:MOVPSW,#08HMOVR0,#30HMOVR2,#0FEHLD1:MOVA,@R0MOVDPTR,#DTAB1MOVCA,@A+DPTR;查字形代码MOVDPTR,#4001H;字形代码送B段口MOVX@DPTR,AMOVA,R2MOVDPTR,#4000H;字形代码送A位口MOVX@DPTR,AMOVR1,#250DJNZR1,$MOVA,#0FFH;封闭所有的显示位即位口置高电平MOVX@DPTR,AMOVA,R2RLAMOVR2,AINCR0CJNER0,#36H,LD1RETDTAB1:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90HDB88H,83H,0C6H,0A1H,86HDB8EH,40H,79H,24H,30HDB19H,12H,02H,78H,00HDB80H,08H,03H,46H,21HDB06H,0EH,0BFH,0FFH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;键盘扫描程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KEYSCAN:MOVDPTR,#4002HMOVA,#0FHMOVX@DPTR,AMOVXA,@DPTRANLA,#0FHCJNEA,#0FH,NEXTSJMPDONENEXT:MOVR2,#0EFHKEYSM1:MOVA,R2MOVDPTR,#4002HMOVX@DPTR,AMOVXA,@DPTRANLA,#0FHCJNEA,#0FH,NEXT1KEYSM2:MOVA,R2RLAMOVR2,AJBACC.0,KEYSM1DONE:MOVA,#0FFHRETNEXT1:MOVR6,AMOVR3,#100LOOP9:MOVR4,#100DJNZR4,$DJNZR3,LOOP9MOVXA,@DPTRANLA,#0FHXRLA,R6JNZKEYSM2LOOP20:MOVXA,@DPTRANLA,#0FHCJNEA,#0FH,LOOP20MOVA,R6ANLA,#0FHMOVR6,AMOVA,R2ANLA,#0F0HORLA,R6CALLKEY20RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;查键值程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KEY20:PUSHACCMOVR1,#00HKEY21:JNBACC.4,KEY22RRAINCR1SJMPKEY21KEY22:MOVA,R1MOVB,#4MULABMOVR1,APOPACCKEY23:JNBACC.0,KEY24RRAINCR1SJMPKEY23KEY24:MOVDPTR,#KEYTABMOVA,R1MOVCA,@A+DPTRRETKEYTAB:DB0FH,0BH,07H,03HDB0EH,0AH,06H,02HDB0DH,09H,05H,01HDB0CH,08H,04H,00H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断服务程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INTT1:PUSHACCPUSHPSWMOVTH1,#0D8HMOVTL1,#0F0HINC35HMOVA,35HCJNEA,#10,OUTT1;未到1秒,则转RETURNMOV35H,#00HINC34H;到1秒,秒单元的个位加1MOVA,34HCJNEA,#10,OUTT1;MOV34H,#00HINC33HMOVA,33HCJNEA,#10,OUTT1;未到60秒,则转MOV33H,#00HINC32H;分单元个位加1MOVA,32HCJNEA,#06,OUTT1MOV32H,#00HINC31HMOVA,31HCJNEA,#10H,CCC;若未到60分,则转MOVA,30HCJNEA,#06H,CCCMOV31H,#00HMOV30H,#00HCCC:CJNEA,#10,OUTT1MOV31H,#00HINC30HMOVA,30HOUTT1:POPPSWPOPACCRETI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T0中断服务程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T0中断服务程序INTT0:PUSHACCPUSHPSWMOVTH0,#3CHMOVTL0,#0B0HINC26HMOVA,26HCJNEA,#20,OUTT0;未到1秒,则转RETURNMOV26H,#00HINC25H;到1秒,秒单元的个位加1MOVA,25HCJNEA,#10,OUTT0;MOV25H,#00HINC24
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 32566.1-2026不锈钢焊接气瓶第1部分:试验压力小于或等于6 MPa的气瓶
- 2026年山东省日照市高职单招综合素质考试题库有答案详细解析
- 2026年酒泉职业技术学院单招职业适应性测试题库带答案详细解析
- 2026年仪征市事业单位公开招聘工作人员74人笔试参考题库及答案解析
- 2026太平洋财产保险阿坝支公司招聘1人笔试备考题库及答案解析
- 2026年安徽省芜湖市高职单招综合素质考试题库有答案详细解析
- 2026西安联邦口腔医院招聘(67人)笔试模拟试题及答案解析
- 2026江苏师范大学招聘专职辅导员22人笔试备考试题及答案解析
- 2026浙江杭州市文三教育集团诚聘小学音乐教师1人(非事业)笔试备考试题及答案解析
- 2026湖南岳阳市岳阳楼区四海揽才教师人才校园招聘20人笔试参考题库及答案解析
- 2026甘肃天水市秦州区选聘大学生村文书50人笔试模拟试题及答案解析
- 2026杭州市市级机关事业单位编外招聘148人考试备考试题及答案解析
- 河南省驻马店市(2025年)公共基础辅警考试笔试题库及答案
- 北京市2024北京市教师发展中心招聘1人笔试历年参考题库典型考点附带答案详解
- 2026年常州信息职业技术学院单招职业倾向性测试题库含答案详解(a卷)
- 2026年江西制造职业技术学院单招职业适应性测试题库及答案详细解析
- 《数智时代下的供应链管理:理论与实践》课件 第1-7章 理解供应链- 供应链经典的生产计划
- (完整版)高中化学实验教学进度表
- 崩塌地质灾害防治
- 小型雕刻机结构设计说明书
- 熔体过热度对雾化过程的影响
评论
0/150
提交评论