北京交通大学单片机电子时钟

上传人:飞*** 文档编号:30653148 上传时间:2018-01-31 格式:DOC 页数:20 大小:519.50KB
返回 下载 相关 举报
北京交通大学单片机电子时钟_第1页
第1页 / 共20页
北京交通大学单片机电子时钟_第2页
第2页 / 共20页
北京交通大学单片机电子时钟_第3页
第3页 / 共20页
北京交通大学单片机电子时钟_第4页
第4页 / 共20页
北京交通大学单片机电子时钟_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《北京交通大学单片机电子时钟》由会员分享,可在线阅读,更多相关《北京交通大学单片机电子时钟(20页珍藏版)》请在金锄头文库上搜索。

1、 单片机课程设计 电气 0909 熊飞(09292024)1单片机课程设计报告电子时钟指导老师:季晓衡班 级:电气 0909姓 名:熊飞 学 号:09292024 2011 年 12 月 单片机课程设计 电气 0909 熊飞(09292024)2电子时钟一、 设计要求与内容本系统主要通过 89S51单片机实现,有 6个数码显示管显示年、月、日和时、分、秒,两个按键,一个用作切换设置位键 B,一个功能键 A增加显示数值及转换模式,用来调节显示的部分和修改电子时钟的时间。使用 12MHz的晶振作为单片机的外部时钟输入,一个机器周期为 1us。使用定时器 0作为时钟计数器,工作在方式 1,当计数满

2、50ms时定时器 0产生中断,当中断产生 20次时,调用时间模块进行加 1操作。先对秒进行加 1,若加 1后等于 60秒,则清除秒单元,同时向分进 1,同理,对分、时进行同样操作。调节显示部分和修改电子时钟的时间时,先按切换键 A,从显示年、月、日切换到现实时、分、秒,选定一种状态后再按一下 B,显示秒的开始闪烁,此时按一下 A,则可以改变秒的时间,从 00依次变到 60,修改完毕,若再按 B键,可使显示分的又开始闪烁,同样按 A键调整分的值,同样办法调整其他显示部分的显示值。都设定好后,第四次按下 B键就会退出来正常显示年、月、日或时、分、秒。二、主要元件的相关资料1、单片机 89S512(

3、1)单片机(89S51)芯片外观: 单片机课程设计 电气 0909 熊飞(09292024)3(2)单片机(89S51)管脚图:(3) 51系列单片机 8031、8051 及 89c51/89s51均采用 40Pin封装的双列直接 DIP结构。上图是它们的引脚配置:40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4 组 8位共 32个I/O口,中断口线与 P3口线复用。2、74HC245 总线驱动器(1)简介总线驱动器,典型的 TTL型三态缓冲门电路。由于单片机等 CPU的数据地址控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。(2)7 4HC245 实

4、物 图 单片机课程设计 电气 0909 熊飞(09292024)4(3)引脚定义第 1脚 DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。 第 29脚“A”信号输入输出端,A1=B1、A8=B8,A1与 B1是一组,如果 DIR=“1”OE=“0”则 A1输入 B1输出,其它类同。如果 DIR=“0”OE=“0”则 B1输入 A1输出,其它类同。 第 1118脚“B”信号输入输出端,功能与“A”端相同。 第 19脚 OE,使能端,若该脚为“1”A/B 端的信号将不导通,只有为“0”时 A/B端才被启用,该

5、脚也就是起到开关的作用。 第 10脚 GND,电源地。 第 20脚 VCC,电源正极。 单片机课程设计 电气 0909 熊飞(09292024)53、八段 LED数码显示管(8 段共阴 LED数码管结构) (原理图)八段 LED数码管由八只发光二极管组成,编号是a、b、c、d、e、f、g 和 SP,分别与同名管脚相连。其显示原理是通过同名管脚上所加电平的高低来控制发光二极管是否点亮从而显示不同字形的。LED 上所显示的字形不同,相应的字形码也不一样。共阴字形码:三、proteus 仿真 单片机课程设计 电气 0909 熊飞(09292024)6四、实现程序的流程图 主程序流程图Y开 始初始化显

