历史上的今天
今天是:2024年12月09日(星期一)
2020年12月09日 | 基于DS18B20的体温监测声光报警装置
2020-12-09 来源:51hei
(1)本装置为基于51单片机的温度检测报警装置(C语言),调节范围(-55℃~+128℃)
(2)手动调节DS18B20温度大小,此时L1602液晶显示器同步显示温度值(℃)保留小数点后一位。
(3)当前温值大于等于37.3℃,红灯亮起,蜂鸣器开始发声报警,低于37.3℃绿灯常亮。
(4)当检测温度为负值或超出100℃,则判定为装置出现故障,黄灯亮起。
(5)当装置判定为故障时,需重启装置后再去检测,装置通电时会有“BI~”的一声提示


单片机源程序如下:
#include #define uchar unsigned char #define uint unsigned int #define DataPort P0 sbit D0 = P1^0; sbit D1 = P1^1; sbit D2 = P1^2; sbit DQ = P1^3; //DS18B20 端口 sbit D4 = P1^4; sbit LCD_RS=P2^0; //液晶屏RS口 写指令低,写数据高 sbit LCD_EN=P2^1; //液晶屏EN口 高脉冲使能 写指令/数据,低跳变执行 uchar TempData[7]; //温度存储显示值 bit ReadTempFlag; //读时间标志 void WriteOneChar(uchar dat); //写入DS18B20一个字节 uchar ReadOneChar(void); //读取DS18B20一个字节 uint ReadTemperature(void); //读取DS18B20温度值 bit Init_DS18B20(void); //初始化DS18B20 void Time0(void); //定时器初始化 void Delay2us(uchar t); //2微秒延时函数 void Delay1ms(uchar t); //1毫秒延时函数 void LCDinit(); //设置显示模式 void write_com(uchar com); //液晶写指令程序 void write_date(uchar date); //液晶写数据程序 void delay100us(uint x); //100us延时程序 void main() { uchar i; uint temp; long tempM; bit negative; //负数标志 uchar TempH,TempL,TempK; Time0(); //定时器初始化 LCDinit(); //设置显示模式 while(1) { if(ReadTempFlag==1) //定时标志 { ReadTempFlag=0; temp=ReadTemperature();//读取温度 if(temp&0x8000) { negative=1; //负号标志 temp=~temp; //取反加1 temp +=1; } else negative=0; //正数 tempM=temp*0.0625*100; //换算为10进制温度值再放大100倍 12位精度直接乘0.625 TempH=tempM/100; //取整数 TempL=tempM%100; //取小数 TempL=(TempL+TempL)/2+0.5;// 小数取两次平均值加四舍五入更为精确 TempK=TempL; //准确的小数部分 if(negative==1) TempData[0]='-';//显示负号 else if(TempH/100==0) //温度值为两位数 TempData[0]=' '; //百位消隐不显示 else TempData[0]=TempH/100+'0'; //显示百位温度 if((TempH/100==0)&&((TempH%100)/10==0)) //温度值为一位数 TempData[1]=' '; //十位消隐不显示 else TempData[1]=(TempH%100)/10+'0'; //显示十位温度 TempData[2]=(TempH%100)%10+'0'; //显示个位温度 TempData[3]='.'; //显示小数点 TempData[4]=TempL/10+'0'; //显示温度小数1位 TempData[5]='^'; TempData[6]='C'; // 5,6用来表示摄氏度℃ if(TempData[0]=='-' || TempData[0]=='1') { D4 = 0; } if ( TempData[1]>='3') { if(TempData[2]>= '7') { if(TempData[2]== '8' ||TempData[4]>= '3'||TempData[2]== '9') {
史海拾趣
|
器材资料库,是以器材评论为核心的一个信息共享平台。我们借鉴了国外顶级乐器论坛的经验,将每一件乐器的性能与特点作了量化的评定,使每一位乐手都能够很直观地得到一种乐器性能的比较。 我们吉他扒手论坛乐器评论版是中国第一个乐器评论资料 ...… 查看全部问答> |
|
时间继电器的分类、结构及选用原则 时间继电器是一种利用电磁原理或机械动作原理实现触点延时接通或断开的自动控制电器,其种类很多,常用的有电磁式、空气阻尼式、电动式和晶体管式等。 &n ...… 查看全部问答> |
|
Configurable Logic Block User Guide This guide describes the capabilities of the configurable logic blocks (CLBs) available in all Virtex®-6 devices. [ 本帖最后由 凯哥 于 2009-7-28 14:31 编辑 ]… 查看全部问答> |
|
2440 Buffer_preview_info_update 问题 temp = (s2440CAM->rCIPRSTATUS>>26)&3; temp = (temp + 2) % 4; RETAILMSG(MSG_EN_2,(_T(\"preview index = %d, size %d\\r\\n\"), temp, image_size)); ...… 查看全部问答> |
|
江苏Linux公共技术服务中心于1月19日又将召开免费嵌入式讲座,欢迎嵌入式爱好者前来参加! 讲座时间:1月19日上午9:30 讲座人:嵌入式金牌讲师李超博士(在学员中口碑极好) 讲座内容;嵌入式的概念以及应用 ...… 查看全部问答> |
|
NVR的核心价值是视频中间件 视频监控行业正快速的步入NVR时代,和DVR时代不同,竞争的焦点将不仅是嵌入式系统和算法的设计实现能力,软件的体系结构和组件化能力至关重要。网力致力于向业界提供安全稳定、高品质、良好用户体验的网络硬盘录像机(N ...… 查看全部问答> |




