功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶实时循环显示多点温度值
2.当温度超过设定温度阈值范围时,蜂鸣器报警
3.按键可设定温度阈值范围/可控制报警开关

原理图:

PCB:

主程序:

#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "main.h"unsigned char dispFlag = 0; //更新显示标志enum _MODE_DF_ dispMode;
unsigned char num = 0;
int tempBuf = 0;                   //读取温度值
float temperature;              //实际温度值
int tempMin = 10;
int tempMax = 50;
bit alarmFlag = OFF;
bit alarmSwitch = ON;
unsigned char setIndex = 0;char dis0[16]; //定义显示区域临时存储数组void main(void)
{unsigned int channel = 0;Timer0_Init();LCD_Init();   //初始化液晶DelayMs(200); //延时有助于稳定LCD_Clear();  //清屏LCD_DispStr(0, 0, "    Welcome    ");DelayS(1);LCD_Clear();  //清屏DispNormal();num = DS18B20_SearchROM();while (1) //主循环{if (dispFlag == 1){dispFlag = 0;if (dispMode == NORMAL){TR0 = 0;if (channel == num){channel = 0;}DS18B20_Start();tempBuf = DS18B20_GetTemp(channel);channel++;temperature = (float)tempBuf * 0.0625; //温度值转换sprintf(dis0, "%01d", channel); //打印通道值LCD_DispStr(1, 1, dis0);sprintf(dis0, "%5.1f", temperature); //打印温度值LCD_DispStr(3, 1, dis0);TR0 = 1;if (temperature < tempMin || temperature > tempMax){alarmFlag = ON;}else{alarmFlag = OFF;}if (alarmSwitch == ON){LCD_DispStr(11, 1, "ON "); //显示报警开关状态if (alarmFlag == ON){BUZZER_ON;LCD_DispStr(14, 1, " !"); //显示报警标志}else{BUZZER_OFF;LCD_DispStr(14, 1, "  ");}}else{LCD_DispStr(11, 1, "OFF  "); //显示报警开关状态BUZZER_OFF;}}}KeyProcess();}
}void DispNormal(void)
{LCD_WriteCommand(0x0C, 0); //关闭光标闪烁LCD_DispStr(0, 0, "  Temperature   ");LCD_DispStr(0, 1, "T0:       ");LCD_DispOneChar(8, 1, 0xdf);  //写入温度右上角点LCD_DispOneChar(9, 1, 'C');  //写入温度的C
}void DispSetTemp(unsigned char setIndex)
{LCD_DispStr(0, 0, " Set Temp Limit "); sprintf(dis0, "  L:%03d  H:%03d  ", tempMin, tempMax);LCD_DispStr(0, 1, dis0);switch (setIndex){case 1: LCD_SetCursor(6, 1, 1); break;case 2: LCD_SetCursor(13, 1, 1); break;default:;} }/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Timer0_Init(void)
{TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0 = (65536 - 18432) / 256; //重新赋值 20msTL0 = (65536 - 18432) % 256;EA = 1;  //总中断打开ET0 = 1; //定时器中断打开TR0 = 1; //定时器开关打开
}
/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_Interrupt(void) interrupt 1
{static unsigned char time20ms  = 0;TH0 = (65536 - 18432) / 256; //重新赋值 20msTL0 = (65536 - 18432) % 256;time20ms++;if (time20ms > 50){time20ms = 0;dispFlag = 1; //读标志位置1}}

仿真演示视频:
https://www.bilibili.com/video/BV1St4y1x79G/

实物演示视频:
https://www.bilibili.com/video/BV1YK411Q7x3/

基于51单片机的多路多点温度检测两种供电方式proteus仿真原理图PCB相关推荐

  1. 基于51单片机智能停车场管理车位引导系统蓝牙手机通信proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602液晶实时显示当前车位状态 2.蓝牙串口间隔5秒发送一次当前车位状态 3.车位检测传感器采用的是红外光电模块,该模块的检测距离 ...

  2. 基于51单片机的电流电压过流过压监测声光报警器proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前检测的电压电流值 2.当电压/电流超过设定阈值时,蜂鸣器报警 3.按键可切换界面,并设置电压/电流阈值 原理图: ...

  3. 基于51单片机智能家居家电继电器开关插座定时WiFi无线proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.手机通过wifi控制4路继电器的开和关以及定时: 手机发送OA,继电器全部打开, 手机发送CA,继电器全部关闭, 手机发送O14,继电器14打开, ...

  4. 0343基于STM32单片机的茶园大棚环境土壤湿度光强WiFi监测系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STM32F103RCT6作为单片机 1.采用的LCD1602液晶实时显示当前光强土壤湿度等参数信息 2.当土壤湿度超过设定的阈值,蜂鸣器报警,同时控制水泵工作状态 3.按键 ...

  5. 基于51单片机的温度甲烷监测报警串口上报proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和甲烷浓度 2.超过甲烷浓度阈值,蜂鸣器报警 3.按键可更改甲烷浓度阈值上限和启动/暂停检测 4.0`20% ...

  6. 基于51单片机煤气天然气有毒气体检测系统蓝牙手机通信proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602作为显示液晶,可以实时显示气体的检测情况以及其他功能设置信息 2.检测有毒气体传感器用的是MQ-4系列传感器 3.蜂鸣器和L ...

  7. 基于51单片机的多路温度检测调节串口传输系统

    本设计基于51单片机的多路温度检测调节串口传输系统(仿真+源码+视频讲解) 仿真:proteus8.9 程序编译器:keil 4 编程语言:C语言 编号C0009 [腾讯文档]C0009 网盘链接 资 ...

  8. 基于51单片机的公交车安全智能检测系统、基于51单片机的金属探测仪控制设计、基于单片机的智能电子密码锁系统设计、基于51单片机酒精浓度检测仪设计【资料转发分享】

    630基于51单片机的公交车安全智能检测系统-设计资料 本资料是基于单片机的公交车安全监测系统 具有如下功能: 1.监测环境的温度,超标报警.可以设置上下限 2.监测是否有火灾以及有毒气体,超标报警, ...

  9. 51单片机8通道自动温度检测系统仿真+ Proteus仿真

    51单片机8通道自动温度检测系统仿真+ Proteus仿真 Proteus仿真 程序代码(汇编代码,格式为.asm) 导入方式: CLR P3.7 MAIN:MOV 38H,#00HMOV 39H,# ...

最新文章

  1. python chrome headless_Chrome Headless模式(二)——Python+selenium+headerless
  2. 怎么在VS监视DataSet类型的数据
  3. 210106阶段三 文件I/O
  4. cocos2d-x游戏开发(十五)游戏加载动画loading界面
  5. ARMV4,ARMV4T,ARMV4I的意义
  6. python下载文件损坏_pythonw.exe停止工作,无法运行IDLE或任何.py文件 - python
  7. 再读王永庆卖米的故事
  8. 震惊:selenium竟然不是自动化测试工具
  9. Android客户端和服务器端数据交互的第二种方法
  10. java android实例_Android开发精典案例60个
  11. hdu1069 最长下降子列
  12. 过滤文本中的中英文标点符号、字母、数字、表情
  13. Backtrader量化平台教程(五)Signal
  14. Onlyoffice安装步骤
  15. 电梯卫士等对计算机的应用,小班安全活动教案:电梯小卫士教案
  16. apple 西单大悦城维修_如何检查Apple是否已召回MacBook(免费维修)
  17. 分布式和集群的区别是什么
  18. 【北京迅为iMX6ULL】嵌入式学习之Linux系统编程视频教程
  19. vue系统权限(动态加载路由方式)
  20. 用于物联网网关和边缘的 20 个新的基于英特尔的计算机模块

热门文章

  1. iOS开发除了XCode还需要掌握的8个重要工具,让您开发更容易
  2. Android打开WIFI、关闭WIFI、检测当前WIFI状态
  3. 中粮我买网为何能融资1亿美元?
  4. GitHub 的 Fork 是什么意思?
  5. 互联网黑话汇总大合集
  6. MSRA-TD5000数据集使用
  7. Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现
  8. Dev-C++ 实用安装教程
  9. Swing入门级项目全程实录第7讲
  10. Docker疑难杂症汇总