基于单片机及DS1302的LED电子时钟毕业设计

摘要近年来,随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在逐步地深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用于各个领域。

本文的电子钟系统是以单片机(AT89S52)为核心,时钟芯片DS1302、数码管等元器件组成。具体介绍应用Protel软件进行单片机系统的电子钟设计的实现方法。该方法既能准确验证所设计的系统是否满足技术要求,又能提高系统设计的效率和质量,降低开发成本,具有推广价值。

关键词单片机;DS1302;电子钟

ABSTRACT In recent years, with computers in the infiltration and the development of large-scale integrated circuits. SCM application is steadily deepening, because of strong function, small size, low power dissipation, low prices, reliable, easy to use features, it is increasingly widely used in various fields.

This article describes an electronic bell system which consists of the core of single chip microcomputer (AT89S52) , the clock chip DS1302, LED components.Describes the application of Protel software of the electronic single chip system clock to achieve the design in details.The method can not only test the property of the system precisely,but also improve development efficiency and reduce development cost,which values in popularity.

KEY WORDS Single Chip Microcomputer; DS1302; electronic clock

目录

1.前言 (1)

2.系统核心芯片简介 (2)

2.1 时钟芯片DS1302简介 (2)

2.1.1 内部结构 (2)

2.1.2 工作原理 (3)

2.1.3 寄存器和控制命令 (4)

2.1.4 数据传送时序 (6)

2.2 单片机AT89S52简介 (7)

2.2.1芯片引脚及特点 (7)

2.2.2 主要性能 (9)

3.硬件电路设计 (10)

3.1 电路框图 (10)

3.2 PROTEL电路图设计 (10)

3.2.1 复位电路 (10)

3.2.2 时钟电路 (11)

3.2.3 显示电路 (12)

3.2.4 按键电路 (13)

3.2.5 闹铃电路及系统原理图 (14)

4.电路调试 (16)

4.1 实验结果 (16)

4.2 存在的问题 (17)

4.3 解决的方案 (18)

5.总结 (20)

致谢 (21)

参考文献 (21)

附录一 (22)

附录二 (23)

1.前言

日常生活生产中有许多地方需要电子时钟和日历,比如家庭,办公室,以及一些智能化仪表。数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到了广泛的应用,虽然现在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用也比较方便,但是人们对电子产品的应用要求越来越高,数字电子钟不但可以显示当前的时间,而且可以显示日期、农历、以及星期等,给人们的生活带了了极大地方便。另外数字电子钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。

在单片机应用系统中,时钟有两个方面的含义:一是为了保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是系统的标准定时时钟,既定时时间,一般采用专门的时钟芯片实现,如DS1302,可满足高精度的要求。

目前的电子时钟日历系统多采用时钟芯片以简化系统的设计。DS1302 是众多时钟芯片中一款性价比较高的产品。该芯片是目前比较新型的时钟芯片,时钟DS1302采用三线接口与单片机进行同步通信,经常用于长时无人置守的测控系统,以用来记录测控数据所出现的时间。

DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

多数LED 电子钟在断电后需要重新设置时间参数。本设计采用AT89S52单片机为主控芯片,配合实时钟集成电路芯片DS1302,实现了时间显示、报时(与闹钟时间相等则蜂鸣)等功能, 且具备掉电情况下时间信息继续保持的功能。计时准确,单片机通过串行通信来控制DS1302工作,同时进行键盘和显示的控制。

2.系统核心芯片简介

2.1 时钟芯片DS1302简介

2.1.1 内部结构

时钟芯片DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK 为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK为时钟输入端。

DS1302内部结构如图2.1所示

图2.1 DS1302内部结构图[9]

DS1302外部引脚结构如图2.2所示:

图2.2 DS1302引脚排列图

2.1.2 工作原理

DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平,同时将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址。命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下最多可达8+248[9]。

数据输入输出:在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。

DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。

要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然

DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 μF就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。

时钟芯片DS1302虽然存在时钟精度不高,易受环境影响,出现时钟混乱等缺点,但DS1302可以用于数据记录,特别是对于某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对于长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有十分重要的意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;如果要采用单片机计时,一方面,需要采用计数器,占用硬件资源;另一方面,需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,那么就能很好地解决这个问题。

2.1.3 寄存器和控制命令

时钟芯片DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

DS1302的日历、时间寄存器及其控制字见表2.1主要寄存器分配表。

表2.1 DS1302主要寄存器分配表

寄存器

命令字

取值范围

位定义

写操作读操作D7

D

6

D

5

D

4

D

3

D

2

D

1

D

秒寄存器80H 81H 00-59 CH 10SEC SEC 分寄存器82H 83H 00-59 0 10MIN MIN 时寄存器84H 85H 01-12或00-23 12/24 0 10HR HR

日寄存器86H 87H 01-28,29,30,31 0 0 10DAT

E

DATE

月寄存器88H 89H 01-12 0 0 0 10M MONTH 周寄存器8AH 8BH 01-07 0 0 0 0 0 DAY

年寄存器 8CH

8DH

00-99

10YEAR

YEAR

控制

8FH

8EH

WP

此外,时钟芯片DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等。

秒寄存器(81H 、80H )的位7定义为时钟暂停标志(CH )。当该位置为时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。一设置时钟时,可以停止其工作,设定完之后,再启动其工作。

时寄存器(85H 、84H )的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为12小时模式时,位5为“0”表示AM ;为“1”表示PM 。在24小时模式下,位5是第二个10小时位(20-23时)。

控制寄存器(8FH 、8EH )的位7是写保护位(WP ),其他7位均置为0。在任何片内时钟/日历寄存器和RAM ,在写操作之前,WP 位必须为0,否则将不可写入。当WP 位为1时,写保护位防止对任一寄存器的写操作。因此,通过置写保护位,可以提高数据的安全性。另外,还有慢速充电控制寄存器和RAM 寄存器,如表2.2。

