基于lcd1602温度报警器.ppt_第1页
基于lcd1602温度报警器.ppt_第2页
基于lcd1602温度报警器.ppt_第3页
基于lcd1602温度报警器.ppt_第4页
基于lcd1602温度报警器.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

,1、显示温度值画面 2、显示走时画面 3、显示温度上下限值画面,1、报警功能 2、按键功能 3、画面切换 4、附加功能,功 能,任务与要求,void main() TMOD=0x01; TH0=15536/256; TL0=15536%256; TR0=1; EA=1; ET0=1; lcd_init(); diy(); while(1) key(); anjian(); read_temp; been(); ds1820disp(); ,主函数,开始,定时器初始化,Lcd初始化,自定义字符,按键切换画面,读取温度,蜂鸣器模块,显示,温度采集,温度处理,送lcd显示,显示温度值画面,温度采集函数入口,DS18B20复位,存在否,ROM操作命令(0xcc),RAM操作命令(0x44),延时等待,DS18B20复位,存在否,ROM操作命令(0xcc),RAM操作命令(0xbe),数据传输,Y,N,Y,N,温度采集函数入口,read_temp () uchar a,b; ds1820rst(); ds1820wr(0xcc); /*跳过读序列号*/ ds1820wr(0x44); /*启动温度转换*/ ds1820rst(); ds1820wr(0xcc); /*跳过读序列号*/ ds1820wr(0xbe); /*读取温度*/ a=ds1820_read(); b=ds1820_read();,wendu = b; wendu=8; wendu = wendu |a; if (wendu0x0fff) flag_zf=0; else wendu=wendu+1; flag_zf= 1; wendu =wendu*(0.625); /温度值扩大10倍,精确到1位小数 return(wendu); ,* 读 取 温 度 值 并 转 换 *,显 示 温 度,设置C,Wendu/1000+0x30 取百位数,Wendu%1000/100+0x30 取十位数,wendu%1000/100/10+0x30 取个位数,设置小数点位,wendu%10+0x30 取十分位数,显示wendu,判断温度符号标志位=0,Y,不显示符号,显示号,百位数=0,显 示,不显示0,百位数=0,显示,不显示0,Y,N,N,Y,N,显示走时画面,定时1s到,秒加1,秒是否到60,秒清0 分加1,分是否=60,分清0 时加1,时=24,时间清0,日加1,Y,N,Y,N,Y,N,Y,返回,N,利用定时器实现1s定时, (定义标志位flag_1s 来判断定时时间是否到),,拆字,void chaifen(void) disbuf0=hou/10+48; disbuf1=hou%10+48; disbuf2=:; disbuf3=min/10+48; disbuf4=min%10+48; disbuf5=:; disbuf6=sec/10+48; disbuf7=sec%10+48;,显示温度上下限值画面,unsigned char disbuf116=“HIGH is: “; unsigned char disbuf216=“LOW is: “;,keynum=1,进入此画面,void display() unsigned char i; wr_com(0x80); for(i=0;i16;i+) if(keynum=1) wr_dat(disbuf1i); ,wr_com(0xc0); for(i=0;i16;i+) if(keynum=1) wr_dat(disbuf2i); ,按键切换画面,定义一变量unsigned char keynum,通过判断keynum的值来选择对应的画面,Keynum=0,进入开机画面,Keynum=1,进入温度显示画面,Keynum=2,进入时间显示画面,Keynum=3,进入温度上下限值画面,Keynum=4,进入结束画面; Keynum=0,void anjian () if(!k2) high+; if (high99) high=0; if(!k3) low+; if (low20) low=0; ,sbit k2=P33; sbit k3=P34;,Uchar high=230; Uchar low=100;,按键自加上下限温度,上限自加一,判断K3是否按下,上限值99,上限值清零,判断K2是否按下,下限自加一,下限值20,下限值清零,返 回,Keynum =2,Y,Y,N,N,报警功能,sbit sound=P20;,void been() if(tvalue/10high) sound=0;delay1ms(500);sound=1; else sound=1;,蜂鸣器报警,延时500ms,判断温度是否过限,蜂鸣器停止报警,开始,返回,附加功能,3、一轮结束画面,1、开机画面,2、校时校分,wr_com(0x87); /显示位置 for(num=0;num3;num+) wr_dat(tab5num); wr_com(0xc7); /显示位置 for(num1=0;num13;num1+) wr_dat(tab6num1); delay1ms(3000);,unsigned char code tab1 = 0x00,0x06,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f, 0x00,0x00,0x00,0x11,0x1b,0x1f,0x1f,0x1f, 0x00,0x0c,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f, 0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00, 0x1f,0x1f,0x1f,0x1f,0x1f,0x0e,0x04,0x00, 0x1e,0x1c,0x18,0x10,0x00,0x00,0x00,0x00;,开机画面,unsigned char code tab5 =0x01,0x02,0x03; unsigned char code tab6 =0x04,0x05,0x06;,一轮结束画面,unsigned char code disbuf516=“ everyone is “; unsigned char code disbuf716=“ NO.one! “;,keynum=4进入开机画面,wr_com(0xc0); for (i=0;i16;i+) if(keynum=4) wr_dat(disbuf5i); unsigned char i; wr_com(0x80); for(i=0;i16;i+) if(keynum=4) wr_dat(disbuf7i); ,校时校分,Keynum =3,校时,校分

温馨提示

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

评论

0/150

提交评论