电子万年历的设计毕业论文 下载本文

湖北文理学院理工学院 2基于单片机万年历的方案研究

工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。因此,本设计中采用DS1302提供时钟。2.1.4温度传感器的选择方案与论证

方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。

方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。因此,本设计DS18B20温度传感器作为温度采集模块。 2.2 电路设计最终方案决定

综上各模块的选择方案与论证,确定最后的主要硬件资源如下:采用STC89C52作为主控制系统;DS1302提供时钟;DS18B20作为数字式温度传感器;LCD1602液晶屏作为显示。

2.3 DS1302,DS18B20和LCD1602的原理及说明 2.3.1 LCD1602工作原理及说明 (1)寄存器选择控制

1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符,图形寄存器选择控制表如表2.1所示:

4

湖北文理学院理工学院 2基于单片机万年历的方案研究

表2.1 LCD1602寄存器选择控制表

RS 0 0 1 1 (2)指令集

1602通过D0~D7的8位数据端传输数据和指令。显示模式设置(初始化)00111000[0x38]设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:(初始化) 00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)。000001NS N=1(读或写一个字符后地址指针加1并且光标加1),N=0(读或写一个字符后地址指针减1并且光标减1),S=1且N=1(当写一个字符后,整屏显示左移),S=0当写一个字符后,整屏显示不移动。数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)。其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。 2.3.2 DS1302原理及说明 (1)时钟芯片DS1302的工作原理

DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图2.2所示。图2.1为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表2.2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。 (2)DS1302的控制字

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

5

R/W 操作说明 0 1 0 1

写入指令寄存器(清屏指令等) 读busy flag,以及读取位址计数器(DB0~DB6)值 写入数据寄存器(显示各字型等) 从数据寄存器读取数据

湖北文理学院理工学院 2基于单片机万年历的方案研究

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

图2.1 DS1302的控制字

(4)数据输入输出

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

2.2 DS1302读与写的时序图

(3) DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2.2。

6

湖北文理学院理工学院 2基于单片机万年历的方案研究

表2.2 DS1302的日历、时间寄存器

写寄存读寄存Bit7 器 80H 82H 84H

器 81H 83H 85H

CH 12、24

0

10秒 10分 10 AM/PM

86H 88H 8AH 8CH 8EH

87H 89H 8BH 8DH 8FH

WP

0

0 0 0

0 0 0 10年

0

O

0

0

0 0 10日

0 0

0

日 月 星期 年

0

0

秒 分 时

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

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

DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图2.3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄

7