〔大学论文〕电子钟设计报告.pdf

上传人:李主任 文档编号:3701007 上传时间:2019-09-20 格式:PDF 页数:29 大小:596.21KB
返回 下载 相关 举报
〔大学论文〕电子钟设计报告.pdf_第1页
第1页 / 共29页
〔大学论文〕电子钟设计报告.pdf_第2页
第2页 / 共29页
〔大学论文〕电子钟设计报告.pdf_第3页
第3页 / 共29页
〔大学论文〕电子钟设计报告.pdf_第4页
第4页 / 共29页
〔大学论文〕电子钟设计报告.pdf_第5页
第5页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《〔大学论文〕电子钟设计报告.pdf》由会员分享,可在线阅读,更多相关《〔大学论文〕电子钟设计报告.pdf(29页珍藏版)》请在三一文库上搜索。

1、- 0 - 目目目目录录录录 一、.设计任务.1 二、总体方案设计与方案可行性说明1 三、总框图及总体软件设计说明2 四、接口电路逻辑图及硬件设计说明4 五、主要子程序框图及其设计说明7 六、 源程序清单 (详细注释) .14 七、 调试记录及调试结果25 八、 系统实现功能与操作说明26 九、 课程设计总结27 十、 参考文献28 - 1 - 一、一、 设计任务设计任务 基于在一个学期内对单片机原理及接口技术以及软件 Keilc51 汇编语 言软件的学习及应用,在课程设计期间通过一个微机应用系统的设计与调试过 程,运用微机原理及接口技术课程所学的知识,在设计中加以实践,达到理 解、 巩固和发

2、展所学内容的目标。 通过系统构造、 流程设计、 编程与调试的过程, 掌握分析与解决实际问题的方法与手段,提高系统设计、程序编码与调试方面的 实际动手能力,作为从事工程技术工作的一次系统训练。 本次课程设计的主要任务是完成数字电子时钟的设计和实现, 其主要功能如 下: 1、于微机系统上实现时间的正常显示; 2、实现时间的正常调节; 3、实现定时并做到可调,并在预定时间到达时进行报警并且实现可控; 4、整点报时; 5、实现年、月、日的正常显示,并做到年、月、日的可调; 本次设计还应注意一下几点事项: 1,、对微机系统中的 51 单片机的内部存储器要进行合理的、有条理的安排 和使用,如果没有进行合理

3、安排在设计的过程中,有些相关的内部存储器中 存放的数据会出现冲突,导致设计的结果不正常,如:数码管显示不正常出 现乱码或频闪跳动等问题; 2、对单片机开发系统的硬件在运用时所出现的问题要有更清楚的认识和了 解,并且运用程序来防止和减少问题的出现从而影响设计的可行性,如按键 部分的抖动问题,在本次设计当中,采用延时的方法来防止按键按下所产生 的抖动问题。 二、二、 总体方案设计与方案可行性说明总体方案设计与方案可行性说明 本次方案的设计以单片机中的定时为主,分别实现时、分、秒、时、年、月、 日上的显示和正常进位,在此基础上,总体方案可分为以下四个功能模块: 模块一:计时功能模块,以微机开发系统中

4、 51 单片机的定时功能为主,本 次设计采用的计时方式为方式 2,并且采用中断方式进行一秒计时,由于 51 单 片机的功能特性的限制,计时的方案由采用 100ms 计时并且在这个基础上连续 循环 10 次进行秒钟计时,在秒的基础上再分别进行其他时间单位的转化,如此 逐渐递进实现总体时间计时的实现。时进制采用 24 小时进制,年份显示只能实 现 099 之间的显示。 模块二:显示功能模块,主要以微机开发系统中的七段数码管实现,显示的 主要格式为“时/年分/月秒/日” ,其中,年、月、日的显示由微机开发系统 - 2 - 中的按键实现切换。 模块三:闹钟功能模块:以蜂鸣器的蜂鸣为标志,蜂鸣器工作则表

5、示预定时 间到达。闹钟的设定由按键开关实现,闹钟的开关有拨键开关控制。 模块四:控制功能模块:主要以微机开发系统 中的按键和拨键开关实现, 按键开关主要用作时间设置, 日期设置和闹钟设置以及对时间和日期的显示的转 换。拨键开关主要用来实现闹钟的开关设置。在按键开关的防抖动处理上,以在 程序中进行 10ms 的延时来进行处理。 三、三、 总框图及总体软件设计说明总框图及总体软件设计说明 程序总体框图:程序总体框图: 开始 堆栈初始化:60h 年月日暂存地址初始化:3032h 秒分时暂存地址初始化:1012h 预定时间地址始化:2022h 计时设置:方式 2 100ms 计时 1 图图1 1 1

6、1 - 3 - 调用段码转化子程序 调用显示子程序 调用时间调整子程序 调用闹钟警报子程序 按键 2 是否按下 按键 3 是否按下 1 年月日显示 闹钟调整 N N Y Y 等待中断 按键 4 是否 按下 N N Y 图图2 2 2 2 总体软件设计说明:总体软件设计说明: - 4 - 在软件设计即程序的编程编程方面,如面的设计框图所示,本次课程设计在 程序编写的同时已经将 51 单片机中的内部存储器进行了一定的规划,其中 1012h 作为计时方面的暂存器,分别存放秒、分、时上面的内容;2022h 上的 内容分别存放闹钟上的秒、分、时的内容(20h 上的内容为秒,在程序中没有特 别定义初值)

7、;3032h 上的内容为日、月、年上的内容;7077h 为显示缓冲区, 60h 为堆栈的首地址。在计时开始时各存储器上的内容会随着程序的运行而改 变,所以只要对各存储器上的内容进行调用和显示就可以实现时间显示,闹钟显 示以及日期的显示。由于数码管的显示特点,在进行调用显示之前,须将各存储 器的内容进行转化,即数据的高低位分离,高四位和第四位的数值分别存放在不 同的显示缓冲区内,进而进行显示调用。 四、四、 接口电路逻辑图及硬件设计说明接口电路逻辑图及硬件设计说明 接口电路逻辑图接口电路逻辑图 主机板 图图 3 3 3 38255 与 89S51 的连接 - 5 - 图图 4 4 4 4 I2C

8、 总线、温度传感器与扬声器的连接 图图 5 5 5 5 键盘与数码管 利用 8255 并行控制开关量 - 6 - 图图 6 6 6 6 拨动开关、按钮与发光二极管的控制 本次课程设计的硬件系统主要器件有:89c51 单片机,82c55 芯片,8 个数 码管,按键开关,拨键开关,发光二极管,蜂鸣器,以及其他相关器件。本系统 中,89c51 与两片 82c55 相连,51 单片机程序的运行控制 82c55 的各端口输入输 出、电平的高低进行控制以便更有效地对数码管、发光二极管、开关以及其他外 部电路器件进行更有效和合理的控制。如上图所示的各功能模块,在本次设计中 主要利用到键盘与数码管以及拨动开关

9、,按键开关控制部分。 第一片 8255(连接发光二极管与开关)的端口取为 PA 口:FD00H,PB 口: FD01H,PC 口:FD02H,控制口:FD03H。控制字应使得 PA 口输出,PB、PC 口输入,为 8BH。 第二片 8255(连接数码管)的端口地址取为 FE00HFE03H,为用 PC 口控 制键盘,控制字取为 81H.PA 口用于送字段码,PB 口用于送字位码。 - 7 - 五、五、 主要子程序框图及其设计说明主要子程序框图及其设计说明 1、中断子程序(JISHI) : 秒位加 1(10h) 10h=?60 重新载入计时初值 R2-1=?0 秒位清 0 分位加 1(11h)

10、11h=?60 分位清 0 时位加 1(12h) 12h=?24 时位清 0 调用 RIQI 子程 序 返回 N N N Y Y Y 所利用资源: 内部寄存器 R0 R2 内部存储器 10h12h 所调用子程序:RIQI 图图7 7 7 7 开始 R20 - 8 - 2、日历子程序(RIQI) : 开始 日位加 1(30h) 进入月份判断 是否为 12 月 是否为闰年 年位除于 4 是否有余数 4、6、9、11 月 30h(日位)=?30 1、3、5、7、8、 10、12 月 30h(日位)=?31 30h=?28 30h=?29 Y N Y 月位 (31h) 加 1,日位 (30h)为 1

11、年位 (32h) 加 1,月位 (31h)日 位(30h) 为 1 N Y 月位 (31h) 加 1, 日位(30h)为 1 月位 (31h) 加 1, 日位(30h)为 1 Y 返回 N N Y N 图图 8 8 8 8 所利用资源: 内部寄存器 R0 R1 内部存储器 30h32h - 9 - 3、调时子程序(TIAO) : 分位(11h)加 1 11h 是否为 60 调用断码转化子程序 调用显示子程序 开始 按键 0 是否按下 按键 1 是否按下 时位(12h)加 1 12h 是否为 24 时位(12h)清 0 或 分位(11h)清 0 返回 Y Y Y N N N 图图9 9 9 9

12、所利用资源: 内部寄存器 R0A 内部存储器 10h12h25h 所调用子程序:CHANGEDISP - 10 - 4、闹钟设定子程序(DING) : 开始 调用断码转化子程序 调用显示子程序 按键 0 是否按下 按键 1 是否按下 按键 4 是否按下 预定分位(21h) 加 1,21h 是否为 24 时位(12h)清 0 或 分位(11h)清 0 预定时位(22h) 加 1,22h 是否为 24 返回 Y Y Y N N N 图图10101010 所利用资源: 内部寄存器 R0A 内部存储器 20h22h25h 所调用子程序:CHANGEDISP - 11 - 5、日期显示子程序(RILI)

13、 按键 0 是否按下 按键 4 是否按下 按键 1 是否按下 按键 2 是否按下 调用断码转化子程序 调用显示子程序 开始 日位(30h)加 1 月位(31h)加 1 年位(32h)加 1 返回 N N N N Y Y Y Y 图图11111111 所利用资源: 内部寄存器 R0 R2 内部存储器 30h32h25h 所调用子程序:CHANGE DISP - 12 - 6、警报子程序(WARN) : 开始 P3.2 清 0 蜂鸣器工作 预定时位(22h) 与实际时位(12h) 是否相等 预定分位(21h) 与实际分位(11h) 是否相等 拨键 7 是否拨动 P3.2 置 1 关闭蜂鸣器 返回

14、N N Y Y N Y 图图12121212 所利用资源: 内部寄存器 R0A 内部存储器 20h22h25h10h12h - 13 - 7、断码转化子程序 开始 设置指针 R0 指向 (10h,20h,30h) R1=70h R7=3 A=R0 B=10A/B R1=AR1 加 1 R1=BR1 加 1 R1=10(存“ 断码) R1 加 1 R7-1=?0 返回 N Y 图图13131313 所利用资源: 内部寄存器 R0 R1 R7AB 内部存储器 70h77h25h - 14 - 六、六、 源程序清单(详细注释)源程序清单(详细注释) ORG0000H LCALLDELAY LJMPM

15、AIN ORG000BH LJMPJISHI ORG0100H MAIN: MOVSP,#60H;堆栈首地址设置 MOV R2,#10: 装入中断次数 MOV 30H,#27; (日)日期暂存地址初始化 MOV 31H,#2; (月) MOV 32H,#00; (年) MOV 20H,#0; (秒)预定时间暂存地址初始化 MOV 21H,#58; (分) MOV 22H,#9; (时) MOV 10H,#0; (秒)实际时间暂存地址初始化 MOV 11H,#58; (分) MOV 12H,#23; (时) KAISHI:MOVTMOD,#01H;选择 T0 为方式一计时 SETB ET0;允许

16、 T0 申请中断 SETB EA;总中断允许 MOV TL0,#0B0H;初始值设定 MOV TH0,#3CH SETB TR0;开始计时 HERE:LCALL CHANGE;调用断码转化子程序 LCALL DISP:调用显示子程序 LCALLTIAO;调用调时子程序 LCALLWARN;调用警报子程序 MOV DPTR,#0FD03H ;8255 初始化 - 15 - MOVA,#8BH MOVX DPTR,A MOV DPTR,#0FD01H MOVXA,DPTR JNBACC.2,LPP;判断按键 2 是否按下,按下转移 JNBACC.3,LPP1;判断按键 3 是否按下,按下转移 LJ

