电子时钟.doc

上传人:土8路 文档编号:10217646 上传时间:2021-04-30 格式:DOC 页数:24 大小:1.88MB
返回 下载 相关 举报
电子时钟.doc_第1页
第1页 / 共24页
电子时钟.doc_第2页
第2页 / 共24页
电子时钟.doc_第3页
第3页 / 共24页
电子时钟.doc_第4页
第4页 / 共24页
电子时钟.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《电子时钟.doc》由会员分享,可在线阅读,更多相关《电子时钟.doc(24页珍藏版)》请在三一文库上搜索。

1、电子时钟系别:机械工程系班级:机自学号:姓名:目录1、 摘要2、 课设任务书3、 系统核心芯片介绍3.1单片机AT89C52简介3.2时钟芯片DS1302简介3.3 LED简介4、 电子钟软件设计4.1总流程图4.2主程序模块4.2.1初始化模块4.2.2 DS1302读写模块4.2.3 显示模块4.2.4蜂鸣模块4.3中断调整时间模块4.4中断设置闹铃5、 电子时钟硬件设计5.1单片机外部晶振电路5.2 DS1302外部电路5.3 数码管显示电路5.4 蜂鸣器电路5.5 仿真图和实物图6 心得体会参考文献附录 软件汇编程序摘 要:时间是人类生活必不可少的重要元素,从古代的沙漏、十二天干地支,

2、到后来的机械钟表以及当今的石英钟,都充分显示了时间的重要。随着社会的发展,人们对时间计量的精度要求越来越高,应用越来越广,功能要求越来越多,普通的机械钟表与半机械钟表对于当代人忙碌的生后显示早已不太适合,随着科技的进步,电子时钟应运而生,它不仅给人们生产生活带来了极大的方便,而且大大地扩展了时钟原先的功能。本课题研究的主要目的就是设计一个基于单片机定时器的时钟系统,它以AT89C52芯片为核心,结合DS1302时钟芯片、控制键、LED驱动电路以及LED显示电路完成其显示、调时、闹钟功能。由于单片机定时器是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比较具有更高的准确性和直观性,且

3、无机械装置,具有更长的使用寿命,因此得到了广泛的使用。关键词:电子时钟;时间;AT89C52单片机;DS1302;蜂鸣器2.课设任务书要求:1、电子时钟显示用LED数码管显示,格式为:XX XX XX,由左向右分别为:时、分、秒,刚开始工作时应该显示为:12 00 00;2、启动时显示时间制作者的年月日,及制作者的学号;3、实现对时、分、秒进行校对;4实现闹钟功能。3.系统核心芯片介绍3.1单片机AT89C52简介AT89c52单片机采用40条引脚双列直插式器件,引脚除5V( 40脚)和电源地( 20脚)外,其功能分为时钟电路、控制信号、输入/输出三大部分,逻辑框图及引脚图分别如图2.4(a)

4、(b)所示 (a) (b) 图2.4 AT89c52单片机逻辑图与引脚图AT89C52单片机的内部硬件结构中除了程序存储器由FLASH取代了87C51单片机的EPROM外,其余部分完全相同,其管脚说明如下:(1)VCC:供电电压(2)GND:接地(3)时钟电路 XTAL1(19脚)芯片内部振荡电路(单级反相放大器)输入端。 XTAL2(18脚)芯片内部振荡电路(单级反相放大器)输出端。 (4)控制信号RST(9脚)复位信号:时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口P3口输出高电平,将初值07H写入堆栈指针。ALE(30脚)地址锁存信号:当访问外部存储器

5、时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。另外,ALE可驱动4个TTL门。(29脚)片外程序存储器读选通:低电平有效,作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,可驱动8个TTL门。/Vpp(30脚):当为高电平且PC值小于0FFFH时,CPU执行内部程序存储器程序;当为低电平时,CPU仅执行外部程序存储器程序。3.2时钟芯片DS1302简介 DS13021是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰

6、年补偿功能,工作电压宽达2.55.5V。时钟可工作在24小时格式或12小时(AM/PM)格式。 DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。3.2.1 DS1302引脚功能与内部结构DS1302的引脚功能如表1所示,外形及内部结构如图1所示2:引脚号引脚名称功能1VCC2主电源2、3X1、X2振荡源,外接

7、32768Hz晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行时钟输入端8VCC1后备电源表1 DS1302引脚功能表图1 DS1302管脚图及内部结构图3.2.2 DS1302的控制字DS1302的控制字节如图2所示: 7 6 5 4 3 2 1 01RAMA4A3A2A1A0RAM 图2 DS1302控制字节的含义控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,

8、控制字节总是从最低位开始输出。3.2.3 DS1302的复位引脚通过把输入驱动置高电平来启动所有的数据传送。 输入有两种功能:首先,接通控制逻辑,允许地址命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。3.2.4 DS1302的数据输入输出在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始

