基于51单片机的八路多路温度测控系统proteus仿真原理图PCB
功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶实时滚动显示8路温度传感器检测的温度值及设定温度值
2.当8路平均温度超过设定温度阈值范围,蜂鸣器报警,同时启动加热或降温装置
3.按键可更改温度上下限阈值
4.支持显示哪一路温度超过阈值
5.采用DC002作为电源接口可直接输入5V给整个系统供电
原理图:
PCB :
主程序:
#include "main.h"enum _MODE_DF_ dispMode;bit dispFlag = 1;
bit refreshFlag = 1;xdata float f_temp[8] = 0.0; //温度值
float f_tempAverage; //温度平均值unsigned int tempMax = 40; //温度上限
unsigned int tempMin = 20; //温度下限
unsigned char channel = 0;
unsigned char setIndex = 0;char xdata dis0[16]; //定义显示区域临时存储数组void main(void)
{Timer0_Init();LCD_Init(); //初始化液晶DelayMs(200); //延时有助于稳定LCD_Clear(); //清屏while (1) //主循环{if (refreshFlag == 1) //刷新数据{unsigned char i;refreshFlag = 0;//TR0 = 0;f_tempAverage = 0;for (i = 0; i < 8; i++){ReadTemp(i);f_tempAverage = f_tempAverage + f_temp[i]; //累加} f_tempAverage = f_tempAverage / 8; //求平均//TR0 = 1;if (f_tempAverage < tempMin) //超过温度下限{RELAY_COOL = OFF;RELAY_HEAT = ON;BUZZER = ON;}else if (f_tempAverage > tempMax) //超过温度上限{RELAY_COOL = ON;RELAY_HEAT = OFF;BUZZER = ON;}else{RELAY_COOL = OFF;RELAY_HEAT = OFF;BUZZER = OFF;}}if (dispFlag == 1) //2s获取数据并发送{dispFlag = 0;if (dispMode == NORMAL){TR0 = 0;DispNormal(channel); //显示对应通道温度TR0 = 1;channel++;if (channel > 7){channel = 0;}}}KeyProcess();}
}void ReadTemp(unsigned char ch)
{float current = 0;float Rt = 0;float f_tempVolt = 0; //温度对应电压CD4051_SelChannel(ch);f_tempVolt = 5 * (float)ReadADC(AIN0_GND) / 255; //读取电压current = (5 - f_tempVolt) / Rp; //计算电流值Rt = f_tempVolt / current; //计算电阻值f_temp[ch] = ((Bx * T25) / (T25 * (log(Rt) - log(ntcR25)) + Bx)) - Ka;DelayMs(10);
} void DispNormal(unsigned char ch)
{//液晶显示sprintf(dis0, "H:%3d", tempMax); //打印温度值LCD_DispStr(0, 0, dis0); //显示第一行LCD_DispOneChar(5, 0, 0xdf); //写入温度右上角点LCD_DispOneChar(6, 0, 'C'); //写入温度Csprintf(dis0, "L:%3d", tempMin); //打印温度值LCD_DispStr(9, 0, dis0); //显示第一行LCD_DispOneChar(14, 0, 0xdf); //写入温度右上角点LCD_DispOneChar(15, 0, 'C'); //写入温度C//液晶显示sprintf(dis0, "T%d:%6.1f", (int)(ch+1), f_temp[ch]); //打印温度值LCD_DispStr(0, 1, dis0); //显示第二行LCD_DispOneChar(9, 1, 0xdf); //温度右上角点LCD_DispOneChar(10, 1, 'C'); //温度Cif (f_temp[ch] > tempMax || f_temp[ch] < tempMin){LCD_DispStr(11, 1, " Err "); //显示}else{LCD_DispStr(11, 1, " "); //显示}}/************************* 温度阈值设置显示 *************************/
void DispSetTemp(unsigned char setIndex)
{LCD_DispStr(0, 0, "Set Temperature ");sprintf(dis0, " H:%3d L:%3d ", tempMax, tempMin);LCD_DispStr(0, 1, dis0);switch (setIndex){case 1: LCD_SetCursor(7, 1, 1); break;case 2: LCD_SetCursor(13, 1, 1); break;default:;}
}/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Timer0_Init(void)
{TMOD &= 0xF0; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0 = (65536 - 10000) / 256; //重新赋值 10msTL0 = (65536 - 10000) % 256;EA = 1; //总中断打开ET0 = 1; //定时器中断打开TR0 = 1; //定时器开关打开
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_Interrupt(void) interrupt 1
{static unsigned char time10ms = 0;TH0 = (65536 - 10000) / 256; //重新赋值 10msTL0 = (65536 - 10000) % 256;time10ms++;if (time10ms % 10 == 0) // 100ms{refreshFlag = 1;}if (time10ms >= 200) // 2s{time10ms = 0;dispFlag = 1;}}
仿真演示视频:
https://www.bilibili.com/video/BV1V5411X7ZJ/
实物演示视频:
https://www.bilibili.com/video/BV1YR4y1w7MX/
基于51单片机的八路多路温度测控系统proteus仿真原理图PCB相关推荐
- 基于51单片机的大棚环境土壤湿度光强监测系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.系统实时监测当前温湿度/土壤湿度/环境光强并显示 2.温湿度超过设定阈值范围,蜂鸣器响,同时开启对应控制继电器 3.土壤湿度低于设定下限,开启 ...
- 基于51单片机的多路热电偶测温系统proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前检测的温度值 2.循环显示多路热电偶检测值 3.当温度超过设定温度值一定范围以后,蜂鸣器报警,同时启动升温或降温装置 ...
- 基于51单片机的万年历(带温湿度)带闹钟功能proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示当前时间和温湿度 2.按键可切换页面,显示农历,显示闹钟设置 3.当时间到达设定闹钟时间时,蜂鸣器报警 原理图: PCB ...
- 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示3路超声波探测距离,同时WIFI串口上报 2.带有WiFi模块,可与手机实现数据交互,WiFi模块型号采用是常见 ...
- 基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示当前的设定温度/实际温度/水龙头状态和水流量 2.按键可开关水龙头,当温度低于设定温度时,启动加热控制继电器,给水加热, 当加热到(设 ...
- 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 ...
- 基于51单片机NRF24L01的远程水压监控及控制proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.系统分为主机和从机. 2.从机负责设定压力阈值.屏幕显示及蜂鸣器报警. 3.从机负责检测当前的水压值,并通过对比设定压力阈值,控制水泵继电器 ...
- 基于51单片机的汽车超声波防撞声光报警系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时距离阈值/测试距离 2.低于距离阈值将声光报警 3.按键可更改距离阈值 原理图: PCB: 主程序: #include ...
- 基于51单片机GPS定位公交车自动报站系统(程序+原理图+PCB+论文+全套资料)
功能介绍: 1.电路设计合理. 2.熟练地使用STC89C52单片机.GPR模块,掌握其原理. 3.可设置播报声音的大小.上行或下行.显示时间等内容 4.采用LCD12864显示时间,位置等信息. 5 ...
最新文章
- 高效率开发必备!!!!
- flex Vector
- jquery的disabled
- VTK:Utilities之CameraModifiedEvent
- (2) pandas 文件读写 (csv)
- linux队列运行任务查看,Linux work queue工作队列小结与使用
- 《鸟哥Linux私房菜之基础篇》(第四版)学习笔记 —— 1、Linux是什么与如何学习
- oracle视图在查询里,oracle视图
- 编译Linux内核4.4实现可读NTFS
- OSPO Summit 2022 正式启动!OSPO Summit 2022 Launched!
- 前厅(the backrooms)
- 小米打印机显示服务器出错,更换小米路由器后打印机无法工作解决办法
- 14 Python进行数据乱码处理
- 【自动化办公】python处理PDF文件操作指南
- Qt写入读取txt文本文件
- 计算机基础实验测试题第一章(悄悄变强秘籍)
- Vue中使用svg(图片不显示问题)
- 最新超漂亮UI仿芒果TV听书网站模板双端+苹果CMS内核
- 非科班,进入美团做推荐算法是怎样的体验
- 千亿百度,正在讲一个新故事!!
热门文章
- /dev/random 和 /dev/urandom 的原理
- 【Oracle】Oracle创建触发器
- 卖家网:跨境电商数据查询,淘宝大学免费课程,淘宝电商培训班,电商资讯干货
- 【ACWing】383. 观光
- DDD在有赞信贷核心系统中的实践
- 硬盘安装到计算机里面读不出来的,新买的硬盘怎么使用?安装到电脑上系统里不显示怎么办?...
- 华为nova5ipro的优缺点_三个原因告诉你 为何华为nova 5i Pro如此受追捧
- 安卓按键键值映射关系
- 融资租赁租金表、收益指标、财务分摊等相关计算原理
- rm: invalid option -- ‘n‘和mv: invalid option -- ‘s‘