ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:1.08MB ,
资源ID:20175583      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20175583.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(时钟设计报告Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

时钟设计报告Word文件下载.docx

1、 (3)对时、分、秒作加1处理时,应注意它们的个位、十位的进位问题,选取一个合适的算法。 (4) 在主程序中对时间进行调校前应关闭中断,以防在调校过程中定时中断服务程序也对时间进行修改而造成混乱。 (5)选择计数单元时应注意不得与子程序的使用单元发生冲突。(6)参考流程图(见后所附)。1.6 工作环境简介 (1) 硬件:计算机一台、ZY15MCU12BD型综合单片机实验箱一台、通讯电缆一根。 (2) 软件:Windows操作系统、Keil C51软件。1.7 调试指南首先调通子程序,对显示和键盘扫描子程序,可以仿照实验3、实验4进行调试;对于其它新编子程序,可以用键盘输入入口参数,再用单步、设

2、断点运行的方法看各中间环节的结果是否为预期值。最后再用同样的方法调试主程序。可以在Proteus仿真软件中进行预调试,待各种错误排除后,再到实际硬件中调试。在仿真软件环境下运行,有可能因计算机的处理能力不够而走时缓慢,而在实际硬件中运行正常。1.8 推荐参考文献(1)胡汉才 单片机原理及其接口技术(第二版). 北京:清华大学出版社,2004.2(2)徐安等 单片机原理及应用. 北京:北京希望电子出版社,2003.2(3)丁元杰 单片微机原理及应用(第二版). 北京:机械工业出版社,1999.10(4)李建忠 单片机原理及应用. 西安:西安电子科技大学出版社,2002.2(5)徐惠民 单片微型计

3、算机原理、接口及应用(第二版). 北京:北京邮电大学出版社,2000.10(6)闫玉德 MCS-51单片机原理及应用(C语言版). 北京:机械工业出版社(7)何桥等 单片机原理及应用. 北京:中国铁道出版社,2004.3(8)李群芳 单片机原理、接口及应用嵌入式系统技术基础. 北京:清华大学出版社,2005.31.9 主程序流程图开始初始化( 定时器、显示区、中断系统、计数单元等)开中断调用显示子程序调用键盘扫描子程序N有键按下?Y关中断秒加1处理秒键?分加1处理小时加1处理分键?小时键?图1 主程序流程图1.10 定时器中断服务程序流程图定时器中断处理重送初值保护现场计数单元加1到1秒?秒加

4、1秒清0、分加1秒到60?分清0、小时加1分到60?小时到24?小时清0恢复现场中断返回图2 定时器中断程序流程图 基于MCS-51单片机的时钟设计2 硬件结构概述 2.1 8051硬件结构与原理8051内部由算数逻辑部件ALU、定时控制部件和寄存器组等组成2.2 电源电路使用开发板或者实验箱上的5V电源进行供电。2.3 8段LED显示器 1、MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。2、.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段

5、熄灭。各段的驱动位如图5-1,各显示字的字形代码如下所示:显示字 字形代码 显示字 字形代码 显示字 字形代码 0 C0H 0. 40H - BFH 1 F9H 1. 79H 灭 FFH 2 A4H 2. 24HD7 3 B0H 3. 30H 4 99H 4. 19H 5 92H 5. 12H 6 82H 6. 02H 7 F8H 7. 78H 8 80H 8. 00H 9 90H 9. 10H A 88H A. 08H B 83H B. 03H图5-1 8段LED各段控制位 C C6H C. 46H D A1H D. 21H E 86H E. 06H F 8EH F. 0EH 3. LED显

6、示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭。 LED显示器 对应位口位 左起第一位 D0 左起第二位 D1 左起第三位 D2 左起第四位 D3 左起第五位 D4 左起第六位 D52.4 4*4矩阵键盘实验箱上有一个16键的矩阵键盘,分为4行4列。4行分别连接到一片8255(与8段LED显示器的段驱动和位驱动共用)的PC0PC3,4列分别连接到8255的PC4PC7。8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。第4列第3列第2列第1列行输入PC300H01H02H03H第4行PC204H05H06H07H第3行

7、PC108H09H0AH0BH第2行PC00CH0DH0EH0FH第1行PC7PC6PC5PC4列 驱 动图6-1 键盘布置及键值选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。每个键均安排一个键值。2.5 可编程并行接口8255A2.5.1 8255A的基本性能可编程通用并行输入/输出接口电路通用性强,使用灵活,通过它CPU可直接与外设相连具有三个相互独立的输入/输出端口A端口、B端口、C端口三个端口可联合使用,构成具有握手联络信号的并行接口端口有多种工作方式可供选择A口有三种工作方式:方式0、1、2B口有二种工作方式:方式0、方式1 2.5.

8、2 8255A的内部结构三个数据端口:A口、B口、C口每个端口都是8位的,可以选择为输入/输出口A口:8位输出锁存/缓冲、输入锁存/缓冲B口:C口:8位输出锁存/缓冲、输入缓冲可分为两个4位端口分别使用A组、B组控制电路A组:控制A口和C口上半部分(PC4PC7)B组:控制B口和C口下半部分(PC0PC3)2.5.3 8255A的引脚图2.5.4 8255A的控制字工作方式控制字的格式3 软件结构概述3.1 显示子程序3.1.1 程序流程图返回回显示子程序的详细流程图3.1.2 显示子程序代码 DIS: MOV R0,#20H MOV R2,#0FEH MOV 27H,#21H LOOP6:

9、MOV A,R0 MOV 28H,#00H CJNE A,27H,CHANGE MOV 28H,#10H INC 27H MOV A,27H CJNE A,#27H,JAMPP JAMPP: CLR A CHANGE: MOV A,R0 ADD A,28H MOV DPTR,#SUBTAB MOVC A,A+DPTR MOV DPTR,#4001H MOVX DPTR,A MOV A,R2 MOV DPTR,#4000H MOV R3,#5 LOOP4: MOV R4,#25 LOOP5: MOV R1,#10 DJNZ R1,$ DJNZ R4,LOOP5 DJNZ R3,LOOP4 MOV

10、 A,#0FFH RL A MOV R2,A INC R0 CJNE R0,#26H,LOOP6 RET SUBTAB: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H DB 8EH,40H,79H,24H,30H DB 19H,12H,02H,78H,00H DB 10H,08H,03H,46H,21H DB 06H,0EH,0BFH,0FFH3.2 键盘扫描子程序3.2.1 程序流程图读取列值返回键值0FFH 列值加上行首值并查键值表返回键值键盘扫描流程图3.2.2 键盘扫描程序代码 K

11、EY: MOV DPTR,#4002H MOV A,#00H MOVX A,DPTR ANL A,#0FH CJNE A,#0FH,KEYSCAN SJMP EXIT KEYSCAN:ACALL DY20MS MOV R2,#0EFH MOV R3,#04H MOV R0,#00H KEYSM1:MOV A,R2 CJNE A,#0FH,JSADD DJNZ R3,KEYSM1 EXIT: SJMP DONEJSADD: JB ACC.0,JSADD1 AJMP JSADD4JSADD1: JB ACC.1,JSADD2 MOV A,#04H JSADD2: JB ACC.2,JSADD3 M

12、OV A,#08HJSADD3: JB ACC.3,JSADD4 MOV A,#0CHJSADD4: ADD A,R0 MOV DPTR,#KEYTAB DONE:KEYTAB:DB 0FH,0EH,0DH,0CH DB 0BH,0AH,09H,08H DB 07H,06H,05H,04H DB 03H,02H,01H,00HDY20MS: MOV R7,#0A0HDY20MS1:MOV R6,#0FFHDY20MS2:DJNZ R6,DY20MS2 DJNZ R7,DY20MS13.3 主程序设计3.3.1 主程序流程图关定时器CLR 2AH.031H=0?开定时器SETB 2AH.02AH

13、.0=1?已按奇数次31H=1,否则31H=0是启动停止按键?是清零按键?时钟清零秒加1按键?分加1按键?分加1时加1时加1按键?秒减1按键?秒减1分减1按键?分减1时减1按键?时减1 主程序流程图3.3.2 主程序代码ORG 0100H MOV SP,#6FH MOV DPTR,#4003H;控制口地址送DPTR MOV A,#81H ;A口、B口方式0输出,C口高4位出,低4位输入 MOVX DPTR,A ;控制字送控制口 MOV TMOD,#10H MOV TH1,#3CH ;送定时器初值 MOV TL1,#0B0H MOV 30H,#14H SETB EARETURN: LCALL D

14、IS LCALL KEY CJNE A,#0FFH,YES1MOV A,31H CJNE A,#00H,START CLR ET1 CLR TR1 CLR 2AH.0 SJMP RETURNSTART:JB 2AH.0,RETURN SETB ET1 SETB TR1 SETB 2AH.0 YES1:CJNE A,#0FH,NO_START INC 31H MOV A,31H MOV B,#02H DIV AB MOV A,B MOV 31H,ANO_START:CJNE A,#0BH,NO_CLEAR MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23

15、H,#00H MOV 24H,#00H MOV 25H,#00H LJMP RETURNNO_CLEAR:CJNE A,#0AH,NOS INC 25H MOV A,25H CJNE A,#0AH,JMPSS INC 24H MOV 25H,#00H MOV A,24H CJNE A,#06H,JMPSS MOV 24H,#00HJMPSS:LJMP NOH NOS:CJNE A,#09H,NOM INC 23H MOV A,23H INC 22H MOV 23H,#00H MOV A,22H CJNE A,#06H,NOH MOV 22H,#00H SJMP NOH NOM:CJNE A,#

16、08H,DEC_S INC 21H MOV A,21H CJNE A,#0AH,CHECK INC 20H MOV 21H,#00HCHECK:MOV A,20H CJNE A,#02H,NOH MOV A,21H CJNE A,#04H,NOHDEC_S:CJNE A,#0EH,NO_DECS DEC 25H MOV A,25H CJNE A,#0FFH,NO_Z1 MOV A,24H CJNE A,#00H,NO_J1 MOV 25H,#00H LJMP RETURN NO_J1:MOV 25H,#09H DEC 24HNO_Z1:LJMP RETURNNO_DECS:CJNE A,#0D

17、H,NO_DECM DEC 23H MOV A,23H CJNE A,#0FFH,NO_Z2 MOV A,22H CJNE A,#00H,NO_J2NO_J2: MOV 23H,#09H DEC 22H NO_Z2: NO_DECM:CJNE A,#07H,NOH DEC 21H CJNE A,#0FFH,NOH MOV A,20H CJNE A,#00H,NO_J3 NO_J3: MOV 21H,#09H DEC 20HNOH:3.4 中断服务程序3.4.1 中断服务程序流程图计数单元减1 定时器中断程序流程图3.4.2 中断服务程序代码 ORG 001BH AJMP sheji_EI OR

18、G 0050Hsheji_EI:PUSH PSW PUSH ACC DJNZ 30H,JAMP MOV 30H,#14H CJNE A,#0AH,JAMP1 JAMP1: JC JAMP INC 24H CJNE A,#06H,JAMP2 JAMP2: CJNE A,#0AH,JAMP3 JAMP3: CJNE A,#06H,JAMP4 JAMP4: CJNE A,#0AH,JAMP5 JAMP5: MOV A,20H CJNE A,#02H,JAMP6 JAMP6: MOV A,21H CJNE A,#04H,JAMP7 JAMP7: MOV 20H,#00H MOV 21H,#00H JA

19、MP:MOV TH1,#3CH ;重送定时器初值 MOV TL1,#0B0H POP ACC POP PSW RETI END3.5 调试过程 照着程序流程图慢慢的在keil软件中写出课设所要求的程序代码,并进行编译,看看是否有指令错误,如果指令正确会生成.hex的文件,然后在proteus7软件添加仿真电路图并加载.hex文件于8031或89C51芯片中,点击仿真运行按钮进行仿真,会看到下图所示的效果:但是第一代代码毕竟不是那么完美,在进行按键对分钟进行加1调整时会出现如下的结果:上图出现了字母A的显示,这是因为软件代码中没有对加1之后的单元里面的值进行范围的限制,此时的按键加1代码如下:C

20、LR ET1 CJNE A,#0FH,NO_S ;F键秒钟加1 SJMP NO_H NO_S:CJNE A,#0BH,NO_M ;B键分钟加1 INC 23H SJMP NO_H NO_M:CJNE A,#07H,NO_H ;7键时钟加1 INC 21H在进行了代码的优化之后显示不再出现字母:优化代码如下:YES1: MOV A,#0AH,NO_S CJNE A,#0AH,NO_S INC 23H MOV A,#0AH,NO_M CJNE A,#0AH,NO_M SJMP NO_H经过上述代码优化后效果是好了不少,但是对时钟显示以及显示范围没有处理好,时钟要求23显示后下一位是00而不是24,所以时钟代码优化如下:NO_M:CJNE A,#07H,NO_H CHECK: CJNE A,#02H,NO_H CJNE A,#04H,NO_H在上述所有优化后数码管显示23.59.59之后会显示00.00.00,这就是我们日常生活中说需要的效果。在中断服务程序中也要对加1操作进行上述代码的类似优

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1