9、。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3所示:图3 数据读写时序3.2.5 DS1302的寄存器DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。 DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C

10、0H-FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。表2-1 DS1302的日历时钟寄存器及控制字3.3 LED简介 LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.7(a)是共阴和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,

11、在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将b和c段接上正电源,其它端接地或悬空,那么b和c段发光,此时,数码管显示将显示数字“1”。而将a、b、d、e和g段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它数字的显示原理与此类同。LED的7段数码管利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。在这次的设计中采用的均是共阴极的LED显示,当I/O口输出为高电平的时候,对应段就被点亮。LED数码管的结构图如图2.7(b)所示。 (a)(b)图2.7 LED分类结构图和结构图

12、这次设计的显示部分采用AT89c51单片机动态扫描完成,在多数的应用场合中,我们并不希望使用多I/O端口的单片机,原则上是使用尽量少引脚的器件。在没有富余端口的情况下,应通过优化设计程序和扩展电路达到预期的目的。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。动态显示电路 将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多位复用。而各位的公共阳极或公共阴极则分别由

13、相应的I/O口线控制,实现各位的分时选通,即同一时刻只有被选通位是能显示相应的字符,而其他所有位都是熄灭的。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。这就需要单片机不断地对显示进行控制,CPU需要不断地进行显示刷新,动态显示电路参见图2.8,图2.8中是扩展了五位的LED数码管显示,用一个74LS04作为五个LED的段选输入,采用动态显示的方式连接。类似地,16位的LED数码管显示也可以用这种方法来实现。 图2.8 五位LED数码管的动态显示4.电子时钟软件设计4.1总流程图初始化模块DS1302读写模块显示模块蜂鸣模块INT0中断模块:时间调整INT1中断模

14、块:闹钟调整 4.2主程序模块4.2.1初始化模块开始资源分配(伪指令EQU及BIT)时间、闹钟和标志位赋值设置中断方式,中断允许跳转指令各口定义:P1.0:DS数据传送总线I/OP1.1:DS时钟控制总线SLCKP1.2:DS复位总线RSTP0 :数码管段码输入P2 :数码管位数选择P3.0:蜂鸣器P3.1 :位选择键,按下选择要调整的位置P3.2 :闹铃键,按下此键选择要设定的位置 P3.7:按此键调整时参数加P3.6:返回键,按此键完成调整/定闹铃/关闭闹铃4.2.2 DS1302读写模块单片机AT89C52对时钟芯片DS1302的控制需要通过程序驱动来实现,程序主要完成两个方面的任务:

15、利用单片机实现对DS1302寄存器的地址定义和控制字的写入,实现对DS1302的数据读取。初始化DS1302要求为低电平,SCLK为低电平。 被设置为高电平就启动了一个数据传送的过程。SCLK的16个方波完成一次数据传送,前8个方波用于输入命令字节,后8个方波用于数据的输出(读DS1302)或数据的输入(写DS1302)。在SCLK的上升沿,I/O线上的数据被送入DS1302;在SCLK的下降沿,DS1302输出数据在I/O线上。写和读各需要一个程序,写DS1302程序流程图如图12所示,读DS1302程序流程图4如图12所示。启动读数据字节一位复位端变高启动一次数据传送工作结束SCLK发脉冲

16、复位端变低SCLK发脉冲写命令字节一位够8次吗?够8次吗?NYYN启动写数据字节一位复位端变高启动一次数据传送工作结束SCLK发脉冲复位端变低SCLK发脉冲写命令字节一位够8次吗?够8次吗?NYYN写DS1302流程图 读DS1302流程图图12 DS1302时间流程图4.2.3 显示模块用一个接口完成字形码的输出(字形选择),位选线则分时轮流选通,即另一个接口完成各数码管的循环轮流点亮(数位选择),利用人眼视觉的暂留现象获得稳定的视觉效果。显示程序流程图如图开始初始化显示参数关所有数码管显示取显示数据输出段码数据输出位选通信号延时位选通信号移位,显示下一位数码管指向下一个显示字符8位显示完?

17、关所有数码管显示,返回是否4.2.4蜂鸣模块比较当前时间和闹钟返回主程序时是否相等 N Y分是否相等 N Y 开启蜂鸣器并判断返回按键是否按下 Y N 4.3中断调整时间模块4.4中断设置闹铃同调时5.电子时钟硬件设计该设计的硬件电路由主控部分(单片机AT89S51)、计时部分(实时时钟芯片DS1302)、显示部分(八段数码管)、电源部分(三端稳压器7805)4个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的功能。各部分的硬件电路设计如下。5.1 单片机外部晶振电路5.2 DS1302外部电路5.3 数码管显示电路5.4 蜂鸣器外部电路PROTUES仿真图实物图心得体会进

