基于单片机的电子时钟设计(共13页)

上传人:第*** 文档编号:34242196 上传时间:2018-02-22 格式:DOC 页数:13 大小:213KB
返回 下载 相关 举报
基于单片机的电子时钟设计(共13页)_第1页
第1页 / 共13页
基于单片机的电子时钟设计(共13页)_第2页
第2页 / 共13页
基于单片机的电子时钟设计(共13页)_第3页
第3页 / 共13页
基于单片机的电子时钟设计(共13页)_第4页
第4页 / 共13页
基于单片机的电子时钟设计(共13页)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《基于单片机的电子时钟设计(共13页)》由会员分享,可在线阅读,更多相关《基于单片机的电子时钟设计(共13页)(13页珍藏版)》请在金锄头文库上搜索。

1、湖南电子电气网 一 摘要单片计算机即单片微型计算机。( Single-Chip Microcomputer ),是 集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体 积小,成本低,功能强,广泛 应用于智能产品和工业自动化上。而51 单 片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。二 说明系统由AT89C51、LED 数码管、按 键、发光二极管等部分构成,能实现时间的调整、定时时间的设定,输出等功能。系统的功能选择由SB0 、SB1、SB2、SB3、SB4 完成。其中SB0为时间校对,定时器调整功能

2、 键,按 SB 0 进入调整状态。SB1 为功能切换键。第一 轮按动SB1 依次进入一路、二路、三路定时时间设置提示程序,按SB3 进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按SB1 键,依次进入时间 年 位校对、 月 位校对、 日 位校对、 时 位校对 、 分 位校对、 秒 位校对状态。不管是进入那种状 态,按 动SB2 皆可以使被调整位进行不进位增量加1 变化。各预置量设置完成后,系统将所有的 设置存入RAM 中,按 SB1 退出调整状态。上电后,系 统自动进入计时状态,起始于 00 时 00 分。SB4 为年月日显示转换键,可使原来 显示时分秒转换显

3、示年月日。三、电路原理分析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,就会将要显示的数据在数码管中显示出来。从P0 口输 出的代码是BCD 码,从 P2 口输出的就是位选码。这是扫描显示原理。2 键盘及读数原理键盘是人与微机打交道的主要设备,按 键的读

4、取容易引起 误动作。可采用 软件去抖动的方法处理,软件的触点在 闭合和断开的时候会产生抖 动, 这时触点的逻辑电平是不稳定的,如不采取妥善 处理的话,将引起按 键命令错误 或重复执行,在这里采用软件延时的方法来避开抖动,延 时时间20ms.3 连击功能的实现按下某键时,对应的功能键解 释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执 行,在 这里我们采用软件延 时250ms, 当按键没释放则执行下一条对应程序。利用连击 功能,能 实现快速调时操作。四、程序设计思想和相关指令介绍本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调

5、定时间设定时等功能全部在中断服务程序中完成。湖南电子电气网 1数据与代码转换 。由前述可知,从P2 口输出位 选码,从P0 口输出段选码,LED 就会显示出数字来。但P0口的输出的数据是要BCD 码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到 P0 口去驱动LED 数码管显示是不能正确表达的,必须在系 统内部将要显示的数据经过 BCD 码行转换后,将各个单元数据的段选代码送入P0 口,给 CD4511 译码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入累加器A 中,再将 A 中的数据转换成高低两位的BCD 码,

6、再放回A 中,然后将A 中的值输出。如:有一个单元存储了45 这样一位数,则需转换成四位的BCD 码:(0100)(0101)然后放入 A 中。 A 中BCD 码,高位四位代表 4低四位代表5同时送给两个译码器中,译码后 45 字就在两个LED 中显示出来。2计时功能的实现与中断服务程序时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0 打开后,进入计时,满100 毫秒后,重装定时。中断一次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位, 24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,

7、通过扫描程序送LED 中显示出来,实现时钟计时功能。累加是用指令 INC 来实现的。进入中断服务程序以后,执行 PUSH PSW 和PUSH A 将程序状 态寄存器PSW 的内容和累加器A 中的数据保存起来,这便是所谓的 保护现场 . 以保 护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软 件的控制之下,堆 栈可在片内 RAM 中的任一区间设定,而堆栈的数据存取与一般的RAM 存取又有区 别,对它的操作,要遵循 后进先出 的原则。3 时间控制功能与比较指令系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是 这样的:先将执行设备开启的时间和关闭时间置入RAM 某一单元,在计时主

8、程序当中执行几条比较指令,如果当前计时时间与执行 设备的设定开启时间相等,就执行一条 CLR 指令,将 对应的那路P3 置为高电位,开启;如果当前 计时时间与执行设备设 定的关闭时间相等,就执行SETB对应的P3 置低电位,二极管截止,。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其 转移条件是累加器A 中的 值与立即数不等则转移。参考文献1、 谢自美,电 子线路设计、实验、 测试 武汉:华中理工大学出版社,20002、 何书森、何 华斌实用数字 电路原理与设计速成福州:福建科学技术出版社,2000.63、 白驹衍, 单片计算机及 应用北京:电子工业出版社, 1999.

