DS18b20温度采集,液晶1602显示.doc

上传人:夏** 文档编号:548019174 上传时间:2022-08-23 格式:DOC 页数:4 大小:14.83KB
返回 下载 相关 举报
DS18b20温度采集,液晶1602显示.doc_第1页
第1页 / 共4页
DS18b20温度采集,液晶1602显示.doc_第2页
第2页 / 共4页
DS18b20温度采集,液晶1602显示.doc_第3页
第3页 / 共4页
DS18b20温度采集,液晶1602显示.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《DS18b20温度采集,液晶1602显示.doc》由会员分享,可在线阅读,更多相关《DS18b20温度采集,液晶1602显示.doc(4页珍藏版)》请在金锄头文库上搜索。

1、/*Happy Everyday!*/DS18B20温度采集,可以让液晶1602显示出来!呵呵呵!/DS18B20温度采集,LCD1602显示#include#define uchar unsigned char#define uint unsigned intuchar table= temp:;uchar table1=www.E3_;/*IO引脚定义*/sbit rs=P10;sbit rw=P11;sbit en=P12;sbit dq=P32;sbit beep=P15;uchar num;uint tempwarn,d=0,h=0;void delay(uint n)/延时程序wh

2、ile(n0)n-;void write_com(uchar com) /液晶写命令程序rs=0;/等0输入命令en=0;/液晶使能信号初始化P0=com;/把com参数,液晶的命令值送到P0口delay(100);/延时,按照液晶的时序图的要求en=1;/使能信号,0到1表示上升沿打开可以写命令数据到液晶里delay(100);en=0;/使能信号回复void write_data(uchar date) /液晶写数据程序rs=1; /等1表示输入数据en=0;P0=date; /把date参数,液晶的数据送到P0口delay(100);en=1;delay(100);en=0;void i

3、nit()/液晶初始化程序en=0;write_com(0x38);/设置16X2显示,5X7点阵,8位数据口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加1write_com(0x01);/显示清0,数据指针清0void Writebyte(uchar dat)/DS18B20温度芯片的写字节程序uchar j;for(j=0;j=1;uchar Readbyte(void)/DS18B20温度芯片读字节程序uchar i,dat=0;for(i=0;i=1;dq=1;if(dq=1)dat|=0x80;delay(4);re

4、turn dat;void initds18b20(void)/温度芯片初始化程序uchar x=0;dq=1;delay(8);dq=0;delay(80);dq=1;delay(14);x=dq;delay(20);void Readtemp(void)/读温度程序initds18b20();Writebyte(0xcc);Writebyte(0x44);initds18b20();Writebyte(0xcc);Writebyte(0xbe);d=Readbyte();/温度信号的低8位数据函数h=Readbyte();/温度信号的高8位数据函数convert() /温度信号处理程序,把

5、温度信号数据值转换为液晶显示uint temp,tmp;float tt;tmp=d; /低8位数据给tmptemp=h; /高8位数据给temptemp=4;table8=(temp/100)+0;/液晶第9位字符为温度的百位数,例如120度的1table9=(temp/10)%10+0;/液晶第10位字符为温度的十位数,例如120度的2table10=(temp%10)+0;/液晶第9位字符为温度的个位数,例如120度的0tmp=tmp&0x0f; /低位温度提取小数数据tt=tmp*0.0625; /小数部分数据转换table11=.; /显示小数点table12=(uchar)(tt*

6、10)%10+0;/小数点后面的小数数字tempwarn=temp;return tempwarn;/温度值返回void warn(uint tempwarn)/温度报警程序if(tempwarn=25)/如果温度大于25度并且启动报警beep=0;delay(5000);beep=1;delay(50000);void main()rw=0; /rw直接置0,应该在液晶初始化前,否则断电后再通电就不能显示,切记!init(); /液晶初始化函数write_com(0x80+0x40); /0x80+0x40表示液晶的第二行开始显示for(num=0;num15;num+)/num16,16表示显示16位write_data(table1num);/液晶显示需要的内容,调用写液晶数据函数,这行显示拼音dengtianmingwhile(1)/大循环,不断检测和更新温度 Readtemp(); convert(); warn(tempwarn); write_com(0x80); /液晶的第一行开始地址 for(num=0;num15;num+)/显示16位数据,后面的几位没有用到就写不到16,以免后面的几位会出现一个随机数据显示乱码 write_data(tablenum);/液晶需要显示的内容

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

当前位置:首页 > 生活休闲 > 社会民生

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