基于lcd1602温度报警器.pptVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
带液晶显示的温度报警器 xx xxx 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 (wendu<0x0fff) 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) { disbuf[0]=hou/10+48; disbuf[1]=hou%10+48; disbuf[2]=':'; disbuf[3]=min/10+48; disbuf[4]=min%10+48; disbuf[5]=':'; disbuf[6]=sec/10+48; disbuf[7]=sec%10+48; 显示温度上下限值画面 unsigned char disbuf1[16]={"HIGH is: "}; unsigned char disbuf2[16]={"LOW is: "}; keynum==1,进入此画面 void display() { unsigned char i; wr_com(0x80); for(i=0;i<16;i++) { if(keynum==1) wr_dat(disbuf1[i]); } wr_com(0xc0); for(i=0;i<16;i++) { if(keynum==1) wr_dat(disbuf2[i]); } 按键切换画面 定义一变量unsigned char keynum,通过判断keynum的值来选择对应的画面 Keynum==0 进入开机画面 Keynum==1 进入温度显示画面 Keynum==2 进入时间显示

您可能关注的文档

文档评论(0)

如果.可以. + 关注
官方认证
文档贡献者

坚持分享有价值的资源!

认证主体汉中恒朱网络技术有限公司
IP属地陕西
统一社会信用代码/组织机构代码
91610726MA6YWAFG7U

1亿VIP精品文档

相关文档