当前位置: 首页 > news >正文

基于51单片机温度监控Proteus仿真设计_报警值可调

基于51单片机温度监控Proteus仿真设计_报警值可调

目录标题

  • 基于51单片机温度监控Proteus仿真设计_报警值可调
    • 功能说明
    • 仿真电路
    • 程序
        • 主函数
        • DS18B20温度读取
    • 资料清单

仿真原版本:Proteus7.8

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0012

功能说明

1、显示温度0-99,上电默认高温报警35°,低温报警10°

2、按键说明:

① 按一下KEY1查看高温,调整高温报警值指示灯亮,同时也可以按加减调高温的值。

② 再按一下KEY1查看低温,调整低温报警值指示灯亮同时也可以按加减调低温的值。

③ 程序默认低温报警值要比高温报警低5°再按一下KEY正常显示。

3、温度调整低于低温报警或者高于高温报警值,蜂鸣器响,指示灯闪烁。

资料下载链接

仿真电路

三个按键
KEY1
按一下查看高温设置值,再按一下查看低温设置值,再按一下返回正常显示
KEY2
设置状态下,设置温度+
KEY3
设置状态下,设置温度-
img

程序

img

主函数

/*****主函数*****/
void main(void)
{
	LED=0;			       	//默认关闭报警
	BEEP=0;					//默认关闭蜂鸣器
	LED_SET_HIGHT=0;//默认设置灯暗
	LED_SET_LOW=0;//默认设置灯暗
	check_wendu();
 	check_wendu();
 	for(z=0;z<300;z++)
 	{
  		Disp_init();        
  	}
  	while(1)
  	{

		if(display_mode==0){
			Disp_Temperature();//正常显示
		}else if(display_mode==1){//设置高
			Disp_Temperature_Set_Hight();
		}else if(display_mode==2){//设置低
			Disp_Temperature_Set_Low();

		}
		
		KeyDriver();			  		//键盘驱动扫描
		KeyScan();
		if(key_sacn_cnt<20){//延时效果,不占用CPU,隔一段时间更新温度
			key_sacn_cnt++;
		}else{
			check_wendu();
			key_sacn_cnt=0;
		}
		if(display_mode==0){//正常模式才报警,设置模式不报警
			if(m>=gaowen || m<=diwen){//如果m大于高温值或者小于低温值,开启声光报警
			 	led_sacn_cnt++;
				if(led_sacn_cnt>100){
				  LED=~LED;
			      BEEP=~BEEP; 
				  led_sacn_cnt=0;	 
				}

			}else{
		   		LED=0;
				BEEP=0;
				led_sacn_cnt=1; 
  
			}	
		}else{
			LED=0;
			BEEP=0;
		}
	
  	}
}

DS18B20温度读取

/*****读取温度*****/
unsigned int ReadTemperature(void)
{
	unsigned char a=0;
  	unsigned char b=0;
  	unsigned int t=0;
  	float tt=0;
  	Init_DS18B20();
  	WriteOneChar(0xCC);  //跳过读序号列号的操作
  	WriteOneChar(0x44);  //启动温度转换
  	Init_DS18B20();
  	WriteOneChar(0xCC);  //跳过读序号列号的操作
  	WriteOneChar(0xBE);  //读取温度寄存器
  	a=ReadOneChar();     //读低8位
  	b=ReadOneChar();	 //读高8位
  	t=b;				 //高8位转移到t
  	t<<=8;			     //t数据左移8位
  	t=t|a;			     //将t和a按位或,得到一个16位的数
  	tt=t*0.0625;		 //将t乘以0.0625得到实际温度值
					     //(温度传感器设置12位精度,最小分辨率是0.0625)
  	t= tt*10+0.5;        //放大10倍(将小数点后一位显示出来)输出并四舍五入
  	return(t);		     //返回温度值
}

资料清单

下载链接见文章开头

img

相关文章:

  • 海关 瑞数5.5 找后缀加密入口解析
  • Cadence OrCAD Capture 绘制总线的方法
  • 高薪程序员面试题精讲系列145之前后端如何交互?Swagger你用过吗?
  • MySQL高级十:索引
  • 8月更新| Java on Visual Studio Code
  • 【牛客刷题】每日一练——Java语法的强化
  • 【Java】基础语法 | OOP用法 | 集合框架
  • 架构分析:「转转云平台」的 Kubernetes 实践
  • RHCE之搭建DNS服务器
  • 【进程 进程表】页表通常存在PCB中
  • 关于AbstractQueuedSynchronizer(JDK1.8)的一点理解.
  • 猿创征文 |【算法入门必刷】数据结构-栈(三)
  • 学习编程的第二十五天
  • Java 中 int 和 Integer 的区别,为什么要有包装类?
  • Day42-HttpServletRequest、Cookie
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 10个确保微服务与容器安全的最佳实践
  • 2017 年终总结 —— 在路上
  • chrome扩展demo1-小时钟
  • CSS 专业技巧
  • Cumulo 的 ClojureScript 模块已经成型
  • nfs客户端进程变D,延伸linux的lock
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React 快速上手 - 07 前端路由 react-router
  • tweak 支持第三方库
  • vue-router 实现分析
  • 安装python包到指定虚拟环境
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分享几个不错的工具
  • 普通函数和构造函数的区别
  • 浅谈web中前端模板引擎的使用
  • 使用 Docker 部署 Spring Boot项目
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Spring Batch JSON 支持
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​如何在iOS手机上查看应用日志
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (四)鸿鹄云架构一服务注册中心
  • .bat批处理出现中文乱码的情况
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net 6.0 处理跨域的方式
  • .Net MVC + EF搭建学生管理系统
  • .Net6使用WebSocket与前端进行通信
  • .ui文件相关
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • :“Failed to access IIS metabase”解决方法
  • @Bean有哪些属性
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [Android]一个简单使用Handler做Timer的例子
  • [asp.net core]project.json(2)
  • [AX]AX2012 SSRS报表Drill through action