波特律动
课程中心/51单片机教程/【14】温度检测报警器

【14】温度检测报警器

【02】点灯大师

写下第一段 51 单片机代码,编译 HEX 文件并下载到学习板,点亮 L0 。



本课资源下载
3 个资源
P02小灯闪烁

本节课的标准源代码工程/可供参考

V1.0压缩包23 KB
下载
XL-1608SURC-06

LED红色(0603)

PDF 文档1.5 MB
预览下载
流水灯原理图

交互式原理图❇️

原理图

课程笔记


本节目标概括

创建main.c > 编写点灯代码 > 编译HEX文件 > 下载到学习板 > 点亮第一颗LED小灯

编译并下载程序到学习板,即可看到程序效果:

  • 上电显示当前的温度
  • 如果当前温度超过了最高值或者低于最小值,蜂鸣器会发出嘀嘀报警

例程讲解

C语言
1#include <STC89C5xRC.H>
2#include "LCD1602.h"
3#include "DS18B20.h"
4#include "Delay.h"
5
6sbit Beep_Pin = P4^0;
7
8float T;
9unsigned char THigh=26;
10unsigned char TLow =24;
11void beep_di(void);
12
13void main()
14{
15 LCD_Init();
16 DS18B20_ConvertT(); //上电先转换一次温度,防止第一次读数据错误
17 Delay(1000); //等待转换完成
18
19 LCD_ShowString(1,1,"Temperature:");
20 while(1)
21 {
22 Delay(100);
23 DS18B20_ConvertT(); //转换温度
24 T=DS18B20_ReadT(); //读取温度
25 if(T<0) //如果温度小于0
26 {
27 LCD_ShowChar(2,1,'-'); //显示负号
28 T=-T; //将温度变为正数
29 }
30 else //如果温度大于等于0
31 {
32 LCD_ShowChar(2,1,'+'); //显示正号
33 }
34 LCD_ShowNum(2,2,T,3); //显示温度整数部分
35 LCD_ShowChar(2,5,'.'); //显示小数点
36 LCD_ShowNum(2,6,(unsigned long)(T*10000)%10000,4);//显示温度小数部分
37
38 if(T>THigh) //越界判断
39 {
40 LCD_ShowString(1,13,"OV:H");
41 beep_di();
42 }
43 else if(T<TLow)
44 {
45 LCD_ShowString(1,13,"OV:L");
46 beep_di();
47 }
48 else
49 {
50 LCD_ShowString(1,13," ");
51 }
52 }
53}
54
55void beep_di(void)
56{
57 Beep_Pin = 0;
58 Delay(100);
59 Beep_Pin = 1;
60 Delay(100);
61}
62