室内环境控制系统项目报告Word文件下载.docx
《室内环境控制系统项目报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《室内环境控制系统项目报告Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。
三、设计方案
通过DHT11温湿度传感器接受室内温湿度,然后把40bit温湿度数据传送给单片机并显示在LCD1602上,与此同时,单片机与电脑进行串口通信,使用汇编语言编写上位机程序将温湿度数据能够在上位机进行监控显示。
当温度超过5-30℃的范围或湿度超过40%~80%RH,上位机会向单片机发送字符以报警,达到室内环境监控的目的。
四、具体实现方案
(一)、上位机显示程序
使用汇编语言编写上位机程序。
将接收到的温度信号显示在显示区。
可进行操作对下位机发送信息。
当温度超过5-30℃的范围或湿度超过40%~80%RH会自动向下位机发送指令。
具体代码如下:
STACKSEGMENT
DB256DUP(0)
ZSDB256DUP(0)
STACKENDS
DATASEGMENT
SEDDB256DUP(0)
RECDB256DUP(0)
wenDB'
Wendu:
'
'
$'
shiDB'
Shidu:
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
PUSHDS
XORAX,AX
PUSHAX
START:
MOVAX,DATA
MOVDS,AX
MOVDX,3FBH
MOVAL,80H
OUTDX,AL
MOVDX,3F8H
MOVAL,0CH
MOVDX,3F9H
MOVAL,0
MOVAL,03H
MOVDX,3FCH
XORCX,CX
XORBX,BX
main:
PUSHAX
PUSHDX
MOVAH,02H
MOVBH,0
MOVDH,0
MOVDL,0
INT10H
POPAX
POPDX
JMPwendu
main1:
MOVAL,0AH
MOVBL,0
MOVAH,14
MOVDL,0DH
MOVAH,2
INT21H
JMPshidu
main2:
PUSHCX
POPCX
JMPPANDUAN
wendu:
LEADX,wen
MOVAH,9
CALLRECEIVE
LEADI,REC
MOV[DI],AL
MOVDL,AL
MOVAH,02
MOV[DI+1],AL
MOVAH,02
MOVDL,2EH
MOV[DI+2],AL
MOVDL,43H
INT21H
JMPmain1
shidu:
LEADX,shi
MOV[DI+3],AL
MOV[DI+4],AL
MOV[DI+5],AL
MOVDL,25H
JMPmain2
PANDUAN:
MOVAL,[DI]
CMPAL,32H
JAFA
CMPAL,30H
JNEFD
MOVAL,[DI+1]
CMPAL,35H
JBFA
FD:
MOVAL,[DI+3]
CMPAL,38H
JNBFA
CMPAL,34H
JMPmain
FA:
MOVAL,78H
JMPmain
RECEIVEPROCNEAR
IQ:
MOVDX,3FDH
INAL,DX
TESTAL,1EH
JNZIQ
TESTAL,01H
JNZWS
JMPIQ
WS:
RET
RECEIVEENDP
CODEENDS
ENDSTART
(二)、下位机程序
下位机程序主要由main;
lcd1602;
delay;
send函数构成。
Main函数单片机运行的主程序。
Lcd1602是控制液晶显示屏的程序。
Delay定义定时器的初始化及中断子函数。
Send是双机通信的函数。
具体代码如下:
U8comdataEQU31H
U8T_data_HEQU32H
U8T_data_LEQU33H
U8RH_data_HEQU34H
U8RH_data_LEQU35H
U8checkdataEQU36H
U8tempEQU37H
tempEQU38H
TEM0EQU39H
TEM1EQU40H
TEM2EQU41H
TAEQU42H
TBEQU43H
TCEQU44H
TDEQU45H
TEEQU46H
TFEQU47H
TGEQU48H
THEQU49H
a_bitEQU20H;
数码管个位数存放内存位置
b_bitEQU21H;
数码管十位数存放内存位置
c_bitEQU22H
d_bitEQU23H
t_bitEQU24H
r_bitEQU25H
RSEQUP2.6;
确定具体硬件的连接方式
RWEQUP2.5;
EEQUP2.7;
BEEPEQUP1.5
T2CONEQU0C8H
RCAP2LEQU0CAH
RCAP2HEQU0CBH
ORG0000H
AJMPSTART
ORG0030H
MOVP0,#0FFH
MOVRCAP2L,#0D9H
MOVRCAP2H,#0FFH
MOVT2CON,#34H
MOVSCON,#50H
MAIN:
LCALLRH
LCALLLCD
LCALLSEND
LCALLRECEIVE
LJMPMAIN
RH:
CLRP2.0
MOVA,#36
LCALLDelay
SETBP2.0
LCALLDelay_10us
LCALLDelay_10us
JBP2.0,RH_END
LOOP1:
JNBP2.0,LOOP1
LOOP2:
JBP2.0,LOOP2
LOOP2_END:
LCALLRead
MOVU8RH_data_H,A
MOVU8RH_data_L,A
MOVU8T_data_H,A
MOVU8T_data_L,A
MOVU8checkdata,A
RH_END:
Read:
MOVtemp,#8
LOOP3:
JNBP2.0,LOOP3
LOOP3_END:
MOVC,P2.0
RLCA
LOOP4:
JBP2.0,LOOP4
DJNZtemp,LOOP3
Delay:
MOVR4,A
D1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,D1
RET
Delay_10us:
NOP
LCD:
display:
ACALLDL100MS
ACALLDL100MS
MOVA,U8T_data_H;
温度高位
MOVB,#0AH;
10进制/10=10进制
DIVAB
ADDA,#00110000B
MOVb_bit,A
MOVA,B
MOVa_bit,A
MOVA,U8T_data_L;
温度低位
MOVB,#26
MOVt_bit,A
MOVA,U8RH_data_H;
湿度高位
MOVd_bit,A
MOVc_bit,A
MOVA,U8RH_data_L;
MOVB,#26
DIVAB
ADDA,#00110000B
MOVr_bit,A
FUWEI:
MOVP0,#00000001B;
;
清屏并光标复位
ACALLENABLE;
调用写入命令子程序
MOVP0,#00111000B;
;
设置显示模式:
8位2行5x7点阵
ACALLENABLE;
MOVP0,#00001111B;
显示器开、光标开、光标允许闪烁
调用写入命令子程序
MOVP0,#00000110B;
文字不动,光标自动右移
调用写入命令子程序
MOVTC,b_bit
MOVTD,a_bit
MOVTF,t_bit
MOVR7,#08H
MOVTEM1,#80H
MOVTA,#01010100B
MOVTB,#00111010B
MOVTE,#00101110B
MOVTG,#11011111B
MOVTH,#01000011B
MOVTEM2,#42H
LOOP5:
MOVP0,TEM1
INCTEM1
ACALLENABLE;
MOVR1,TEM2
MOVP0,@R1;
输入T
INCTEM2
ACALLGDPG
DJNZR7,LOOP5
MOVTC,d_bit
MOVTD,c_bit
MOVTF,r_bit
MOVR7,#06H
MOVTEM1,#0C0H
MOVTA,#01010010B
MOVTG,#00100101B
LOOP6:
DJNZR7,LOOP6
MOVP0,#0C6H;
写入显示起始地址(第2行第7个位置)
MOVP0,#00100101B;
A个位送出去
SETBRS;
RS=1
CLRRW;
RW=0;
准备写入数据
CLRE;
E=0;
执行显示命令
ACALLDELAYL;
判断液晶模块是否忙?
SETBE;
E=1;
显示完成,程序停车*/
RET
GDPG:
显示完成,程序停车
ENABLE:
CLRRS;
写入控制命令的子程序
CLRRW
CLRE
ACALLDELAYL
SETBE
DELAYL:
MOVP0,#0FFH;
判断液晶显示器是否忙的子程序
CLRRS
SETBRW
NOP
JBP0.7,DELAYL;
如果P1.7为高电平表示忙就循环等待
DL100MS:
MOVR7,#02H
DL1:
MOVR6,#0C8H
DL2:
MOVR5,#0FAH
DJNZR5,$
DJNZR6,DL2
DJNZR7,DL1
Delay_2S:
MOVA,#250
MOVA,#250
SEND:
CLRTI
CLRES
MOVA,b_bit
CALLSEND1
MOVA,a_bit
MOVA,t_bit
MOVA,d_bit
MOVA,c_bit
MOVA,r_bit
MOVSBUF,A
JNBTI,$
SEND1:
CHULI1:
MOVR6,#100
BL2:
CALLDEX1
CPLBEEP
DJNZR6,BL2
MOVR5,#10
CALLDELAYe
DEX1:
MOVR7,#180
DE2:
DJNZR7,DE2
DELAYe:
MOVR6,#50
DL1T:
MOVR7,#100
DJNZR7,$
DJNZR6,DL1T
DJNZR5,DELAYe
RECEIVE:
JNBRI,LLL
CLRRI
CALLCHULI1
LLL:
END
五、项目分工
朱律诚:
编写上位机代码
李纯晨:
周轶轩:
编写下位机代码
肖鑫:
滕飞: