已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
功能:本实验可以正常利用DS18B20测量温度并显示,当温度高于所设温度上限时,蜂鸣器报警,高温灯亮;当温度低于所设温度下限时,继电器工作,D2给DS18B20加热。本实验利用DS18B20中的EEPROM,所以每次手动调节好的温度断电后可以保存,很方便,也是本实验的亮点。Protues下仿真通过,用Keil编写的程序正常显示温度:高温:低温:程序:(基于51单片机,keil编写,protues下运行)由于程序长,所以使用封装函数LCD1602.h。.H文件#ifndef _LCD1602_H_#define _LCD1602_H_#include#include#define uchar unsigned char#define uint unsigned int#define DATPORT P0sbit rs=P24;sbit rw=P25;sbit e =P26;void delay(uint xx);void write_com(uchar com);void write_dat(uchar dat);void lcd_init();void disp_assic(uchar *dat,uchar loc,uchar len); #endif.C文件#include LCD1602.hvoid delay(uint xx)while(xx-);void write_com(uchar com)e=0;rs=0;rw=0;delay(50);DATPORT=com;e=1;delay(50);e=0;delay(50);void write_dat(uchar dat)e=0;rs=1;rw=0;delay(50);DATPORT=dat;e=1;delay(50);e=0;delay(50);void lcd_init()write_com(0x38);delay(50);write_com(0x38); delay(50);write_com(0x38); delay(50);write_com(0x06); delay(50);write_com(0x0c);delay(50);write_com(0x01); delay(50);void disp_assic(uchar *dat,uchar loc,uchar len)uchar i;write_com(loc);for(i=0;ilen;i+)write_dat(dati);主函数#includeLCD1602.hsbit sck=P10;sbit sda=P11;sbit DQ=P34;sbit red=P20;sbit green=P21;sbit yellow=P22;sbit led_sheng=P36;sbit beep=P37;sbit kongzhi=P14;sbit shengwen=P15;sbit jiangwen=P16;uchar data result5;uint t1,t2;uchar tflag,i;uchar one,two,three,four;uchar aa2;uchar set_hightemp=33,set_lowtemp=15;uchar code str1=Temperature is: ;uchar code str2=;uchar code str3=set_hightemp: ;uchar code str4=set_lowtemp: ;void delay_1ms(uchar tt)uint i,j;for(i=0;itt;i+)for(j=0;j0;t-) DQ=0;value=1;DQ=1;if(DQ)value|=0x80; delay(10); return (value);void write_byte(uchar dat) /写一个字节 uchar t=0; for (t=8; t0; t-) DQ=0; DQ=dat&0x01; delay(10); DQ=1; dat=1; uchar start_test() /启动温度测试模块,并收集数据uchar a,b;ds18b20_init(); /复位总线 write_byte(0xCC); /忽略ROM匹配操作write_byte(0x44); /温度转换命令 delay(300); ds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0xBE); /读取RAM寄存器 a=read_byte(); /读取第一字节b=read_byte(); /读取第二字节t1=b;t1=8;t1=t1|a; if(t1 0; j-) beep = beep; delay_1ms(10); delay_1ms(10); void set_xianshi(uint ok) if(ok=1)disp_assic(str3,0x80,14);elsedisp_assic(str4,0x80,14);write_com(0x8d);write_dat(aa0);write_com(0x8e);write_dat(aa1);if(shengwen=0)delay_1ms(5);if(shengwen=0)if(ok=1)set_hightemp+;elseset_lowtemp+;while(!shengwen);if(jiangwen=0)delay_1ms(5);if(jiangwen=0)if(ok=1)set_hightemp-;elseset_lowtemp-;while(!jiangwen); void set_temp()uchar ok=0;if(kongzhi=0)delay_1ms(5);if(kongzhi=0)ok+;while(!kongzhi);while(ok=1)aa0=set_hightemp/10+0x30;aa1=set_hightemp%10+0x30;set_xianshi(1);if(kongzhi=0)delay_1ms(5);if(kongzhi=0)ok+;while(!kongzhi);delay_1ms(5);while(ok=2)aa0=set_lowtemp/10+0x30;aa1=set_lowtemp%10+0x30;set_xianshi(2);if(kongzhi=0)delay_1ms(5);if(kongzhi=0)ok=0;while(!kongzhi);delay_1ms(5);disp_assic(str1,0x80,16);void set_led()if(t1/10=set_hightemp)red=0;green=1;yellow=1;delay_1ms(10);baojing();else if(t1/10set_lowtemp) red=1;green=1;yellow=0;delay_1ms(10);else if(set_lowtemp=(t1/10)&(t1/10)set_hightemp)red=1;green=0;yellow=1;delay_1ms(10);void led_shengwen() led_sheng=0;if(t1/10set_lowtemp) for(i=0;i10;i+) led_sheng=1; delay_1ms(100); void save_temp() /保存温度上下线到EEPROMds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0x4E); /写暂存存储器命令(RAM)write_byte(set_hightemp); /写第三字节write_byte(set_lowtemp); /写第四字节ds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0x48); /复制暂存存储器delay(300);uchar call_temp1()ds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0x44); /温度转换命令write_byte(0xB8); /重新调出EEPROM的值 delay(300); ds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0xbe); /读取RAM寄存器one=read_byte(); /读取第一字节two=read_byte(); /读取第二字节three=read_byte(); /读取第三字节four=read_byte(); /读取第四字节return(three);uchar call_temp2()ds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0x44); /温度转换命令write_byte(0xB8); /重新调出EEPROM的值 delay(300); ds18b20_init();write_byte(0xCC); /忽略ROM匹配操作write_byte(0xbe); /读取RAM寄存器one=read_byte(); /读取第一字节two=read_byte(); /读取第二字节three=read_byte(); /读取第三字节four=read_byte(); /读取第四字节return(four);void main() uchar xx;lcd_i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年幼儿园中班幼儿生活指导
- 2026年幼儿情绪情感发展策略研究
- 2026年大班幼师班级工作计划下学期
- 2026年幼儿园大班安全教学活动
- 2026年数学教学发展趋势分析报告
- 2026年大学生全校大型活动方案设计
- 2026年幼儿园教师班务工作计划
- 2026年校园文化建设设计理念
- 2026年银行国庆节主题活动方案
- 2026年陕西省榆林市靖边县中考英语模拟试卷(含详细答案解析)
- JG/T 210-2018建筑内外墙用底漆
- 小学科学探究活动的心得体会
- 《应用统计学(第六版)(微课版)》 课件 卢冶飞 第1-5章 绪论、数据与数据收集 -参数估计
- 统编版四年级语文下册词句段运用(含答案)
- 为什么要上一个好大学
- 毒品上瘾原理结合生物神经体液调节
- 《危险货物港口作业重大事故隐患判定标准》知识培训
- 制造业混料培训
- 【高分复习笔记】孙广仁《中医基础理论》(第9版)笔记与考研真题详解
- 液化气槽车消防培训
- 中考历史100个常考知识点
评论
0/150
提交评论