基于51单片机的DS18B20温度控制加热降温系统设计
1 开发环境
仿真图:proteus8.9以上
程序代码:KEIL4/KEIL5
原理图:AD
设计编号:A0007
2 功能说明介绍
结合实际情况,基于51单片机设计一个排队叫号系统设计。该系统应满足的功能要求为:
系统由51单片机、DS18B20温度传感器、LCD1602液晶显示屏、继电器、风扇、加热膜、按键、蜂鸣器组成。
可实现以下基本功能:
1、可进行温度值的实时显示,精度为0.1摄氏度;
2、使用数码管作为显示设备;
3、检测范围是-55~125摄氏度;
4、可通过按键设置温度的报警范围;
5、一旦温度过低,绿色指示灯亮,蜂鸣器响,加热膜加热,模拟升温装置;
6、一旦温度过高,红色指示灯亮,蜂鸣器响,小风扇转动,模拟降温装置;
本资料下载链接(可点击)
https://docs.qq.com/doc/DTk5xUXRZdHFqem5O
3 仿真图
AT89C51可以替换为AT89C52,实物可以换做STC89C51,STC89C52
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用16位中央处理器和Flash存储单元,功能强大的AT89C51单片机可灵活应用于各种控制领域。
AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个1 6位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
本系统中央控制器采用的AT89C51单片机,复位电路采用上电复位电路。外接的晶振为12MHz晶振。
4 程序
工程文件使用Keil4/keil5打开。编译产生hex加载到对应的单片机中。
代码
#include <reg52.h> // 包含头文件
#include <intrins.h>
#define uchar unsigned char // 以后unsigned char就可以用uchar代替
#define uint unsigned int // 以后unsigned int 就可以用uint 代替
sbit DQ = P1^1; // DS18B20传感器的引脚定义
sbit w1 = P2^4; // 数码管第1位的控制引脚
sbit w2 = P2^5; // 数码管第2位的控制引脚
sbit w3 = P2^6; // 数码管第3位的控制引脚
sbit w4 = P2^7; // 数码管第4位的控制引脚
sbit Buzzer = P1^0; // 蜂鸣器引脚
sbit JdqLow = P2^0; // 温度过低继电器控制(加热)
sbit JdqHig = P2^1; // 温度过高继电器控制(降温)
sbit LedLow = P2^2; // 温度低指示灯
sbit LedHig = P2^3; // 温度高指示灯
sbit KeySet = P3^2; // 设置按键
sbit KeyDown = P3^3; // 减按键
sbit KeyUp = P3^4; // 加按键
/* 数码管的显示值: 0 1 2 3 4 5 6 7 8 9 - */
uchar code Array1[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40 };
/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
uchar code Array2[]={ 0xBf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef };
uchar Buff[4]; // 显示缓冲区
uchar ShowID=1; // 当前显示的是哪一个数码管
int AlarmLow=150; // 默认报警的温度下限值是15度
int AlarmHig=300; // 默认报警的温度上限值是30度
/*********************************************************/
// 毫秒级的延时函数,time是要延时的毫秒数
/*********************************************************/