DS18b20温度采集,液晶1602显示.doc_第1页
DS18b20温度采集,液晶1602显示.doc_第2页
DS18b20温度采集,液晶1602显示.doc_第3页
DS18b20温度采集,液晶1602显示.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*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)/延时程序while(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 init()/液晶初始化程序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);return 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() /温度信号处理程序,把温度信号数据值转换为液晶显示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*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); /液晶的第一行开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论