17、MP HERE;等待中断 LPP:LCALL DELAY1;延时 10ms,用于按键防抖动 LCALL DING;调用定时子程序 LJMP HERE; 等待中断 LPP1:LCALL DELAY1; 延时 10ms,用于按键防抖动 LCALL RILI; 调用日历显示子程序 LJMP HERE; 等待中断 * 日历显示子程序 RILI:PUSH PSW; 断点地址保护 PUSHAcc YEAR: MOV 25H,#30H; 设置断码转化内容首地址 LCALL CHANGE; 调用断码转化子程序 LCALL DISP; 调用显示子程序 MOV DPTR,#0FD03H; 8255 初始化 MOV

18、A,#8BH MOVX DPTR,A MOV DPTR,#0FD01H MOVXA,DPTR JNBACC.0,SYEAR; 判断按键 0 是否按下,按下转移 JNBACC.1,SMON; 判断按键 1 是否按下,按下转移 JNBACC.2,SDAY; 判断按键 2 是否按下,按下转移 JNBACC.4,LOVER; 判断按键 4 是否按下,按下转移 - 16 - LJMPYEAR SYEAR: LCALL DELAY1;年份调节 MOV R0,#32H INC 32H CJNE R0,#100,YEAR MOV 32H,#0 LJMPYEAR SMON:LCALL DELAY1; 月份调节

19、MOV R0,#31H INC 31H CJNE R0,#13,YEAR MOV 31H,#01 LJMPYEAR SDAY:LCALL DELAY1;日期调节 MOV R0,#30H INC 30H CJNE R0,#31,YEAR MOV 30H,#01 LJMPYEAR LOVER :POPAcc POP PSW RET * 警报子程序 WARN: PUSH PSW; 断点地址保护 PUSHAcc MOVA,11H CJNEA,21H, OVER2; 预定时间与实际时间小时部分比较,不相等转移 MOVA,12H - 17 - CJNEA,22H, OVER2; 预定时间与实际时间分钟部分

20、比较,不相等转移 CLR P3.2; 蜂鸣器工作 MOV DPTR,#0FD03H ;8255 初始化 MOVA,#8BH MOVX DPTR,A MOV DPTR,#0FD02H MOVXA,DPTR MOV DPTR,#0FD00H MOVX DPTR,A JNBACC.7, OVER2 ; 拨键开关是否拨动,拨动则转移 CLR P3.2 SJMP OVER2 OVER2: POPAcc POP PSW RET * 定时设置子程序 DING:PUSH PSW;断点地址保护 PUSHAcc SHEZHI1: MOV 25H,#20H;设置断码转化内容首地址 LCALL CHANGE;调用断码

21、转化子程序 LCALL DISP;调用显示子程序 MOV DPTR,#0FD03H ;8255 初始化 MOVA,#8BH MOVX DPTR,A MOV DPTR,#0FD01H MOVXA,DPTR JNBACC.1,DINGF;按键 1 是否按下,按下转移 JNBACC.0,DINGS;按键 0 是否按下,按下转移 - 18 - JNBACC.4,OVER1;按键 4 是否按下,按下转移 LJMP SHEZHI1 DINGF: LCALL DELAY1;预定时间分钟部分调整 MOV R0,#21H INC 21H CJNE R0,#60,SHEZHI1 MOV 21H,#0 LJMP S

22、HEZHI1 DINGS: LCALL DELAY1;预定时间小时部分调整 MOV R0,#22H INC 22H CJNE R0,#24,SHEZHI1 MOV 22H,#0 LJMP SHEZHI1 OVER1: LCALL DELAY1 POPAcc POP PSW RET 日期子程序 RIQI: PUSH PSW;断点地址保护 PUSHAcc MOV R0,#31H MOV R1,#30H LOOP: INC 30H;日期部分自加 1 月份判断 LOOP1:CJNE R0,#01,LOOP2;判断是否是一月,不是转移 LJMP LP1 LOOP2:CJNE R0,#02,LOOP3;判

