题目名称:温度自动控制系统
目录
摘要及关键词……………………………………………………2
1. 方案论证与比较 ………………………………………………2
1.1 芯片的比较与选择……………………………………2
1.2 D/A 转换器……………………………………………2
1.3 显示模块……………………………………………2
2. 系统设计……………………………………………………2
2.1 总体设计………………………………………………3
2.2 单元电路设计…………………………………………3
2.2.1 单片机最小系统电路设计…………………………3
2.2.2 液晶显示及蜂鸣器模块电路设计……………………4
2.2.3 指示灯及继电器电路设计………………………4
3. 软件设计………………………………………………………5
4. 系统测试………………………………………………………6
4.1 测试方法与仪器………………………………………6
4.2 测试数据及测试结果分析……………………………7
5. 结论……………………………………………………………7
参考文献:……………………………………………………8
附录:……………………………………………………………8
附 1:元器件明细表……………………………………………8
附 2:仪器设备清单……………………………………………8
- 1 -
附 3:程序清单…………………………………………………8
摘要:该系统主电路采用 AT89S52 单片机实现温度控制,对液体温度进行检
测,显示当前温度,测量范围 0 度~99 度,温度分辨率位 0.1 度;可设定温度控制
范围并可以显示(最低温度~最高温度),超出设定范围声光报警;系统包含加热、
降温装置(加热选用电热铁,降温选用风扇),若低于下限温度或高于上限温度,
用继电器通过弱电控制强电开通电热铁或风扇降温可自动加热或降温;还可同时
检测多路温度,温度分辨率位 0.1 度;当达到定时时间后自动开启加热或制冷设
备。
关键词:AT89S52 继电器 蜂鸣器 温度
⒈ 方案论证与比较
1.1 芯片的比较与选择
方案一 采用 8031 作为控制核心,以使用最为普遍的器件 ADC0809 作模
数转换,控制上使用对电热铁加电使其升温和开动风扇使其降温。此方案简易可
行,器件的价格便宜,但 8031 内部没有程序存储器,需要扩展,增加了电路的
复杂性,且 ADC0809 是 8 位的模数转换,不能满足本题目的数度要求。
方案二 采用 AT89S52 作为电路的控制核心,使用 16 位的高精度模数转
换器进行数据转换。而且 AT89S52 单片机是一种低功耗、高性能 CMOS 8 位微
控制器,具有 8K 在系统可编程 Flash 存储器。另外,AT89S52 可降至 0Hz 静
态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允
许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容
被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止;
可实现液晶显示和键盘设定等多种功能。此方案电路简单并且可以满足题目的各
项要求的精度。所以选择 AT89S52
1.2 D/A 转换器
方案一:采用 ADC0809 为转换器,ADC0809 具有 8 个通道的模拟输入线
(IN0~IN7),可在程序控制下对任意通道进行 A/D 转换,获得 8 位二进
制数字量(D7~D0)。
方案二:采用 DS1820,DS1820 含有 A/D 转换功能,同时可以检测温度,系
统结构稳定、简洁,安装方便。故采用方案二。
1.3 显示模块
方案一:采用数码管显示位数太小,布线麻烦,针脚多;
方案二:采用液晶可以同时显示两路温度,显示位数多,2 行每行 16 个字
符。自带字符库、带背光,经典的液晶显示器件通过液晶屏显示你想要的信息,
比发光管、数码管显示更为漂亮,专业化。 所以选择液晶
⒉ 系统设计
2.1 总体设计
- 2 -
主机行选用单片机 AT89S51 来实现,利用单片机软件编程灵活、自由度大
的特点,力求用软件完善各种控制算法和逻辑控制。本系统选用的 AT89S52 芯
片时钟可达 12MHz,运算速度快,控制功能完善。256 字节 RAM32 位 I/O 口线,
而且内部含有 8KM 的 EPROM 不需要外扩展存储器,可使用系统整体结构更来
简单、实用。
就本系统来说,可实时采集水温数据,然后经过 A/D 转换为数字信号,送入
单片机中的特定单元,然后
一部分去显示,另一部分与
设定值进行比较,通过 PID
算法得到控制量并经由单片
机输出去控制电热铁加热或
风扇降温。
我们选用温度传感器
2
DS18B20 对数据采集,它具
有线路简单,体积小的特点。
因此用它来组成一个测温系
统,具有线路简单,测量温
度范围在-55℃到+125℃之间,而且精度较高。
控制部分是由输出通过继电器来控制电热铁或风扇开关。
键盘采软件查询和外部中继相结合的方法来设计,低平有效。
3
2.2 单元电路设计
2.2.1 单片机最小系统电路设计
S0
RESET KEY
VCC5V
RST
CE1
10uF
C1
30pF
C2
30pF
S1
S2
S3
S4
S5
R2
10K
X1
Y1
12M
X2
P32
SW1
P33
SW2
P34
SW3
P35
SW4
P36
SW5
P10
P11
P12
P13
P14
P15
P16
P17
P32
P33
P34
P35
P36
P37
1
2
3
4
5
6
7
8
12
13
14
15
31
18
19
9
16
17
20
U1
P10
P11
P12
P13
P14
P15
P16
P17
INT0
INT1
T0
T1
EA/VPP
XTAL.2
XTAL.1
RESET
WR
RD
GND
AT89S52
VCC5V
X2
X1
RST
GND
ISP
7
6
5
4
3
2
1
SW5
SW4
SW3
SW2
SW1
P00
P01
P02
P03
P04
P05
P06
P07
P36
P35
P34
P33
P32
VCC5V
GND
GND
VCC5V
P15
P16
P17
RST
TDI
TDO
TCK
TMS
Rs1
6
5
4
3
2
1
10K*8
P00
P01
P02
P03
P04
P05
P06
P07
P20
P21
P22
P23
P24
P25
P26
P27
VCC
RXD
TXD
PSEN
ALE/PROG
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
40
10
11
29
30
P00
P01
P02
P03
P04
P05
P06
P07
P20
P21
P22
P23
P24
P25
P26
P27
VCC5V
P30
P31
PSEN
ALE
P0
1
2
3
4
5
6
7
8
P10
P11
P12
P13
P14
P15
P16
P17
P1
1
2
3
4
5
6
7
8
P20
P21
P22
P23
P24
P25
P26
P27
P2
1
2
3
4
5
6
7
8
P30
P31
P32
P33
P34
P35
P36
P37
P3
1
2
3
4
5
6
7
8
以 AT89S52 为主控芯片,控制多路开关,它内部含有一个高增益的反相
放大器,通过 XTAL1、XTAL2 外接作为反馈元件的晶体后便成为自激振荡器,
- 3 -
2
3
Title
Size
A4
Date:
File:
Number
17-May-2008
F:\电子制做资料\5月图\con_temper15日.ddb Drawn By:
1
1
振荡器输出的振荡脉冲经 2 分频成为内部时钟信号,用作单片机内部各功能部件
按序协调工作的控制信号;达到时钟的控制。RST 出现持续两个机器周期的高电
平就可实现复位操作,使单片机回复到初始状态。当设定温度与当前温度相付合
时向外部申请中断,达到自动控制。P0~P3 向外部扩展
3
2
开关用来控制
键名
开
关
S0 复位键
S1 功能转换键
功能
使系统复位
①时钟设置 ②1 路温度上或下限设置 ③2 温度路上
或下限设置
S2 加 1 键和功能转换键 ①设定温或时间十位加渐次加 1 ②进入设定状态
S3 加 1 键
S4 确定键
S5 扩展键
2.2.2 液晶显示及蜂鸣器模块电路设计
设定温或时间个位加渐次加 1
①长按确定设置状态 ②短按取消设置状态
可以用来扩展倒计时
POWER
2
1
VCC5V
GND
D
N
G
B1
BUZZER
Q1
PNP
GND
R1
1 .5 K
Rs2
9
8
7
6
5
4
3
2
1
1 0K* 8
R2
4 70
VCC5V
R2
LCD_RS
LCD_RW
LCD_E
LCD_DB0
LCD_DB1
LCD_DB2
LCD_DB3
LCD_DB4
LCD_DB5
LCD_DB6
LCD_DB7
P00
P01
P02
P03
P04
P05
P06
P07
VCC5V
GND
LCD_RS
LCD_RW
LCD_E
BUZZER
P00
P01
P02
P03
P04
P05
P06
P07
J 3
1
2
3
4
J 2
1
2
3
4
5
6
7
8
J 1
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
BUZZER
LCD_1 6 02
VCC5V
信号(VCC5V)从 LCD-1602 的 2 脚输入,将数据信息显示在液晶器上。
蜂鸣器根据显示数据情况:若超过上限或底于下限则发出报警声。
2.2.3 加热和降温模块电路设计
2
- 4 -
3
继电器抗过载能力强,强弱端隔离能力强,用它做一个以弱控强的系统;以
弱控强器件——电热铁和风扇。通过控制是否 LED 发亮,即有弱电流过继电器
达到控制强电效果。
⒊ 软件设计
由于对 C 语言比较熟悉,故采用 C 语言进行编程,其软件流程图如下所示:
- 5 -
⒋ 系统测试
4.1 测试方法与仪器
对液体温度进行检测,显示当前温度,测量范围 0 度~99 度,温度分辨率位 1
度;可设定温度控制范围并可以显示(最低温度~最高温度),超出设定范围声光
报警;不在控制范围时可自动加温、降温;系统包含加热、降温装置(加热可选
用电热铁,降温可选用风扇)。
测试反映状态如下表所示:
当前温度与设定温度比较 蜂鸣器 LED1
红灯
亮
响
若当前温度低于 1 路设计
定的下限温度
若当前温度高于 1 路设计
定的上限温度
若当前温度低于 2 路设计
定的下限温度
若当前温度高于 2 路设计
定的上限温度
若当前温度等于设计定的
上、下限温度平均值
LED3
红灯
LED2
电 热
绿灯
铁
不亮 不亮 不亮 开
LED4
绿灯
响
响
响
不亮 亮
不亮 不亮 关
不亮 不亮 亮
不亮 开
不亮 不亮 不亮 亮
关
不响
不亮 不亮 不亮 不亮 关
- 6 -
风
扇
关
开
关
开
关
除上述功能外,还可以设定启动时间功能,如:可设定 2 分钟后自动启动电
热铁或风扇。
4.2 测试数据及测试结果分析
1 路下限
温度℃
30
30
1 路的测试:测试范围 0℃到 99℃
1 路 当 前 温
1 路上限
温度℃
度℃
40
27.6
升
40
35
41.0
降
到
3038.8
降
到
31温度控制范围并可以显示(最低温度~最高温度),超出设定范围声光报警;系统
包含加热、降温装置(加热可选用热得快,降温可选用小风扇),不在控制范围
时可自动加温、降温;
扩展部分:可同时检测多路温度;温度分辨率位 0.1 度;
自由发挥部分:当达到定时时间后自动开启加热或制冷设备;
能较好地达到了题目要求的各项指标。
参考文献:
《单片机原理及应用》 丁元杰 主编, 北京:机械工业出版社,2005 年;
《C 程序设计》 谭浩强 著,清华大学出版社,2005 年
附录:
附 1:元器件明细表
1. AT89S52
4. 继电器
7. 蜂鸣器
2.
5.
8.
1602 液晶
4 个 LED 灯
12.000M 晶振
3. 传感器 18B20
6.
5 个按键
附 2:仪器设备清单
1. 数字万用表
2. USB 稳压电源
3. 电热铁
4. 风扇
附 3:程序清单
#include
#include
unsigned char
uchar
#define
#define SHORT 10000
#define LONG
60000
typedef bit BOOL;
sbit DQ1 = P3^0; //18B20 数据线引脚
sbit DQ2 = P3^1;
sbit speaker = P2^4;
sbit S1 = P3^2;
sbit S2 = P3^3;
sbit S3 = P3^4;
sbit S4 = P3^5;
sbit S5 = P3^6;
sbit COOL1 = P1^3;
sbit HEAT1 = P1^1;
sbit GREEN1 = P1^2;
sbit RED1 = P1^0;
sbit COOL2 = P1^7;
sbit HEAT2 = P1^5;
sbit GREEN2 = P1^6;
sbit RED2 = P1^4;
sbit rs = P2^7;
sbit rw = P2^6;
sbit ep = P2^5;
uchar temper1[2];
//存放温度的数组
- 8 -