基于AT89S52单片机的万年历设计 下载本文

洛阳师范学院课程设计说明书(2015)

斜坡累加器预置比较LSB低温度系数振荡器计数器预置置位清零=0增加温度寄存器低温度系数振荡器计数器=0停止

图2.11 测温原理

温度℃ +125 +25 +0.5 0 -0.5 -25 -55 表2-10 温度/数据关系 数据输出(二进制) 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 数据输出(十六进制) 00FA 0032 0001 0000 FFFF FFCE FF92 DS18B20是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得温度值。计数器被预置到对应于-55℃的一个值。如果计数器在门周期结束之前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃。

同时,计数器被复位到一个值,这个值由斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。

斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨

20

洛阳师范学院课程设计说明书(2015)

力,这是通过改变计数器对温度每增加一度所需计数的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。

DS18B20内部对此计算的结果提供0.5℃的分辨力。温度以16bit带符号位扩展的二进制补码形式读出,表给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。

DS18B20测温范围-55℃--- +125℃,以0.5℃递增。如果于华氏温度,必须要用一个转换因子查找。 5) 时序

主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位。 (1)初始化

时序见图2.12主机总线to时刻发送一复位脉冲(最短为480us的低电平信号)接着在tl时刻释放总线并进入接收状态DSl820在检测到总线的上升沿之后等待15-60us接着DS1820在t2时刻发出存在脉冲(低电平持续60-240 us)如图中虚线所示。

480uS 15uS~60uS 15uS~60uST0T1T2T360uS~240uST4

图2.12 初始化时序图 (2). 写时间隙

当主机总线to时刻从高拉至低电平时就产生写时间隙见图2.13(a)图1.13(b)从to时刻开始15us之内应将所需写的位送到总线上DSl820在t0后15-60us间对总线采样若低电平写入的位是0见图2.13(a),若高电平写入的位是1,见图2.13(b),连续写2位间的间隙应大于1us。

>60uS >60uST015uS15uS~60uST1>1uST015us45uS>1usT1

21

洛阳师范学院课程设计说明书(2015)

图2.13(a)写0时序 图2.13(b) 写1时序 (3). 读时间隙

见图2.14主机总线to时刻从高拉至低电平时总线只须保持低电平l7us之后,在t1时刻将总线拉高产生读时间隙,读时间隙在t1时刻后t2时刻前有效t2距t0为15us也就是说t2时刻前主机必须完成读位并在t0后的60us-120us内释放总线。读位子程序(读得的位到C中)。

>60uS15uST0T1T2T3>1uS 主机起作用DS1820 上拉电阻起作用

图2.14 读时序

.2.3.2温度采集电路

此电路图是以DS18B20温度采集芯片为主,以单片机为辅。通过温度采集芯片采集到外部转化之后,过单片机的转化然出显示。如2.15

温度再通芯片后输图

示。

度采

图2.15 温集电路

2.4 实时时钟电路设计

DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放

22

洛阳师范学院课程设计说明书(2015)

数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。 2.4.1时钟芯片简介

Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1时,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为时钟输入端。 如图(2.16)为DS1302的引脚功能图。

2 图2.16 DS1302的引脚图分布

1) DS1302的控制字节

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

23

洛阳师范学院课程设计说明书(2015)

表2-11 DS1302的控制字节

1RAMA4C\\K\\A3A2A1A0RAMK\\

2)数据输入输出(I/O)

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

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。DS1302内部寄存器的列表如图2-12所示。

表2-12 DS1302内部寄存器列表

寄存器名称 命令字 取值范围 各位内容 写 读 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 00-59 CH 10SEC SEC 分寄存器 82H 83H 00-59 0 10MIN MIN 小时寄存器 84H 85H 01-12或00-23 12/24 0 A HR HR 日寄存器 86H 87H 01-28,29,30,31 0 0 10DATE DATE 月寄存器 88H 89H 01-12 0 0 0 10M MONTH 周寄存器 8AH 8BH 01-07 0 0 0 0 DAY 年份寄存器 8CH 8DH 00-99 10YEAR YEAR 5)DS1302的寄存器和控制命令

DS1302工作是为了对任何数据传送进行初始化,需要将要复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串

24