9、2五:程序SEC EQU 32H ;秒 即时时间 伪指令MIN EQU 31H ;分HOUR EQU 30H ;时DAY EQU 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 ;年

10、;*ORG 0000Hljmp MAINORG 0003H ;中断转换显示年月日、INT0(SB4 键)LJMP SHOWORG 000BH ;计数中断 T0 、方式1LJMP TIMEORG 0013HLJMP CHANGE; 调整时间、定时、 INT1(SB0 键);-主程序ORG 0030HMAIN:;-初始化付值MOV YEAR , #02MOV MON , #05MOV DAY , #01MOV HOUR , #00MOV MIN , #00MOV SEC , #00CLR 40H ;定时单元1 路清零CLR 41HCLR 42HCLR 43HCLR 44HCLR 45HCLR 46

11、HCLR 47HCLR 48HCLR 49H;-开中断MOV TMOD , #01H ;计数、模式1、T0MOV TL0, #0B0H ;100SM 计数定时MOV TH0, #3CH ;clr p3.0MOV 20H, #0AH ;10 次*100SMSETB PT0 ;T0 为最高级SETB TR0 ;允许计数SETB ET0 ;允许T0 中断SETB EX0 ;允许INT0 中断SETB EX1 ;允许INT1 中断SETB EA ;开总中断;-显示、定时器启动判断LOOP:MOV R1, #30H; 存储单元MOV R4, #01H; 位选通MOV R3, #03H; 三组显示NEXT

12、:MOV A , R1 ;MOV B , #10 ;将存储单元转换成两高低两组的BCD 码DIV ABSWAP AORL A, BMOV P0, A;输出MOV P2, R4INC R1 ;下一单元MOV A, R4 ;RL A ;位移MOV R4, ALCALL DE5SM ;延时0.5SMDJNZ R3, NEXT ;全扫描显示一偏;-判断定时输出(只编写了一路 )CJNE R7, #88H,LOOP ;是8 则开,否则、定时已关、转;-开MOV A, YEARCJNE A, YEAR_1, LOOP_1;年比较,不等转关MOV A, MONCJNE A, MON_1, LOOP_1MOV

13、 A, DAYCJNE A , DAY_1,LOOP_1MOV A, HOURCJNE A, HOUR_1,LOOP_1MOV A, MINCJNE A, MIN_1, LOOP_1CPL P3.0;-关LOOP_1:MOV A, YEARCJNE A, YEAR_11, LOOP;年比较MOV A, MONCJNE A, MON_11, LOOPMOV A, DAYCJNE A , DAY_11,LOOPMOV A, HOUR湖南电子电气网 CJNE A, HOUR_11,LOOPMOV A, MINCJNE A, MIN_11, LOOPCPL P3.0LJMP LOOP;-年月日显示中断

14、子程序SHOW:PUSH PSWpush ACCPUSH BPUSH 01HPUSH 02HPUSH 03HPUSH 04HMOV R2, #0FFH ;中断扫描次数TURN: MOV R1 , #33HMOV R4 , #01HMOV R3 , #03HNEXT_1:MOV A, R1MOV B , #10DIV ABSWAP AORL A, BMOV P0, AMOV P2, R4INC R1RL AMOV R4 ,ALCALL DE5SMDJNZ R3, NEXT_1DJNZ R2, TURN ;反复显示一定时间后返回POP 04HPOP 03HPOP 02HPOP 01HPOP BPO

15、P ACCPOP PSWRETI;-计数中断服务子程序TIME:PUSH PSWPUSH ACCPUSH BPUSH 06HMOV TH0 , #3CH;重装计数MOV TL0 , #0BH;DJNZ 20H, OUT ;转到中断跳出pop 程序MOV 20H, #0AH ; 重装:100*10=1000;-进位程序INC SECMOV R6, SEC ;CJNE R6, #60, OUT;比较MOV SEC , #00 ;INC MINMOV R6, MINCJNE R6, #60, OUTMOV MIN , #00INC HOURMOV R6 , HOURCJNE R6 , #25 , OUTMOV HOUR ,#00INC DAYMOV R5, MONCJNE R5, #1, MON_22;是否1 月、不是转2 月MOV R5, DAYCJNE R5, #32, OUT ; 本月是否益出INC MONMOV DAY,#1LJMP OUTOUT:POP 06HPOP BPOP ACCPOP PSWRETIMON_22:MOV R5, MONCJNE R5 , #2 , MON_33;是否2 月、不是转3 月MOV A, YEAR ;判断是否瑞年MOV B, #4DIV ABMOV A , BJNZ OUT_1;不是则转(A 不为零则转)MO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号