基于单片机的热敏电阻测温设计

2023-11-19

基于单片机的热敏电阻测温设计

1.基本功能
1)具有声光报警功能;
2)使用液晶显示;
3)温度上、下限报警值设定;温度上、下限报警;
4)手动方式设定温度上下限;

总体方案设计

温度控制系统主要由温度传感器(热敏电阻),A/D转换器,单片机(STC12C5A60S2),按键设置和液晶显示显示组成。

主函数

void main()
{
	float Rad;
	LCD1602_cls();
	TMOD=0x01;
	TH0=0x4c;
	TL0=0x00;
	ET0=1;
	TR0=1;
	EA=1;
	temp_h=byte_read(0x2000);
	temp_l=byte_read(0x2200);
	if(temp_h>99||temp_l>99||temp_l>=temp_h)
	{
		temp_h=30;
		temp_l=10;
	}
	while(1)
	{
		zhi=(float)read2543(0)/819.0;
		Rad=zhi/((5.0-zhi)/10000.0);
		temp=(int)(temp * 0.5) + (TempCalculate(Rad,3950.0,0,10000.0) * 0.5);
		show();		 //显示函数
		key();		 //按键处理程序
		proc();		 //超限处理程序
	}
}

按键检测

void key()
{

	if(!key_1)
	{
		delay(888);
		if(!key_1)
		{
			state=(state+1)%3;
			while(!key_1);
		}
	}
	if(state!=0)
	{
		if(!key_2)
		{
			delay(888);
			if(!key_2)
			{
				while(!key_2) show();
				switch(state)
				{
					case 1:
					if(temp_h<99)temp_h++;
					SectorErase(0x2000);	 //保存上限值
					byte_write(0x2000,temp_h);
					break;
					case 2:
					if(temp_h>temp_l+1)temp_l++;	
					SectorErase(0x2200);	 //保存上限值
					byte_write(0x2200,temp_l);
					break;
				}
			}
		}
		if(!key_3)
		{
			delay(888);
			if(!key_3)
			{
				while(!key_3) show();
				switch(state)
				{
					case 1:
					if(temp_h>temp_l+1)temp_h--;
					SectorErase(0x2000);	 //保存上限值
					byte_write(0x2000,temp_h);
					break;
					case 2:
					if(temp_l>-40)temp_l--;
					SectorErase(0x2200);	 //保存上限值
					byte_write(0x2200,temp_l);
					break;

				}
			}
		}
	}
}

数据显示

