基于时钟日历芯片DS1302的万年历设计

基于时钟日历芯片DS1302的万年历设计
基于时钟日历芯片DS1302的万年历设计

基于时钟日历芯片DS1302的万年历

设计

黄豪民

摘要

随着科学技术的发展,万年历的设计也层出不穷。本设计以单片机AT89C51和DS1302为核心,结合译码器74HC154和驱动芯片74LS244,以及模拟键盘,LED 显示电路等构成一个可控及显示精确的万年历时间系统。

DS1302为一个实时时钟芯片,具有较高时间精度,它与单片机进行串口通信,单片机通过与它的通信,取出其时间寄存器中的值,再通过相应的电路,把时间值通过LED显示,如果显示的值与标准时间不同,此系统就经过模拟键盘灵活控制,调节DS1302中时间寄存器中的值,达到与标准时间同步。

关键词AT89C51,DS1302

ABSTRACT

Along with science and technology's development, the designs of the perpetual calendar have many meanings. This design uses the microprocessor AT89C51 and the chip DS1302, with the decoder chip 74HC154, the drive chip 74LS244, the simulative keyboard, the LED display and so on to constitute the perpetual calendar system which can control and display precisely.

DS1302 is a real-time clock chip and has the high time precision, it communicates with the microprocessor via the serial interface. The microprocessor takes out DS1302’s time register value by the communication, at last the LED displays the time value by the corresponding circuit. If the time value is different from the standard time, the simula tion keyboard can adjust conveniently DS1302’s time register value, achieving with the standard time synchronously.

Keywords AT89C51,DS1302

目录

摘要 ............................................................................................................................ I ABSTRACT .................................................................................................................... II

1 绪论 (1)

2 功能要求 (3)

3 方案论证 (3)

3.1 显示器的选择 (3)

3.1.1 VFD显示器 (3)

3.1.2 LED显示器 (3)

3.1.3 LCD液晶显示器 (4)

3.2 编程语言的选择 (4)

3.2.1 单片机汇编语言 (4)

3.2.2 单片机C语言 (4)

3.3 微处理器的选择 (5)

4 硬件电路 (6)

4.1 DS1302时钟芯片 (7)

4.1.1 DS1302简介 (7)

4.1.2 DS1302的控制字节 (8)

4.1.3 数据的输出 (9)

4.1.5 DS1302的寄存器 (9)

4.1.6 DS1302的读写方式 (11)

4.1.7 DS1302时序图 (12)

4.1.8 DS1302电路 (13)

4.2 单片机AT89C51 (14)

4.2.1 单片机AT89C51简介 (14)

4.2.2 单片机引脚简介 (15)

4.2.3 低功耗模式 (18)

4.3 模拟键盘的设计 (19)

4.4 LED显示器的设计 (20)

4.5 74LS244芯片 (21)

5 软件设计 (25)

5.1 系统软件设计原理 (25)

5.2 键盘扫描子程序 (25)

5.3 显示子程序 (26)

5.4 DS1302控制子程序 (27)

5.5 主函数 (27)

6 软件平台 (28)

6.1 Proteus软件 (28)

6.2 KEIL软件 (31)

7 结论 (33)

参考文献 (34)

附录A:部分单片机源程序 (35)

致谢 (38)

1 绪论

在科技日新月异发展的今天,人们对时间概念的认识显得尤为深刻,“时间就是金钱”,“时间就是生命”等警句更是激励着人们努力工作,把握时间。

作为时间的标量,时钟等计时设备也随着人们的不断认识而变化。在三千年前,我国祖先就发明了用土和石片刻制成的“土圭”与“日规”两种计时器,成为世界上最早发明计时器的国家之一。到了铜器时代,计时器又有了新的发展,用青铜制的“漏壶”取代了“土圭”与“日规”。东汉元初四年张衡发明了世界第一架“水运浑象”,此后唐高僧一行等人又在此基础上借鉴改进发明了“水运浑天仪”、“水运仪象台”。至元明之时,计时器摆脱了天文仪器的结构形式,得到了突破性的新发展。元初郭守敬、明初詹希元创制了“大明灯漏”与“五轮沙漏”,采用机机械结构,并增添盘、针来指示时间,这使其计时更准确,机械性也更先进。