6、示缓冲区初始化定时计数器赋电子时钟初值是否有按键?按键处理程序N转换 BCD码到显示缓冲区 单片机课程设计 电气 0909 熊飞(09292024)7 按键判断及处理程序流程图判断显示模式显示及闪烁处理程序 显示及闪烁处理程序进入按键处理程序是否有按键?YN返回主函数继续执行余下程序状态位 70H加一,到四清零判断是调整显示模式还是设时间返回主函数继续执行余下程序 设时间调整显示模式将标志位 71H取反,表示显示模式切换设定年月日?设定时分秒?年月日 时分秒 单片机课程设计 电气 0909 熊飞(09292024)8 定时器中断程序流程图进入 T0定时器中断初始化 赋初值0.05单元加一是否到

7、一秒?Y0.05单元清零,秒加 1,转换成 BCD码转换成 BCD码NN是否到一分?Y年月日设定程序(相应单元加一)时分秒设定程序(相应单元加一)延时显示时间部分闪烁 单片机课程设计 电气 0909 熊飞(09292024)9N秒清零,分加1转换成 BCD码是否到一小时?Y是否到一天?N时、分、秒清零天加一,转换成 BCD码是否到一月?N天置一,月加一,转换成 BCD码是否到一年?N月置一,年加一,转换成 BCD码返回中断 单片机课程设计 电气 0909 熊飞(09292024)10 将 BCD码写入缓冲区(79H-84H) 闰年判断以及月份选择闰年判断具有特殊性,因为显示年只有两位,所以表示

8、 2000-2099年,判断闰年的准则是:能被 4 整除却不能被 100 整除 或 能被 400 整除的年份是闰年在 2000-2099 年之间,能被一百整除的只有 2000 年,又因为它还能进入 BCDEX转换程序循环执行,将所有时间单元写入缓冲区,然后返回主函数。指向某时间单元将该单元中的 BCD码得高低位依次取出放入缓冲区中 单片机课程设计 电气 0909 熊飞(09292024)11被 4 整除,所以它是闰年,所以在 2000-2099 年之间是闰年的只有当该年份能被 4 整除时。通过计算得出:(年份的后两位)低位 0 4 8 2 60 0 0 1 12 2 2 3 34 4 4 5

9、56 6 6 7 7对应的高位 8 8 8 9 9只有满足以上规律的年份才是闰年。此规律为:低位必须为偶数,且当低位能被 4 整除时,高位必须是偶数。或当低位能被 2 整除时,高位必须是奇数。月份选择是指由于每个月的天数可能不一样,所以要做判断该月的天数有多少,同时还要判断闰年还是平年,因为二月份的天数与闰年和平年有关的。闰年判断:月份判断查表 2取数查表 1取数是闰年吗?取的数放 36H中NY取出 24H中存好的年份 BCD码取其高四位高四位是奇数取其低四位NY 单片机课程设计 电气 0909 熊飞(09292024)12 带有显示的延时:;延时程序DELAY:MOV R3,#01HS1:M

10、OV R6,#066HS4:DJNZ R6,S2AJMP S3S2:ACALL DISPLAYAJMP S4S3:DJNZ R3,S1RETDISPLAY:MOV R5,71HCJNE R5,#00H,HHHH1ACALL DISPLAYTIME;调用显示及时更新显示状态SJMP KKKHHHH1: ACALL DISPLAYYEARKKK:RET采用边显示边延时,使得时钟显示连续不间断,实时更新。还能使按下按键时显示不会中断。 调时闪烁程序:大体思路是1、判断是否处于调时模式2、若是则判断调哪两位是闰年(39H)=1高四位是偶数取高四位能被 4整除不是闰年(39H )=0返回能被 2整除是闰