23、断是否是二月,不是转移 - 19 - LJMP LP2 LOOP3:CJNE R0,#03,LOOP4;判断是否是三月,不是转移 LJMP LP1 LOOP4:CJNE R0,#04,LOOP5;判断是否是四月,不是转移 LJMP LP3 LOOP5:CJNE R0,#05,LOOP6;判断是否是五月,不是转移 LJMP LP1 LOOP6:CJNE R0,#06,LOOP7;判断是否是六月,不是转移 LJMP LP3 LOOP7:CJNE R0,#07,LOOP8;判断是否是七月,不是转移 LJMP LP1 LOOP8:CJNE R0,#08,LOOP9;判断是否是八月,不是转移 LJMP

24、LP1 LOOP9:CJNE R0,#09,LOOP10;判断是否是九月,不是转移 LJMP LP3 LOOP10:CJNE R0,#10,LOOP11;判断是否是十月,不是转移 LJMP LP1 LOOP11:CJNE R0,#11,LOOP12;判断是否是十一月,不是转移 LJMP LP3 LOOP12:CJNE R0,#12,LOOP1;判断是否是十二月,不是转移 LJMP LP1 LP1:CJNE R1,#32,ROVER;大月天数判断(有 31 天的月份) CJNE R0,#12,LP12 MOV 30H,#01 MOV 31H,#01 INC 32H LJMP ROVER LP12

25、: INC 31H MOV 30H,#01 LJMP ROVER LP2:MOVA,32H;闰年判断 (二月的 29 天或 28 天的判断) - 20 - MOV B,#4 DIVAB MOVA,B CJNEA,#0,KA1 CJNE R1,#30,ROVER MOV 30H,#01 INC 31H LJMP ROVER KA1:CJNE R1,#29,ROVER MOV 30H,#01 INC 31H LJMP ROVER LP3:CJNE R1,#31,ROVER;小月天数判断(有 30 天的月份) MOV 30H,#01 INC 31H ROVER:POPAcc POP PSW RET

26、* 时间调整子程序 TIAO:PUSH PSW;断点地址保护 PUSHAcc MOV 25H,#10H;设置断码转化内容首地址 SHEZHI:LCALL CHANGE;调用断码转化子程序 LCALL DISP;调用显示子程序 MOV DPTR,#0FD03H ;8255 初始化 MOVA,#8BH MOVX DPTR,A MOV DPTR,#0FD01H - 21 - MOVXA,DPTR JNBACC.1,TIAOF;按键 1 是否按下,按下转移 JNBACC.0,TIAOS;按键 0 是否按下,按下转移 LJMPTOVER TIAOF: LCALL DELAY1;实际时间分钟部分调节 MO

27、V R0,#11H INC 11H CJNE R0,#60,SHEZHI MOV 11H,#0 LJMPTOVER TIAOS: LCALL DELAY1;实际时间小时部分调节 MOV R0,#12H INC 12H CJNE R0,#24,SHEZHI MOV 12H,#0 TOVER: POPAcc POP PSW RET * 中断子程序 JISHI: PUSH PSW;断点地址保护 PUSHAcc MOV TL0,#0B0H;重载计数初始值 MOV TH0,#3CH DJNZ R2,JLOOP3;循环十次 MOV R2,#10;重新装入中断次数 INC 10H;十次过后秒位自加 1 MO

28、V R0,#10H CJNE R0,#60,JLOOP3;是否进行 60 次 没有转移 - 22 - MOV 10H,#0;60 次后秒位清 0 INC 11H;分位自加 1 INC R0;间接寻址位自加 1 CJNE R0,#60,JLOOP3;是否进行 60 次 没有转移 MOV 11H,#0;60 次后分位清 0 INC 12H;小时位自加 1 INC R0;间接地址位自加 1 CLR P3.2; 整点警报 CJNE R0,#24,JLOOP3;是否进行 24 次 MOV 12H,#0;24 次后小时位清 0 LCALL RIQI;调用日期子程序 JLOOP3:MOV 25H,#10H;

29、实际时间首地址转存 POPAcc POP PSW RETI * 断码转化子程序 CHANGE:PUSH PSW;断点地址保护 PUSHAcc MOV R1,#70H MOV R0,25H;选择需要转化的内容 MOV R7,#03H CLOOP2: MOVA,R0;间接寻址指针存入寄存器 MOV B,#10 DIVAB;高四位与低四位分离采用除于 10 MOV R1,B INC R1 MOV R1,A INC R1 MOV R1,#10H - 23 - INC R1 INC R0 DJNZ R7,CLOOP2;R7 自减是否为 0,不为 0 转移 POPAcc POP PSW RET * 显示子

