51单片机DS18B20温度报警器proteus仿真设计_可调上下限
51单片机DS18B20温度报警器proteus仿真设计_可调上下限
(仿真+源码+原理图+报告)
原理图:Altium Designer
仿真版本:proteus 7.8
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0008
目录标题
- 51单片机DS18B20温度报警器proteus仿真设计_可调上下限
- 主要功能
- 仿真图
- 硬件设计:
- 主控制模块
- 显示模块电路
- 数码管显示驱动电路
- 程序设计
- 报告
- 资料清单
主要功能
本设计系统是18b20温度报警系统数码管显示,可设置温度上限高温报警和下限低温报警,报警温度可精确到0.1度,并具有掉电保存功能,数据保存在单片机内部EEPOM中,进入设置界面后如果没有键按下系统会在15秒后自动退出设置界面,人性化的按键设置,按键还具有连加、减功能。
- 按“确定键” :有两种操作方式
1)按下就松开,高温设置、低温设置、正常显示温度,
三个界面按一下就切换一次。
2)按下不松开,进入自动切换,每500ms自动切换一次,
- 按“加键” :有两种操作方式
1)按下就松开,设定的温度值就加0.1度。
2)按下不松开,进入按键连加功能,每500ms自动加一
次,前三次自动加0.1度,之后就是自动加1度。
- 按“减键” :有两种操作方式
1)按下就松开,设定的温度值就减0.1度。
2)按下不松开,进入按键连减功能,每500ms自动减一次,前三次自动减0.1度,之后就是自动减1度。
- 第一次按下“确定键”进入高温报警设置:
按下“加、减”键可设置高温报警,最高设置成99.0度,最低可设置成比低温报警高0.1度。
- 第二次按下“确定键”进入低温报警设置:
按下“加、减”键可设置低温报警,最低设置成1度,最高可设置成比高温报警低0.1度。
- 第三次按下“确定键”进入正常温度显示。
资料下载链接
仿真图
硬件设计:
主控制模块
主控制最系统电路如图4所示。
图4 单片主控电路
显示模块电路
显示采用四位数码管显示,当位选打开时,送入相应的段码,则相应的数码管打开,关掉位选,打开另一个位选,送入相应的段码,则数码管打开,而每次打开关掉相应的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。显示电路如图5
图5 数码管显示
数码管显示驱动电路
三极管8550来驱动4位数码管,不仅简单,而且价格便宜。
程序设计
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的当前温度值,与设定的报警温度比较,其程序流程见图9所示。
通过调用读温度子程序把存入内存储中的整数部分与小数部分开分存放在不的的两个单元中,然后通过调用显示子程序显示出来。
程序代码
/****************主函数***************/
void main()
{beep = 0; //开机叫一声 delay_1ms(150);P0 = P1 = P2 = P3 = 0xff;temperature = read_temp(); //先读出温度的值 init_eeprom(); //开始初始化保存的数据delay_1ms(650); temperature = read_temp(); //先读出温度的值dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取温度的个位显示dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示time_init(); //初始化定时器 while(1){ key(); //按键程序if(key_can < 10){key_with(); //设置报警温度 }if(flag_300ms == 1) //300ms 处理一次温度程序{ flag_300ms = 0; temperature = read_temp(); //先读出温度的值clock_h_l(); //报警函数if(menu_1 == 0){ smg_i = 3;dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取温度的个位显示dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示}}}
}
DS18B20初始化程序流程图
在DS18B20工作之前需要进行初始化,流程图如下:
/*************读取温度的值 读出来的是小数***************/
uint read_temp()
{uint value;uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0x44); //启动一次温度转换命令delay_uint(50); //500usinit_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0xbe); //发出读取暂存器命令EA = 0;low = read_18b20(); //读温度低字节value = read_18b20(); //读温度高字节EA = 1;value <<= 8; //把温度的高位左移8位value |= low; //把读出的温度低位放到value的低八位中value *= 0.625; //转换到温度值 小数return value; //返回读出的温度 带小数
}
报告
摘要
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的温度报警系统,详细描述了利用温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度控制,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度控制系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度的控制,有广泛的应用前景。
**关键词:**单片机;温度控制;STC89C52;DS18B20;
资料清单
资料下载链接(可点击)
51单片机DS18B20温度报警器proteus仿真设计_可调上下限相关推荐
- S0011基于51单片机DS18B20温控风扇仿真设计
基于51单片机DS18B20温控风扇仿真设计 (仿真+原理图+源码+设计报告) 原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程 ...
- 基于51单片机的电子秤proteus仿真设计
本设计仅供学习参考 基于51单片机的电子秤proteus仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/ke ...
- 51单片机全自动洗衣机proteus仿真设计
51单片机全自动洗衣机proteus仿真设计 目录标题 51单片机全自动洗衣机proteus仿真设计 设计介绍 仿真图 电动机驱动模块电路设计 电源模块电路设计 控制按键 进水阀和排水阀控制继电器 程 ...
- 基于51单片机篮球计分器proteus仿真设计
本设计是51单片机篮球计分器proteus仿真(源码+原理图+PCB+仿真+报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0004 资料文件下载 ...
- 基于51单片机手动计步器protues仿真设计
基于51单片机手动计步器protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0021 目录标题 基于51单 ...
- 51单片机简易电阻测量仪仿真设计
51单片机简易电阻测量仪仿真设计( proteus仿真+程序+报告+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0037 51单 ...
- 基于51单片机简易数字示波器Proteus仿真
功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...
- 51单片机 AT24C04+蜂鸣器+Proteus仿真
51单片机 AT24C02+蜂鸣器+Proteus仿真 Proteus仿真截图 由于是音频效果,只能以截图展示基本电路 实例代码 #include <reg52.h> #include & ...
- 51单片机模拟电子琴+Proteus仿真
51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...
最新文章
- 【转载】解决Apache2+PHP上传文件大小限制的问题
- percent之集合
- conda 常用操作 镜像管理
- oracle connect by用法
- 坚实原则:Liskov替代原则
- 264 解码之 yuv
- java 数据库外键查询_oracle中查询所有外键引用到某张表的记录
- 解决E: Package ‘libmysqlclient-dev‘ has no installation candidate报错
- vapor mysql_vapor MySQL 作为Cache
- c语言程序设计50例(经典收藏),C语言程序设计50例(经典收藏)
- 华为G610开机第一屏G3替换教程
- Vimium 是做什么的?不得不服
- LPC1768 PWM1输出PWM示例
- 怎样的年轻化法则,让这个品牌四年净利润复合增速达30%
- 华为云迁移工具推荐最佳实践:Xen虚拟化迁移到华为云
- [附源码]JAVA+ssm计算机毕业设计高校体育馆管理信息系统(程序+Lw)
- APS系统如何让企业实现“多赢”?看高博通信是怎么做的
- 关于周杰伦的歌曲的启发
- 如何搞定不懂IT的领导
- 引用hammer左右滑动后上下滚动失效
热门文章
- 树莓派 小屏幕_树莓派打造复古游戏主机Retropie
- Hacking Diablo II之外挂的工作原理
- 数据存储单位转换,b、byte、KB、MB、GB、TB转换工具类
- 将老人拉出无声的世界,AI是怎么做的?
- java页面字体设置颜色_java 设置字体颜色字体 窗体设置图片背景
- com.mchange.v2.c3p0.jboss.C3P0PooledDataSource cannot be cast to javax解决办法
- 组合控件——升级版翻页——下拉刷新布局SwipeRefreshLayout
- HQChart使用教程94-如何创建报价列表
- apache的开源工具common-fileupload实现文件上传和下载
- fcpx怎么合成延时摄影_利用FCPX制作延时视频