11、年(39H)=1NNYYNY 单片机课程设计 电气 0909 熊飞(09292024)133、对要调时的两位进行闪烁处理,即让他们在一段时间内关断,在另一段时间内打开,交替进行,反复循环,形成闪烁效果提醒用户目前可调的是该两位。、R7=0 正常显示R7=1重置 R7=0R7=2关断秒日位关断时年位关断分月位(70H)=2(70H)=1NNNNNYYYYY 单片机课程设计 电气 0909 熊飞(09292024)14程序注释以及模块化解释:1、初始化程序ORG 0000HAJMP STARTORG 000BHLJMP TINTSV; T0 中断ORG 0100HSTART:MOV SP,#50H

12、;初始化程序MOV 20H,#00H;将时分秒计数单元清零MOV 21H,#00HMOV 22H,#00HMOV 23H,#00H;清零 0.05 秒计数单元MOV 24H,#00H;将年月日单元清零MOV 25H,#01HMOV 26H,#01HMOV 70H,#00HMOV 71H,#00HSETB RS1;将显示时分秒对应寄存器清零MOV R7,#00HMOV R6,#00HMOV R0,#00HCLR RS1SETB RS0;将显示年月日对应寄存器清零MOV R7,#00HMOV R6,#00HMOV R0,#00HCLR RS0MOV TMOD,#01H;启动计数器并设初值MOV T

13、H0,#03CHMOV TL0,#0AFHSETB EA;打开 T0 中断SETB ET0SETB TR0欢迎界面程序:START1:该程序用于在开机时显示“HELLO”欢迎字母MOV R1,#00HMOV R2,#0DFHMOV R3,#00HDDISP1:MOV A,R2MOV P0,AMOV A,R1MOV DPTR,#TAB11MOVC A,A+DPTRMOV P2,ANOPDDISP2:DJNZ R3,DDISP2SETB CMOV A,R2RRC ANOP正常显示送字形字位(70H)=0R6=#6AH加 R0,清零 R6加 R6加 R7,清零 R0R0=#01H返回NNYYNY 单

14、片机课程设计 电气 0909 熊飞(09292024)15MOV R2,AINC R1CJNE A,#0FFH,DDISP1MOV A,#00HMOV P2,ADJNZ 35H,START1CLR RS1SJMP MAINTAB11:DB 76H 79H 38H 38H 3FH 00H主函数程序:MAIN:;主程序PUSH ACC;保护堆栈,避免对 PSW 各位产生影响,从而影响十进制调整指令的执行PUSH PSWACALL KEYSCAN;调用键盘扫描、判断程序POP PSW;弹出堆栈POP ACCACALL BCDEX;调用 BCD 码分拆程序MOV R5,71HCJNE R5,#00H,

15、HHH1;判断显示状态(模式)ACALL DISPLAYTIME;显示时分秒SJMP MAINHHH1:ACALL DISPLAYYEAR;显示年月日SJMP MAIN闰年判断模块:RUNNIAN:;此段程序用于判断该年是否为闰年PUSH ACCPUSH PSWMOV A,24HANL A,#0FHMOV B,#04HDIV ABMOV A,BJNZ PANDUANMOV A,24HANL A,#0F0HMOV B,#02HDIV ABMOV A,BJNZ RREETTRREETT1:MOV 39H,#01HPOP PSWPOP ACCRETRREETT:MOV 39H,#00HPOP PSW

16、POP ACCRETPANDUAN:CJNE A,#02H,RREETTMOV A,24HANL A,#0F0HMOV B,#02HDIV ABMOV A,BCJNE A,#01H,RREETTLJMP RREETT1月份判断选择模块:YUEFEN:;该段程序用于判断该月有几天PUSH ACCPUSH PSWMOV R1,#82HMOV A,39HCJNE A,#00H,RAINIANMOV A,R1JNZ PADU1MOV R1,#81HMOV A,R1PADU2:MOV DPTR,#TA11MOVC A,A+DPTRMOV 36H,APOP PSWPOP ACCRETPADU1:MOV R1,#81HMOV A,R1ADD A,#0AHSJM

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

当前位置:首页 > 行业资料 > 其它行业文档

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