基于单片机的温度控制器设计Word下载.docx
- 文档编号:20562370
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:19
- 大小:152.52KB
基于单片机的温度控制器设计Word下载.docx
《基于单片机的温度控制器设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制器设计Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL公司的AT89S51单片机作为主控芯片。
主控模块采用单片机最小系统是由于AT89S51芯片内含有4kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉,批量价在10元以内。
AT89S51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。
同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。
AT89S51引脚功能说明
Vcc:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。
表4-1为P1口第二功能。
表1系统P1口第二功能表
端口引脚
第二功能
P1.5
MOSI(用于ISP编程)
P1.6
MISO(用于ISP编程)
P1.7
SCK(用于ISP编程)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问8位地址的外部数据存储器(如执行:
MOVX@Ri指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。
Flash编程或校验时,P2也接收高位地址和其它控制信号。
)
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2。
表2系统P3口的第二功能表
端口功能
RXD(P3.0)
串行输入口
T0(P3.4)
定时/计数器0外部输入
TXD(P3.1)
串行输出口
T1(P3.5)
定时/计数器1外部输入
INT0(P3.2)
外中断0
WR(P3.6)
外部数据存储器写选通
INT1(P3.3)
外中断1
RD(P3.7)
外部数据存储器读选通
RST:
复位输入。
当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。
WDT益出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,高有两次有效的PSEN信号。
AT89S51单片机内部构造及功能:
特殊功能寄存器:
特殊功能寄存器的片内空间分存如下图3所示。
这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。
中断寄存器:
各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。
图2为AUXR辅助寄存器。
图2AUXR辅助寄存器
电源空闲标志:
电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。
存储器结构:
MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
程序存储器:
如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51假如接至Vcc(电源+),程序首先执行从地址0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
数据存储器:
在AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
看门狗定时器(WDT):
WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。
外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。
引脚图详见图3
图3AT89S51单片机引脚图
二、各单元硬件设计
(1)键盘单元
单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键开关状态的可靠输入:
为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响
对照图示的4*4键盘,说明线反转法工作原理。
首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方法是:
向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。
如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。
判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。
依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;
如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
键盘共有16个按键,用于方便设定温度。
…,数字按键,输入数字0----9;
,设置的确认,修改设置温度时进行确认;
设置的清除,修改设置温度时进行删除;
开启电源
关闭电源
显示及设置转换到温度点1,按此按键后,显示预设置温度的数码管
闪烁;
显示及设置转换到温度点2,按此按键后,显示预设置温度的数码管
表3系统键盘的按键分布表
P2.0
1
2
3
P2.1
4
5
6
7
P2.2
8
9
F1
F2
P2.3
清除
开启
关闭
确定
P2.4
P2.5
P2.6
P2.7
(2)温度控制及超温和超温警报单元
当采集的温度经处理后超过规定温度上限时,单片机通过P1.4输出控制信号驱动三极管D1,使继电器K1开启降温设备(压缩制冷设备):
当采集的温度经处理后低于设定温度下限时,单片机通过P1.5输出控制信号驱动三极管D2,使继电器K2开启升温设备(加热器1)。
(3)温度测试单元
采用温度芯片DS18B20。
使用集成芯片,能够有效的减小外界的干扰,提高测量的精度,简化电路的结构。
(4)温度控制器件电路
单片机通过三极管控制继电器的通断,最后达到控制电热器的目的。
当温度未达到要求时,单片机发送高电平信号使三极管饱和导通,继电器使电源与电热器接通,电热器加热。
温度慢慢升高。
当温度上升到预定温度时,单片机发送低电平信号三极管进入截止状态,继电器的弹片打到另一侧,使电热器与电源断开,电热器停止加热。
继电器电路中有一个三极管8050的保护电路,即将一个二极管反向接到三机管的两端。
连接方法如图4所示。
图4单片机控制信号
其原理是:
当继电器突然断电时,继电器产生很大的反向电流。
二极管的作用是将反向电流分流,使流过三级管8050的电流比较小,达到保护三极管8050的作用。
(5)七段数码管显示单元
本部分电路主要使用七段数码管和移位寄存器芯片74LS164。
单片机通过I2C总线将要显示的数据信号传送到移位寄存器芯片74LS164寄存,再由移位寄存器控制数码管的显示,从而实现移位寄存点亮数码管显示
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态,逻辑封装图如图5:
图5逻辑封装图
引出端符号:
CLOCK时钟输入端;
CLEAR同步清除输入端(低电平有效);
A,B串行数据输入端;
QA-QH输出端。
真值表:
表4
表4系统真值表
Input
Output
Clear
Clock
A
B
QA
QB
…
QH
L
X
H
QAD
QBD
QHD
↑
QAN
QGN
图6数码管实际连线图
(6)接口通讯单元max232资料简介:
该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
在本设计中采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接,串口通讯具体如图7
图7通讯接口连线图
(7)电源输入部分
控制系统主控制部分电源需要用5V直流电源供电,其电路如图10所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。
由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。
稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。
本电路使用集成稳压芯片7805解决了电源稳压问题。
如图8
图8电源部分连线图
三、软件设计
(1)程序结构分析
键盘扫描电路及按键处理程序:
键盘的输入按键的识别及进入相应的程序。
温度信号处理程序:
对温度芯片送过来的数据进行处理,进行判断和显示。
数码管显示程序:
向数码的显示送数,控制系统的显示部分。
继电器控制程序:
控制继电器动作
串口通讯程序:
实现PC机与单片机通讯,将温度数据传送给PC机。
(2)主程序
图9主程序图
程序开始的时候先设置初始化,然后就控制数码管显示当前温度。
接着就判断F1、F2按键是否被按下。
按下F1进入温度控制点1的程序、按下F2进入温度控制点2的程序。
程序控制设置温度的两个数码管闪烁的,此时键盘输入有效。
有按键按下的时候进入按键处理程序。
按下“确定”按键后,程序进入判断程序和继电器控制程序。
继电器动作后,程序回到显示当前程序,并开始循环。
(3)程序代码
主程序:
ORG0000H;
DS18B20.ASM
DS18SLEQU41H;
用于保存读出温度的低8位
DS18SHEQU40H;
用于保存读出温度的高8位
DS18FIGEQU8H;
是否检测到DS18B20标志位
A_BIT1EQU31H;
数码管个位数存放内存位置
B_BIT1EQU32H;
数码管十位数存放内存位置
D_BIT1EQU35H
;
数码管百位数存放内存位置
DS18CD1EQU42H;
DS18CD1-DS18CD8暂存64位ROM
DS18CD2EQU43H;
从低到高
DS18CD3EQU44H
DS18CD4EQU45H
DS18CD5EQU46H
DS18CD6EQU47H
DS18CD7EQU48H
DS18CD8EQU49H
DS1864BEQU4AH
DS18ADSEQU4BH
DS18DQEQUP1.0;
30H,31H,32H,33H:
X个位十位X
MOD7:
MOVSP,#60H
LCALLGET_TEMPER;
调用读温度子程序
LCALLREADCODE
AJMPMOD7
INIT_1820:
;
DS18B20初始化
SETBDS18DQ
CLRDS18DQ
延时,500US低MC
MOVR7,#250
DJNZR7,$
MOVR7,#150
SETBDS18DQ
释放总线
LCALLDELAY60US
15-60US的等待时间
MOVR6,#4
SETDSDQ:
LCALLDELAY60US
JNBDS18DQ,SETDSDQFH;
60-240US内是否有返回信号,为0跳
DJNZR6,SETDSDQ
CLRDS18FIG
RET
SETDSDQFH:
SETBDS18FIG
MOVR7,#250
MOVR7,#100
RET;
数据处理程序:
TEMP0:
INCA
AJMPTEMP1
TEMPCOV:
MOVA,DS18SL;
数据处理子程序
TEMPCOV
MOVB,#16
DIVAB
JBB.3,TEMP0
TEMP1:
MOV34H,A;
将DS18SL的高四位右移四位,存入
34H中(温度值)
MOVA,B;
将DS18SL的低四位X10/16得小数后
一位数.
MOVB,#10
MULAB
MOV30H,A;
将小数后一位数.存入30H中
MOVA,DS18SH;
DS18SH中存放高8位数,权
重16
ADDA,34H;
34H中存入温度值的整数部分
MOV31H,B;
个位存入31H中
MOVB,#10;
DIVAB;
MOV32H,B;
十位存入32H中
MOV35H,B;
百位存入33H中
MOVA,DS18SH
MOV33H,#10H;
JBACC.7,EXIT7
MOV33H,#00H
EXIT7:
RET
GET_TEMPER:
读出转换后的温度值,并显示
LCALLINIT_1820;
先复位DS18B20
JBDS18FIG,TSS2
RET;
判断DS1820是否存在?
若DS18B20不存在则返
TSS2:
MOVDS18ADS,#0
DS18JX:
LCALLDS18CODP
MOVA,DS18ADS
ADDA,#9
MOVDS18ADS,A
CJNEA,#63,DS18JX
DS18CODP:
LCALLMRCOVT;
转换指定的DS18B20的温度
LCALLMRRDTEDP;
显示温度
TEMP:
LCALLINIT_1820
JBDS18FIG,NEXT4
NEXT4:
MOVDS18ADS,#9
MOVA,#0CCH;
SKIPROM
LCALLWRITE_1820
MOVA,#44H;
温度转换命令
LCALLDELAY1S
LCALLMRRDTEDP
写DS18B20的子程序(有具体的时序要求)
WRITE_1820:
写DS18B20
MOVR5,#8
DS18JXWE:
初始化
CLRDS18DQ
MOVR7,#5
DJNZR7,$;
拉低15US内,写入数据
CLRC
RRCA
MOVDS18DQ,C
LCALLDELAY60US;
持续60US
写完一个位
DJNZR5,DS18JXWE
READ_1820_CODE:
读取CODE64位
MOVR4,#8
读8次数
MOVR1,#DS18CD1
低位地址存在R1
DS18JXRD3:
MOVR5,#8
8位数据
DS18JXRD2:
前两句完成初始化
NOP
NOP
延时至少1US
上升沿,并在,15US内读数
MOVC,DS18DQ
读时序,最少60US
DJNZR5,DS18JXRD2
MOV@R1,A
INCR1
DJNZR4,DS18JXRD3
读DS18B20的程序,从DS18B20中读出两个字节的温度数
据
READ_18200:
MOVR4,#2
读两次数
M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 控制器 设计