水温加热系统DS18B20+1602+按键+蜂鸣器_第1页
水温加热系统DS18B20+1602+按键+蜂鸣器_第2页
水温加热系统DS18B20+1602+按键+蜂鸣器_第3页
水温加热系统DS18B20+1602+按键+蜂鸣器_第4页
水温加热系统DS18B20+1602+按键+蜂鸣器_第5页
免费预览已结束,剩余14页可下载查看

付费下载

下载本文档

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

文档简介

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

2、/ / * * uchar table4=max min ; uchar num,tempmax=40,tempmin=10; uint tempwarn,d=0,h=0; /*IO 弓 1脚定义 */ sbit rs=P2A6; sbit rw=P2A5; 1602_rw 1602_rs sbit en=P2A7; 1602_en sbit dq=P3A7; /DS18B20 sbit k1=P1Al; /按键1 sbit k2=P1A2; /按键2 sbit k3=P1A3; /按键3 sbit k4=P1A4; /按键4 sbit beep=P1A5; /蜂鸣器 sbit RELAY=P

3、1A6; /继电器 /* 蜂鸣器延时程序 */ void delaybeep(unsigned int i) / 蜂鸣器延时 uchar j; while(i-) for(j=0;jv115;j+); * 按键设定加热温度 * void scan_key() if(k1= 0) tempmax+;delaybeep(100); if(k2= 0) tempmax-;delaybeep(100); if(k3= 0) tempmin+;delaybeep(100); if(k4= 0) tempmin-;delaybeep(100); */ void delay(uint n) 延时程序 whi

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

5、ay(100); en=1; delay(100); en=0; void init()/液晶初始化程序en=0; write_com(0 x0c); /设置开显示,不显示光标 write_com(0 x06); /写一个字符后地址指针 加1 write_com(0 x01); /显示清0,数据指针清0 /*DS18B20 温度采集程序 void Writebyte(uchar dat)/DS18B20 温度芯片 的写字节程序 uchar j; for(j=0;j=1; (8)AB|ap 4=bp 0=xjeqon 耆畐刑琳直出油禹雷/(P!OA)o乙q肌sp)!U! piOA 耳即ujnaj

6、 心於叩p i08X0=hep (L=bp)j! 4=bp J |,=)ep write_com(0 x38); 阵,8位数据口 /设置16X2显示,5X7点 * S=bp (+!:8!:0=!)OJ g=)Ep! jeqon 者聲月規圍覆 0Za8kSa/(POA)a)Aqpeay Jeqondq=0; delay(80); dq=1; delay(14); x=dq; delay(20); void Readtemp(void)/读温度程序 initds18b20(); Writebyte(Oxcc); Writebyte(0 x44); initds18b20(); Writebyte(

7、Oxcc); Writebyte(Oxbe); d=Readbyte();/温度信号的低8位数据函数 h=Readbyte();/温度信号的高8位数据函数 /* 温度信号处理程序,把温度信号数据 值转换为液晶显示*/ convert。 uint temp,tmp; float tt; tmp=d; /低8位数据给tmp temp=h; /高8位数据给temp tempvv=8; /高8位左移8位 temp|=d; /高低8位数据或起来再赋给 temp if(h&0 x80)!=0) 高 8 位 h&10000000 是否 等0,不等0表示负多少度 table37=-; 把-赋给

8、液晶数组的第8个 元素,表示-号在第8位,1602 行有16个字符 temp=temp-1; temp=temp; else table37=+; temp=4; table38=(temp/100)+0; /液晶第 9 位字 符为温度的百位数,例如120度的1 table39=(temp/10)%10+0; /液晶第 10 位 字符为温度的十位数,例如120度的2 table310=(temp%10)+0; II液晶第 9 位 字符为温度的个位数, 例如120度的0 tmp=tmp&0 x0f; II低位温度提取小数数据 tt=tmp*0.0625; 小数部分数据转换 table31

9、1=.; /显示小数点 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

10、 warn(uint tempwarn) if(tempwarnv=tempmin) 返回的值是温度的 值,如果温度小于设定温度就报警并且启动风冷 设备 beep=1; delay(250); else if(tempwarn=tempmax) 女口果温度大于 设定度并且启动报警 beep=1; delay(250); else beep=0; 温度加热程序 * void heat(uint tempwarn) if(tempwarnv=tempmin) 返回的值是温度的 值,如果温度小于设定度就加热 RELAY=1;开始加热 else if(tempwarn=tempmax) II女口果温度

11、大 于设定度就停止加热 RELAY=0;II停止加热 * void systemni() TMOD|= 0 x11; TH1 = 0 x4c; II11.0592 TL1 = 0 x00; TR1 = 1; * IE =0 x8A; * void main() systemni(); rw=0; /rw直接置0,应该在液晶初始化 前,否则断电后再通电就不能显示,切记! ! init(); 液晶初始化函数 write_com(0 x80); /0 x80表示液晶的第一行开 始显示 for(num=0;num15;num+) num16,16 表 示显示16位 write_data(table1n

12、um); 液晶显示需要的 内容,调用写液晶数据函数,这行显示拼音 dengtianming write_com(0 x80+0 x40); 0 x80+0 x40表示液晶 的第二行开始显示 for(num=0;num15;num+) /num16,16 表 示显示16位 write_data(table2num); 液晶显示需要的 内容,调用写液晶数据函数,这行显示拼音 dengtianming delaybeep(3000); while(1) /大循环,不断检测和更新温度 Readtemp(); convert。; conduct。; warn(tempwarn); heat(tempwarn); write_com(0 x80); /液晶的第一行开始地 址 for(num=0;num15;num+) 显示 16 位数 据,后面的几位没有用到就写不到 16,以免后 面的几位会出现一个随机数据显示乱码 write_data(table3num); 液晶需要显示 的内容 write_com(0 x80+0 x40); / 液晶的第二行 开始地址 for(num=0;num15;num+

温馨提示

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

评论

0/150

提交评论