基于DS18B20STC89C52单机LCD1602液晶显示测温系统C程序完整版.doc

基于DS18B20STC89C52单机LCD1602液晶显示测温系统C程序完整版.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于DS18B20STC89C52单机LCD1602液晶显示测温系统C程序完整版

基于ds18b20 STC89c52单片机测温系统LCD1602液晶显示 (C程序完整版) 温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。对于我们普通的电子爱好者来说,DS18B20 的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。?? “。 ?? DS18B20 的主要特征: ?? 全数字温度转换及输出。 ?? 先进的单总线数据通信。 ?? 最高 12 位分辨率,精度可达土 0.5摄氏度。 ?? 12 位分辨率时的最大工作周期为 750 毫秒。 ?? 可选择寄生工作方式。 ?? 检测温度范围为–55°C ~+125°C (–67°F ~+257°F) ?? 内置 EEPROM,限温报警功能。 ?? 64 位光刻 ROM,内置产品序列号,方便多机挂接。 ?? 多样封装形式,适应不同硬件系统。? ???? ??? ?DS18B20 引脚功能: ???? ·GND 电压地? ·DQ? 单数据总线??? ·VDD? 电源电压??? ·NC? 空引脚 ???? ??? DS18B20 工作原理及应用: ??? DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解 18B20的内部存储器资源。18B20 共有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(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第 5 个字节则是用户第 3 个 EEPROM的镜像。第 6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第 9 个字节为前 8个字节的 CRC码。EEPROM? 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据, DS18B20共3位EEPROM,并在 RAM 都存在镜像,以方便用户操作。 #includereg51.h #define uchar unsigned char #define uint unsigned int sbit DQ=P3^7;//ds18b20与单片机连接口 sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2; unsigned char code str1[]={temperature: }; unsigned char code str2[]={ }; uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 /*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) {unsigned int i,j; for(i=0;ims;i++) for(j=0;j100;j++); } void wr_com(unsigned char com)//写指令// { delay1ms(1); RS=0; RW=0; EN=0; P2=com; delay1ms(1); EN=1; delay1ms(1); EN=0; } void wr_dat(unsigned char dat)//写数据// { delay1ms(1);; RS=1; RW=0; EN=0; P2=dat; delay1ms(1); EN=1; delay1ms(1); EN=0; } void lcd_init()//初始化设置// {delay1ms(15); wr_com(0x3

您可能关注的文档

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档