-
基于
51
单片机的温控风扇设计
摘
要
在炎热的夏天人们用电风扇来降温;在工业生产中,大型机械
用电风扇来散
热等。随着温度控制的技术不断发展,应运而生的温控电风扇也逐渐走进了
人们
的生活中。温控电风扇可以根据环境温度自动调节电风扇启停与转速,在实际生
p>
活的使用中,温控风扇不仅可节省宝贵的电资源,也大大方便了人们的生活和生
产。
本设计为一种温控风扇系统,具有灵敏的温度
感测和显示功能,系统采用
STC89C51
单片机作为控制
平台对风扇转速进行控制。利用
DS18B20
数字温度传
p>
感器采集实时温度,经单片机处理后通过三极管驱动直流风扇的电机。根据采集
的实时温度,实现了风扇的自起自停。可由用户设置高、低温度值,测得温度值
在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到
大风档
,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。
关键词:
温控风扇,单片机,
DS18B20
,自动控制
I
Temperature control fan design based on
51
single chip microcomputer
ABSTRACT
In the hot summer, people use cooling
fan; in the industrial production, is
used
toheat the
electric
fan large
machinery. With
the
continuous
development of
thetechnology of
temperature
control, temperature
controlled
electric
fan emerge
as
the
times
require gradually
fan can
be
into
people's
adjusted
lives.
Temperature
controlled
electric
automatically stop
and start the
fan speed according
to
the
environment
temperature, the
use of
real
life,
temperature
controlled
fan
not
only
can
save
power resources valuable, but also greatly
facilitate the people's life and
production.
The design of a
temperature controlled fan system, sensitive
temperate-
easuing and
display, the
system uses
STC89C51
microcontroller
as
the
control
platform to
control the
speed
of
the
fan. The
real-time
temperature using
DS18B20
digital
temperature
sensor, SCM
processing
through
the
transistor DCfan
motor
drive. According
to
the
real-time
temperature acquisition, the fan
selfstop. High, low temperature
value
set
by
the
user,
the
measured temperaturevalues
in
the high
and
low
temperature between open
temperature exceeds the
fan
weak
set
wind
profile,when
the
switch
temperature
automatically
to thefile, automatically
turn
off
the
fan
when
the
temperature
is
lower
than
the set temperature, the control state
varies with the outside temperature.
KEY WORDS:
Temperature control fan, MCU,
DS18B20,automatic control
II
目
录
前
言
..........................
..................................................
.................... 1
第
1
章
绪论
.........................
..................................................
........... 2
1.1
研究本课题的目的和意义
................
................................... 2
1.2
发展现状
< br>.
...................................
...........................................
2
第
2
章
整体方案选择
.
................................................ ...................... 4
2.1
温度传感器的选用
...................
............................................
4
2.2
主控机的选择
.
................................................ ...................... 6
2.3
显示电路
.
....................................
...........................................
6
2.4
调速方式
.
....................................
...........................................
7
第
3
章
系统硬件组成
.
................................................ ...................... 8
3.1
系统结构
.
..................................................
............................ 8
3.2
主控芯片介绍
.
.................................
..................................... 8
3.2.1 STC89C51
简介
..................................................
......... 8
3.2.2
STC89C51
主要功能和性能参数
..................................
9
3.2.3
STC89C51
单片机引脚说明
.
.....................................
10
3.2.4
STC89C51
单片机最小系统
<
/p>
.
............................
........... 12
3.2.5
STC89C51
中断技术概述
p>
.
.............................
.............. 14
3.3
DS18B20
温度采集电路
.
p>
.........................................
............ 14
3.3.1
DS18B20
的特点及内部构造
.
...........................
......... 14
3.3.3
DS18B20
的工作原理
.................................................
16
3.3.3
DS18B20
的工作时序
.................................................
19
3.4
数码管驱动显示电路
..................
.......................................
21
3.4.1
数码管驱动电路
....................
................................... 21
3.4.2
数码管显示电路
...
..................................................
.. 22
3.5
风扇驱动电路
.
................................................ .................... 23
3.6
按键模块
.
..................................................
.......................... 26
第
4
章
系统软件设计
.
................................................ .................... 28
4.1
软件介绍
.
..................................................
.......................... 28
III
4.1.1 Keil C51 ........................
.............................................
28
4.1.2 Protel99SE
< br>.
...................................
.............................. 29
4.1.3 Proteus
.
..
..................................................
................... 30
4.2
主程序流程图
.
................................................ .................... 32
4.3
DS18B20
子程序流程图
.
p>
.........................................
............ 33
4.4
数码管显示子程序流程图
.................................................
34
4.5
按键子程序流程图
...................
..........................................
35
第
5
章
系统调试
.
..................................................
.......................... 37
5.1
软硬件调试
.
..................................
......................................
37
5.1.1
按键显示部分的调试
...............................................
37
5.1.2
传感器
DS18B20
温度采集部分调试
.
......................
37
5.1.3
风扇调速电路部分调试
.
........................................... 38
5.2
系统功能
.
..................................................
.......................... 38
5.2.1
系统实现的功能
...
..................................................
.. 38
5.2.2
系统功能分析
.....................
......................................
39
结
论
..........................
..................................................
.................. 40
谢
辞
p>
.........................................
..................................................
..... 41
参考文献
...
..................................................
.....................................
42
附
录
..........................
..................................................
.................. 43
附录
1
:
protel
原理
图
.
..............
................................................
43
附录
2
:
proteus
仿真图
.....
..................................................
..... 44
附录
3
:源程序
.
.....
..................................................
................. 45
外文资料译文
.....................
..................................................
........... 52
IV
前
言
在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,
如夏天
人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电
脑上广泛使用的智能
CPU
风扇等。
而随着温度控制技术的发展,
为了降低
风扇运转时
的噪音以及节省能源等,温控风扇越来越受到重视并被广泛的
应用。
随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制
系统也应运而生,如基于单片机的温控风扇系统。它使风扇根据环境温度
的变
化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风
扇的智能控制。
p>
它的设计为现代社会人们的生活以及生产带来了诸多便利,
在提高人
们的生活质量、生产效率的同时还能节省风扇运转所需的能量。
本文设计了基于单片机的温控风扇系统,用单片机为控制器,利用温
度传感器
DS18B20
作为温度采集元件,
并根据采集
到的温度,
通过两个三
极管驱动风扇电机。根据检测到的温度与
系统设定的温度比较实现风扇电
机的自动启动和停止,
并能根据
温度的变化自动改变风扇电机的转速档位,
同时用
LED
八段数码管显示检测到的温度与当前档位。
系统的预设温度的
设置是通过三个独立按键来实现的,一个是设置按键,一个是增大预设温
度,一个是减小预设温度。
1
第
1
章
绪论
1.1
研究本课题的目的和意义
生活中,我
们经常会使用一些与温度有关的设备。比如,现在虽然不
少城市家庭用上了空调,但在占
中国大部分人口的农村地区依旧使用电风
扇作为降温防暑设备,春夏(夏秋)交替时节,
白天温度依旧很高,电风
扇应高转速、大风量,使人感到清凉;到了晚上,气温降低,当
人入睡后,
应该逐步减小转速,以免使人感冒。虽然风扇都有调节不同档位的功能,
p>
但必须要人手动换档,睡着了就无能为力了,而普遍采用的定时器关闭的
做法,一方面是定时时间长短有限制,一般是一两个小时;另一方面可能
在一两个小
时后气温依旧没有降低很多,而风扇就关闭了,使人在睡梦中
热醒而不得不起床重新打开
风扇,增加定时器时间,非常麻烦,而且可能
多次定时后最后一次定时时间太长,在温度
降低以后风扇依旧继续吹风,
使人感冒;第三方面是只有简单的到了定时时间就关闭风扇
电源的单一功
能,不能满足气温变化对风扇风速大小的不同要求。又比如在较大功率的<
/p>
电子产品散热方面,现在绝大多数都采用了风冷系统,利用风扇引起空气
< br>流动,带走热量,使电子产品不至于发热烧坏。要使电子产品保持较低的
温度,必
须用大功率、高转速、大风量的风扇,而风扇的噪音与其功率成
正比。如果要低噪音,则
要减小风扇转速,又会引起电子设备温度上升,
不能两全其美。为解决上述问题,我们设
计了这套温控风扇系统。本系统
采用高精度集成温度传感器,用单片机控制,能显示实时
温度,并根据使
用者设定的温度自动在相应温度时作出小风、大风、停机动作,精确度高
,
动作准确。
1.2
发展现状
< br>当今社会已经完全进入了电子信息化,温度控制器在各行各业中已经
得到了充分的
利用。具有对温度进行实时监控的功能,以保证工业仪器,
测量工具,农业种植的正常运
作,它的最大特点是能实时监控周围温度的
2
高低,并能同时控制电机运作来改
变温度。它的广泛应用和普及给人们的
日常生活带来了方便。
p>
温控风扇是用单片机系统来完成的一个小型的控制系统。现阶段运用
与国内大部分家庭,系统效率越来越高,成本也越来越低。其发展趋势可
以根据其性质进
行相应的改进可以运用与不同场合的温度监测控制,并带
来大量的经济效益。
3
第
2
章
整体方案选择
2.1
温度传感器的选用
温度传感器可由以下几种方案可供选择:
方案一:选用热敏电阻作为感测温度的核心元件,通过运算放大器放
大由于温度变化
引起热敏电阻电阻的变化、进而导至的输出电压变化的微
弱电压变化信号,
再用
AD
转换芯片
ADC0
809
将模拟信号转化为数字信号
输入单片机处理。具体方案如
果
2-1
R8
VCC
26
27
R10
10k
28
1
2
3
4
5
U2
IN-0
p>
IN-1
IN-2
IN-3
IN-4
EOC
IN-5
IN
-6
IN-7
AL
E
< br>16
VCC
12
ref(-)<
/p>
ref(+)
ENABL
E
START
CL
OCK
AD
D-A
ADD-B
ADD-C
ADC0
809
ms
b2-1
2-2
2-3
2-4
2-5
2-
6
2-7
ls
b2-8
21
20
19
18
8
15
14
17
7
25
24
23
22
ST
9
OE
p>
6
ST
10
AL<
/p>
E
P17
P16
P15
P14
P13
P12
P11
P10
EOC
热<
/p>
敏
图
2-1
热敏温度采集电路
方案二:采用热电
偶作为感测温度的核心元件,配合桥式电路,运算
放大电路和
A
D
转换电路,将温度变化信号送入单片机处理。此方案原理
和方
案一的原理大同小异,
AD
转换电路一样,就是模拟量输入的处
理方
式不一样,热电偶的还需要配合桥式电路,整体更加复杂点,但是此方案
的测温范围更广。
方案三:
采用数字式集成温度传感器
DS18B20
作为感测温度的
核心元
件,直接输出数字温度信号供单片机处理。
4
G<
/p>
N
D
D
Q
V
C
C
U3
DS18B20
1
2
3
VCC
R13
10K
< br>
图
2-2
DS18B20
温度采电路
对于方案
一,采用热敏电阻有价格便宜、元件易购的优点,但热敏电
阻对温度的细微变化不敏感,
AD0809
也只有
8
位,所以显示温度也只能
显示到度,不能显示到小数。在信号采集、放大、转换
过程中还会产生失
真和误差,并且由于热敏电阻的
R-T
关系的非线性,其本身电阻对温度的
变化存在较大误差,虽然可以通过
一定电路予以纠正,但不仅将使电路复
杂稳定性降低,而且在人体所处温度环境温度变化
中难以检测到小的温度
变化。故该方案不适合本系统。
对于方案二,采用热电偶和桥式测量电路相对于热敏电阻其对温度的
敏
感性和器件的非线性误差都有较大提高,其测温范围也非常宽,从
-50
摄氏度到
1600
摄氏度均可测量。
< br>但是依然存在电路复杂,
对温度敏感性达
不到本系统要求
的标准,故不采用该方案。
对于方案三,由于数字式集成温度
传感器
DS18B20
的高度集成化,大
大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感
测温度的原理
与上述两种方案的原理有着本质的不同,使得其温度分辨力
极高。温度值在器件内部转换
成数字量直接输出,简化了系统程序设计,
又由于该传感器采用先进的单总线技术(
p>
1-WRIE
)
,与单片机的接口变的
p>
非常简洁,
抗干扰能力强。
关于
DS18B20
的详细参数参看下面
“硬件设计”
中的器件介绍。
5
2.2
主控机的选择
方案一:采用凌阳系列单片机作为系统的控制器,凌阳系列单片机可
以实现各
种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块
芯片上,减少了体积,提
高了稳定性。凌阳系列单片机提高了系统的处理
速度,适合作为大规模实时系统的控制核
心。
方案二:采用单片机作为控制核心。以软件编程的方法进
行温度判断,
并在端口输出控制信号。
因
51
单片机价格比凌阳系列低得多,且本设计不需要很高的
处理速
度,从经济和方便使用角度考虑,本设计选择了方案二。对于方案二,以
单片机作为控制器,通过编写程序不但能将传感器感测到的温度通过显示
电路显示出来,而且用户能通过键盘接口,自由设置上下限动作温度值,
满足全方位的需
求。并且通过程序判断温度具有极高的精准度,能精确把
握环境温度的微小变化。故本系
统采用方案二。
2.3
显示电路
方案一:采用数码管显示温度,动态扫描显示方式。采用
LED
数码管
这种方案。虽然显示的内容有限,但是也可以显示数字和几个英文字母,
p>
在这个设计中已经足够了,并且价格比液晶字符式要低的多,为了控制设
计制作的成本,在此设计中选用
LED
数码管显示。
方案二:采用液晶显示屏
LCD
显示温度。显示用液晶字符式,可以用
软件达到很好的控制,硬件不复杂,
液晶字符显示器可以显示很丰富的内
容,但是液晶字符式价格昂贵。
对于方案一,该方案成本低廉,显示温度明确醒目,在夜间也能看见,
功耗极低,
显示驱动程序的编写也相对简单,
这种
显示方式得到广泛应用。
不足的地方是扫描显示方式是使数码管逐个点亮,因此会有闪烁
,但是人
眼的视觉暂留时间为
20MS
,当数码管扫描周期小于这个时间时人眼将感
觉不到闪烁,因此可以通过增大扫描频率来
消除闪烁感。
对于方案二,液晶体显示屏具有显示字符优美,
不但能显示数字还能
显示字符甚至图形的优点,
这是
LED
数码管无法比拟的。
但是液晶显示模
块价格昂贵,驱动程序复杂,从简单实用的原则考虑,本系统采用方案一。
6
2.4
调速方式
方案一:采用变压器调节方式,运用电磁感应原理将
220V
电压通过
线圈降压到不同的电压,控制风扇电机接到不同电压值的线圈上可控制电
p>
机的转速,从而控制风扇风力大小。
方案
二:采用三极管驱动
PWM
进行控制。
对于方案一,由于采用变压器改变电压调节,有风速级别限制,不能
适应人性化要求。且在变压过程中会有损耗发热,效率不高,发热有不安
全因素。<
/p>
对于方案二,
PWM
< br>的一个优点是从处理器到被控系统信号都是数字形
式的,
无需进行数模转换。
让信号保持为数字形式可将噪声影响降到最小。
噪声只有在强到足以将逻辑
1
改变为逻辑
< br>0
或将逻辑
0
改变为逻辑
1
时,
也才能对数字信号产生影响。对噪声抵
抗能力的增强是
PWM
相对于模拟
控制
的另外一个优点,而且这也是在某些时候将
PWM
用于通信的主
要原
因。从模拟信号转向
PWM
可以极
大地延长通信距离。故本系统采用方案
二。
7
第
3
章
系统硬件组成
3.1
系统结构
本系统由集成温度传感器、
单片机、
LED
数码管、三极管驱动电路及
一些其他外围器件组成。使用具有价廉易购的
STC89C51
单片机编程控制,
通过修改程序可方便实现系统升级。系统的框图结构如下:
复位电路
单
片
机
数码管
驱动电路
数码管
显示
晶振电路
风扇驱动
电路
风扇
温度采集
按键设置电路
电路
图
3-1
系统框图
3.2
主控芯片介绍
3.2.1
STC89C51
简介
STC89C
51
是一种低功耗、高性能
CMOS8
位微控制器,具有
8K
在系统
可编程
Flash
存储器。在单芯片上,拥有灵巧的
8
位
CPU
和在系统可编
程
Flash
,使得
STC
89C51
为众多嵌入式控制应用系统提供高灵活、超有效
的解
决方案。
具有以下标准功能:
4k<
/p>
字节
Flash
,
256
字节
RAM
,
32
位
I/O
口线,<
/p>
看门狗定时器,
内置
4KB
EEPROM
,
MAX810
复位电路,
三个
16
位
定时器
/
计数器,
一个
6
向量
2
级中断结构,
全双工串行口。
另外
STC89X51
可降至
0Hz
静态逻辑操作,支持<
/p>
2
种软件可选择节电模式。空闲模式下,
CPU
停止工作,允许
RAM
、定时
器
/
计数器、串口、中断继续工作。掉电保
8
护方式下,
RAM
内容被保存,振荡器被冻结,单片机一切工作停止,直到
下一个中断或硬件复位为止。最高运作频率
35Mhz
,
6T/12T
可选。
U4
89C51
1
40<
/p>
P10
VCC
2
39
P11
P00
3
< br>38
P12
P01
4
37
P13
P02
5
p>
36
P14
P03
6
35
P15
P04
< br>7
34
P16
P05
8
33
P17
P06
p>
9
32
RST
P0
7
10
31
P30
EA
11
30
P31
AL
E
12
29
P32
PSEN
13
28
P33
P27
14
27
P34
P26
15
26
P35
P25
16<
/p>
25
P36
P24
17
24
P37
P23
18
23
X1
P22
19
22
X2
P21
20
21
GND
P20
图
3-2
STC89C51
单片机引脚图
单片
机是美国
STC
公司最新推出的一种新型
51
内核的单片机。
片内含
有
Flash
程序存储器、
SRAM
、
UART
、
SPI
p>
、
PWM
等模块。
3.2.2
STC89C51
主要功能和性能参数
(
1
)内置标准
51
内核,机器周期:增强型为
6
时
钟,普通型为
12
时
钟
;
(
2
)工作频率范围:<
/p>
0~40MHZ
,相当于普通
8051<
/p>
的
0~80MHZ;
(
3
)
STC89C51RC
对
应
Flash
空间:
4KB;
(
4
)内部存储器(
RAM)
:
512B;
(
5
)定时器
计数器:
p>
3
个
16
位;
p>
(
6
)通用异步
通信口(
UART
)
1
个;
(
7
< br>)中断源
:8
个;
9
(<
/p>
8
)有
ISP(
在系统可编程)
IAP(
在应用可编程
),
无需专用编程器
仿真器;
(
9
)通用
IO
口:
3236
个;
(
10
)工
作电压:
3.8~5.5V
;
(
11
)外形封装:
40
脚
PDIP
、
44
脚
PLCC
和
PQFP
等。
3.2.3
STC89C51
单片机引脚说明
VCC
:供电电压。
GND
:接地。
< br>P0
口:
P0
口为一个
8
位漏级开路双向
I/O
口,每脚可吸收
8TTL
门电
流。当
P1
口的管脚第一次写
1
时,被定义为高阻输入。
P0
能够用于外部
程序数据存储器,它可以被定义为数据
/
地址的
第八位。在
FIASH
编程时,
P0
口作为原码输入口,当
FIASH
进行
校验时,
P0
输出原码,此时
P0
p>
外部
必须被拉高。
P1
口:
P1
口是一个内部提供上
拉电阻的
8
位双向
I/O
口,
P1
口缓冲
器能接收输
出
4TTL
门电流。
P1
口管脚写入
1
后,被内部上拉为高,可用
作输入,
P1
口被外部下拉为低电平时,将输出电
流,这是由于内部上拉的
缘故。在
FLASH
< br>编程和校验时,
P1
口作为第八位地址接收。
P2
口:
P2
口为一个内部上拉电阻的
8
位双向
I/O
口,
P2
口缓冲器
可
接收,输出
4
个
TTL
门电流,当
P2
口被写“<
/p>
1
”时,其管脚被内部上拉电
阻拉高,且
作为输入。并因此作为输入时,
P2
口的管脚被外部拉低,将输
出电流。这是由于内部上拉的缘故。
P2
口当用于外部程序存储器或
16
位
地
址外部数据存储器进行存取时,
P2
口输出地址的高八位。
p>
在给出地址
“
1
”
时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,
< br>P2
口输出其特殊功能寄存器的内容。
P2
口在
FLASH
编程和校验时接收高八位
地址信号和控制信号。
P3
< br>口:
P3
口管脚是
8
个带内部上拉电阻的双向
I/O
口,可接收输出<
/p>
4
个
TTL
门电
流。当
P3
口写入“
1
”后,它们被内部上拉为高电平,并用作
输入。作为输入,由于外部下拉为低电
平,
P3
口将输出电流(
ILL
)这是
由于上拉的缘故。
10
P3.0 RXD
(串行输入口)
P3.1 TXD
(串行输出口)
P3.2 /INT0
(外部中断
0<
/p>
)
P3.3 /INT1
(外部中断
1
)
P3.4 T0
(记时器
0
外部输入)
P3.5 T1
< br>(记时器
1
外部输入)
P3.6
/WR
(外部数据存储器写选通)
P3.7
/RD
(外部数据存储器读选通)
P3
口同时为闪烁编程和编程校验接收一些控制信号。
p>
I/O
口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读
端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部
总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正
地把
外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入
缓冲器
CPU
将根据不同的指令分别发出读端口或读引脚信号以完成不同的
操作。这是由硬件自动完成的,不需要我们操心,
1
然后再实行读引脚操
作,否则就可能读入出错,为什么看上面的图,如果不对端口置
1
端口锁
存器原来的状态有可能为
p>
0Q
端为
0Q^
为
1
加到场效应管栅极的信号为
1
,
该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为<
/p>
1
,也
会因端口的低阻抗而使信号变低使
得外加的
1
信号读入后不一定是
1
p>
。若
先执行置
1
操
作,则可以使场效应管截止引脚信号直接加到三态缓冲器中
实现正确的读入,由于在输入
操作时还必须附加一个准备动作,所以这类
I/O
口被称为准双
向口。
89C51
的
P0/P1/P2
/P3
口作为输入时都是准双向口。
RST
:复位输入。当振荡器复位器件时,要保持
RST
脚两个机器周期的
高电平时间。
ALE/PROG
:当访问外部存储器时,地址锁存允许的输出电平用于
锁存
地址的地位字节。在
FLASH
编
程期间,此引脚用于输入编程脉冲。在平时,
ALE
端以不变的
频率周期输出正脉冲信号,
此频率为振荡器频率的
1/6
。
因
此它可用作对外部输出的脉冲或用于定时
目的。然而要注意的是:每当用
作外部数据存储器时,将跳过一个
ALE
脉冲。如想禁止
ALE
的输出
可在
SFR8EH
地址上置
0
。此时,
ALE
只有在执行
< br>MOVX
,
MOVC
指令是
p>
ALE
才起
11
作用。另外,该引脚被略微拉高。如果微处理器在外部执行状
态
ALE
禁止,
置位无效。
/PSEN
:外部程序存储器的选通信号。在
由外部程序存储器取指期间,
每个机器周期两次
/PSEN
p>
有效。但在访问外部数据存储器时,这两次有效
的
< br>/PSEN
信号将不出现。
/EA/VPP
:当
/EA
保持低电平
时,则在此期间外部程序存储器
(
0000H-FFFFH
p>
),不管是否有内部程序存储器。注意加密方式
1
< br>时,
/EA
将内部锁定为
RES
ET
;当
/EA
端保持高电平时,此间
内部程序存储器。在
FLASH
编程期间,此引脚也用于施加<
/p>
12V
编程电源(
VPP
)。
XTAL1
:反向振
荡放大器的输入及内部时钟工作电路的输入。
XTAL2
:来自反向振荡器的输出。
3.2.4
STC89C51
单片机最小系统
<
/p>
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能
使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行
的必备条件,
可以将最小系统作为应用系统的核心部分,通过对其进行存
储器扩展、
< br>A/D
扩展等,使单片机完成较复杂的功能。
STC89C51
是片内有
ROM/EPROM
的单片机,因此,这种芯片构成的最小
系统简单﹑可靠。
用
STC89C52
单片机构成最小应用系统
时,
只要将单片机
接上时钟电路和复位电路即可,结构如图
p>
2-3
所示,由于集成度的限制,
最小应用
系统只能用作一些小型的控制单元。
复位电路
图
3-3
单片机最小系统原理框图
时钟电路
STC89C51
I
/
0
口
1.
时钟电路
STC89C51
单片机的时钟信号通常有两种方式产生:
一是内部时钟方式,
二是外部时钟方式。
内部时钟方式如图
2-4
p>
所示。
在
STC89C51
单片机内部
有一振荡电路,
只要在单片机的
XTAL1(18)
和
XTAL2(19)
引脚外接石英晶体
12
(
简称晶振
)
,就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图
中电容
C1
和
C2
的作用是稳定频率和快速起振,电容值在
5~30pF
,典
型值
为
30pF
。晶振
CYS
的振荡频率范围在
1.2~12MHz
间选择,典型值为
12MHz
和
6MHz
。
C
2
12
M
30
P
C
3
2
< br>晶
振
1
1
P
图
30
3-4 STC89C51
内部时钟电路
2.
复位电路
当在
STC89C51
单片机的
R
ST
引脚引入高电平并保持
2
个机器周
期时,
单片机内部就执行复位操作
(
若
该引脚持续保持高电平,
单片机就处于循环
复位状态
)
。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电
容
充放电来实现的。
只要
Vcc
的上升时
间不超过
1ms,
就可以实现自动上电
复位。
除了上电复位外,有时还需要按键手动复位。本设计就
是用的按键手
动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过<
/p>
RST(9)
端与电源
Vcc
接通而实现的。按键手动复位电路见图
2-5
。时
钟频
率用
11.0592MHZ
时
p>
C
取
10uF,R
取
10k
Ω
。
VCC
C1
10UF
< br>R1
10k
13
图
3-5
STC89C51
复位电路
3.2.5
STC89C51
中断技术概述
p>
中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请
求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系
统来实现的。当
中断请求源发出中断请求时,如果中断请求被允许,单片
机暂时中止当前正在执行的主程
序,转到中断服务处理程序处理中断服务
请求。中断服务处理程序处理完中断服务请求后
,再回到原来被中止的程
序之处(断点),继续执行被中断的主程序。
< br>
图
3-6
为整个中断响应和处
理过程。
图
3-6
中断响应和处理过程
如果单片机没有
中断系统,单片机的大量时间可能会浪费在查询是否
有服务请求发生的定时查询操作上。
采用中断技术完全消除了单片机在查
询方式中的等待现象,大大地提高了单片机的工作效
率和实时性。
3.3
DS18B20
温度采集电路
DS1
8B20
是美国
DALLAS
半导体器
件公司推出的单总线数字化智能
集成温度传感器。单总线
(1-
Wire)
是
DALLAS
公司的一项
专有技术
,
它采用
单根信号线
,
既传输时钟又传输数据
,
而且数据传输是双向的
,
具有节省
I/O
口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
3.3.1
DS18B20
的特点及内部构造
特点如下:
(
1
)采用独特的单总线接口方式,即只有一根信号线与控制器相连,
< br>14
实现数据的双向通信,不需要外部元件;
(
2
)测量结果直接输出数字温度信号,以单总线串行传送
给控制器,
同时可传送
CRC
校验码,
具有极强的抗干扰纠错能力;
(
3<
/p>
)
支持多点组网功能,
多个
DS18B20
可以并联在唯一的三根线上,
实现组
网多点测量;
(
4
< br>)适应电压范围宽
3.0-5.5V
,不需要备份电源、
可用数据线供电,
温度测量范围为
-55
℃
~125
℃,
-10
℃
~85
℃时测量精度为
±
0.5
℃;
(
5
)通过编程可实现
9~12
位的数字值读数方式,对应的可分辨温度
分别为
0.5
℃,
0.25
℃,
0.125
℃,
0.0625
℃,实现高精度测温;
(
6
p>
)负压特性。电源极性接反时,芯片不会因发热而烧毁,但不能正
常
工作。
封装图及内部构造,如下图
3
-7
和
3-8
所示
图
3-7
DS18B20
外部结构框图
p>
V
DD
C
PP
p>
DQ
64位
内部V
DD
光刻
ROM
及单
总线
接口
存储及控制逻辑
高<
/p>
速
暂
存
寄
存
器
温度传感器
上限
寄存器TH
下限寄存器TL
结构寄存器
供电方
式检测
8位CRC
发生器
图
3-8
DS18B20
内部结构框图
15
3.3.2
引脚功能介绍
NC:
空引脚
,
悬空不使
用
;
VDD:
可选电源脚
,
电源电压范围
3~5.5V
。
工作于寄生电源时
,
此引脚应<
/p>
接地
;
I/O:
数据输入
/
输出脚
,
漏极开路
,
常态下高电平。
DS18B20
采用
3
脚
TO-92
封装或
8
脚
SOIC
及
CSP
封装方式。图
2-8
所示为
DS18B20
的内部结构框图,它主要包括寄生电源、温度传感器、
p>
64
位光刻
ROM
及单总线接口、存放中间数据的高速暂存器(内含便笺式
RAM
)
、存储与控制逻辑、用于存储用户设定的温度上下限值的
TH
和
TL
触发器、结构寄存器、
8
位循环冗余校验码(
CRC
< br>)发生器等八部分。
图
3-9
DS18B20
的封装
3.3.3
DS18B20
的工作原理
64
位
ROM
的结构如
图
3-10
所示,开始
8
位是产品类型的编号;接着
是每个器件唯一的序号,共
48
位;最后
8
位是前面
56
位的
CRC
检验码,
这也是多个
DS18B20
可采用单线
进行通信的原因。
非易失性温度报警触发
器
TH
、
TL
,可以通过编程写入用
户报警上下线数据。
8
位检验
M
L
48
位序列
p>
按
8
位工厂代<
/p>
MS
L
图
3-10 64
位
< br>ROM
示意图
16
DS18B20
< br>温度传感器的内部存储器还包括一个高速暂存
RAM
和一
个
非易失性的可电擦除的
EEPROM
。
高速暂存
RAM
< br>的结构位
9
字节的存储器,结构如图
2-12
所示。前两
个字节包括测得温度的信息。
3
、
4
字节是
TH
和
TL
的拷贝,是
易失的,
每次上电复位时被刷新。第
5
字节为配置寄存器,其内容用于确定温度值
的数字转换频率,
D
S18B20
工作时按此寄存器中的分辨率将温度转换成相
应精
度的数值。该字节各位的定义如图
2-13
,其低
5
位一直为
1
;
TM
是
测试模式位,
用于
设置
DS18B20
在工作模式还是在检测模式,
在
DS18B20
出厂时,该位被设置为
0
,用户不要去改动;
R1
和
R2
决定温度转换的精
度位数,即
用来设置分辨率,
单片机可以通过单线接口读出该数据。
p>
的数据时低位在前,
高位在后,
数据格式以
0.0625
℃
/LSB
形式表示。
表
3-1
p>
是部分温度值对应的二进制温度表示数据。
表
3-1
DS18B20
温度与表示值对应表
温度
/
℃
+125
+85
+25.
+10.
+0.5
0
-0.5
-10.
-25.
-55
二进制
0000 0111 1101 0000
0000
0101 0101 0000
0000 0001 1001 0001
0000 0000 1010 0010
0000
0000 0000 1000
0000 0000 0000 0000
1111 1111 1111 1000
1111
1111 0101 1110
1111 1110 0110 1111
1111 1100 1001 0000
十六进制
07D0H
0550H
0191H
00A2H
0008H
0000H
FFF8H
FF5EH
FF6FH
FC90H
DS18B20
完成温度转换后,就把测得的温度值与
RAM
中的
TH
、
p>
TL
字节内容对照,若
T>TH
或
<
br>可以用多个
T
,则将该器件内的报警标志位置位,并
对主机发出的报警搜索命令做出响应。
因此,
DS18B20
同时测
得温度并进行报警搜索。
在
64<
/p>
位
ROM
的最高有效字节中存储有循环冗
余检验码(
CRC
)
。主
17
机根据
ROM
的前
56
位来计
算
CRC
值,并与存入
DS18B20
的
CRC
值作
比较,以判断主机收到的
ROM
数据是否正确。
关于
DS18B20
的工作
原理这里就不再多说,
有感兴趣的可以查阅相关
手册。
DS18B20
的编程指令
DS18B20
的指令有:读
ROM
(
33H
)
,匹配
ROM
(
55H
)<
/p>
,跳过
ROM
(
CCH
)
,搜索
ROM
(
F0H
)
,报警搜索(
p>
ECH
)
,稳定转换(
44H
)
,度暂
存器
(
BEH
)
,
写暂存器
(
4EH
)
,
复制暂存器
(
48
H
)
,
重调
E
2PROM
(
B8H
)
,
读供电方式(
B4H
)
p>
。关于这些指令,这里也不再一一介绍,只把本设计用
到的用法说一
下。
CCH-
跳过
< br>ROM
指令。忽略
64
位
ROM
地址,直接向
DS18B20
发温
度变换命令,适用于一个从机工作。
p>
44H-
温度转换指令。启动
DS18B2
0
进行温度转换,
12
位转换时最长<
/p>
为
750ms
(
9
位
93.75ms
)
。结果存入内部
9
字节的
RA
M
中。
BEH-
读暂存器指令。读内部
RAM
中
9
字节的温度数据。
如图
2-14
所示,是
DS18B20
< br>在电路中的接发,本设计采用的是单独
电源供电方式,下面将介绍其工作时序,有
工作时序图可以很清楚的知道
该这样控制
DS18B20
。
图
3-11
DS18B20
的工作电路
18
3.3.3
DS18B20
的工作时序
初始化时序,当主机将单总线
P30
从逻辑高拉
到逻辑低时,即启动一
个写时隙,
所有的写时隙必须在
60~120us
完成,
且在每个循环之间至少
需
要
1us
的恢复时间。写
0
和写
1
时隙如图所示。
在写
0
时隙期间,微控制
器在整个时隙
中将总线拉低;而写
1
时隙期间,微控制器将总线拉低,然
p>
后在时隙起始后
15us
之释放总线。时序
图如图
3-15
所示。
复位脉冲
MSB
<
br>1
480us
图
3-15
初始化时序图
具体步骤如下:
(
)将数据线置高电平
1
。
p>
(
2
)延时(时
间应尽量短些)
。
(
3
)数据线拉到低电平
0
。<
/p>
(
4
)延时<
/p>
750
μ
s(
该范围可以在
480
~
960
μ
s)
。
(
5
)数据线拉置高电平
1
。
(
6<
/p>
)
延时等待。
如果初始化成功则在
15
~
60ms
内产
生一个由
DS18B20
返回的低电平
0
,据该状态可以确定它的存在。但是应注意,不能无限地
等待
,不然会使程序进入死循环,所以要进行超时判断。若
CPU
读
到数据
线上的低电平
0
后,还要进行延
时,其延时的时间从发出高电平算起(第
5
)步的时间算起)最
少要
480
μ
s
。
(
7
)
将数据线再次拉置高电平
1
后结束。
1.
数据时序
当主机将单总线
P30
从逻辑高拉到逻辑低时,即启动一个写
时隙,所
有的写时隙必须在
60~120us
< br>完成,
且在每个循环之间至少需要
1us
的恢复
时间。写
0
和写
1
时隙如图所示。在写
0
时隙期间,微控制器在整个时隙
19
中将总线拉低;而写
1
时隙期间,微控制器将总线拉低,然后在时隙起始
后
15us
之释放总线。时序图见图
3-16
所示。
DS18B2
图
3-16
写数据时序图
DS18B
具体步骤如下:
(
< br>1
)数据线先置低电平
0
。
p>
(
2
)延时确定
时间为
15
μ
s
。按从低位到高位的顺序发送数据(一次
只发送一位)
。
p>
(
3
)延时时间
为
45
μ
s
。
(
4
)将数
据线拉到高电平
1
。
(
5
)重复(
1
)~(
5
)步骤,直到发送完整个字节。
(
6
)最后将数据线拉
高到
1
。
2.
读数据时序
DS18B20
器件仅在主机发出读时隙时,才向主机传输数据。所以在主
机发出读数据命令后,
必须马上产生读时隙,
以
便
DS18B20
能够传输数据。
所有
的读时隙至少需要
60us
,且在两次独立的读时隙之间,至少
需要
1us
的恢复时间。每个读时隙都由主机发起,至少拉低总
线
1us
。在主机发起
读时隙之后,<
/p>
DS18B20
器件才开始在总线上发送
0
或
1
,若
D
S18B20
发送
1
,则保持总线为高
电平。若发送为
0
,则拉低总线当发送
0
时,
DS18B20
在
该
时
隙
结
< br>束
后
,
释
放
总
线
,
由
上
拉
电
阻
p>
将
总
线
拉
回
至
高
电
平
状
态
。
< br>DS18B20
发出的数据,在起始时隙之后保持有效时间为
15us
。因而主机在
读时隙期间,
必须释放总线。
并且在时隙起始后的
15us
之内采样总线的状
20
态。时序图见图
3-17
所示。
图
3-17
读数据时序图
具体步骤如下
:
< br>(
1
)将数据线拉高到
1
。
(
2
)延时
2
μ
s
。
(
3
)将数据线拉低到
0
。
p>
(
4
)延时
6
p>
μ
s
。
(
5
)将数据线拉高到
1
。
(
6<
/p>
)延时
4
μ
s<
/p>
。
(
7
)读数据线的状态得到一个状态位,并进行数据处理。
(
8
)延时
6
μ
s
。
< br>(
9
)重复(
1
)~(
7
)步骤,直到读取完一个数据。
3.4
数码管驱动显示电路
3.4.1
数码管驱动电路
本电路的显示驱动模块是由
74HC573
芯
片来完成的,
74HC573
包含八
路
D
型透明锁存器,每个锁存器具有独立的
D
型输入,以及适用于面向
总线的应用的三态输出。所有锁存器共用一个锁存使能(<
/p>
LE
)端和一个输
出使能(
OE
)端。
当
LE
为高
时,数据从
Dn
输入到锁存器,在此条件下,锁存器进入透
p>
明模式,也就是说,锁存器的输出状态将会随着对应的
D
输入每次的变化
而改变。当
LE
< br>为低时,锁存器将存储
D
输入上的信息一段就绪时间,直
21
到
LE
的下降沿来临。
当
OE<
/p>
为低时,
8
个锁存器的内容可被正常输出
;当
OE
为高时,输出
进入高阻态。<
/p>
OE
端的操作不会影响锁存器的状态。
表
3-2
74HC573
电气参数表
74HC573
参数
74HC573
基本参数
电压
驱动电流
传输延迟
2.0
~
6.0V
+/-7.8 mA
14 ns@5V
74HC573
其他特性
逻辑电平
功耗考量
CMOS
低功耗或电池供电
应用
74HC573
封装与引脚
SO20, SSOP20, DIP20, TSSOP20
74HC573
特性:
(
1
)输入输出分布在芯片封装的两侧,为微处理器
提供简便的接口
(
2
)用于微控制器和微型计算机的输入输出口
(
3
)三态
正相输出,用于面向总线的应用
(
4
)共用三态输出使能端
(
5
)逻辑
功能与
74HC563
、
74HC37
3
相同
(
6
)遵循
JEDEC
< br>标准
no.7A
(
7
)
ESD
保护
3.4.2
数码管显示电路
本电路的显示模块主
要由一个
4
位一体的
7
段
LED
数码管构成,
用于<
/p>
显示测量到的温度及当前的档位。它是一个共阴极的数码管,每一位数码
< br>管的
a,b,c,d,e,f,g
和
dp
端都各自连接在一起,
用于接收单片机的
P0
口产生
的显示段码。
S
1
,
S2
,
S
3
,
S4
引脚端为其位选端,用于接收
单片机的
P2
口产生的位选码。本系统采用动态扫描方式。扫描
方式是用其接口电路把
22
p>
所有数码管的
8
个比划段
< br>a~g
和
dp
同名端连在一起,
而每一个数码管的公
共极
COM
各自独立地受
I/O
线控制。
CUP
从字段输出口送出字型码时,
所有数码管接收到
相同的字型码,
但究竟是哪个数码管亮,
则取决于
COM
端。
COM
端与单片
机的
I/O
接口相连接,由单片机输出位位选码到
I/O
接
口,控制何时哪一位数码管被点亮。在轮流
点亮数码管的位扫描过程中,
每位数码管的点亮时间极为短暂。但由于人的视觉暂留现象
,给人的印象
就是一组稳定显示的数码。动态方式的优点是十分明显的,即耗电省,在<
/p>
动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。具体原理
< br>图如图
3-18
所示
A
U2
1
11
2
3
4
5
6
7
8
9
< br>OC
C
1D
2D
3D
4D
5D
6D
7D
8D
74HC573
10
10
20
1Q
2Q
3Q
4Q
5Q
6Q
7Q
8Q
19
18
17
16
15
14
13
12
VCC
B
C
U3
4-
LED
S
1
a
f
S
2
D
E<
/p>
G
C
P
2
7
G
F
E
D
1
2
3
4
5
6
c
g
S
4
e
d
p
S
3
b<
/p>
P
2
4
1
2
1
1
1
0
A
P
2
5
F
P
2
6
9
8
7
B
图
3-18
数码管显示电路
3.5
风扇驱动电路
风扇的驱动采用的是两个三极管,三级管将信号放大,然后传输到风
扇下图是
该模块电路:
23
VCC
R3
10k
R2
1k
R4
< br>1k
Q1
8050
Q2
8550
M
风
扇
图
3-19
风扇驱动模块
三极管是电流放大器件
,有三个极,分别叫做集电极
C
,基极
B
,发
射极
E
。分成
NPN
和
PNP
两种。我们仅以
NPN
三极管的共发射极放大电
路为例来说明一下三极管放大电路的基本原理。
(
1
)电流放大
下面的分析仅对于
NPN
型硅三极管。如上图所示,我
们把从基极
B
流至发射极
E
的电流叫做基极电流
Ib
;
把从集电极
C
流至发射极
E
的电流
叫做集电极电流
Ic
。这两个电流的方向都是流出发射极的,所以发射极
E<
/p>
上就用了一个箭头来表示电流的方向。三极管的放大作用就是:集电极电
< br>流受基极电流的控制(假设电源
能够提供给集电极足够
大的电流的话)
,
并且基极电流很小的变化,会引起集电极电流
很大的变化,且变化满足一
定的比例关系:
集电极电流的变化量
是基极电流变
化量的
β
倍,
即电流变
化被放大了
β
倍,所以我们把
β
叫做三极管的放大倍
数(
β
一般远大于
1
< br>,
例如几十,
几百)
。
如果我们将一个变化的小信号加到基极跟发射
极之间,
这就会引起基极电流
Ib
的变
化,
Ib
的变化被放大后,导致了
Ic
很大的变
化。如果集电极电流
Ic
p>
是流过一个电阻
R
的,那么根据电压计算公
式
U=R*I
可以算得,这电阻上
电压就会发生很大的变化。我们将这个电阻上
的电压取出来,就得到了放大后的电压信号
了。
(
2
)
偏置电路
三极管在实际的放大电路中使用时,还需要加合适的
偏置电路。这有
几个原因。首先是由于三极管
BE
结的非线性(相当于一个二极管)
,基极
24
电流必须在输入电压
大到一定程度后
才能产生(对于硅管,常取
0.7V
)
。
当基极与发射极之间的电压小于
0.7V
时,基极电流就可以认为是
0
。但实
际中要放大的信号往往远比
0.7V
要小,如果不加偏置的话,这么小的信
号就不足以引起基极电流的改变(因为小于
p>
0.7V
时,基极电流都是
0
)
。
如果我们事先在三极管的基极上加上一
个合适的电流
(叫做偏置电流,
上
图中那个电阻
Rb
就是用
来提供这个电流的,
所以它被叫做基极偏置电阻)
,
那么当一个小信号跟这个偏置电流叠加在一起时,
小
信号就会导致基极电
流的变化,而基极电流的变化,就会被
放大并在集电极上输出。另一个原
因就是输出信号范围的要求,
如果没有加偏置,
那么只有对那些增加的
信
号放大,而对减小的信号无效(因为没有偏置时集电极电流为
0
,不能再
减小了)
。而加上偏置
,事先让集电极有一定的电流,当输入的基极电流变
小时,集电极
电流就可以减小;当输入的基极电流增大时,集电极电流就
增大。这样减小的信号和增大的信号都可以被放大了。
(
p>
3
)开关作用
下面说说三极管的饱和情况。像上面那样的图,因为受到电阻
Rc
的
限制(
Rc
是固定值,那么最大电流为
U/Rc
,其中
U
为电源电压)
,集电极
p>
电流是不能无限增加下去的。当基极电流的增大,不能使集电极电流继续
增大
时,三极管就进入了饱和状态。一般判断三极管是否
饱和的准则是:
Ib*
β
〉
Ic
。进入饱和状态之后,三极管的集电极跟发射极之间的电压将很
小,
可以理解为
一
个开关闭合了。
这样我们就可以拿三极管来当作开关使
用:当基
极电流为
0
时,三极管集电极电流为
0
(这叫做三极管截止)
,相
当于开关断
开;
当基极电流很
大,
以至于三极管饱和时,
相当于开关闭合。
如果三极管
主要工作在截止和饱和状态,那么这样的三极管我们一般把它
叫做开关管。
25