而在国外,阿拉伯工匠最早利用等速运动原理设计出摆钟表。埃及人制造了漏壶钟,它是由两个互相叠置的圆筒组成。水从上面的圆筒穿过一个小孔滴入下面的圆筒。水滴完了,就是某个时辰过去了。大一点儿的漏壶灌一次水可报六个小时,然后再重新装满水。他们还甚至做了装有指针和鸣击装置的钟表,每隔一小时,一定数量的圆球便滚落到金属盖上,发出大声的鸣响。而钟表发展史日晷是最早报“标准时”的仪器,它由晷盘和晷针组成。晷盘是一个有刻度的盘,其中央装有一根与盘面垂直的晷针,针影随太阳运转而移动在盘上的位置。一二七零年前后在意大利北部和南德一带出现的早期机械式时钟,以秤锤作动力,每一小时鸣响附带的钟,自动报时。一三三六年,第一座公共时钟被安装于米兰一教堂内,在接下来的半个世纪里,时钟传至欧洲各国,法国、德国、意大利的教堂纷纷建起钟塔。

到了现代,计时设备的新技术更是层出不穷,一九六九年,日本精工手表公司开发出世界上第一块石英电子手表,日误差缩小到零点二秒以内。与传统的机械式手表相比,它走时更为准确,功能更多,制作的成本也更低。一九七二年,美国的汉密尔顿公司发明了数字显示手表,马达和齿轮从手表中消失了。为了适应现代社会的需要,瑞士等国更是推出自己特色的钟表新产品,如瑞士菲利浦公司生产的光电钟,可将光源转换成电能作能源的电子表。日本研制成具有录音、放音等功能的数字手表,还有翻译手表、电视手表等。英国的无声闹声,到了预定钟点,产生振动叫醒人,可供耳聋者使用。还有声控照明钟、气温钟、火警闹钟等。

时钟芯片作为一个独特的时钟设备,它结合时钟原理,把晶振,寄存器等组合在一起做成独立的一块芯片,灵活地满足各种用户需要。

2 功能要求

本设计要求以单片机和DS1302为核心,结合显示电路,模拟键盘等辅佐模块,构成一个可控又计时准确的万年历时钟系统。

3 方案论证

本设计从3个方面来分析论证:显示器的选择,编程语言的选择和微处理器的选择。

3.1显示器的选择

一般嵌入式系统可供选择的显示器有以下几种,其具体介绍为:

3.1.1 VFD显示器

VFD显示器是由电子管发展过来的一种显示器件。它是真空二极管或三极管的一种改型。二极管的改型称为静态VFD,三极管的改型称为动态VFD。静态VFD含有两个基本电极:阴极(灯丝)和阳极。动态VFD比静态VFD多一极:栅极。所有电极在高真空条件下封装于玻璃壳内。由阴极发射的电子在正向电位的作用下加速到栅极和阳极(静态VFD直接到达阳极),并碰撞激活在阳极的荧光粉图案使其发光。所需的亮度图形显示可以由控制栅极和阳极(静态VFD仅控制阳极)正电位或负电位来实现。

VFD显示器具有高清晰度、高亮度、宽视角、反应速度快和从红色到蓝色多种色彩等特点,显示效果好。当使用CIG(集成芯片玻璃)技术时,可集成VFD 驱动电路;具有可靠且寿命长等特点。但它需要5.5~6.3V的灯丝电压,150~450mA 的灯丝电流,12~36V 的阳极加速电压,15~36V的栅极电压。不考虑阳极和栅极电流,单灯丝功耗就达825mW,功耗相对来说较大,不适合在移动设备上使用。另外,它需要多组电压不同的供电电压,使用不方便。

3.1.2 LED显示器

LED显示器是由发光二极管发展过来的一种显示器件。它是LED发光二极管的改型。一般分为LED数码管显示器和LED点阵显示器。LED点阵显示器能显示各种信息,但它的体积较大,适合于广告牌等需要大面积显示的场所。LED数码管显示器具有高亮度、宽视角、反应速度快,可靠性高、使用寿命长等特点。它比较适合显示数字的时钟系统,同时,在微处理器和LED发光二极管显示器之

间一般还需要驱动芯片。

3.1.3 LCD液晶显示器

