基于AT89C51单片机的温控及显示系统文档格式.docx

上传人:b****3 文档编号:6285273 上传时间:2023-05-06 格式:DOCX 页数:30 大小:215.99KB
下载 相关 举报
基于AT89C51单片机的温控及显示系统文档格式.docx_第1页
第1页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第2页
第2页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第3页
第3页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第4页
第4页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第5页
第5页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第6页
第6页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第7页
第7页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第8页
第8页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第9页
第9页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第10页
第10页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第11页
第11页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第12页
第12页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第13页
第13页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第14页
第14页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第15页
第15页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第16页
第16页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第17页
第17页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第18页
第18页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第19页
第19页 / 共30页
基于AT89C51单片机的温控及显示系统文档格式.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于AT89C51单片机的温控及显示系统文档格式.docx

《基于AT89C51单片机的温控及显示系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的温控及显示系统文档格式.docx(30页珍藏版)》请在冰点文库上搜索。

基于AT89C51单片机的温控及显示系统文档格式.docx

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”时,三极管不导通,报警器和控制电路都不工作。

图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

MOVSP,#60H

SETBP2.0

SETBP2.1

SETBP2.2

SETBEA

SETBEX0

SETBP2.0

SEETBP2.1

MOVR0,#01H;

清屏并置地址计数器AC为0

LCALLDIS_CMD_WRT

MOVR0,#38H;

8位数据接口,双行显示,5*7点阵

CALLDIS_CUR_OFF

MOV42H,#20

MOV43H,#32

XIAN:

LCALLGET_TEMPER

LCALLDISP

LCALLDELAY43MS

MOVA,TEMPER_NUM

SUBBA,42H

JCZZZL

SUBBA,43H

JNCZZZ2

SETBP2.0

SETBP2.1

SETBP2.2

JMPXIAN

ZZZL:

CLRP2.0

CLRP2.2

JMPXIAN

ZZZ2:

CLRP2.1

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

CHK_BUSY_FLG:

MOVP0,#0FFH

CLRD2RS

NOP

LCALLDISPLAY_RD

JBACC.7,CHK_BUSY_FLG

CLEAR_DIS:

MOVR0,#01H

DIS_CMD_WRT:

LCALLCHK_BUSY_FLG

MOVP0,R0

CLRD2RS

NOP

LCALLDISPLAY_WRT

DIS_DATA_WRT:

CJNEA,#10H,DIS_DAT_WRT1

MOVP0,#0C0H;

1100,00000行起始地址为40

DIS_DAT_WRT1:

MOVP0,R0

SETBD2RS

NOP

LCALLDISPLAY_WRT

RET

DISPLAY_WRT:

CLRD2RW

SETBD2E

CLRD2E

DISPLAY_RD:

SETBD2RW

MOVA,P0

DIS_DATA_RD:

MOVP0,#0FFH

LCALLDISPLAY_RD

RET;

键盘程序,出口:

A为按键值01H:

0无键按下1有键按下

KEY:

MOVKEYPORT,#0FH

MOVA,KEYPOR

CJNEA,#0FH,KEYDOWN

MOVA,#0FFH

RET

KEYDOWN:

MOVKEYPORT,#0FH

MOVA,KEYPORT

CJNEA,#0FH,KEYDOWN_YES

MOVA,#0FFH

KEYDOWN_YES:

MOVB,A

MOVKEYPORT,#0F0H

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

CJNEA,#0FH,WAITKEY_F

MOVA,R3

SETB01H

NEXTKEYVALUE:

DJNZR3,NEXT_KEY

WAITKEY_FREE:

CJNEA,#0FH,WAITKEY_FREE

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

MOVR3,#43

DELAY:

MOVR2,#0FAH

LOOP:

NOP;

内层循环为1MS

DJNZR2,LOOP

DJNZR3,DELAY

POPA

MOVR2,A

MOVR3,A

RET;

确认是否修改温度设定

ASK:

LCALLDIS_CMD_WRT

MOV40H,#0

ZDZ:

MOVDPTR,#LINE

MOVA,40H

MOVCA,@A+DPTR

MOVR0,A

LCALLDIS_DATA_WRT

INC40H

CJNEA,#00H,ZDZ

RET

LINE:

DB"

AREYOUSURE

CHANGET(Y/N)?

"

00H

ANSW:

MOVR6,42H

MOVR7,43H

MOVR0,#44H

CALLDIS_DATA_WRT

MOVR0,#6FH

MOVR0,#77H

MOVR0,#6EH

MOVR0,#3AH

CLR00H

JMPSAO1

GAI:

MOVR0,#0FEH

MOVR0,#55H

MOVR0,#70H

SAO1:

JNB01H,SAO1

MOVR1,A

MOVB,#10

DIVAB

JZNEXT2

MOVA,A1

CJNEA,#11,XU

JB00H,DOWN

MOV42H,40H

CPL00H

JMPGAI

DOWN:

MOV43H,40H

XU:

CJNEA,#12,SAO1

MOV42H,R6

MOV43H,R7

NEXT2:

MOVA,R1

ADDA,#30H

MOVR0,A

MOVA,R1

XCHA,40H

MOVB,#10MULAB

NOP

CLRDQ

CLRC

WR1:

MOVR3,#6

DJNZR3,$

RRR4,#2R1,#36H;

低位存入36H(TEMPER_L),高位存入35H(TEMPER_

SETBDQ

MOVR3,#7

MOVC,DQ

MOVR3,#23

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

ORLA,TEMPER_NUM

MOVTEMPER_NUM,A;

保存变换后的温度数据

RET;

AD0832:

SETBDI

SETBDO

SETBCLK

CLRCS

SETBCS

CLRCLK

CALLDELAY1

SETBCLK

NOP

CLRCLK

SETBDI

SETBCLK

CLRCLK

CLRDI

SETBCLK

NOP

SETBCLK

NOP

MOVC,DO

RLCA;

7

RLCA6

RLCA;

5

4

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2