空调温度控制实验2Word格式.docx
- 文档编号:14509105
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:13
- 大小:107.50KB
空调温度控制实验2Word格式.docx
《空调温度控制实验2Word格式.docx》由会员分享,可在线阅读,更多相关《空调温度控制实验2Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
步骤:
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、《单片机技术及工程实践》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空调 温度 控制 实验