单片机课程设计报告空调温度控制.docx
《单片机课程设计报告空调温度控制.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告空调温度控制.docx(32页珍藏版)》请在冰点文库上搜索。
单片机课程设计报告空调温度控制
燕山大学
课程设计说明书
课程名称单片机原理及应用技术
题目空调温度控制
学院(系)电气工程学院
年级专业2011级检测技术与仪器一班
学号4
学生XX余焊威
指导教师吴希军
教师职称副教授
燕山大学课程设计(论文)任务书
院(系):
电气工程学院基层教学单位:
仪器科学与工程系
学号
4
学生XX
余焊威
专业(班级)
检测11-1
设计题目
空调温度控制
设
计
技
术
参
数
利用实验仪上显示电路、键盘或开关电路、A/D转换电路,模拟空调恒温控制。
可以利用实验仪上的电位器模仿温度变化,制冷可以用发光二极管模拟,也可以控制直流电机模仿压缩机的运行。
要求可以用键盘或开关设定恒温温度,当外界温度超过设定温度1℃时,就要启动加热或制冷压缩机。
设
计
要
求
显示电路、键盘或开关电路、A/D转换电路的硬件电路设计;
编制相应的程序。
工
作
量
设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知识和能力状况,工作量饱满。
工
作
计
划
查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书。
参
考
资
料
单片微型计算机接口技术及其应用X淑清国防工业
单片机原理及应用技术X淑清国防工业
单片机应用技术汇编
指导教师签字
基层教学单位主任签字
说明:
此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2014年7月6日
引言3
摘要4
第一章设计说明5
1.1设计要求5
1.2设计目的5
1.3设计过程5
第二章设计总体说明6
第三章各个模块介绍7
3.1总体模块介绍7
3.28051单片机介绍7
3.3可调模拟输入电路介绍8
3.4A/D转换器模块介绍9
3.58255与LED显示介绍10
3.6数码管与键盘工作介绍12
第四章硬件连接15
第五章程序流程图16
第七章程序设计19
总结25
参考文件26
燕山大学课程设计评审意见表27
引言
温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。
温度只能通过物体随温度变化的某些特性来间接测量,而用来量度物体温度数值的标尺叫温标。
它规定了温度的读数起点(零点)和测量温度的基本单位。
国际单位为热力学温标(K)。
目前国际上用得较多的其他温标有华氏温标(°F)、摄氏温标(°C)和国际实用温标。
从分子运动论观点看,温度是物体分子运动平均动能的标志。
温度是大量分子热运动的集体表现,含有统计意义。
对于个别分子来说,温度是没有意义的。
在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会.而今,空调等家用电器随着生产技术的发展和生活水平的提高越来越普及,一个简单,稳定的温度控制系统能更好的适应市场。
摘要
在现代自动控制领域中,温度检测占据这至关重要的作用。
温度检测系统在科研领域、安全监控以及人们的日常生活发挥着无可替代的作用。
温度控制系统正从模拟式向数字式飞速发展。
本论文概述了空调温度控制系统的原理及特性,在此基础上描述了系统研制的理论基础,温度采集等部分的电路设计,并对测温系统的一些主要参数进行了讨论。
针对测温系统温度采集、接收、处理、显示部分的总体设计方案进行了论证,进一步介绍了单片机在系统中的应用,分析了系统各部分的硬件及软件实现。
本空调温度控制系统采用以MCS51单片机为核心,以控制室内温度稳定为目的。
通过单片机处理经A/D转换后的模拟信号,控制制冷制热电机的运转,以达到控制室内温度稳定的目的。
关键字:
51单片机温度控制
第一章设计说明
1.1设计要求
利用实验仪上显示电路、键盘或开关电路、A/D转换电路,模拟空调恒温控制。
可以利用实验仪上的电位器模仿温度变化,制冷可以用发光二极管模拟,也可以控制直流电机模仿压缩机的运行。
要求可以用键盘或开关设定恒温温度,当外界温度超过设定温度1℃时,就要启动加热或制冷压缩机。
而且要求显示电路、键盘或开关电路、A/D转换电路的硬件电路设计,编制相应的程序。
1.2设计目的
温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。
在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制越来越重要,没有合适的温度,许多电子设备就不能正常的工作。
由此可见,温度影响的各方各面,而温度的控制也显得日益重要。
传统的人工操作控制温度,效率低,精度小,误差大,操作受到很大的人为因素的影响。
为了提高工业生产效率,减小误差,基于单片机的智能化的温度控制是主流。
现代的智能空调,不仅利用了数字电路技术和模拟电子技术,而且采用了单片机技术,实现了软硬件的结合,既完善了空调的功能,又简化了空调的控制与操作,不仅满足了不同用户对温度的不同要求,而且能全智能调节室内温度。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等部分于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。
因此,单片机广泛用于现代工业生产控制中。
本次课程设计的目的是,围绕为了熟悉WAVE开发软件及在电子信息课程中的应用课程,学习WAVE软件的使用,使我们能熟练的应用WAVE软件实现对80C51单片机的编程,了解程序开发过程中用到的一些基础知识,同时使我们熟悉应用程序开发过程,使我们从学校学习到参加工作之间有一个良好的过渡,为今后处理相应领域的专业问题打下坚实的程序基础。
1.3设计过程
本设计采用51单片机为控制芯片,用伟福实验箱上的电位器来模仿温度传感器,将电位器输出的电压输入A/D转换芯片,再将转换后的模拟信号输入单片机,通过单片机扩展的显像管、LED灯、矩阵键盘等来实现其功能。
第二章设计总体说明
本次单片机课程设计空调温度控制,采用MCS-51单片机作为控制芯片,要求利用实验仪上显示电路、键盘、或开关电路、A/D转换电路,模拟空调恒温控制,可以实现键位与数字动态显示的一种设定温度可变的空调温度控制系统。
本系统功能由硬件和软件两大部分协调完成,硬件部分主要完成电位器对温度的电压模拟、温度的设定、温度信息的显示等功能;而软件主要完成对模拟输出的温度信号进行数字化处理及数码显示管的显示控制等功能。
电位器通过改变电压模仿温度传感器输出,经A/D转换变成0-255的数字信号从而输入单片机,单片机执行运算程序。
由于要设定温度,我们需要用键盘或开关输入温度数值,初始设定温度值由程序写入,用户可通过外接键盘改变初始设定温度。
单片机对键盘进行扫描,确定那个键按下。
然后显像管显示实际和设定温度。
实际温度大于设定温度,则红灯亮;实际温度小于设定温度,则绿灯亮。
根据以上设计思想,可设计功能如下:
利用伟福试验箱的六位数码管,后两位显示设定温度,初定为10-30摄氏度;第三到第五位显示实际温度,初定为-40-50摄氏度。
另通过设置键盘上的两个键位,实现温度+1和-1功能,用来调控设定温度,初定为NEXT、LAST键。
再利用L1(红灯)和L2(绿灯)来模仿加热和制冷的电机驱动
图1空调温度控制系统总系统框图
第三章各个模块介绍
3.1总体模块介绍
本设计共分为四个模块,分别为温度测量、按键控制、数码管温度显示、LED灯模仿制冷和制热系统。
1)温度测量模块是以电压器输出的电压模仿温度传感器通过A/D转换后进入单片机进行程序运算。
2)按键控制模块是通过键盘上NEXT、LAST键来升高或降低设定温度,通过比较与实际温度的大小来控制制冷和制热系统的运行。
3)数码管温度显示模块用来显示设定温度以及实际温度。
4)LED灯模块用来模仿制冷和加热电动机的动作。
3.28051单片机介绍
图28051单片机引脚图
单片机就是在一块硅片上集成了微处理器、存储器和各种输入输出接口电路的微型计算机,简称单片机。
单片机以其较高的性能价格比受到了人们的重视和关注。
它的优点就是体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于单片机具有较高的性能比,国内MCS-51系列单片机得到了广泛的应用。
单片机根据其基本操作处理的位数可分为4、8、16、32位单片机,应用最为广泛的是八位单片机。
根据本次设计的实际情况和要求,在本次设计中采用80C51作为系统的控制芯片。
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
⒈电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根,
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲①ALE功能:
用来锁存P0口送出的低8位地址②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
P0口输入时需要接上拉电阻才能置1;
3.3可调模拟量输入电路介绍
温度是一个非电量物理量,需要将之转化为电信号才能进行后续的测量和控制。
由于电位器电路用于产生可变的模拟量,为此,在此课程设计中,利用了实验仪器上的电位器来模拟温度变化,将温度这个非物理量转化为电压信号输出。
电位器结构图如所示。
图3电位器示意图图4电位器与A/D转换器连接图
3.4A/D转换器模块介绍
A/D转换电路是将从电位器输出的模拟电信号转换为数字电信号的电路结构。
目前A/D转换器的种类很多,有计数比较型、逐次逼近型、双积分型等等。
选择A/D转换器件主要从转换速度、精度和价格上考虑。
逐次逼近型A/D转换器,在精度、速度和价格上都比较适中,是最常用的A/D转换器。
双积分A/D转换器,具有精度高、抗干扰性好、价格低廉等优点,但转换速度慢。
近年来在微机应用领域中也得到了广泛的应用。
本次设计采用八路模拟输入通道的逐次逼近型的八位A/D转换器ADC0809。
采用ADC0809作为与单片机的接口电路,它的结构比较简单,转换速度较高。
采用ADC0809作为A/D转换器具有与单片机连接简单的优点,它是八位的转换器可以与八位的单片机直接连接,这样就简化了系统的连接电路也有利于系统软件的编写。
是目前国内应用最广泛的8位通用A/D芯片。
ADC0809芯片的接口及其外接电路如下图所示。
图5A/D转换内部结构图
图6ADC0809芯片图7ADC0809A/D转换电路
ADC0809芯片,内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
图中多路开关可选8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。
地址锁存与译码电路完成A、B、C3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,下表为通道选择表。
表1通道选择表
3.58255与LED显示介绍
一、8255介绍
51系列单片机没有专用的对外地址总线和数据总线,其P0口和P2口既是通用I/O口,同时P0口还是分时复用的双向数据总线和低8位地址总线(一般需要加一级锁存器),而P2口则是高8位地址总线。
在单片机的I/O口线不够用的情况下,可以借助外部器件对I/O口进行扩展。
8255芯片是可编程并行I/O接口芯片,它具有三个8位并行口PA,PB和PC,一个8位的数据口D0~D7,PC口分高4位和低4位。
高4位可与PA口合为一组(A组),低4位可与PB口合为一组(B组),PC口可按位置位/复位。
40条引脚,DIP封装。
引脚图如图所示
图88255引脚图图9LED显示电路
图10MCS-51单片机外扩8255A芯片的电路原理图
二、LED显示介绍
在此空调温度控制的设计中,我们用到了发光二极管LED,用红色的灯来表示加热,用绿色的灯来表示制冷。
实验仪上装有8只发光二极管及相应驱动电路,其发光二极管的电路原理图如下示:
图11发光二极管电路原理图
3.6数码管与键盘工作介绍
一、键盘与数码管使用介绍
本课设中用到的实验仪已经将LED显示电路和键盘电路集成到一个集成电路中。
LED显示和键盘的等效电路如图12示。
显示控制的位码由74HC374输出,经MC1413反向驱动后,做LED的位选通信号。
位选通信号也可作为键盘列扫描码,键盘扫描的行数据从74HC245读回,74HC374输出的列扫描码经74HC245读入后,用来判断是否有键被按下,以及按下的是什么键。
如果没有键按下,由于上拉电阻的作用,经74HC245读回的值为高电平,如果有键按下,74HC374输出的低电平经过按键被接到74HC245的端口上,这样从74HC245读回的数据就会有低位,根据74HC374输出的列信号和74HC245读回的行信号,就可以判断哪个键被按下。
LED显示的段码由另一个74HC374输出。
键盘和LED显示的地址译码见图5,做键盘和LED实验时,需将KEY/LED_CS接到相应的地址译码上。
位码输出的地址为0X002H,段码输出的地址为0X004H,键盘行码读回的地址为0X001H,此处X是由KEY/LED_CS决定。
图12数码管与键盘连线图
二、矩阵式键盘扫描方式
本设计采用的是6×4矩阵式键盘,键盘的行线X0~X3通过电阻接+5V,当键盘没有键闭合时,所有的行线和列线断开,行线X0~X3均呈高电平。
扫描法是在判定有键按下后逐列(或行)置低电平,同时读入行(或列)状态,如果行(或列)状态出现非全1状态,这时与状态行,列交叉点的键就是所按下的键。
扫描法的特点是逐列(或行)扫描查询。
这时,相应的行(或列)应有上拉电阻接高电平。
当键盘上某一键闭合时,该键所对应的行线与列线短路,此时该行线的电平将由被短路的列线电平所决定。
如果将行线接至单片机的输入端口,列线接至单片机的输出端口,则在单片机的控制下使列线Y0为低电平,其余五根列线Y1、Y2、Y3、Y4、Y5均为高电平,然后单片机读输入口状态(即键盘行线状态),若X0、X1、X2、X3均为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态。
如果Y0这一列没有键闭合,紧接着使列线Y1为低电平,其余列线为高电平,用同样的方法检查Y1这一列有无键闭合,如此类推。
CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。
图13键盘电路图
三、动态数码管扫描方式
由于8051单片机本身提供的I/O口有限,因此我们选择动态扫描方式。
所谓动态显示,就是单片机定时地对显示模块件扫描。
在这种方法中,显示模块件分时工作,每次只能有一个器件显示。
但由于人视觉的暂留现象,所以仍感觉所有的器件都在显示。
如许多单片机的开发系统及仿真器上的6位显示模块即采用这类显示方法。
此种显示方法的优点是使用硬件少,因而价格低。
但它占用机时长,只要单片机不执行显示程序,就立刻停止显示。
由此可见,这种显示将使计算机的开销增大。
扫描方式中在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
节约了电能,节省了I/O口。
图14八位数码管原理图图15数码显示管电路图
表2数码管显示数字-共阴极字符码对照表
显示数字
1
2
3
4
共阴极字符码
06H
5BH
4FH
66H
显示数字
5
6
7
8
共阴极字符码
6DH
7DH
07H
7FH
显示数字
9
0
A
B
共阴极字符码
6FH
3FH
77H
7CH
显示数字
C
D
E
F
共阴极字符码
39H
5EH
79H
71H
第四章硬件连接
一、地址译码插孔
译码插孔
地址X围
CS0
08000H~08FFFH
CS1
09000H~09FFFH
CS2
0A000H~0AFFFH
CS3
0B000H~0BFFFH
CS4
0C000H~0CFFFH
CS5
0D000H~0DFFFH
CS6
0E000H~0EFFFH
CS7
0F000H~0FFFFH
二、硬件连线
连线
插孔1
插孔2
1
CS0
8255-CS
2
CS1
KET/LED-CS
3
CS2
AD-CS
4
PA0
L1
5
PA1
L2
6
IN0
电位器输出
第五章程序流程图
一、主程序总体设计流程图
高1度
图16主程序流程图
二、其他各模块程序流程图
图17A/D转换程序流程图图18键盘程序流程图
图29数码管程序流程图
第六章程序设计
LowTempequ-40;A/D0传感器最低值设定
HighTempequ50;A/D255传感器最高值设定
Heatequ1
Coolequ2
LowLimitequ10
HighLimitequ30
ORG0000H;程序起始地址为0000H
ljmpStart;长跳转到Start主程序段处
Delay:
;延时函数
movr7,#0ffh
AA:
djnzr7,AA;DJNZ命令为寄存器减一不为0则跳转
ret;延时255
TestKey:
;检测KEY有没有被按下函数
movdptr,#09002h;将键盘列地址9002H送入数据指针DPTR中
mova,#0;A清0
movxdptr,a;所有列为低电平检测
movdptr,#09001h;将键盘行地址9001h送入DPTR中,
movxa,dptr;9001h中的内容送入A中,按下的键为低电平
cpla;累加器取反,按下的键为高电平
anla,#0fh;低四位显示高电平为按下键的行数
ret;从子程序返回
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,#09002h;将立即数9002H送入DPTR中,键盘列地址
movP2,dph;将DPTR中的高8位送入P2端口
movr0,#Low(09001h);送入立即数,取9001h低字节内容
movr1,#00100000b
movr2,#6
KLoop:
;检测按下键的位置
mova,r1;将R1中的内容送入A中
cpla;累加器取反
movxdptr,a;检测哪列,哪列为低电平
cpla;累加器取反
rra;累加器循环右移
movr1,a
movxa,r0;行地址内容返回给a
cpla;累加器取反,高电平的为选中行
anla,#0fh;立即数0fH和A中的内容与
jnzL1;累加器非0则转移,有键按下
djnzr2,KLoop;寄存器R2减1不为0则转移到KLoop程序段movr2,#0ffh
sjmpExit;短跳转到Exit程序段处
L1:
;检测到某列r2
movr1,a
mova,r2
deca;累加器A自减1
rla
rla
movr2,a;r2=(r2-1)*4
mova,r1
movr1,#4
LpC:
rrca;经过进位位的累加器循环右移
jcExit;如果进位位为1则转移到程序Exit
incr2
djnzr1,LpC;寄存器R1减1,不为0则转移到LpC程序段
Exit:
;读取键盘表中值,键值=(列值-1)*4+行值
mova,r2
movdptr,#KeyTable
movca,a+dptr
movr2,a
WaitRelease:
;等待释放
movdptr,#09002h
mova,#0
movxdptr,a
callDelay
callTestKey
jnzWaitRelease;未释放继续等待
mova,r2
Ret
ReadAD:
;读A/D值
movdptr,#0A000h;将A/D地址A000H送入DPTR中
clra;累加器A清0
movxdptr,a;启动A/DIn0通道
mova,#0;A清0
djnzacc,$;如果A中的内容不为0则在此处一直循环
movxa,dptr;将DPTR中的内容送入A中,读取A/D的值
ret
ReadTemp:
movr1,#0;将立即数0送入寄存器R1中
movr2,#0;将立即数0送入寄存器R2中
movr0,#16;将立即数16送入寄存器r0中
RLoop:
callReadAD;调用ReadAD程序段,读取A/D输出值
adda,r2
movr2,a;将累加器A中的内容送入R2中
jncL01;如果进位位为0则转移到L01程序段
incr1;r1寄存器中的内容增1
L01:
djnzr0,RLoop;寄存器R0内容减一不为0则转移,累加16次
mova,r2;将寄存器R2中的内容送入累加器A中
swapa;累加器内高低半字节交换
anla,#0fh;高四位清零,相当于/16
xcha,r1;寄存器与累加器内容交换
swapa;累加器内高低半字节交换
anla,#0f0h;立即数0FH与到累加器A,低四位清零
orla,r1;a=r1r2/16
movb,#(HighT