30、程序 DISP:PUSH PSW PUSHAcc MOV DPTR,#0FE03H MOVA,#81H MOVX DPTR,A MOV R7,#0 MOV R0,#70H MOV R3,#01H KA2:MOVA,R0 MOV DPTR,#TBL MOVCA,A+DPTR MOV DPTR,#0FE00H MOVX DPTR,A MOV DPTR,#0FE01H MOVA,R3 MOVX DPTR,A DJNZ R7,$ INC R0 MOVA,R3 RLA MOV R3,A - 24 - JNBACC.0,KA2 POPAcc POP PSW RET * 延时 1s 子程序(系统初始化运行)

31、 DELAY:MOV R6,#20 KAKA3:MOV R5,#100 KAKA2:MOV R4,#250 KAKA1:DJNZ R4,KAKA1 DJNZ R5,KAKA2 DJNZ R6,KAKA3 RET * 延时 80ms 子程序(用于按键开关的防抖动) DELAY1:MOV R5,#200 KAKA5 :MOV R4,#200 KAKA4 :DJNZ R4,KAKA4 DJNZ R5,KAKA5 RET TBL:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H DB 0A1H,86H,8EH,0BFH END -

32、 25 - 七、七、 调试记录及调试结果调试记录及调试结果 在本次课程设计的调试和修正过程中,主要出现过以下三种异常情况: 第一: 数码管显示秒单位的部分没有工作, 整个系统的最小计数单位为分钟, 经过一系列的调试和修改,发现,在调用实际时间的内存单元出现异常,没有调 用秒部分的内容进行转化和显示,导致无法显示秒的跳变,经过对程序的修改和 51 单片机的内存的重新规划和利用,可以很好的改善。 第二:在秒部分的计数方面,不能正常的显示,主要异常表现为,计时不均 匀长短不一,时停时走,没有一个合理而正常的标准时间,通过对标准时间的校 对可以发现,平均每过一分钟会产生 30 次的停滞和 30 次的过

33、快跳变,导致的时 间偏差为每分钟 20 秒左右,在通过对中断子程序和段码转化子程序的逐条执行 和调试发现,中断子程序与段码转化子程序的一个寄存器(R7 工作寄存器)发 生重复运用而产生的数值发生覆盖导致计数和计时的异常,从而出现以上异常。 解决异常的方法与第一种异常的方法相同:对 51 单片机的内部寄存器进行重新 规划和使用,达到不重复使用或者使用前初始化。经过改进和修改,秒部分的计 时达到正常,不会产生停滞和过快跳变,平均每分钟的计时和标准时间没有太大 误差,基本认为与标准时间同步。 第三:按键抖动消除,由于按键输入的固有特点,在每次输入的时候不能产 生标准的高低电平,而是呈现一系列干扰脉冲

34、,导致系统无法正常识别,对此, 本次课程设计采用软件延时来消除抖动的影响,当延时太短(如 10 毫秒到 50 毫秒范围)则会导致防抖动效果不佳,调节时会跳变频繁和数码管频繁闪动: 如 果延时太长(如 300 毫秒以上) ,则会导致数码管显示在调节时的有熄灭的趋势, 造成在时间调节方面的不方便。经过多次的反复测试和试验,延时控制在 80 毫 秒左右所表现的效果最佳。因此,在本次设计的所有按键控制程序中,都以 80 毫秒为延时标准! 综上所诉,就是本次课程设计所出现的主要异常特点,其中以计时功能模块 出现的异常为主,常表现为数码管显示紊乱和时间的非正常走动,解决异常原因 的主要方法基本为调整合理单

35、片机内的寄存器运用和分配。 - 26 - 八、八、 系统实现功能与操作说明系统实现功能与操作说明 根据设计任务,本次课程设计以 51 单片机为基础,通过汇编语言进行程序 编写实现时间的显示和可调,另外还有闹钟、日期显示以及整点报时功能。按键 开关 K0K4、 拨键开关 S7 构成系统的控制模块, 8 个数码管构成系统显示模块。 控制模块主要用来调节时间、日期、闹钟,数码管主要实现时间、日期、闹钟的 显示。 操作说明: 按键开关 K0:调节实际时间的小时部分 按键开关 K1:调节实际时间的分钟部分 按键开关 K2:进入闹钟时间设置, K0 设置闹钟小时部分, K1 控制闹钟分钟部分, 拨键开关