18、过三周的电子时钟课设,我对AT89C52芯片和DS1302时钟芯片有了更好地了解,在此过程中遇到很多问题;例如在调整时间和定闹钟是会出现乱码后来在同学的帮助下找到了原因,经过自己的苦思冥想终于把这个问题解决了,再就是蜂鸣器不会响,原来是蜂鸣器接错了等等的问题,同时通过改变不足而使程序更加完满。 由于我们是第一次做PCB板,在布局的时候根本没有考虑到布线的不合理会带来的众多干扰的问题,而且布线也全部由电脑自动布线完成,这样使得电路滋生出大量的寄生电容以及其他的干扰。同样的程序在开发板上运行很稳定,在我们自己刻的PCB板上刚开始很不稳定进一步告诉我们,在以后绘制PCB板的过程中需要周密的考虑到布局

19、的合理性以及电路的干扰问题。总的来说,本次的设计使我从中学到了最重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。同时还要感谢刘老师和杨俊领同学,感谢他们对我的指导并及时发现我程序中的不足,使我及时得到改正,是程序更加完美。参考文献1 王明顺,赵德

20、平.可涓流充电的串行实时时钟芯片DS1302及应用设计J.国外电子元器件,1997,(2)2 高性能、低功耗带RAM实时时钟芯片DS1302.PS武汉力源电子股份有限公司,19993 张勇. 制作基于DS1302 的电子时钟时的难点分析J. 保定师范专科学校学报, 2004(3).30-33.4 赵亮. 实时时钟芯片DS1302的应用J.电子制作,2005(10).37-38.5 能昌会. 时钟芯片DS1302在单片机系统中的应用J.电子制作, 2007(11).40.6刘乐善等.微型计算机接口技术及应用.武汉:华中科技大学出版社,2009.7胡汉才.单片机原理及其接口技术.北京:清华大学出版

21、社,2009.8李秉操等.单片机接口技术及在工业控制中的应用.西安:陕西电子编辑部,1991附录: T_RST BitP1.2 T_CLK Bit P1.1 T_IO Bit P1.0SECOND EQU 30HMINUTE EQU 31HHOUR EQU 32HMAOMEQU 37HMAOHEQU 38HORG 0000HLJMP MAINORG 0003HLJMP INT_0ORG 0013HLJMP INT_1 ORG 000BHLJMP ZDORG 0030HMAIN:CLR P3.0 MOV SP,#60HMOV R6,#100MOV TMOD,#01HMOV TH0,#3CHMOV

22、 TL0,#0BHSETB ET0SETB EASETB IT0SETB IT1SETB EX0SETB EX1LOOP:SETB TR0MOV R1,#13MOV R2,#06MOV R3,#11 LCALL DISP CLR TR0SETB TR0MOV R6,#100MOV R1,#02MOV R2,#44MOV R3,#01LCALL DISPCLR TR0START:MOV SECOND,#00HMOV MINUTE,#00HMOV HOUR,#12HSTART1:LCALL SETDS1302START2:LCALL GETDS1302LCALL DISPLAYWY:MOV R6,

23、#10MOV TMOD,#10HMOV TH1,#0B1HMOV TL1,#0E0HSETB TR1LP1: MOV A,41HCJNE A,#00H,XLMOV A,42HCJNE A,#00H,ALJBC TF1,LP2SJMP LP1LP2:MOV TH1,#0B1HMOV TL1,#0E0HLCALL DISPLAYDJNZ R6,LP1LCALL GETDS1302MOV A,43HCJNE A,#00H,FLLP3: CLRP3.0MOV R6,#10SJMP LP1XL:MOV 41H,#0XL1: LCALL DISPLAYJNB 44H,YLJNB P3.6,START1JB

24、 P3.7,XL1JNB P3.7,$INC HOURMOV A,HOURANL A,#0FHCJNE A,#00001010B,HHANL HOUR,#0F0HMOV A,HOURADD A,#00010000BMOV HOUR,AAJMP XLYL:LCALL DISPLAYJB 44H,XLJNB P3.6,START1JB P3.7,YLJNB P3.7,$INC MINUTEMOV A,MINUTEANL A,#0FHCJNE A,#00001010B,YLANL MINUTE,#0F0HMOV A,MINUTEADD A,#00010000BMOV MINUTE,ACJNE A,#

25、01100000B,YLMOV MINUTE,#0AJMP YLFL:AJMP BIJIAOal0: MOV MAOH,HOURMOV MAOM,MINUTEAJMP START2QQ:AJMP XLAL:LCALL DISPLAYMOV 42H,#0JNB 45H,BLJNB P3.6, al0JB P3.7,ALJNB P3.7,$INC HOURMOV A,HOURANL A,#0FHCJNE A,#00001010B,XXANL HOUR,#0F0HMOV A,HOURADD A,#00010000BMOV HOUR,AAJMP ALHH:MOV A,HOURCJNE A,#00100

