水温加热系统DS18B20+1602+按键+蜂鸣器

上传人:ali****an 文档编号:119061468 上传时间:2020-01-04 格式:DOC 页数:6 大小:41KB
返回 下载 相关 举报
水温加热系统DS18B20+1602+按键+蜂鸣器_第1页
第1页 / 共6页
水温加热系统DS18B20+1602+按键+蜂鸣器_第2页
第2页 / 共6页
水温加热系统DS18B20+1602+按键+蜂鸣器_第3页
第3页 / 共6页
水温加热系统DS18B20+1602+按键+蜂鸣器_第4页
第4页 / 共6页
水温加热系统DS18B20+1602+按键+蜂鸣器_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《水温加热系统DS18B20+1602+按键+蜂鸣器》由会员分享,可在线阅读,更多相关《水温加热系统DS18B20+1602+按键+蜂鸣器(6页珍藏版)》请在金锄头文库上搜索。

1、/*大学生创新项目*/ 项目名称:水温加热系统 / 项目内容:DS18B20温度采集 /1602液晶显示 /蜂鸣器报警 /继电器控制加热开关 /按键输入报警温度指令 / 创建者: Li / 创建日期:14年5月1日 /*/*头文件*/#include#define uchar unsigned char#define uint unsigned intuchar table1= welcome! ;uchar table2=lvliang xueyuan;uchar table3= temp: C;uchar table4=max min ;uchar num,tempmax=40,tempm

2、in=10;uint tempwarn,d=0,h=0;/*IO引脚定义*/sbit rs=P26; /1602_rwsbit rw=P25; /1602_rssbit en=P27; /1602_ensbit dq=P37; /DS18B20sbit k1=P11; / 按键1sbit k2=P12; / 按键2sbit k3=P13; / 按键3sbit k4=P14; / 按键4sbit beep=P15; / 蜂鸣器sbit RELAY=P16; / 继电器/*蜂鸣器延时程序*/void delaybeep(unsigned int i) /蜂鸣器延时 uchar j; while(i

3、-) for(j=0;j0)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

4、;void init()/液晶初始化程序en=0;write_com(0x38);/设置16X2显示,5X7点阵,8位数据口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加1write_com(0x01);/显示清0,数据指针清0/*DS18B20温度采集程序*/void 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

5、=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位数

6、据函数/*温度信号处理程序,把温度信号数据值转换为液晶显示*/convert() uint temp,tmp;float tt;tmp=d; /低8位数据给tmptemp=h; /高8位数据给temptemp=4;table38=(temp/100)+0;/液晶第9位字符为温度的百位数,例如120度的1table39=(temp/10)%10+0;/液晶第10位字符为温度的十位数,例如120度的2table310=(temp%10)+0;/液晶第9位字符为温度的个位数,例如120度的0tmp=tmp&0x0f; /低位温度提取小数数据tt=tmp*0.0625; /小数部分数据转换table3

7、11=.; /显示小数点table312=(uchar)(tt*10)%10+0;/小数点后面的小数数字tempwarn=temp;return tempwarn;/温度值返回/*键盘信号处理程序,将键盘设定数据转换为液晶显示*/void conduct()table44=(tempmax/100)+0;table45=(tempmax/10)+0;table46=(tempmax%10)+0;table412=(tempmin/100)+0;table413=(tempmin/10)+0;table414=(tempmin%10)+0;/*温度报警程序*/void warn(uint tem

8、pwarn)if(tempwarn=tempmax)/如果温度大于设定度并且启动报警 beep=1;delay(250);else beep=0;/*温度加热程序*/void heat(uint tempwarn)if(tempwarn=tempmax) /如果温度大于设定度就停止加热 RELAY=0;/停止加热/*初始化*/void system_Ini() TMOD|= 0x11; TH1 = 0x4c; /11.0592TL1 = 0x00;TR1 = 1; IE =0x8A;/*主程序*/void main() system_Ini();rw=0; /rw直接置0,应该在液晶初始化前,

9、否则断电后再通电就不能显示,切记!init(); /液晶初始化函数write_com(0x80); /0x80表示液晶的第一行开始显示for(num=0;num15;num+)/num16,16表示显示16位write_data(table1num);/液晶显示需要的内容,调用写液晶数据函数,这行显示拼音dengtianmingwrite_com(0x80+0x40); /0x80+0x40表示液晶的第二行开始显示for(num=0;num15;num+)/num16,16表示显示16位write_data(table2num);/液晶显示需要的内容,调用写液晶数据函数,这行显示拼音dengtianmingdelaybeep(3000);while(1)/大循环,不断检测和更新温度 Readtemp();

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

当前位置:首页 > 高等教育 > 其它相关文档

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