数字温度报警器
- 1 **主要功能:**
- ***\*资料下载链接(可点击):\****
- 2 **仿真图:**
- 3 **原理图:**
- 4 **设计报告:**
- 5 **程序设计:**
- 主函数
- 外部中断函数
- DS18B20驱动
- 6 讲解视频
- 7 **资料清单:**
51单片机数字温度报警器_DS18B20可调上下限(仿真+程序+原理图+报告+讲解)
原理图:Altium Designer
仿真版本:proteus 7.8
程序编译器:keil 4/keil 5
编程语言:C语言
1 主要功能:
1、实时温度测量及显示,超出温度范围声光报警,上下限温度可通过按键设定等功能;
2、温度测量范围0到99.9摄氏度,精度为0.1摄氏度;
3、可设置上下限报警温度,默认上限报警温度为38℃、默认下限报警温度为5℃(通过程序可以更改上下限值);
4、报警值可设置范围:最低上限报警值等于当前下限报警值,最高下限报警值等于当前上限报警值。将下限报警值调为0时为关闭下限报警功能。
*使用说明:*
1、开机:打开电源,机器进入初始化状态,此时数码管显示 - - - -;片刻即开始显示当前温度。
2、查看当前上下限温度范围:按下【S1】键(设置键),数码管闪烁显示Hxxx,H表示上限温度,再次按下【S1】键,数码管闪烁显示Lxxx, L表示下限温度。再按【S1】键时退出设置,数码管显示当前实时温度。
3、重新设定上下限温度范围:按下【S1】键一次,数码管闪烁显示Hxxx时,此时是设定上限温度,按【S3】键加温度,【S2】键减温度。再按下【S1】键一次,此时是设定下限温度,数码管闪烁显示Lxxx时,按【S3】键加温度,【S2】键减温度。再按下【S1】键一次,设置成功并退出设置。
4、报警:当检测到当前实时温度高于上限温度值,或者低于下限温度值,系统会自动发出报警,报警为红灯一直闪烁且蜂鸣器随着灯的频率响。除非重设上下限温度范围,否则报警一直持续。
*资料下载链接(可点击):*
https://docs.qq.com/doc/DS05hcVFmSVZVdE5P
2 仿真图:
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。机器进入初始化状态,此时数码管显示 - - - -;片刻数码管显示当前温度值。
查看当前上下限温度范围:按下【S1】键(设置键),数码管闪烁显示Hxxx,H表示上限温度,再次按下【S1】键,数码管闪烁显示Lxxx, L表示下限温度。再按【S1】键时退出设置,数码管显示当前实时温度。
重新设定上下限温度范围:按下【S1】键一次,数码管闪烁显示Hxxx时,此时是设定上限温度,按【S3】键加温度,【S2】键减温度。再按下【S1】键一次,此时是设定下限温度,数码管闪烁显示Lxxx时,按【S3】键加温度,【S2】键减温度。再按下【S1】键一次,设置成功并退出设置。
报警:当检测到当前实时温度高于上限温度值,或者低于下限温度值,系统会自动发出报警,报警为红灯一直闪烁且蜂鸣器随着灯的频率响。除非重设上下限温度范围,否则报警一直持续。
仿真中通过按键调整DS18B20温湿度模块的值改变显示数值。
上下箭头用于改变温度的值。下箭头调低数值,上箭头调高数值。改图标显示的是温度的值
3 原理图:
使用AD绘制。
元器件清单
Comment元器件 | Pattern名称 | Quantity数量 | Components元器件编号 |
---|---|---|---|
按键 | KEY | 1 | K1 |
自弹开关 | SW6 | 1 | S1 |
电阻10K | R-DIP | 2 | R14, R16 |
排阻10K | SIP9 | 1 | RP1 |
电容10uF | C100 | 1 | C1 |
晶振12MHz | JZ | 1 | Y1 |
电阻2.2K | R-DIP | 6 | R9, R10, R11, R12, R13, R15 |
电容30uf | C01 | 2 | C2, C3 |
数码管4-LED | LED-4 | 1 | U3 |
三极管9012 | PNP | 5 | Q1, Q2, Q3, Q4, Q5 |
按键ADD | KEY | 1 | K4 |
LED灯ALAM | LED | 1 | D2 |
单片机AT89C51 | DIP40 | 1 | U1 |
按键DEC | KEY | 1 | K3 |
DS18B20 | DS18B20 | 1 | U2 |
DC接口POWER | DC2.1 | 1 | P1 |
按键SET | KEY | 1 | K2 |
蜂鸣器SPEAKER | SPEAKER | 1 | LS1 |
4 设计报告:
提供开题报告和论文报告
设计报告目录如下
摘要
1、引言
2 设计内容及性能指标
3 系统方案比较、设计与论证
3.1 主控制器模块
3.2 温度测量
3.3 设置温度
3.3 显示模块
4 系统器件选择
5 硬件实现及单元电路设计
5.1 主控制模块
5.2 显示模块电路
5.3 数码管显示驱动电路
图6 驱动电路
5.4 温度传感器(DS18B20)电路
5.4.1 DS18B20基本介绍
5.4.2 DS18B20控制方法
5.4.3 DS18B20供电方式
5.6 蜂鸣器、发光二极管报警电路
6 系统软件设计
6.1 程序结构分析
6.2 系统程序流图
6.2.1 DS18B20初始化程序流程图
6.2.2 读温度子程序流程图
7 系统的安装与调试
仿真调试
系统调试
仿真结果
总结与展望
参考文献
5 程序设计:
主函数
void main(void)
{
uint z;
InitTimer(); //初始化定时器
EA=1; //全局中断开关
TR0=1;
ET0=1; //开启定时器0
IT0=1;
IT1=1;
check_wendu();
check_wendu();
for(z=0;z<300;z++)
{
Disp_init();
}
while(1)
{
if(SET==0)
{
Delay(2000);
do{}while(SET==0);
set_st++;x=0;shanshuo_st=1;
if(set_st>2)set_st=0;
}
if(set_st==0)
{
EX0=0; //关闭外部中断0
EX1=0; //关闭外部中断1
check_wendu();
Disp_Temperature();
Alarm(); //报警检测
}
else if(set_st==1)
{
BEEP=1; //关闭蜂鸣器
ALAM=1;
EX0=1; //开启外部中断0
EX1=1; //开启外部中断1
if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
if(shanshuo_st) {Disp_alarm(shangxian);}
}
else if(set_st==2)
{
BEEP=1; //关闭蜂鸣器
ALAM=1;
EX0=1; //开启外部中断0
EX1=1; //开启外部中断1
if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
if(shanshuo_st) {Disp_alarm(xiaxian);}
}
}
}
外部中断函数
/*****外部中断0服务程序*****/
void int0(void) interrupt 0
{
EX0=0; //关外部中断0
if(DEC==0&&set_st==1)
{
do{
Disp_alarm(shangxian);
}
while(DEC==0);
shangxian--;
if(shangxian<xiaxian)shangxian=xiaxian;
}
else if(DEC==0&&set_st==2)
{
do{
Disp_alarm(xiaxian);
}
while(DEC==0);
xiaxian--;
if(xiaxian<0)xiaxian=0;
}
}
/*****外部中断1服务程序*****/
void int1(void) interrupt 2
{
EX1=0; //关外部中断1
if(ADD==0&&set_st==1)
{
do{
Disp_alarm(shangxian);
}
while(ADD==0);
shangxian++;
if(shangxian>99)shangxian=99;
}
else if(ADD==0&&set_st==2)
{
do{
Disp_alarm(xiaxian);
}
while(ADD==0);
xiaxian++;
if(xiaxian>shangxian)xiaxian=shangxian;
}
}
DS18B20驱动
程序流程图
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0x44); //启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器
a=ReadOneChar(); //读低8位
b=ReadOneChar(); //读高8位
t=b; //高8位转移到t
t<<=8; //t数据左移8位
t=t|a; //将t和a按位或,得到一个16位的数
tt=t*0.0625; //将t乘以0.0625得到实际温度值(温度传感器设置12位精度,最小分辨率是0.0625)
t= tt*10+0.5; //放大10倍(将小数点后一位显示出来)输出并四舍五入
return(t); //返回温度值
}
6 讲解视频
讲解视频包含proteus原理图讲解,程序讲解等
7 资料清单:
\0. 常见使用问题及解决方法–必读!!!!
\1. 程序源码
\2. 仿真
\3. 原理图
\4. 使用说明
\5. 开发资料
\6. 元器件清单
\7. 开题报告
\8. 设计报告
\9. 讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url