26、100B,QQMOV HOUR,#00AJMP XLBL:LCALL DISPLAYMOV 42H,#0JB 45H ,ALJNB P3.6,al0JB P3.7,BLJNB P3.7,$INC MINUTEMOV A,MINUTEANL A,#0FHCJNE A,#00001010B,BLANL MINUTE,#0F0HMOV A,MINUTEADD A,#00010000BMOV MINUTE,ACJNE A,#01100000B,BLMOV MINUTE,#0AJMP BLCL:AJMP LP3BIJIAO:MOV A,MINUTECJNE A,MAOM,CLMOV A,HOURCJNE

27、 A,MAOH,CLAJMPSOUNDERSOUNDER: MOV 43H,#00HCPL P3.0;蜂鸣器驱动电平取反LCALL DISPLAYJNB P3.6,CLAJMP SOUNDERXX:MOV A,HOURCJNE A,#00100100B,ALMOV HOUR,#00AJMP ALDISPLAY:MOV R3,SECONDLCALL CHAGMOV P2,#11011111BMOV P0,R2LCALL DELAYMOV P2,#11101111BMOV P0,R3LCALL DELAYMOV R3,MINUTELCALL CHAGMOV P2,#11110111BMOV P0,

28、R2LCALL DELAYMOV P2,#11111011BMOV P0,R3LCALL DELAYMOV R3,HOURLCALL CHAGMOV P2,#11111101BMOV P0,R2LCALL DELAYMOV P2,#11111110BMOV P0,R3LCALL DELAYRETINT_0:PUSH PSWINC 41HCPL 44HPOP PSWRETIINT_1:PUSH PSWINC 42HINC 43HCPL 45H POP PSW RETICHAG:PUSH ACCMOV A,R3ANL A,#0FHMOV R2,AMOV A,R3SWAP AANL A,#0FHMO

29、V R3,AMOV DPTR,#DIG_CODEMOV A,R2MOVC A,A+DPTRMOV R2,AMOV A,R3MOVC A,A+DPTRMOV R3,APOP ACCRETDELAY:PUSH PSWMOV R7,#16D1:MOV R5,#100D2:DJNZ R5,$DJNZ R7,D1POP PSWRETSETDS1302:CLR T_RSTCLR T_CLKSETB T_RSTMOV B,#8EHLCALL INPUTBYTEMOV B,#00HLCALL INPUTBYTESETB T_CLKCLR T_RSTMOV R0,#SECONDMOV R1,#80HMOV R7

30、,#3SETLOOP:CLR T_RSTCLR T_CLKSETB T_RSTMOV B,R1LCALL INPUTBYTEMOV A,R0MOV B,ALCALL INPUTBYTEINC R0INC R1INC R1SETB T_CLK CLR T_RST DJNZ R7,SETLOOPCLR T_RST CLR T_CLK SETB T_RSTMOV B,#8EHLCALL INPUTBYTEMOV B,#80HLCALL INPUTBYTESETB T_CLKCLR T_RSTRETGETDS1302:MOV R0,#SECONDMOV R7,#3MOV R1,#81HGETLOOP:

31、CLR T_RSTCLR T_CLKSETB T_RSTMOV B,R1LCALL INPUTBYTE LCALL OUTPUTBYTE MOV R0,A INC R0 INC R1 INC R1 SETB T_CLK CLR T_RST DJNZ R7,GETLOOP RETINPUTBYTE: MOV R4,#8INPUTLOOP:MOV A,B RRC A MOV B,A MOV T_IO,C SETB T_CLK CLR T_CLK DJNZ R4,INPUTLOOP RET OUTPUTBYTE:CLR ACLR C MOV R4,#8OUTPUTLOOP: MOV C,T_IO R

32、RC A SETB T_CLK CLR T_CLK DJNZ R4,OUTPUTLOOP RETDISP:MOV DPTR,#DIG_CODEMOV R4,#0FEHMOV R5,#3MOV R0,#01HDISP1:MOV A,R4MOV P2,ARL AMOV R4,AMOV A,R0MOV B,#10DIV ABMOVC A,A+DPTRMOV P0,ALCALL DELAY10MSMOV A,R4MOV P2,ARL AMOV R4,AMOV A,BMOVC A,A+DPTRMOV P0,ALCALL DELAY10MSINC R0DJNZ R5,DISP1CJNE R6,#0,DISPRETDELAY10MS:MOV R7,#50DEL1:MOV 30H,#50DJNZ 30H,$DJNZ R7,DEL1RETZD: MOV TH0,#3CHMOV TL0,#0BHDJNZ R6,doneclr TR0 done: RETI DIG_CODE: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END

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

当前位置:首页 > 社会民生


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