【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时

上传人:豆浆 文档编号:1711182 上传时间:2017-07-09 格式:DOC 页数:28 大小:135.50KB
返回 下载 相关 举报
【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时_第1页
第1页 / 共28页
【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时_第2页
第2页 / 共28页
【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时_第3页
第3页 / 共28页
【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时_第4页
第4页 / 共28页
【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时》由会员分享,可在线阅读,更多相关《【2017年整理】51+DS1302+DS18B20+LCD1602,显示时间,温度,可调时(28页珍藏版)》请在金锄头文库上搜索。

1、1实时时钟芯片 DS1302 应用,DS18B20 应用实例可调时钟,LCD1602显示:(时间+温度)说明:需要按程序中定义的接口。按自己接口,只要在程序中修改接口定义即可。1、DS1302 引脚排列:如下图引脚说明:1)Vcc1:后备电源,VCC2:主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc10.2V 时,Vcc2 给DS1302 供电。当 Vcc2 小于 Vcc1 时,DS1302 由 Vcc1 供电。2)X1、X2:振荡源,外接32.768kHz 晶振。3)RST:复位/片选线,通过把

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

3、示。控制字节的最高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。 3、数据输入输出(I/O) 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位 0 位到高位 7。 DS1302

4、的寄存器 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD码形式,其日历、时间寄存器及其控制字见数据手册。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,命令控

5、制字为 FEH(写)、FFH(读)。 温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。对于我们普通的电子爱好者来说,DS18B20 的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。 如果要更全的资料请搜索“完整的 ds18b20 中文资料.pdf “。3DS18B20 的主要特征: 全数字温度转换及输出。 先进的单总线数据通信。 最高 12 位分辨率,精度可达土

6、 0.5 摄氏度。 12 位分辨率时的最大工作周期为 750 毫秒。 可选择寄生工作方式。 检测温度范围为55C +125C (67F +257F) 内置 EEPROM,限温报警功能。 64 位光刻 ROM,内置产品序列号,方便多机挂接。 多样封装形式,适应不同硬件系统。 DS18B20 引脚功能: GND 电压地 DQ 单数据总线 VDD 电源电压 NC 空引脚DS18B20 工作原理及应用: DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解 18B20 的内部存储器资源。1

7、8B20 共有 2 种形态的存储器资源,它们分别是: 1 ROM 只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线系列编码(DS18B20 的编码是 19H) ,后面 48 位是芯片唯一的序列号,最后 8 位是以上 56 的位的 CRC 码(冗余校验)。数据在出产时设置不由用户更改。DS18B20 共 64 位 ROM。 2 RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共 9 个字节 RAM,每个字节为 8 位。第 1、2 个字节是温度转换后的数据值信息,第 3、4 个字节是用户 EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将

8、被刷新。第 5 个字节则是用户第 3 个 EEPROM 的镜像。第 6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第 9 个字节为前 8 个字节的 CRC 码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据, DS18B20 共 3 位 EEPROM,并在 RAM 都存在镜像,以方便用户操作。4下面是其 C 程序(独家专售):#include#include#define uchar unsigned char #define uint unsigned int#define LCDIO P

9、2sbit DQ=P13;/ds18b20 与单片机连接口sbit rs=P10; sbit rd=P11;sbit lcden=P12;sbit acc0=ACC0; /移位时的第 0 位sbit acc7=ACC7; /移位时用的第 7 位uchar second,minute,hour,day,month,year,week,count=0; uchar ReadValue,num,time; uint tvalue;/温度值uchar tflag;uchar code table= 2010-11-29 MON;uchar code table1= 15:45:00 000.0C;uc

10、har code table2= THUFRISATSUNMONTUEWES;uchar data disdata5;sbit DATA=P01; /时钟数据接口sbit RST=P02; sbit SCLK=P00; sbit menu=P35; /菜单5sbit add=P36; /加一sbit dec=P37; /减一void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay1(uint z)for(;z0;z-);void write_com(uchar com)rs=0;rd=0;lcden=0;P2=co

11、m;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)6rs=1;rd=0;lcden=0;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);delay(5);write_com(0x80);for(num=0;num=1; /将 dat 的各数据位右移 1 位,准备写入下一

12、个数据位void WriteSet1302(uchar Cmd,uchar dat)RST=0; /禁止数据传递SCLK=0; /确保写数居前 SCLK 被拉低RST=1; /启动数据传输delay1(2); /稍微等待,使硬件做好准备Write1302(Cmd); /写入命令字Write1302(dat); /写数据SCLK=1; /将时钟电平置于已知状态RST=0; /禁止数据传递uchar Read1302(void)uchar i,dat;delay(2); /稍微等待,使硬件做好准备for(i=0;i=1; /将 dat 的各数据位右移 1 位,因为先读出的是字节的最低位if(DAT

13、A=1) /如果读出的数据是 1dat|=0x80; /将 1 取出,写在 dat 的最高位9SCLK=1; /将 SCLK 置于高电平,为下降沿读出delay1(2); /稍微等待SCLK=0; /拉低 SCLK,形成脉冲下降沿delay1(2); /稍微等待 return dat; /将读出的数据返回uchar ReadSet1302(uchar Cmd)uchar dat;RST=0; /拉低 RSTSCLK=0; /确保写数居前 SCLK 被拉低RST=1; /启动数据传输Write1302(Cmd); /写入命令字dat=Read1302(); /读出数据SCLK=1; /将时钟电平

14、置于已知状态RST=0; /禁止数据传递return dat; /将读出的数据返回void Init_DS1302(void) WriteSet1302(0x8E,0x00); /根据写状态寄存器命令字,写入不保护指令 10WriteSet1302(0x80,(0/10)4)*10 + (ReadValue&0x0F);ReadValue = ReadSet1302(0x83); minute=(ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x85); hour=(ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x87); day=(ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x89); month=(ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x8d); year=(ReadValue&0x70)4)*10 + (ReadValue&0x0F); ReadValue=ReadSet1302(0x8b);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号