表2.2 充电控制寄存器和RAM 寄存器各位定义

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0

充电控

制寄存器

TCS TCS TCS TCS DS DS RS RS

RAM 寄存器

-

- - - - - - -

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H ~FDH ,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM 寄存器,此方式下可一次性读写所有的RAM 的31个字节,命令控制字为FEH(写)、FFH(读)。

DS1302 的控制字如图2.3所示。

图2.3 DS1302的命令字节

控制字节的最高有效位(位7)必须是逻辑1,如果它为逻辑0,则不能把数据写入时钟芯片DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

2.1.4 数据传送时序

DS1302 的数据传送时序如图2.4所示:

图2.4 DS1302数据传送时序图

当RST 为高位时,对时钟芯片的操作有效。

SCLK线上为时钟脉冲:

上升沿时, I/O线上信息输入有效(低位在前, 高位在后);而下降沿时, I/O 线上的数据输出有效(低位在前, 高位在后)[11]。

在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位[4]。数据读写时序如图2.5所示:

图2.5 DS1302读写时序图[4]

2.2 单片机AT89S52简介

2.2.1芯片引脚及特点

AT89S52引脚排列如图2.6所示:

图2.6 AT89S52引脚排列图

P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。

P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。

引脚号第二功能

P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P1.5 MOSI(在系统编程用)

P1.6 MISO(在系统编程用)

P1.7 SCK(在系统编程用)

P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。

端口引脚第二功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 INTO(外中断0)

P3.3 INT1(外中断1)

P3.4 TO(定时/计数器0)

P3.5 T1(定时/计数器1)

P3.6 WR(外部数据存储器写选通)

P3.7 RD(外部数据存储器读选通)

此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。

RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)

输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。

2.2.2 主要性能

AT89S52与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器、32个可编程I/O 口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。

AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空

闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。

3.硬件电路设计

3.1 电路框图

系统总体框图:

图3.1 系统总体框图

时钟模块负责记录时间数据,从而节省了单片机的资源, 提高其工作效率, 并采用DS1302 提供慢速充电功能, 可在系统掉电后正常计时,不需重新设定时钟时间, 这使得时钟的使用更加便捷。定时声光提示模块的主要功能是在定时时间到的情况下, 由蜂鸣器和发光二极管给用户以听觉和视觉提示,由单片机直接驱动。

3.2 PROTEL 电路图设计

3.2.1 复位电路

复位是单片机初始化的操作,使系统各部件都处于一个确定的初始状态,并且从这个状态开始工作,除此以外,当单片机系统在运行时出现错误或者操作错误使系统处于死机状态时,也可以按下复位键重新启动。

复位操作通常有两种形式:上电复位,开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。

定时声光提示模块

LED 显示模块

DS1302时钟模块

AT89S52

电源模块

本设计采用上电且开关的复位电路,如图3.2所示。

上电后,由于电容充电,使RST持续一段高电平时间,当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。

图3.2 AT89S52的复位电路

单片机的复位操作使单片机进入初始化过程,其中包括使程序计数器PC=0000H,P0~P3=FFH,SP=07H,其他寄存器处于零。这表明程序从0000H地址单元开始执行。单片机复位后不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态见表3.1所示。

表3.1 单片机复位后特殊功能寄存器的初态

特殊功能寄存器初始状态特殊功能寄存器初始状态

A 00H TMOD 00H

B 00H TCON 00H

PSW 00H TH000H

SP 07H TL000H

DPL 00H TH100H

DPH 00H TL100H

P0~P3FFH SBUF 不定

IP ×××00000B SCON 00H

IE 0××00000B PCON 0×××××××B

3.2.2 时钟电路

单片机时钟——时钟是单片机的心脏,提供单片机内各种微操作的时间基准。

时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。

本设计采用的是内部振荡方式,所获得的时钟信号比较稳定。在引脚XTAL1和XTAL2外接晶振,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。具体如图3.3所示,电容C1、C2起稳定振荡频率、快速起振的作用。

图3.3 单片机时钟

时钟芯片DS1302——DS1302与单片机的连接仅需要三条线:CE引脚、SCLK 串行时钟引脚、I/O串行数据引脚,外接32.768KHz晶振,为芯片提供计时脉冲[4]。时钟芯片DS1302与单片机接口图如图3.4所示:

图3.4 DS1302与单片机接口图

3.2.3 显示电路

对于时钟而言,通常可采用LCD显示或者LED显示。本设计采用LED(四位共阴数码管)。LED结构简单,体积小,功耗低,相应速度快,易于匹配,可靠性高,而且寿命长,显示亮度高。

LED数码管的接口分静态接口和动态接口。本设计采用的是动态接口方式,动态接口采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂时停留特性,看不出闪烁显示现象,动态显示就是每次只有一个数码管处于显示状态,另外几个数码管是消隐状态,其硬件电路简单,具体详见原理图。

四位共阴数码管引脚数为12(6*2),工作电压为3-3.6V(小数点位2.0V)

工作电流为20mA。

引脚分布图如图3.5所示:

图3.5 四位共阴数码管引脚分布图

引脚分布:正面逆时针数依次是1、2、3、4、5、6、7、8、9、10、11、12。

3.2.4 按键电路

键盘与CPU的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是各个按键相互独立,每个按键占用一个I/O口线,互不影响各按键的工作状态。其电路配置灵活,软件结构简单;矩阵式键盘较合适按键较多的情况下使用,由于本设计的电子钟最多需要7个按键,故采用独立式键盘,键盘电路如图3.6所示。

相关文档
最新文档