LCD液晶显示器是利用光的偏振现象来显示的。一般分为数字型LCD和点阵型LCD。前者用于显示简单的字符,如时钟等;后者能显示复杂的图形和自定义字符,因此应用非常广泛。LCD液晶显示器具有本身不发光,靠反射或者透射其它光源发光的优点,同时具有功耗小、可靠性高、寿命长、体积小、电源简单等特点,非常适合于嵌入式系统、移动设备和掌上设备的使用。

结合实际,本时钟系统的显示模块要求简单,以及基于自己掌握的知识,本设计采用LED显示器。

3.2 编程语言的选择

3.2.1 单片机汇编语言

处理器CPU可以识别的是一组由0和1序列构成的指令码,这种指令码

构成的指令系统称为机器语言,但由于它们不直观,难记、难认、难理解、难易查错等特点,人们在20世纪50年代中期开始用一些“助记符号”来代表机器语言中由0和1组成的指令系统。这些“助记符号”构成的指令系统和现在增加的伪指令集称为汇编语言。它具有以下几个方面的特性:与机器的相关性、执行的高效性、编写程序的复杂性、调试的复杂性等。

单片机汇编语言在这个设计系统中也就是MCS-51指令集。它是由111条指令组成,按照它们的操作性质可划分为数据传送、算术运算、逻辑操作、程序转移、位操作等5大类。

MCS-51的指令长度较短:单字节指令有49条;双字节指令有46条;最长的是三字节指令,只有16条。指令周期较短:单机器周期指令64条,双机器周期指令45条,只有乘除需要4个机器周期。

MCS-51的指令具有简明、整齐和易于掌握的特点。

3.2.2 单片机C语言

单片机C语言源自于单片机汇编语言,它是一种面向过程的语言,具有结构化的特点,可以产生紧凑的代码。它于单片机汇编语言相比,具有如下的优点:

①对单片机的指令系统不要求很了解,仅要求对8051的存储器结构有所了解

②寄存器的分配,不同存储器的寻址及数据类型等细节可有编译器管理

③程序有规范的结构,可分为不同的函数,这种方式可使程序结构化

④关键字及运算符号可近似人的思维过程式使用

⑤编程及程序调试时间显著缩短,从而提高效率

⑥提供的库包含许多标准子程序,具有较强的数据处理能力

⑦编好的程序容易植入新程序

单片机C语言具有单片机汇编语言力所不及的优点,而且已发展成为嵌入式系统的一个发展方向,因此我选择单片机C语言作为本设计的编程语言。

3.3 微处理器的选择

基于本时钟系统的设计要求,由于只是处理显示,键盘检测,与DS1302联系等基本功能,不选择ARM,X89等32位CPU和AVR等16位CPU,而选择ATMEL 公司的AT89C51作为本设计的CPU。

4 硬件电路

图4.1为本课题——基于时钟日历芯片DS1302的万年历设计的系统设计原理框图。

图4.1 基于时钟日历芯片DS1302的万年历的系统的原理框图

系统的硬件电路主要由DS1302、AT89C51单片机、模拟键盘、74LS244驱动芯片、74HC154(4-16译码器)、16个数码管等组成。AT89C51单片机把DS1302中寄存器的时间值取出来,通过译码电路,驱动电路,在数码管上显示出时间,模拟键盘通过数码管显示的值做相应的控制,以达到准确显示时间的目的。

图4.2为本课题——基于时钟日历芯片DS1302的万年历设计的系统设计的电路原理图(在PROTEUS软件中仿真)。

图4.2 基于时钟日历芯片DS1302的万年历的系统的电路原理图

4.1 DS1302时钟芯片

4.1.1 DS1302简介

DS1302是美国DALLAS公司推出的一种串行接口实时时钟芯片。芯片内部具有可编程日历时钟和31个字节的静态RAM,日历芯片可自动进行闰年补偿,并可以对年、月、日、周日、时、分、秒进行计时,工作电压为 2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,提供了对备份电源进行绢流充电的能力。它的主要特点为采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能,通常采用普通32.768kHz晶振。

DS1302采用八脚的DIP封装,其引脚排列如图4.3所示:

Vcc1,Vcc2: 电源输入,其中Vcc1为后备电源,

Vcc2为主电源。

GND: 接地端

RST 复位端

X1,X2: 外接32.768KHz石英晶振输入

I/0: 数据输入/输出端

SCLK 串行时钟输入

图4.3 DS1302引脚图

