空调控制系统设计Word文档下载推荐.docx
《空调控制系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《空调控制系统设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
行线接PC.0~PC.3,列线(扫描线)接入PC.4~PC.7。
在4*4矩阵键盘设计中,8255PA口输出数码管显示位选,PB口输入显示段码数据;
显示部分中,PC高四位作扫描线,低四位作回送线。
为提供共阳LED数码管列扫描驱动电压,用三极管9012作电源驱动输出。
2.1主控芯片
2.11AT89C52单片机
AT89C52是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
其主要工作特性是:
片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;
片内数据存储器内含256字节的RAM;
具有32根可编程I/O口线;
具有3个可编程定时器;
中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;
串行口是具有一个全双工的可编程串行通信,来构成单片机的最小电路。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
2.128255A芯片
与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。
数据总线缓冲器是一个三态、双向、8位寄存器,8条数据线D7~D0与系统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入指令读取外设输入的数据。
读/写控制逻辑电路用来接收CPU系统总线的读信号RD,写信号WR,片选择信号CS,端口选择信号A1,A0和复位信号RESET,用于控制8255A内部寄存器的读/写操作和复位操作。
2.13内部控制逻辑电路
内部控制逻辑包括A组控制与B组控制两部分[3]。
A组控制寄存器用来控制A口PA7~PA0和C口的高4位PC7~PC4;
B组控制寄存器用来控制B口PB7~PB0和C口的低4位PC3~PC0。
它们接收CPU发送来的控制命令,对A,B,C3个端口的输入/输出方式进行控制。
2.14输入/输出接口电路
8255A片内有A,B,C3个8位并行端口,A口和B口分别有1个8位的数据输出锁存/缓冲器和1个8位数据输入锁存器,C口有1个8位数据输出锁存/缓冲器和1个8位数据输入缓冲器,用于存放CPU与外部设备交换的数据。
对于8255A的3个数据端口和1个控制端口,数据端口既可以写入数据又可以读出数据,控制端口只能写入命令而不能读出,读/写控制信号(RD,WR)和端口选择信号(CS,A1和A0)的状态组合可以实现A,B,C3个端口和控制端口的读/写操作。
图2AT89C52芯片引脚图图38255A芯片引脚图
2.2键盘电路的设计
整个系统按键包括加减温度键(+、-)、电源开关以及模式切换键(model),共4个键。
为了节约微处理器的I/O接口资源,把键排列成矩阵形式,这样可以更合理地利用硬件资源。
键盘只简单地提供按键开关的行列矩阵。
有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成[4]。
识别键盘上哪个键被压下的过程的扫描步骤:
(1).检测是否所有键都都松开了,若没有则反复检测。
(2).但所有键都松开了,再检测是否有键压下,若无键一下则反复检测。
(3).如有键压下,要消除键抖动,确认有键压下。
(4).对压下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被压下了。
如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。
(5).该键释放后,再回到2。
图4键盘电路
2.3显示电路
动态显示中,任意时刻虽只有一位显示器被点亮,但当一个循环周期小于人的视觉暂留时间时,看上去与全部显示器持续点亮的效果相同。
从而提高数码管的利用效率,所以采用LED动态显示接口技术。
设计要求显示空调工作模式(英文)和温度(16~30),所以需6个LED数码管。
图5显示电路
3系统程序设计
3.1主程序
主程序包括初始化部分和循环部分[5],循环调用显示子程序、扫键子程序、及控制键判断模块,且有串口中断时响应串口中断服务程序。
当有控制键按下或发生串口中断时,根据键值或传送值转入相应控制功能子程序,主程序执行流程图如图:
图6主程序流程图
3.2键盘扫描子程序
在硬件基础上,采用扫描法来确定键值。
将PC口高四位(扫描线)依次置高,分别读低四位(回送线),然后与键码数组keytab[]中的值比较,以此确定按键的值。
键值作为函数返回值返回。
在本系统设计里,我们只需4个按键,故键盘扫描比较简单,只需扫描列线中的一列就可以判断按键值。
功能键包括加减温度键(+、-)、电源开关以及模式切换键(model),共4个键。
加减温度键对应键值分别为0/4,电源开关键/工作模式键键值分别为12/8。
键盘扫描子程序流程图如图7.
图7键盘扫描子程序流程图图8显示子程序流程图
3.3显示子程序
采用动态扫描法显示。
在初始化模块中定义一个显示缓冲区(6个字节),存放要显示的数字或字符,创建一个数据表,存放相关数字和字符的显示段码。
显示时,先取显示缓冲区中的数字,在段码查询表中查得对应的显示段码从依次PB口输出,而PA依次对相应数码管选中供电,不断循环,只要1S内每个数码管能被点亮50次以上,就能稳定显示数组a[]中所有数据。
显示程序流
本系统设计中要显示的内容为:
模式+温度。
模式包括自动、制冷、加热、换气四种,分别用英文单词简写AU(auto)、CO(cool)、HO(hot)、CH(change)表示。
温度范围为16~30.
3.4串口中断服务程序[6]
串口中断程序负责接收控制端PC的控制信号,类似遥控器控制,不过条件限制,这里采用USB线传输控制信号。
具体控制信号为加/减键,对应信号值为1/2,模式1、模式2、模式3、模式4的控制信号值分别为3、4、5、6.
当一个控制信号(16进制1~6控制端发送完毕,产生接收中断,接收标志RI置1,转入串口中断服务程序:
先利用堆栈保护现场,然后从接收缓冲寄存器SBUF读取控制信号,接下来再恢复现场,返回。
4调试及性能分析
4.1硬件调试
硬件调试时可先检查印制板及焊接的质量情况,在检查无误后可通电检查LED显示的点亮状况。
若亮度不理想,可以调节P0的电阻大小,一般情况下取下200欧电阻即可获得满意的效果。
实验室制作时,可结合示波器测试晶振P0,P2端口的波形情况进行综合硬件测试分析。
4.2软件调试
软件调试在keilc51编译器下进行,源程序编译及仿真调试以子程序为单位逐个进行。
调试点主要为键盘去抖时间,去抖时间太长,会导致按键丢失,太短又会造成多次读键。
经过调试,我们的键盘去抖时间定为200ms。
个人体会
在这次智能空调控制系统设计的过程中,我学到了很多东西,特别是动手能力,这是我们以前没有的锻炼机会。
我们将以前学过的知识总结在一起,经过我们长时间的设计及调试,本系统基本能实现自动、制冷、加热和换气四种模式,通过一个模式按键进行模式切换
我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。
首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。
基本掌握了Protel99SE原理图的方法,并设计了一个单片机最小系统。
通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LED数码管,键盘等。
并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和运用。
我的动手能力得到了很大的提高,增强了我们对问题的解决能力。
在此感谢指导老师对我们的精心指导,通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。
自己今后将会更加的把理论知识和实际应用结合起来,提高自己的能力。
参考文献
[1]张鑫.单片机原理及应用.北京:
电子工业大学出版社,2005年
[2]楼然苗,李光飞.单片机课程设计与指导.2005年
[3]吴运昌.模拟电子线路基础.广州:
华南理工大学出版社,2004年
[4]阎石.数字电子技术基础.北京:
高等教育出版社,1997年
[5]韩志军等.单片机应用系统设计[M].机械工业出版社,2004
[6]周润景等.Proteus在MCS-51&
ARM7系统中的应用百例[M].电子工业出版社,2006
附录
系统程序:
BEEPEQUP3.3
ORG0000H;
程序入口地址
LJMPSTART
ORG0023H
LJMPRTI
ORG0030H
/*****程序开始,初始化*****/
START:
MOV22H,#20H;
22H单元存放温度值
MOV23H,#0A1H;
23,24单元存放模式名称
MOV24H,#30H;
MOVTMOD,#20H
MOVTH1,#0F3H
MOVTL1,#0F3H
SETBEA
SETBES
SETBTR1
MOVSCON,#50H
/*****主程序*****/
MAIN:
LCALLDISPLAY;
调用显示子程序
LCALLKEYBOARD;
调用键盘扫描
LJMPMAIN;
重新循环
/***串行口中断服务程序***/
RTI:
PUSHACC
PUSHPSW
MOVA,SBUF;
从串口接收数据
CLRRI;
清RI标志位
MOVR5,A
CJNER5,#01H,A1;
若接收的数是1,则温度值+1
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
CJNEA,#31H,RED
MOV22H,#30H
RED:
LCALLDISPLAY
SJMPEXIT_ZD
A1:
CJNER5,#02H,A2;
若接收的数是2,则温度值-1
ADDA,#99H
CJNEA,#15H,REW
MOV22H,#16H
REW:
A2:
CJNER5,#03H,A3;
若接收的数是3,则空调切换为模式1
MOV24H,#30H
MOV23H,#0A1H
SJMPREW
A3:
CJNER5,#04H,A4;
若接收的数是4,则空调切换为模式2
MOV24H,#0E4H
MOV23H,#0A0H
A4:
CJNER5,#05H,A5;
若接收的数是5,则切换为模式3
MOV24H,#31H
A5:
CJNER5,#06H,EXIT_ZD;
若接收的数是6,则切换为模式4
MOV23H,#31H
EXIT_ZD:
POPACC
POPPSW
RETI
/*****显示处理*****/
DISPLAY:
MIN:
MOVA,22H;
分
ANLA,#0FH
MOV2DH,A;
转换出分个位,存入2DH
ANLA,#0F0H
SWAPA
MOV2CH,A;
转换出分十位,存入2CH
/*****数码管动态扫描显示*****/
MOVDPTR,#0D7FFH
MOVA,#81H
MOVX@DPTR,A
MOVA,#11011111B
MOVDPTR,#0D1FFH
MOVDPTR,#TABLE
MOVA,2DH
MOVCA,@A+DPTR
MOVDPTR,#0D2FFH
CALLD1MS
MOVA,#11101111B
MOVA,2CH
MOVA,#11110111B
MOVA,#7FH
MOVA,#11111011B
MOVA,#11111101B
MOVA,23H
MOVA,#11111110B
MOVA,24H
D1MS:
MOVR7,#02H
DMS:
MOVR6,#0FFH
DJNZR6,$
DJNZR7,DMS
RET
/*****数码管字形编码表*****/
TABLE:
DB0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA,0X20,0X28;
字形显示编码
/*****键盘扫描*******/
KEYBOARD:
MOVA,81H
MOVDPTR,#0D5FFH
MOVA,#0FFH
MOVA,#10H
MOVXA,@DPTR
JNZDELAY100
SJMPEXIT
DELAY100:
MOVR1,#200
D100:
MOVR2,#248
DJNZR2,$
DJNZR1,D100
JNZKEY
KEY:
MOVR0,A
CJNER0,#08H,D1
CJNEA,#31H,RE
RE:
LCALLDISPLAY
D1:
CJNER0,#04H,EXIT
CJNEA,#15H,REY
REY:
;
D2:
CJNER0,#02H,EXIT
MOVA,24H
CJNEA,#30H,A0
MOV24H,#70H
SJMPEXIT
A0:
MOV24H,#30H
EXIT:
RET
END