【单片机】用51单片机设计的时钟电路(毕业论文).pdf
《【单片机】用51单片机设计的时钟电路(毕业论文).pdf》由会员分享,可在线阅读,更多相关《【单片机】用51单片机设计的时钟电路(毕业论文).pdf(27页珍藏版)》请在文库网上搜索。
1、 DIY 爱好者 DIY 爱好者 毕业论文 Shaoguan University 作者:kesion 目 录 任 务 书 摘 要 前 言 说 明 书 第 一章 电路原理分析 1-1 显示原理 1-2 数码管结构及代码显示 1-3 键盘及读数原理 1-4 连击功能的实现 第 二 章 程序设计思想和相关指令介绍 2-1 数据与代码转换 2-2 计时功能的实现与中断服务程序 2-3 时间控制功能与比较指令 2-4 时钟误差的分析 附录 A 电路图 附录 B 存储单元地址表 附录 C 输入输出口功能分配表 附录 D 定时中断程序流程图 附录 F 调时功能流程图 附录 G 程序清单 Created w
2、ith novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 摘要 单片计算机即单片微型计算机。(Single-Chip Microcomputer),是 集 CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而 51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。前言 本文通过用对一个能实现定时,时钟,日历显示功能的时间系统的设计学习,详细介绍了
3、 51 单片机应用中的数据转换显示,数码管显示原理,动态扫描显示原理,单片机的定时中 断原理、从而达到学习,了解单片机相关指令在各方面的应用。系统由 AT89C51、LED 数码管、按键、二极管等部分构成,能实现时钟日历的功能:能进行时、分、秒的显示。也具有日历计算、显示和时钟,日历的校准、定时时间的设定,实现三路开关定时输出等功能。文章后附有电路图,程序清单,各数据存储单元的所在地址,输入输出口对应表。以供读者参考。因作者本人也是个 初学者,水平有限,难免有疏落不足之处,敬请老师和同学能给与批评正。说明书 系统由 AT89C51、LED 数码管、按键、发光二极管等部分构成,能实现时间的调整、
4、定时时间的设定,输出等功能。系统的功能选择由 SB0、SB1、SB2、SB3、SB4 完成。其中 SB0为时间校对,定时器调整功能键,按 SB 0 进入调整状态。SB1 为功能切换键。第一轮按动SB1 依次进入一路、二路、三路定时时间设置提示程序,按 SB3 进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按 SB1 键,依次进入时间 年 位校对、月 位校对、日 位校对、时 位校对、分 位校对、秒 位校对状态。不管是进入那种状态,按动 SB2 皆可以使被调整位进行不进位增量加 1 变化。各预置量设置完成后,系统将所有的设置存入 RAM 中,按 SB1 退出调整状
5、态。上电后,系统自动进入计时状态,起始于 00 时 00 分。SB4 为年月日显示转换键,可使原来显示时分秒转换显示年月日。二、电路原理分析 1.显示原理 电原理图见附图 1。由 6 个共阴极的数码管组成时、分、秒的显示。P0 口的 8 条数据线P0.0 至 P0.7 分别与两个 CD4511 译码的 ABCD 口相接,P2 口的 P2.0 至 P2.2 分别通过电阻R10 至 R13 与 VT1 至 VT3 的基极相连接。这样通过 P0 口送出一个存储单元的高位、低位 BCD显示代码,通过 P2 口送出扫描选通代码轮流点亮 LED1 至 LED6,就会将要显示的数据在数码管中显示出来。从 P
6、0 口输出的代码是 BCD 码,从 P2 口输出的就是位选码。这是扫描显示原理。2.数码管结构及代码显示 Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 共阴 LED 数码管结构、字段及引脚排列见图 2 图 2 共阴 LED 数码管由 8 只发光二极管 VD1 至 VD8 共阴连接并按 8 字形结构排列而成。这样,我们将这些二极管的正极接高低不同的电位,把所有的负极接地,当正极为高电位时相应的二极管就会导通而发光,从而使数码管呈现不同的字符。而只有 P2 相
7、应呈现高电位,VT 个管导通,LED1 的 GND 与地相接,LED 位被选中才具备发光的使能条件;可见,在利用P2 口送出位选码,使各位轮流得到发光使能条件的同时,通过 P0 口分别送出不同的段选码,就会在 LED1 至 LED4 中显示出不同的数字来。3 键盘及读数原理 键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间 20ms.4 连击功能的实现 按下某键时,对应的功能键解释程序得到执行
8、,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我们采用软件延时 250ms,当按键没释放则执行下一条对应程序。利用连击功能,能实现快速调时操作。三、程序设计思想和相关指令介绍 本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。1数据与代码转换。由前述可知,从 P2 口输出位选码,从 P0 口输出段选码,LED 就会显示出数字来。但 P0口的输出的数据是要 BCD 码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到 P0 口
9、去驱动 LED 数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过 BCD 码行转换后,将各个单元数据的段选代码送入 P0 口,给 CD4511 译码后去驱动数码管显示。具体转换过程如下:Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 我们先将要显示的数据装入累加器 A 中,再将 A 中的数据转换成高低两位的 BCD 码,再放回 A 中,然后将 A 中的值输出。如:有一个单元存储了 45 这样一位数,则需转换成四位的 BCD 码:(0100)(01
10、01)然后放入 A 中。A 中 BCD 码,高位四位代表4低四位代表5同时送给两个译码器中,译码后 45 字就在两个 LED 中显示出来。2计时功能的实现与中断服务程序 时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器 T0 打开后,进入计时,满 100 毫秒后,重装定时。中断一次,满一秒后秒进位,满 60 秒后即为 1 分钟,分钟单元进位,60 分到了后,时单元进位,24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送 LED 中显示出来,实现时钟计时功能。累加是用指令 INC 来实现的。进入中断服务程序以后,执行
11、 PUSH PSW 和 PUSH A 将程序状态寄存器 PSW 的内容和累加器 A 中的数据保存起来,这便是所谓的 保护现场.以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内 RAM 中的任一区间设定,而堆栈的数据存取与一般的 RAM 存取又有区别,对它的操作,要遵循 后进先出 的原则。3 时钟误差分析 开启定时器/计数器 0,使之开始计时,中断后进入中断程序。自停止计数到、计数又开始,中间执行了 7 条指令,也就是延迟了 13 个单周期共用时间 26us,这样,每个中断的总时间应为为 100.026sm,而原来定时是 100ms,所以,也就是说每次中断定时多
12、了 26um.这样,可改变计数重装值,使每次中断定时时间为 99.974sm,加上原来的 7 条指令所用的时间,正好 100sm.计数 10 次得 1s.这样就可得到较精确的计时秒数,然后根据进率,得到时、分的值。4 时间控制功能与比较指令 系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入 RAM 某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条 CLR 指令,将对应的那路 P3 置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行 SETB 对应的 P3 置低电位
13、,二极管截止,。实现此控制功能用到的比较指令为 CJNE A,#direct,rel,其转移条件是累加器 A 中的值与立即数不等则转移。参考文献 1、谢自美,电子线路设计、实验、测试 武汉:华中理工大学出版社,2000 2、何书森、何华斌实用数字电路原理与设计速成福州:福建科学技术出版社,2000.6 3、白驹衍,单片计算机及应用北京:电子工业出版社,1999.2 Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 U?CAPU?CAPU?CAPU?CAPU?C
14、APU?CAPU?CAP2kCAP2kCAP2kCAPU?CAPU?CAPU?CAPU?CAPU?CAPEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U?8031+5A7B1C2D6LT3BI4LE5A13B12C11D10E9F15G14U?4511500RES2500RES
15、2500RES2abfcgdeDPY1234567abcdefg8dpdpDS?RES2abfcgdeDPY1234567abcdefg8dpdpDS?RES2abfcgdeDPY1234567abcdefg8dpdpDS?RES2abfcgdeDPY1234567abcdefg8dpdpDS?RES2abfcgdeDPY1234567abcdefg8dpdpDS?RES2abfcgdeDPY1234567abcdefg8dpdpDS?RES2C?RES230pRES2A7B1C2D6LT3BI4LE5A13B12C11D10E9F15G14U?4511+5R?RES230pRES2+5 Cr
16、eated with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 返回主程序 主程序 开始 显示/定时判断/开定时中断 调 用 程序条件 秒分时日月年进位 进入定时中断程序(最高级)对应P0.3P0.4P0.5 输出 与 设 定时同?中断 T0 按SB4?转换 显示年月日 (3S 返回)按SB0?设定定时(三路定时)调整时间(改变时间存储值)中断 1 中断 0Created with novaPDF Printer(www.novaPDF.com).Please register
17、 to remove this DIY 爱好者 DIY 爱好者 定时中断程序流程图 定时中断 重装定时常数 整秒 调整分单元 调整时单元 加 100ms 调整秒单元 调整日单元 整时 整分 整日 整年 整月 调整月单元 调整年单元 月判断 Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 调时功能流程图 按 SB1 按 SB3 按 SB2 按 SB1 按 SB3 按 SB2 按 SB1 按 SB3 按 SB2 按 SB1 按 SB3 按 SB2 按 SB1 按
18、 SB3 按 SB2 按 SB1 按 SB3 按 SB2 按 SB1 按 SB3 按 SB2 按 SB1 按 SB1 中断开始(SB0)调整秒单元 调整 2 路 调 整 月 单调整 3 路 调整日单元 调整时单元 调整分单元 调整年单元 日单元 年单元 月单元 分单元 时单元 单元加 1 开 关定时 单元加 1 单元加 1 单元加单元加 1 中断返回 按 键 扫描开始 进入 1 路调Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 调时功能流程图 存储单元分配
19、表 读取按键代码表 16 进制码 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 SB1 SB2 SB3*FE 0 1 1 1 1 1 1 1 FD 1 0 1 1 1 1 1 1 FB 1 1 0 1 1 1 1 1 存储单元分配表 时间单元 1 组开定时单元 1 组关 2 组开 2 组关 3 组开 3 组关 Sec 32h 秒 Min 31h 分 41 40 51 50 61 60 Hour 30h 时 42 46 52 56 62 66 Day 35h 日 43 47 53 57 63 67 Mou 34h 月 44 48 54 58 64 68 Year
20、 33h 年 45 49 55 59 65 69 Sb0 Sb1 Sb2 Sb3 Sb4 1 组输出 2 组输出 3 组输出 各 P 口功能连接.P3.3 P1.0 P1.1 P1.2 P3.2 p3.0 P3.1 P3.4 调 整时间、定时中断 +-年月日显示转换 二极管 二极管 二极管 Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 DIY 爱好者 程序 SEC EQU 32H;秒 即时时间 伪指令 MIN EQU 31H;分 HOUR EQU 30H;时 DAY EQ
21、U 35H;日 MON EQU 34H;月 YEAR EQU 33H;年 MIN_1 EQU 41H;分 定时器 1 路、开存储单元 HOUR_1 EQU 42H;时 DAY_1 EQU 43H;MON_1 EQU 44H;YEAR_1 EQU 45H;MIN_11 EQU 40H;分 定时器 1 路、关存储单元 HOUR_11 EQU 46H;时 DAY_11 EQU 47H;日 MON_11 EQU 48H;月 YEAR_11 EQU 49H;年;*ORG 0000H ljmp MAIN ORG 0003H ;中断转换显示年月日、INT0(SB4 键)LJMP SHOW ORG 000BH
22、 ;计数中断 T0、方式 1 LJMP TIME ORG 0013H LJMP CHANGE;调整时间、定时、INT1(SB0 键);-主程序 ORG 0030H MAIN:;-初始化付值 MOV YEAR,#02 MOV MON ,#05 MOV DAY,#01 MOV HOUR,#00 MOV MIN,#00 MOV SEC,#00 CLR 40H ;定时单元 1 路清零 CLR 41H CLR 42H CLR 43H Created with novaPDF Printer(www.novaPDF.com).Please register to remove this DIY 爱好者 D
23、IY 爱好者 CLR 44H CLR 45H CLR 46H CLR 47H CLR 48H CLR 49H ;-开中断 MOV TMOD,#01H;计数、模式 1、T0 MOV TL0,#0B0H;100SM 计数定时 MOV TH0,#3CH;clr p3.0 MOV 20H,#0AH ;10 次*100SM SETB PT0 ;T0 为最高级 SETB TR0 ;允许计数 SETB ET0 ;允许 T0 中断 SETB EX0 ;允许 INT0 中断 SETB EX1 ;允许 INT1 中断 SETB EA ;开总中断 ;-显示、定时器启动判断 LOOP:MOV R1,#30H;存储单元
24、 MOV R4,#01H;位选通 MOV R3,#03H;三组显示 NEXT:MOV A,R1 ;MOV B,#10 ;将存储单元转换成两高低两组的 BCD 码 DIV AB SWAP A ORL A,B MOV P0,A;输出 MOV P2,R4 INC R1 ;下一单元 MOV A,R4;RL A ;位移 MOV R4,A LCALL DE5SM ;延时 0.5SM DJNZ R3,NEXT ;全扫描显示一偏 ;-判断定时输出(只编写了一路)Created with novaPDF Printer(www.novaPDF.com).Please register to remove thi
25、s DIY 爱好者 DIY 爱好者 CJNE R7,#88H,LOOP;是 8 则开,否则、定时已关、转;-开 MOV A,YEAR CJNE A,YEAR_1,LOOP_1;年比较,不等转关 MOV A,MON CJNE A,MON_1,LOOP_1 MOV A,DAY CJNE A,DAY_1,LOOP_1 MOV A,HOUR CJNE A,HOUR_1,LOOP_1 MOV A,MIN CJNE A,MIN_1,LOOP_1 CPL P3.0;-关 LOOP_1:MOV A,YEAR CJNE A,YEAR_11,LOOP;年比较 MOV A,MON CJNE A,MON_11,LOO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 51 设计 时钟 电路 毕业论文