在DS1302的引脚排列, Vcc1和Vcc2为电源引脚,其中,单电源供电时接Vcc1引脚,双电源供电时,主电源接接Vcc2,从电源接Vcc1,如果采用可充电的镉镍电池,可启用内部涓流充电器在主电压正常时间向电池充电,以延长电池的使用时间。备份电池也可用1微法以上的超容量电池代替,但得注意备份电池的电压应略低于主电源的工作电压。X1和X2是振荡源,外接32.768kHz的石英晶振。RST是通信允许信号,当RST=0时,允许通信,当RST=0时,禁止通信。I/O引脚为双向串行数据传送信号,SCK引脚为串行数据的位同步信号。

DS1302的内部结构如图4.4所示。

Vcc1

Vcc2

GND SCLK

I/O

图4.4 DS1302内部结构图

DS1302的典型应用如图4.5所示。

4.1.2 DS1302的控制字节

DS1302 的控制字如图4.6所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为

0,则不能把数据写入DS1302中。位6(RAM/CK )位为DS1302片内

RAM/时钟选择位,如果为0,则表示存取日历时钟数据,为1表示存取RAM 数据。位5至位1(A4至A0)用来选择日历时钟寄存器或RAM 的地址选择位。最低有效位位0(RD/WR )为读写控制位,如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

图4.5 DS1302的典型应用

图4.6 DS1302的控制字节

4.1.3 数据的输出

I/O引脚在写入控制指令字后的下一个SCLK时钟的下降沿时,传送一个字节的数据,数据输入从低位即位0开始。注意在数据传送时,RST引脚需保持高电位。如4.7所示

4.1.4 数据的输入

I/O引脚在写入控制指令字后的下一个SCLK时钟的上升沿时,数据被写入到内部寄存器,DS1302,数据输入从低位开始,一直到高八位。注意在数据传输时,RST引脚需保持为高电位,如图4.8所示。

图4.7 数据的输出

图4.8 数据的输入

4.1.5 DS1302的寄存器

DS1302有12个寄存器,其中前7个寄存器分别存放着秒,分,时,日,月,星期和年等信息,存放的数据位为BCD码形式。此外,DS1302 还有控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。寄存器及其控制字如表4.1所示。

秒寄存器的最高位为时钟暂停控制位,当CH=0时,时钟振荡器暂停,DS1302进入低功耗状态,当CH=1时启动时钟。

写保护寄存器的最高位WP=1时,才能对日历时钟或RAM的内容进行写操作,WP=0,禁止写操作。

表4.1 DS1302的寄存器

时钟多字节寄存器为多字节突发方式控制寄存器,通过对该寄存器的寻址,可以将对日历时钟或RAM的读写操作规范为多字节方式。在此方式下写时钟寄存器时,必须按数据传送的次序写入最先的8个寄存器;而以多字节方式写RAM 时,为了传送数据不必写入所有的31个RAM字节。时钟多字节寄存器读写控制字如图4.9所示。

图4.9 时钟多字节读写方式

绢细电流充电控制寄存器如下图4.10所示。

图4.10 绢细电流充电控制寄存器

TCS:绢细充电选择

TCS=1010 使能绢流充电

TCS=其它禁止绢流充电

DS:二极管选择位

DS=01 选择一个二极管

DS=10 选择二个二极管

DS=00或11 即使TCS=1010,充电功能也被禁止

RS的选择如表4.2所示.

表4.2 RS选择

31*8 RAM寄存区如下图4.11所示。

图4.11 RAM寄存区

4.1.6 DS1302的读写方式

DS1302与8051之间通过IO线传送同步串行数据,SCLK为串行通信时位同步时钟,一个SCLK脉冲传送一位数据。每个数据传送时都以字节为单位,低位在前,高位在后,传送一个字节需要8个SCLK脉冲。数据传送可以分为单字节传送方式和多字节突发方式传送。

单字节传送方式如图4.12所示,在RST=1 期间,8051单片机先向DS1302发送一个字节的命令字,紧接着发送一个字节的数据,DS1302在接受到命令字节后自动将数据写入到指定的片内地址或从该地址读取数据。

数据多字节突发方式的传送时序如图4.13示,RST=1期间,若8051单片机向DS1302发送的命令字节中A4 — A1全为1,则DS1302在接受到这个字节命令后可以一次进行8个字节日历时钟数据或是31个片内RAM单元数据的读写工作。

相关文档
最新文档