36、S7 设置闹钟的开关与否 按键开关 K3:进入日期显示及调节 K0 设置日期年份部分, K1 设置日期月份部分, K2 设置日期具体日期部分, 按键开关 K4:跳出当前设定进入实际时间显示 本系统未进行具体操作的时候的显示内容为具体的实际时间, 当按下相应按 键开关的时候进入相应的调节设置类别,每次调节完毕后应该跳出设置(按下按 键开关 K4)进入实际时间显示,才能进行下一项调节设置。本系统在两种状态 下会出现报警功能,一种是到达预定时间并且拨动开关 S7 开启就会产生蜂鸣效 果,报警持续时间为一分钟,期间如果拨键开关 S7 关闭则报警结束;另一种状 态为整点时刻,报警持续时间为 2 秒。 -

37、 27 - 九、九、 课程设计总结课程设计总结 本次课程设计为期两周,在学习和调试的两周期间,本人对 51 单片机和汇 编语言程序有了更进一部分的了解, 特别是在程序编写的同时更应该注意和分配 单片机内有限的寄存器和内部存储器。 对这两项硬件资源进行分配主要是为让程 序在运行当中能够正常的进行调用并进行执行, 以便程序在运行之后能够达到预 期的效果和运行结果, 若在后期的程序执行当中出现异常或者执行结果不在预料 之内就可以很快的找出程序产生异常或错误的原因并加以进行改正。 在本次的设 计过程前期,由于本人未能做到合理利用和分配内部存储器资源,导致数码管未 能正常显示秒部分的内容和秒计时的紊乱问

38、题,经过仔细检查程序,发现在程序 当中有些内部寄存器发生重复运用而且未能在下一个子程序调用的时候没有进 行数据转移而导致结果异常。 在重新进行内存分配以后,程序运行正常,本次课程设计的内存分配主要如 下: 堆栈首地址:60 H, 实际时间暂存地址:10 H12 H (由高到低分别存放时、分、秒) ; 闹钟时间暂存地址:21 H、22 H(分别存放分和时的数据) ; 日期暂存地址:30 H 32 H(由高到低分别存放年、月、日) ; 内部寄存器:R4 R6 主要用于延时子程序; R0、 R1 主要用于存放间接寻址的多个内部存储器的首地址主 要起指针作用; 显示缓冲区:70 H77 H 用来暂时存

39、放在数码管上显示的内容; 在解决内存分配问题以后,程序的运行基本正常,通过调试观察和计算平 均每小时的时间偏差在 0.05 秒左右,在年月日显示方面子程序的调用的先后顺 序,导致了天数显示上存在些许问题,如:原本 30 天的月份只显示 29 天,31 天的月份只显示 30 天,在对后来的程序修改上作了些许改动,将被比较的天数 上都顺延一天,即 30 天的就与 31 进行比较;31 天的就与 32 进行比较,经过 这样改动在日期的显示达到正常;年份显示上由于程序的局限性只能实现 099 年内的显示,并且能够做到正确的闰年判断(2 月的 29 天和 28 天) ,日期的显 示格式与时间相同“年月日

40、” 。 - 28 - 十、十、 参考文献参考文献 1于永 戴佳 常江 等。 51 单片机 C 语言常用模块与综合系统设计实例精讲。 北京:电子工业出版社,2007。 2潘超群。 单片机控制技术在通信中的应用-MCS-51 系列 。北京:电子工业 出版社,2007。 3张国安。 微机原理及接口技术实验指导书 ,福建工程学院校内讲义,2010 年。 4Stephen E.Derenzo 著, 蔡梅琳等译。 Practical Interfacing in the Laboratory, Using a PC for the Instrumentation, Data Analysis, and Control(微机接口技术实验教程)。 北京:机械工业出版社,2006。 5李江全,曹卫彬,郑瑶,郑重。 计算机典型测控与串口通信开发软件应用实 践 ,北京:人民邮电出版社,2008.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1