空调温度控制实验2Word格式.docx

上传人:b****1 文档编号:14509105 上传时间:2022-10-23 格式:DOCX 页数:13 大小:107.50KB
下载 相关 举报
空调温度控制实验2Word格式.docx_第1页
第1页 / 共13页
空调温度控制实验2Word格式.docx_第2页
第2页 / 共13页
空调温度控制实验2Word格式.docx_第3页
第3页 / 共13页
空调温度控制实验2Word格式.docx_第4页
第4页 / 共13页
空调温度控制实验2Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

空调温度控制实验2Word格式.docx

《空调温度控制实验2Word格式.docx》由会员分享,可在线阅读,更多相关《空调温度控制实验2Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

空调温度控制实验2Word格式.docx

步骤:

1.在实验箱断电的情况下连好线。

2.输入程序并检查,保存程序。

3.“编译”程序。

4.“全速执行”程序。

5.记录实验结果及分析。

框图:

温控控制主程序框图

源程序:

;

T8.ASM

空调恒温控制实验

modeequ082h;

8255工作方式0,PA/PC输出,PB输入1000,0010

PORTAequ08000h

CTLequ08003h

OUTBITequ09002h;

位控制地址

OUTSEGequ09004h;

段控制口

INequ09001h

LEDBufequ60h;

显示缓冲区

ORG0000H

ljmpStart

LEDMAP:

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

Delay:

movr7,#0;

延时

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

ret

DisplayLED:

;

显示

movr0,#LEDBuf

movr1,#6

movr2,#00100000b

Loop:

movdptr,#OUTBIT

mova,#0

movx@dptr,a

mova,@r0

movdptr,#OUTSEG

mova,r2

movr6,#1

callDelay

rra

movr2,a

incr0

djnzr1,Loop

TestKey:

;

检测按键

movdptr,#IN

movxa,@dptr

cpla

anla,#0fh

KeyTable:

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

GetKey:

movdptr,#OUTBIT;

求键码

movP2,dph

movr0,#Low(IN)

movr1,#00100000b

movr2,#6

KLoop:

mova,r1

movr1,a

movxa,@r0

jnzGoon1

djnzr2,KLoop

movr2,#0ffh

sjmpExit

Goon1:

deca

rla

movr2,a;

r2=(r2-1)*4

movr1,#4

LoopC:

rrca

jcExit

incr2

djnzr1,LoopC

Exit:

movdptr,#KeyTable

movca,@a+dptr

WaitRelease:

clra

movr6,#10

callTestKey

jnzWaitRelease

================================

UPequ16h;

Next键的键码值

DOWNequ15h;

Last键的键码值

LowLimitequ10;

温度上限

HighLimitequ30;

温度下限

LowTempequ-40;

A/D=0

HighTempequ50;

A/D=255

ADPortequ0a000h;

A/D片选信号接CS2

Heatequ1;

加热口线PA0=1

Coolequ2;

制冷口线PA1=1

SetTempequ50h;

设定温度

CurTempequ51h;

当前温度

DisplayResult:

;

当前温度和设定温度送显示缓冲

mova,CurTemp

jnbacc.7,GE0;

如果当前温度低于零度,符号位显示缓冲区置'

-'

movLEDBuf,#40h;

g=1,其他笔画=0,'

deca;

求负温的绝对值

jmpGoon

GE0:

movLEDBuf,#0;

如果当前温度不低于零度,符号位显示缓冲区置'

'

Goon:

movb,#10;

当前温度十位数送显示缓冲区

divab

movdptr,#LEDMAP

movLEDBuf+1,a

mova,b;

当前温度个位数送显示缓冲区

movLEDBuf+2,a

movLEDBuf+3,#0;

当前温度与设定温度之间置'

mova,SetTemp;

设定温度送显示缓冲区

movb,#10

movLEDBuf+4,a

mova,b

movLEDBuf+5,a

ReadAD:

movdptr,#ADPort;

读A/D结果送a

movx@dptr,a;

startA/D

djnzacc,$;

delay

ReadTemp:

;

读当前温度CurTemp

CurTemp=16次ADC采样之平均数*(HighTemp-LowTemp)/256+LowTemp;

movr1,#0

movr2,#0

movr0,#16;

采样计数器

RLoop:

callReadAD;

16次ADC采样之和高位送r1,低位送r2

adda,r2

jncGN1

incr1

GN1:

djnzr0,RLoop

mova,r2;

a=r1r2/16

swapa

xcha,r1

anla,#0f0h

orla,r1

movb,#(HighTemp-LowTemp);

16次ADC采样之平均数*(HighTemp-LowTemp)

mulab

mova,b;

保留积的高8位,丢弃低8位,相当于/256

adda,#LowTemp

movCurTemp,a

Start:

movsp,#70h

mova,#mode;

设置8255工作方式,PA,PC输出,PB输入

movdptr,#CTL

movx@dptr,a

movSetTemp,#20;

置设定温度初值

MLoop:

callTestKey;

jnzKeyPressed;

有按键转KeyPressed,修改设定温度

callDisplayResult;

当前温度和设定温度送显示缓冲

callDisplayLED;

显示当前温度和设定温度

callReadTemp;

读入当前温度

jbacc.7,LE0;

当前温度<

0时转LE0

clrc

movb,SetTemp;

如果当前温度<

设定温度-2,则开动加热电机

decb

subba,b

jncGN2

LE0:

mova,#Heat;

开动加热电机

movdptr,#PORTA

sjmpGN4

GN2:

mova,CurTemp;

如果当前温度>

设定温度+2,则开动致冷电机

setbc

movb,SetTemp

incb

jcGN3

mova,#Cool;

开动致冷电机

GN3:

mova,#0;

在设定温度+/-2度内,无需开动电机

movdptr,#PORTA

GN4:

sjmpMLoop

KeyPressed:

修改设定温度

callGetKey;

求键码

movb,a

xrla,#DOWN;

按键为LAST键,且设定温度≠LowLimit时,设定温度-1

jnzKey0

mova,SetTemp

xrla,#LowLimit

jzKey1

decSetTemp

sjmpKey1

Key0:

mova,b;

按键为next键,且设定温度≠HighLimit时,设定温度+1

xrla,#UP

jnzKey1

xrla,#HighLimit

incSetTemp

Key1:

end

五、结果分析:

用LAST和NEXT键设定恒定温度,用温度采样器可改变外界温度,空调进行加热或制冷可由LED灯显示。

六、参考资料

1、《微机原理实验指导书》

2、《单片机技术及工程实践》

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

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1