void show()			//显示数据
{

		LCD1602_write(0,0x80);
		LCD1602_writebyte("Temp:");
		if(temp>=0)
		{
		   	if(temp>99)LCD1602_write(1,0x30+temp/100%10);
			else LCD1602_writebyte(" ");
			if(temp>9)LCD1602_write(1,0x30+temp/10%10);
			else LCD1602_writebyte(" ");
			LCD1602_write(1,0x30+temp%10);
		}else
		{
			LCD1602_writebyte("-");
			if(temp*-1>9)LCD1602_write(1,0x30+(temp*-1)/10%10);
			else LCD1602_writebyte(" ");
			LCD1602_write(1,0x30+(temp*-1)%10);	
		}
		LCD1602_write(1,0xdf);
		LCD1602_writebyte("C   ");



	 	LCD1602_write(0,0xC0);
		LCD1602_writebyte("H:");
		if(state==1&&s1==1)
		{
			LCD1602_writebyte("   ");
		}else
		{


			if(temp_h>=0)
			{
			   	if(temp_h>99)LCD1602_write(1,0x30+temp_h/100%10);
				else LCD1602_writebyte(" ");
				if(temp_h>9)LCD1602_write(1,0x30+temp_h/10%10);
				else LCD1602_writebyte(" ");
				LCD1602_write(1,0x30+temp_h%10);
			}else
			{
				LCD1602_writebyte("-");
				if(temp_h*-1>9)LCD1602_write(1,0x30+(temp_h*-1)/10%10);
				else LCD1602_writebyte(" ");
				LCD1602_write(1,0x30+(temp_h*-1)%10);	
			}
		}
		LCD1602_write(1,0xdf);
		LCD1602_writebyte("C L:");
		if(state==2&&s1==1)
		{
			LCD1602_writebyte("   ");
		}else
		{
//			LCD1602_write(1,0x30+temp_l/10%10);
//			LCD1602_write(1,0x30+temp_l%10);

			if(temp_l>=0)
			{
			   	if(temp_l>99)LCD1602_write(1,0x30+temp_l/100%10);
				else LCD1602_writebyte(" ");
				if(temp_l>9)LCD1602_write(1,0x30+temp_l/10%10);
				else LCD1602_writebyte(" ");
				LCD1602_write(1,0x30+temp_l%10);
			}else
			{
				LCD1602_writebyte("-");
				if(temp_l*-1>9)LCD1602_write(1,0x30+(temp_l*-1)/10%10);
				else LCD1602_writebyte(" ");
				LCD1602_write(1,0x30+(temp_l*-1)%10);	
			}
		}
		LCD1602_write(1,0xdf);
		LCD1602_writebyte("C");
	
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于单片机的热敏电阻测温设计 的相关文章

  • C语言初识

    include
  • 2012.11.23

    刚体变换基本上告一段落 现在开始封装这一部分 以便于重用
  • 成功解决 vscode远程调试python

    welcome to my blog 微软新出的插件 非常方便远程调试 不需要改动代码 简单9步 配置远程调试环境 第一步 按ctrl shift x 输入remote development 安装 第二步 按ctrl shift p 输入
  • MFC进程退出

    MFC软件关闭 进程退出 BOOL CMainFrame DestroyWindow TODO 在此添加专用代码和 或调用基类 m bRunThreadStart 0 while m bRunThreadState m bReadyStat
  • JavaRMI入门详细

    Java RMI入门 定义 RMI 远程方法调用 Remote Method Invocation 它支持存储在不同地址空间的程序级对象之间彼此进行通信 实现远程对象之间的无缝远程调用 Java RMI 1 用于不同虚拟机之间的通信 2 这
  • 毕设分享 自动化专业毕设题目选题推荐 - 单片机 嵌入式 stm32

    文章目录 1前言 2 如何选题 3 选题方向 2 1 物联网方向 2 2 嵌入式开发方向 2 3 人工智能方向 2 4 算法研究方向 2 4 学长作品展示 1前言 近期不少学弟学妹询问学长关于自动化专业相关的毕设选题 学长特意写下这篇文章以

随机推荐

  • 调用拷贝构造函数的几种情况(附面试题)

    1 深拷贝和浅拷贝 拷贝构造函数的使用 有时候需要自己定义拷贝构造函数 以避免浅拷贝问题 在什么情况下需要用户自己定义拷贝构造函数 一般情况下 当类中成员有指针变量 类中有动态内存分配时常常需要用户自己定义拷贝构造函数 在什么情况下系统会调
  • MATLAB之LU分解法(十)

    LU分解 1 LU分解的基础知识 矩阵的LU分解又称为矩阵的三角分解 即将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U 即 A L U A LU A LU 其在方程组的求解和求矩阵的逆有许多应用 LU分解的求解命令是lu 基本使用格式如
  • python爬取(自动化)豆瓣电影影评,并存储。

    from selenium import webdriverfrom selenium webdriver import ActionChainsimport timedriver webdriver Chrome r C Program
  • [Qt]QObject::connect: Cannot queue arguments of type 'QString&'的解决方法

    参考 https blog csdn net tokary article details 5777141 遇到的问题是 在主线程和子线程中 通过信号与槽发送QString 遇到 QObject connect Cannot queue a
  • Ubuntu20.04中VSCode配置C++以及分文件编写配置

    网上搜索了很多文章 一直显示找不到自定义的头文件 今天总算捣鼓出来了 参考文章 https www cnblogs com icmzn p 16244665 html https blog csdn net qq 39048131 arti
  • python os.walk()方法使用详解

    os walk方法是python中帮助我们高效管理文件 目录的工具 在深度学习中数据整理应用的很频繁 如数据集的名称格式化 将数据集的按一定比例划分训练集train set 测试集test set 1 导入文件 使用os walk方法前需要
  • Unity使用Newtonsoft报错的解决方案

    文章目录 Unity 使用 Newtonsoft 报错的解决方案 问题描述 解决方法 方法一 使用 Unity 的 Package Manager 自动导入 方法二 访问 GitHub 下载 unitypackage 文件手动导入 Unit
  • Win7环境下robotframework环境搭建(含安装包下载地址)

    本文记录在Windows环境下使用robotframework搭建自动化测试环境 1 安装robotframework依赖的语言环境 Python2 7 Robot Framework是一款python编写的功能自动化测试框架 运行依赖于p
  • 解决Java JPA Es索引时间戳字符串格式比较问题

    说明 在Java开发中常见使用 yyyy MM dd HH mm ss 来格式化时间戳 例如 ApiModelProperty 订单开始日期 JsonFormat pattern yyyy MM dd HH mm ss JSONField
  • 华为云云耀云服务器L实例评测|在云耀云服务器L实例上部署battle-city坦克大战小游戏

    华为云云耀云服务器L实例评测 在云耀云服务器L实例上部署battle city坦克大战小游戏 一 前言 1 1 云耀云服务器L实例简介 1 2 battle city坦克大战小游戏简介 二 本次实践介绍 2 1 本次实践简介 2 2 本次环
  • 数据结构与算法书籍推荐

    学习数据结构与算法 还是很有必要看几本相关的书籍 但根据不同基础的人 合适看的书也不一样 因此 针对不同层次 不同语言的人 推荐几本市面上口碑不错的书 1 入门级 针对刚入门的同学 建议不要急着去看那些经典书 像 算法导论 算法 这些比较经
  • Python入门--变量

    变量是指在程序运行期间可以改变其值的数据类型 在Python中 变量可以指定任何数据类型 如字符串 整数 浮点数等 要创建一个变量 我们必须先指定变量的名称 然后将其赋值 在Python中 变量名可以是任何有意义的名称 但通常使用小写字母和
  • 【Leetcode】151. 翻转字符串里的单词

    题目描述 给你一个字符串 s 逐个翻转字符串中的所有 单词 单词 是由非空格字符组成的字符串 s 中使用至少一个空格将字符串中的 单词 分隔开 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串 说明 输入字符串 s 可以在前面 后面
  • Android免打包多渠道统计如何实现,BAT面试文档

    我们程序员经常迷茫于有太多东西要学 有些找不到方向 不知所措 很多程序员都愿意说 我想变得更好 但是更好是什么却很模糊 同时我们又不知道该怎么样去做 我们的生命如此短暂 作为程序员的职业生涯可能会更短 所以我们更加需要充分利用工作 工作间隙
  • opencv resize()函数

    转自 https blog csdn net u012005313 article details 51943442 void resize InputArray src OutputArray dst Size dsize double
  • 在ping服务器时丢包该怎么办?

    一般跨境企业比如说跨境电商 游戏等等都会有海外各个节点服务器的需求 包括对海外服务器的需求 当使用服务器时 难免会出现一些问题 比如说丢包 那么 当服务器丢包的话 该如何处理呢 说到丢包 我们一般是在说PING服务器IP出现的数据包丢失的现
  • ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记

    课程链接 http video jessetalk cn course explore 良心课程 大家一起来学习哈 任务40 介绍 任务41 Individual authentication 模板 dotnet new mvc help
  • ChatGPT使用学习(三):ChatGPT桌面版使用

    文章目录 介绍 获取方式 界面展示 介绍 ChatGPT桌面版是指OpenAI推出的针对个人用户的ChatGPT应用程序 它是一个独立的桌面应用程序 可以在本地计算机上运行 而无需依赖互联网连接 这使得用户可以在没有网络连接的情况下使用Ch
  • 论文必备

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文介绍了了12个将神经网络画地更好看的工具 1 draw convnet 一个用于画卷积神经网络的Python脚本 https github com gwding dr
  • 基于单片机的热敏电阻测温设计

    基于单片机的热敏电阻测温设计 1 基本功能 1 具有声光报警功能 2 使用液晶显示 3 温度上 下限报警值设定 温度上 下限报警 4 手动方式设定温度上下限 总体方案设计 温度控制系统主要由温度传感器 热敏电阻 A D转换器 单片机 STC