温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本

上传人:876****10 文档编号:141757048 上传时间:2020-08-12 格式:DOC 页数:14 大小:71.50KB
返回 下载 相关 举报
温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本_第1页
第1页 / 共14页
温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本_第2页
第2页 / 共14页
温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本_第3页
第3页 / 共14页
温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本_第4页
第4页 / 共14页
温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本》由会员分享,可在线阅读,更多相关《温传感器DSBATCS单片机LCD液晶显示测温+可调时钟系统C程序完整版本(14页珍藏版)》请在金锄头文库上搜索。

1、基于ds18b20 STC89s51单片机测温系统LCD1602液晶可调时钟+温度显示(C程序完整版)温度传感器地种类众多,在应用与高精度、高可靠性地场合时 DALLAS(达拉斯)公司生产地 DS18B20 温度传感器当仁不让.超小地体积,超低地硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎.对于我们普通地电子爱好者来说,DS18B20 地优势更是我们学习单片机技术和开发温度相关地小产品地不二选择.了解其工作原理和应用可以拓宽您对单片机开发地思路.如果要更全地资料请搜索“完整地ds18b20中文资料.pdf“.矚慫润厲钐瘗睞枥庑赖。 DS18B20 地主要特征: 全

2、数字温度转换及输出. 先进地单总线数据通信. 最高 12 位分辨率,精度可达土 0.5摄氏度. 12 位分辨率时地最大工作周期为 750 毫秒. 可选择寄生工作方式. 检测温度范围为55C +125C (67F +257F) 内置 EEPROM,限温报警功能. 64 位光刻 ROM,内置产品序列号,方便多机挂接. 多样封装形式,适应不同硬件系统.聞創沟燴鐺險爱氇谴净。 DS18B20 引脚功能: GND 电压地 DQ 单数据总线 VDD 电源电压 NC 空引脚残骛楼諍锩瀨濟溆塹籟。 DS18B20 工作原理及应用: DS18B20 地温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强

3、.其一个工作周期可分为两个部分,即温度检测和数据处理.在讲解其工作流程之前我们有必要了解 18B20地内部存储器资源.18B20 共有2种形态地存储器资源,它们分别是: 1 ROM 只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线系列编码(DS18B20 地编码是19H) ,后面48 位是芯片唯一地序列号,最后 8位是以上 56地位地 CRC码(冗余校验).数据在出产时设置不由用户更改.DS18B20 共 64 位 ROM. 2 RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节 RAM,每个字节为 8 位.第1、2 个字节是温度转换后

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

5、#define uint unsigned int#define LCDIO P2sbit DQ=P37;/ds18b20与单片机连接口sbit rs=P30; sbit rd=P31;sbit lcden=P32;sbit s1=P13;sbit s2=P14;sbit s3=P15;uchar data disdata5;uint tvalue;/温度值uchar tflag;uchar count,s1num;char miao,shi,fen,day=18,mon=11,week=0;uint year=2010;uchar code table= 2010-11-18 THU;uch

6、ar code table1=00:00:00 000.0 C;uchar code table2= THUFRISATSUNMONTUEWES;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)rs=0;rd=0;lcden=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;rd=0;lcden=0;P2=date;delay(5);lcden=1;delay(5);lcden=

7、0;void init()uchar num;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num15;num+)write_date(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num16;num+)write_date(table1num);delay(5);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;

8、TR0=1;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void write_md(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);void write_year(uchar ad

9、d,uint date)uchar qian,bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%1000%100/10;ge=date%1000%100%10;write_com(0x80+add);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);void write_week(uchar add,uchar date)uchar num;write_com(0x80+add);for(num=0;num3;num+)

10、write_date(table2date);date+;delay(5);void display() mon+;if(mon=13)mon=1;year+;write_year(1,year);write_md(6,mon);void keyscan()rd=0;if(s1=0)delay(5);if(s1=0) s1num+;/全局变量while(!s1);if(s1num=1)/调时间时/ TR0=0;/定时器停止/write_com(0x80+4); write_com(0x0f);/光标闪射/if(s1num=2)/调时间时/write_com(0x80+7);if(s1num=3

11、)/调时间时/write_com(0x80+10);if(s1num=4)/调时间时/write_com(0x80+14);if(s1num=5)/调时间时/write_com(0x80+0x40+1);if(s1num=6)/调时间分/write_com(0x80+0x40+4);if(s1num=7)/调时间秒write_com(0x80+0x40+7);/光标位置/if(s1num=8)s1num=0;/s1num清零/write_com(0x0c);/光标不闪烁/TR0=1;/定时器又开始/ if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2)

12、;if(s1num=7)miao+;if(miao=60)miao=0;write_sfm(6,miao);write_com(0x80+0x40+7);if(s1num=6)fen+;if(fen=60)fen=0;write_sfm(3,fen);write_com(0x80+0x40+4);if(s1num=5)shi+;if(shi=24)shi=0;write_sfm(0,shi);write_com(0x80+0x40+1);if(s1num=3)week=week+3;if(week=21) week=0; day+;if(mon=1)|(mon=3)|(mon=5)|(mon=7)|(mon=8)|(mon=10)|(mon=12)&(day=32)彈贸摄尔霁毙攬砖卤庑。 day=1; if(mon=4)|(mon=6)|(mon=9)|(mon=11)&(day=31)謀荞

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

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