欢迎来到天天文库
浏览记录
ID:25171000
大小:49.01 KB
页数:4页
时间:2018-11-17
《ds18b20温度采集,液晶1602显示》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、/*****************HappyEveryday!**************/DS18B20温度采集,可以让液晶1602显示出来!呵呵呵!//DS18B20温度采集,LCD1602显示#include#defineucharunsignedchar#defineuintunsignedintuchartable[]={"temp:"};uchartable1[]={"www.E3_china.cn"};/********IO引脚定义**********/sbitrs=P1^0;sbitrw=P1^1;sbiten=P1^2;sbitdq=P3^2;s
2、bitbeep=P1^5;ucharnum;uinttempwarn,d=0,h=0;voiddelay(uintn)//延时程序{while(n>0)n--;}voidwrite_com(ucharcom)//液晶写命令程序{rs=0;//等0输入命令en=0;//液晶使能信号初始化P0=com;//把com参数,液晶的命令值送到P0口delay(100);//延时,按照液晶的时序图的要求en=1;//使能信号,0到1表示上升沿打开可以写命令数据到液晶里delay(100);en=0;//使能信号回复}voidwrite_data(uchardate)//液晶写数据程序{rs=1;
3、//等1表示输入数据en=0;P0=date;//把date参数,液晶的数据送到P0口delay(100);en=1;delay(100);en=0;}voidinit()//液晶初始化程序{en=0;write_com(0x38);//设置16X2显示,5X7点阵,8位数据口write_com(0x0c);//设置开显示,不显示光标write_com(0x06);//写一个字符后地址指针加1write_com(0x01);//显示清0,数据指针清0}voidWritebyte(uchardat)//DS18B20温度芯片的写字节程序{ucharj;for(j=0;j<8;j++){
4、dq=0;dq=dat&0x01;delay(5);dq=1;dat>>=1;}}ucharReadbyte(void)//DS18B20温度芯片读字节程序{uchari,dat=0;for(i=0;i<8;i++){dq=0;dat>>=1;dq=1;if(dq==1)dat
5、=0x80;delay(4);}returndat;}voidinitds18b20(void)//温度芯片初始化程序{ucharx=0;dq=1;delay(8);dq=0;delay(80);dq=1;delay(14);x=dq;delay(20);}voidReadtemp(void)//读温度程序{
6、initds18b20();Writebyte(0xcc);Writebyte(0x44);initds18b20();Writebyte(0xcc);Writebyte(0xbe);d=Readbyte();//温度信号的低8位数据函数h=Readbyte();//温度信号的高8位数据函数}convert()//温度信号处理程序,把温度信号数据值转换为液晶显示{uinttemp,tmp;floattt;tmp=d;//低8位数据给tmptemp=h;//高8位数据给temptemp<<=8;//高8位左移8位temp
7、=d;//高低8位数据或起来再赋给tempif((h&0x80)
8、!=0)//高8位h&10000000是否等0,不等0表示负多少度{table[7]='-';//把-赋给液晶数组的第8个元素,表示-号在第8位,1602一行有16个字符temp=temp-1;temp=~temp;}elsetable[7]='+';temp>>=4;table[8]=(temp/100)+'0';//液晶第9位字符为温度的百位数,例如120度的1table[9]=(temp/10)%10+'0';//液晶第10位字符为温度的十位数,例如120度的2table[10]=(temp%10)+'0';//液晶第9位字符为温度的个位数,例如120度的0tmp=tmp&0x
9、0f;//低位温度提取小数数据tt=tmp*0.0625;//小数部分数据转换table[11]='.';//显示小数点table[12]=((uchar)(tt*10))%10+'0';//小数点后面的小数数字tempwarn=temp;returntempwarn;//温度值返回}voidwarn(uinttempwarn)//温度报警程序{if(tempwarn<=16)//返回的值是温度的值,如果温度小于20度就报警并且启动风冷设备{beep=0;
此文档下载收益归作者所有