功能介绍:
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相关推荐

  1. 基于51单片机的大棚环境土壤湿度光强监测系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统实时监测当前温湿度/土壤湿度/环境光强并显示 2.温湿度超过设定阈值范围,蜂鸣器响,同时开启对应控制继电器 3.土壤湿度低于设定下限,开启 ...

  2. 基于51单片机的多路热电偶测温系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前检测的温度值 2.循环显示多路热电偶检测值 3.当温度超过设定温度值一定范围以后,蜂鸣器报警,同时启动升温或降温装置 ...

  3. 基于51单片机的万年历(带温湿度)带闹钟功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示当前时间和温湿度 2.按键可切换页面,显示农历,显示闹钟设置 3.当时间到达设定闹钟时间时,蜂鸣器报警 原理图: PCB ...

  4. 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示3路超声波探测距离,同时WIFI串口上报 2.带有WiFi模块,可与手机实现数据交互,WiFi模块型号采用是常见 ...

  5. 基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示当前的设定温度/实际温度/水龙头状态和水流量 2.按键可开关水龙头,当温度低于设定温度时,启动加热控制继电器,给水加热, 当加热到(设 ...

  6. 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 ...

  7. 基于51单片机NRF24L01的远程水压监控及控制proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统分为主机和从机. 2.从机负责设定压力阈值.屏幕显示及蜂鸣器报警. 3.从机负责检测当前的水压值,并通过对比设定压力阈值,控制水泵继电器 ...

  8. 基于51单片机的汽车超声波防撞声光报警系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时距离阈值/测试距离 2.低于距离阈值将声光报警 3.按键可更改距离阈值 原理图: PCB: 主程序: #include ...

  9. 基于51单片机GPS定位公交车自动报站系统(程序+原理图+PCB+论文+全套资料)

    功能介绍: 1.电路设计合理. 2.熟练地使用STC89C52单片机.GPR模块,掌握其原理. 3.可设置播报声音的大小.上行或下行.显示时间等内容 4.采用LCD12864显示时间,位置等信息. 5 ...

最新文章

  1. 高效率开发必备!!!!
  2. flex Vector
  3. jquery的disabled
  4. VTK:Utilities之CameraModifiedEvent
  5. (2) pandas 文件读写 (csv)
  6. linux队列运行任务查看,Linux work queue工作队列小结与使用
  7. 《鸟哥Linux私房菜之基础篇》(第四版)学习笔记 —— 1、Linux是什么与如何学习
  8. oracle视图在查询里,oracle视图
  9. 编译Linux内核4.4实现可读NTFS
  10. OSPO Summit 2022 正式启动!OSPO Summit 2022 Launched!
  11. 前厅(the backrooms)
  12. 小米打印机显示服务器出错,更换小米路由器后打印机无法工作解决办法
  13. 14 Python进行数据乱码处理
  14. 【自动化办公】python处理PDF文件操作指南
  15. Qt写入读取txt文本文件
  16. 计算机基础实验测试题第一章(悄悄变强秘籍)
  17. Vue中使用svg(图片不显示问题)
  18. 最新超漂亮UI仿芒果TV听书网站模板双端+苹果CMS内核
  19. 非科班,进入美团做推荐算法是怎样的体验
  20. 千亿百度,正在讲一个新故事!!

热门文章

  1. /dev/random 和 /dev/urandom 的原理
  2. 【Oracle】Oracle创建触发器
  3. 卖家网:跨境电商数据查询,淘宝大学免费课程,淘宝电商培训班,电商资讯干货
  4. 【ACWing】383. 观光
  5. DDD在有赞信贷核心系统中的实践
  6. 硬盘安装到计算机里面读不出来的,新买的硬盘怎么使用?安装到电脑上系统里不显示怎么办?...
  7. 华为nova5ipro的优缺点_三个原因告诉你 为何华为nova 5i Pro如此受追捧
  8. 安卓按键键值映射关系
  9. 融资租赁租金表、收益指标、财务分摊等相关计算原理
  10. rm: invalid option -- ‘n‘和mv: invalid option -- ‘s‘