基于AT89C51单片机的温控及显示系统.docx
- 文档编号:10276962
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:30
- 大小:215.99KB
基于AT89C51单片机的温控及显示系统.docx
《基于AT89C51单片机的温控及显示系统.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的温控及显示系统.docx(30页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机的温控及显示系统
基于AT89C51单片机
的温控及显示系统
班级:
10测控一班
姓名:
赵鸿
学号:
1010131104
基于AT89C51单片机的温控及显示系统
[摘要]随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。
本文介绍了数字温度测量及自动控制系统的设计。
本系统采用单片机来实现对温度的控制。
它的主要组成部分有:
AT89S51单片机、温度传感器、键盘与显示电路、温度控制电路。
它可以实时的显示和设定温度,实现对温度的自动控制。
通过实验测试表明,本设计对温度的控制有方便、简单的特点,从而大幅提高了被控温度的技术指标。
[关键词]:
单片机温度传感器键盘和显示
正文:
1、系统硬件的设计
1.1单片机最小应用系统的设计
目前的单片机开发系统只能够仿真单片机,却没有给用户提供一个通用的最小系统。
由设计的要求,只要做很小集成度的最小系统应用在一些小的控制单元。
其应用特点是:
(1)全部I/O口线均可供用户使用。
(2)内部存储器容量有限(只有4KB地址空间)。
(3)应用系统开发具有特殊性
图1最小系统图
单片机最小系统如图1所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。
时钟电路用于产生MCS-51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。
MCS-51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。
电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。
晶体的振荡频率为12MHz。
把EA脚接高电平,单片机访问片内程序存储器,但在PC值超过0FFFH(4Kbyte地址范围)时,将自动转向执行外部程序存储器内的程序。
MCS-51的复位是由外部的复位电路来实现。
采用最简单的外部按键复位电路。
按键自动复位是通过外部复位电路的来实现的.我们选用时钟频率为12MHz,C1取47μf。
3.2温度传感电路设计
DS18B20的性能特点:
采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值。
(9位二进制数,含符号位)测温范围为-55℃-+125℃,测量分辨率为0.0625℃,内含64位经过激光修正的只读存储器ROM,适配各种单片机或系统机,用户可分别设定各路温度的上、下限,内含寄生电源。
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图2所示。
图2DS18B20管脚图
在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻.我们采用的是第一种连接方法,如图3所示:
把DS18B20的数据线与单片机的13管脚连接,再加上上拉电阻。
图3温度传感电路图
DS18B20有六条控制命令,如表1所示:
表1DS18B20控制命令
指 令
约定代码
操 作 说 明
温度转换
44H
启动DS18B20进行温度转换
读暂存器
BEH
读暂存器9个字节内容
写暂存器
4EH
将数据写入暂存器的TH、TL字节
复制暂存器
48H
把暂存器的TH、TL字节写到E2RAM中
重新调E2RAM
B8H
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读电源供电方式
B4H
启动DS18B20发送电源供电方式的信号给主CPU
CPU对DS18B20的访问流程是:
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。
DS18B20每一步操作都要遵循严格的工作时序和通信协议。
如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
1.3温度控制电路的设计
图4温度控制电路
实际电路如图4所示,通过键盘设定温度的上下限。
把实际测量的温度和设定的上下限进行比较,来控制P0.0、P0.1、P0.7端口的高低电平。
把P0.0、P0.1、P0.7端口分别与三极管的基极连接来控制温度和报警。
当测量的温度超过了设定的最高温度,P2.2由高电平变成低电平,就相当于基极输入为“0”,这时三极管导通推动小风扇和控制电路工作,反之,当基极输入为“1”时,三极管不导通,报警器和控制电路都不工作。
只要控制单片机的P0.0、P0.1、P0.7口的高低电平就可以控制模拟电路的工作。
1.4键盘电路的设计
如图3.6所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;液晶显示器上显示每个按键的“0-F”序号。
对应的按键的序号排列如图5所示:
图5按键的序号排列图
图6中微处理单元是AT89S51单片机,X1和X2接12M的两脚晶振,接两个30PF的起振电容,J1是上拉电阻.单片机的P1口8位引脚与行列式键盘输出脚相连,控制和检测行列式键盘的输入.行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,有键按下时,行线的电平状态将由与此行线相连接的列线的电平决定.键盘输入的信息主要进程是:
1CPU判断是否有键按下.
2确定是按下的是哪个键.
3把此键所代表的信息翻译成计算机可以识别的代码或者其他的特征符号.
图6键盘硬件电路图
1.5显示电路的设计
液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。
根据显示内容和方式的不同可以分为,数显LCD,点阵字符LCD,点阵图形LCD在此设计中我们采用点阵字符LCD,这里采用常用的2行16个字的1602液晶模块。
1602采用标准的14脚接口,其中:
第1脚:
VSS为地电源第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚。
与单片机的连接如图7所示。
图7液晶显示电路图
第2章系统的软件设计
2.1系统的主程序设计
主程序是系统的监控程序,在程序运行的过程中必须先经过初始化,包括键盘程序,中断程序,以及各个控制端口的初始化工作。
流程图如4.1所示。
系统在初始化完成后就进入温度测量程序,实时的测量当前的温度并通过显示电路在LCD上显示。
程序中以中断的方式来重新设定温度的上下限。
根据硬件设计完成对温度的控制。
按下4*4键盘上的A键可以设定温度上限,按下B键可以设定温度下限。
系统软件设计的总体流程图如下:
Y
N
图8系统总体设计流程图
2.2中断程序的设计
MCS-51单片的中断系统有5个中断请求源,用户可以用关中断指令“CLREA”来屏蔽所有的中断请求,也可以用开中断指令“SETEA”来允许CPU接收中断请求。
在本设计中我们选用INTO来作为中断请求源。
INT1—外部中断请求0,由INTO引脚输入,中断请求标志为IE0。
ORG0000H
LJMPMAIN
ORG0003H(中断入口地址)
JMPINT0
ORG0038H(主程序的起始地址)
MAIN:
(主程序)
MCS-51响应中断后,就进入中断服务程序,中断程序的基本流程图如下图
图9中断服务程序基本流程
第3章系统的控制
本章对系统的硬件控制进行概述。
分别对温度控制电路,报警电路及LCD液晶显示电路进行说明。
3.1温控电路及报警电路的控制
单片机的P0.0、P0.1、P0.7分别与三极管的基极连接来控制控制温度(图8)和报
警(图9)。
利用面包板搭了一个PNP9012的偏置电路电路如图4-4。
基极输入为“0”时,这时三极管导通推动报警器和控制电路工作,当基极输入为“1”时,三极管不导通,报警器和控制电路都不工作。
只要控制单片机的P0.0、P0.1、P0.7口的高低电平就可以控制模拟电路的工作。
图10硬件控制电路
图11硬件报警电路
3.2LCD显示电路的控制
把8根数据线和P2口连接,把3根控制线和P2.5、P2.6、P2.7连接。
给VCC端加上+5V的电压,GND端接地。
VEE端的驱动电压不要过大,要调节滑动变阻器使VEE在0.7伏以下显示器才能工作。
3.3使用说明
键盘中阿拉伯数字0~9是数据输入键,A键是写上限的功能键,B键是写下限的功能键,C键是取消键,其他的键置空。
四、系统的改进及不足
4.1在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
4.2在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
4.3系统的软件设计采用了汇编语言,使得程序非常庞大,可以用高级语言进行改写,简化程序结构并且增加可读性。
附录1:
程序
DIEQUP3.3
DOEQUP3.4
CLKEQUP3.5
CSEQUP3.6;LCD端口定义
D2RSEQUP2.7
D2RWEQUP2.6
D2EEQUP2.5
KEYPORTEQUP1;DS18B20端口定义
TEMPER_LEQU36H
TEMPER_HEQU35H
TEMPER_NUMEQU38H
FLAG1BIT00H
DQBITP2.4
ORG0000H
LJMPMAIN
ORG0003H
JMPINT00
ORG0038H
MAIN:
MOVSP,#60H
SETBP2.0
SETBP2.1
SETBP2.2
SETBEA
SETBEX0
SETBP2.0
SEETBP2.1
SETBP2.2
MOVR0,#01H;清屏并置地址计数器AC为0
LCALLDIS_CMD_WRT
MOVR0,#38H;8位数据接口,双行显示,5*7点阵
LCALLDIS_CMD_WRT
CALLDIS_CUR_OFF
MOV42H,#20
MOV43H,#32
XIAN:
LCALLGET_TEMPER
LCALLDISP
LCALLDELAY43MS
MOVA,TEMPER_NUM
SUBBA,42H
JCZZZL
MOVA,TEMPER_NUM
SUBBA,43H
JNCZZZ2
SETBP2.0
SETBP2.1
SETBP2.2
JMPXIAN
ZZZL:
CLRP2.0
CLRP2.2
JMPXIAN
ZZZ2:
CLRP2.0
CLRP2.1
JMPXIAN
INT0:
;扫描键盘程序
LCALLASK
SAO:
CLR01H
LCALLKEY
JNB01H,SAO
CJNEA,#10,PAN
LCALLANSW
RETI
PAN:
CJNEA,#12,SAO
RETI;显示函数部分,可供调用
DIS_CUR_OFF:
MOVR0,#0CH
LCALLDIS_CMD_WRT
RET
DIS_CUR_ON:
MOVR0,#0EH
LCALLDIS_CMD_WRT
RET
CHK_BUSY_FLG:
MOVP0,#0FFH
CLRD2RS
NOP
NOP
NOP
LCALLDISPLAY_RD
JBACC.7,CHK_BUSY_FLG
RET
CLEAR_DIS:
MOVR0,#01H
LCALLDIS_CMD_WRT
RET
DIS_CMD_WRT:
LCALLCHK_BUSY_FLG
MOVP0,R0
CLRD2RS
NOP
NOP
NOP
LCALLDISPLAY_WRT
RET
DIS_DATA_WRT:
LCALLCHK_BUSY_FLG
CJNEA,#10H,DIS_DAT_WRT1
MOVP0,#0C0H;1100,00000行起始地址为40
CLRD2RS
NOP
NOP
NOP
LCALLDISPLAY_WRT
DIS_DAT_WRT1:
MOVP0,R0
SETBD2RS
NOP
NOP
NOP
LCALLDISPLAY_WRT
RET
DISPLAY_WRT:
CLRD2RW
NOP
NOP
NOP
SETBD2E
NOP
NOP
NOP
CLRD2E
NOP
NOP
NOP
RET
DISPLAY_RD:
SETBD2RW
NOP
NOP
NOP
SETBD2E
NOP
NOP
NOP
MOVA,P0
NOP
NOP
NOP
CLRD2E
NOP
NOP
NOP
RET
DIS_DATA_RD:
LCALLCHK_BUSY_FLG
MOVP0,#0FFH
SETBD2RS
LCALLDISPLAY_RD
RET;键盘程序,出口:
A为按键值01H:
0无键按下1有键按下
KEY:
MOVKEYPORT,#0FH
MOVA,KEYPOR
CJNEA,#0FH,KEYDOWN
MOVA,#0FFH
RET
KEYDOWN:
LCALLDELAY43MS
MOVKEYPORT,#0FH
MOVA,KEYPORT
CJNEA,#0FH,KEYDOWN_YES
MOVA,#0FFH
RET
KEYDOWN_YES:
MOVB,A
MOVKEYPORT,#0F0H
MOVA,KEYPORT
ORLA,B
PUSH30H
MOV30H,A
MOVR3,#10H
MOVDPTR,#KEYVALUE
NEXT_KEY:
MOVA,R3
MOVCA,@a+dptr
CJNEA,30h,NEXTKEYVALUE
DECR3
POP30H
WAITKEY_F:
MOVKEYPORT,#0FH
MOVA,KEYPORT
CJNEA,#0FH,WAITKEY_F
MOVA,R3
SETB01H
RET
NEXTKEYVALUE:
DJNZR3,NEXT_KEY
DECR3
POP30H
WAITKEY_FREE:
MOVKEYPORT,#0FH
MOVA,KEYPORT
CJNEA,#0FH,WAITKEY_FREE
MOVA,R3
SETB01H
RET
KEYVALUE:
DB0FFH,7EH,7DH,7BH,77H,0BEH,0BDH,0BBH,0B7H,0DEH,0DDH,0DBH,0D7H,0EEH,0EDH,0EBH,0E7H
DELAY43MS:
PUSHA
MOVA,R3
PUSHA
MOVA,R2
PUSHA
MOVR3,#43
DELAY:
MOVR2,#0FAH
LOOP:
NOP;内层循环为1MS
NOP
DJNZR2,LOOP
DJNZR3,DELAY
POPA
MOVR2,A
POPA
MOVR3,A
POPA
RET;确认是否修改温度设定
ASK:
MOVR0,#01H;清屏并置地址计数器AC为0
LCALLDIS_CMD_WRT
MOV40H,#0
ZDZ:
MOVDPTR,#LINE
MOVA,40H
MOVCA,@A+DPTR
MOVR0,A
LCALLDIS_DATA_WRT
INC40H
MOVA,40H
MOVCA,@A+DPTR
CJNEA,#00H,ZDZ
RET
LINE:
DB"AREYOUSURE
CHANGET(Y/N)?
",00H
ANSW:
MOVR6,42H
MOVR7,43H
MOVR0,#01H
LCALLDIS_CMD_WRT
MOVR0,#44H
CALLDIS_DATA_WRT
MOVR0,#6FH
CALLDIS_DATA_WRT
MOVR0,#77H
CALLDIS_DATA_WRT
MOVR0,#6EH
CALLDIS_DATA_WRT
MOVR0,#3AH
CALLDIS_DATA_WRT
MOV40H,#0
CLR00H
JMPSAO1
GAI:
MOVR0,#0FEH
CALLDIS_DATA_WRT
MOVR0,#55H
CALLDIS_DATA_WRT
MOVR0,#70H
CALLDIS_DATA_WRT
MOVR0,#3AH
CALLDIS_DATA_WRT
MOV40H,#0
SAO1:
CLR01H
LCALLKEY
JNB01H,SAO1
MOVR1,A
MOVB,#10
DIVAB
JZNEXT2
MOVA,A1
CJNEA,#11,XU
JB00H,DOWN
MOV42H,40H
CPL00H
JMPGAI
DOWN:
MOV43H,40H
RETI
XU:
CJNEA,#12,SAO1
MOV42H,R6
MOV43H,R7
RETI
NEXT2:
MOVA,R1
ADDA,#30H
MOVR0,A
LCALLDIS_DATA_WRT
MOVA,R1
XCHA,40H
MOVB,#10MULAB
NOP
CLRDQ
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRR4,#2R1,#36H;低位存入36H(TEMPER_L),高位存入35H(TEMPER_
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET;将从DS18B20中读出的温度数据进行转换
TEMPER_COV:
MOVA,#0f0H
ANLA,TEMPER_L;舍去温度低位中小数点后的四位温度数值
SWAPA
MOVTEMPER_NUM,A
MOVA,TEMPER_L
JNBACC.3,TEMPER_COV1;四舍五入去温度值
INCTEMPER_NUM
TEMPER_COV1:
MOVA,TEMPER_H
ANLA,#07H
SWAPA
ORLA,TEMPER_NUM
MOVTEMPER_NUM,A;保存变换后的温度数据
RET;AD0832:
SETBDI
SETBDO
SETBCLK
CLRCS
NOP
SETBCS
CLRCLK
CLRCS
CALLDELAY1
SETBDI
SETBCLK
NOP
CLRCLK
SETBDI
SETBCLK
NOP
CLRCLK
CLRDI
SETBCLK
NOP
CLRCLK
NOP
SETBCLK
NOP
CLRCLK
NOP
SETBCLK
MOVC,DO
CLRCLK
RLCA;7
SETBCLK
MOVC,DO
CLRCLK
RLCA6
SETBCLK
MOVC,DO
CLRCLK
RLCA;5
SETBCLK
MOVC,DO
CLRCLK
RLCA;4
SETBCLK
MOVC,DO
CLRCLK
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 温控 显示 系统