智能空调控制系统设计_第1页
智能空调控制系统设计_第2页
智能空调控制系统设计_第3页
智能空调控制系统设计_第4页
智能空调控制系统设计_第5页
免费预览已结束,剩余40页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能空调限制系统设计Preparedon21November2021燕山大学课程设计说明书题目:智能空调限制系统学院系:年级专业:学号:学生姓名:指导教师:教师职称摘要智能空调限制系统是根据温度传感器采集室内的环境温度与系统的预设值进行比照,通过限制系统的预先设置,空调进行自动制冷或制热,从而到达了智能限制的目的.根据人们对生活环境的要求和单片机的应用特性,本文介绍了应用STC89C52单片机进行限制的智能空调限制系统.智能空调限制系统主要由电源电路、液晶显示电路、单片机限制电路、按键电路、限制指示电路等组成.其工作原理是温度传感器DS18B20采集室内温度传送给单片机,单片机分析数据,限制智

2、能空调加热或制冷.此系统可以通过按键设置空调的温度,使空调对室内进行加温或降温,也可以对系统预设一个温度值,通过传感器感知室内温度与智能空调的预设温度值进行比照,通过单片机限制空调对室内进行加温或降温,到达智能空调的自动限制功能.在定时功能启动的情况下,如果计时时间与定时时间相同,此时空调相应的状态会自动关闭,把定时时间存在STC89c52单片机内部的EEPROM中,断电后不会消失,直至通过按键去改变,到达了智能空调的定时功能.关键词:智能空调;液晶显示;STC89c52单片机;dsl8b20温度检测芯片1智能空调限制系统的方案设计本系统以单片机STC89c52为核心,米用电源模块、温度采集、

3、键盘输入、液晶显示、驱动电路等,实现了基于空调温度控制系统.把定时时间存入单片机EEPROM中,不易丧失.人机交互采用按键输入、液晶显示,界面友好,易于操作.1.1 智能空调限制系统DS18B20温度传感器采集室内温度数据,并将信息反响给CPU,单片机分析并与设定的温度值进行比拟,通过驱动电路使智能空调调节不同的工作状态,单片机的工作状态有加热、制冷工作状态.不同的按键S的功能设置为:S2为“加,S10为“减,S3启动/关闭,S5为启动智能空调制冷状态,S6为调节走时按键,S7为启动智能空调暖风工作状态,S13为开启/关闭定时,S14为调节定时.系统的结构框图如图IT所示:单片机1.2 系统工

4、作原理1.2.1 系统功能模块工作原理介绍电源治理模块将外部交流电通过整流变压器及稳压芯片7805进行稳压,以便提供应各个系统工作模块,如DS18B20温度传感器、单片机主限制单元、液晶显示单元、驱动电路单元等.单片机(STC89C52)主限制单元负责整个智能空调限制系统的运行限制,通过人际交互单元(按键及液晶显示)的系统功能设置,用1602液晶显示器将室内温度显示出来,并且可以通过按键进行调整,实现空调加热或制冷的工作状态设置,即到达智能空调的手动限制功能.通过DS18B20温度传感器实时检测室温并通过1602液晶显示器显示室温,并将室温与预设值进行对比,实现空调自动制冷或加热,实现了智能空

5、调的自动限制功能.在定时功能启动的情况下,如果计时时间与定时时间相同,此时,空调相应的工作状态会自动关闭.把定时时间存在STC89c52单片机内部的EEPROM中,断电后不会消失,直至通过按键去改变,实现了智能空调的定时加热或制冷功能.1.2.2 各功能要求实现的工作原理1、定时与时间显示刚开始上电时,1602液晶显示器上产生实时时间.此系统运用单片机的定时器功能产生走时,采用的是二十四小时.制,在一直通电的情况下,会一直加到23:59:59,然后清零从00:00:00重新开始.假设开启定时功能,液晶右下角显示定时时间,在显示器的右上角显示0N,未开启定时功能那么显示OFFo液晶显示屏的显示画

6、面,如表1T所示:表1-1未开启定时或开启定时功能,液晶显示屏显示结果012345678910111213141500FNF单片机得电后,其内部定时器会立即开启,在软件程序中设定其相应的内部定时器的存放器从而相应的定时会比拟准确的记录下来.2、温度检测与显示DS18B20检测的室内温度信号返回给单片机,单片时机相应的处理此温度信号,同时送往液晶显示器显示.提前设定的温度值存在单片机ROM中,单片机处理后,也会在液晶上显示.如表2所示,用*表示实时室内温度.表1-2液晶显示屏显示实时室内温度*为温度值0123456789101112131415*智能温控就是感温头精确感应,把室内温度的变化传递给

7、中央限制芯片,由芯片限制系统使室内温度到达显示屏上的设定温度,使用者只需要自身的要求而去设定不同的温度即可,以到达最大的智能化限制.3、键盘调节人机交互采用键盘输入.通过键盘输入指令,限制相应的不同状态的切换、时间定时长短的设定.调整时间设定表示光标闪烁如表1-3所示.表1-3液晶显示的调整时间设定*为定时时间,回为定时时间0123456789101112131415*通过按键把定时的时间写入单片机的EEPROM中,永久性保存.2系统功能模块的设计与实现2.1主限制模块2.1.1主限制单元模块设计系统主限制单元,采用AT89c52单片机为主限制芯片,主要包括AT89c52单片机、复位电路、时钟

8、电路、下载电路、电源指示电路.2.1.2主限制单元工作原理系统主限制单元如图2-1所示:图2-1系统主限制单元功能电路STC89C52单片机具有256KB的程序存储区、8KBFlashR0M,完全满足系统设计需要,按键S1为复位按键,采用低电平复位,电容C3与电阻R10组成上电复位电路,为了提升串行通信波特率的准确度,时钟电路采用12MHz的晶振和电容C1、电容C2组成振荡电路.2.2电源模块设计2.2.1电源模块概述LM7805是常用的三端稳压器,一般使用的是T0-220封装,能提供DC5V的输出电压,应用范围广,内含过流和过载保护电路.带散热片时能持续提供1A的电流,如果使用外围器件,它还

9、能提供不同的电压和电流.2.2.2电源模块的应用电源模块电路如图2-2所示.电源电路主要为系统提供工作佟|2-2电源模块功能电路电源,总电源有220V输入,通过变压器和整流器输出12V直流电源.但是这个直流电源很不稳定,所以再用一个7805进行稳压,输出稳定的5v直流电源.供单片机、lcdl602等使用.2.3温度检测模块设计2.3.1温度传感器的选取温度是一种最根本的环境参数,人民的生活舒适度与环境的温度息息相关,DS18B20装置适用于人民的日常生活和工业和农业生产用的温度测量.由半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民

10、用、军事等领域的温度测量及限制仪器、测控系统和大型设备中.DS18B20具有体积小,接口方便,传输距离远等特点.采用数字温度传感器DS18B20,与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式.可以分别在和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线单线接口读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源.因而使用DS18B20可使系统结构更趋简单,可靠性更高,本钱更低.测量温度范围为-55c+125C.在-10+85C,精度为&

11、#177;0.5.DS18B20的精度较差为±2.现场温度直接以“一线总线的数字方式传输,大大提升了系统的抗干扰性.2.3.2DS18B20概述1. DS18B20的性能特点:(1)采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位).(2)测温范围是-55“+125.(3)内含64位经过激光修正的只读存储器ROM.(4)适配各种单片机或系统机.(5)用户可分别设定各路温度的上、下限.(6)内含寄生电源.2. DS18B20内部结构DS18B20内部结构主要由4局部组成:64位光刻ROM,温度传感器

12、,非挥发的温度报警触发器TH和TL,配制存放.DS18B20的管脚排列如图2-3所示.图2-3DS18B20引脚图3. DS18B20引脚功能如下:NC(1、2、6、7、8脚):空引脚,悬空不使用.VDD(3脚):可选电源脚,电源电压范围是3.DQ(4脚):数据输入/输出脚,漏极开路,常态下高电平.2. 3.3温度检测单元电路温度检测单元采用DS18B20实现温度的检测.功能电路如图2-4所示,温度传感器DS18B20将采集回来的数据经给AT89c52单片机,AT89c52单片机把这些数据进行分析,送至1602液晶显示器上显示温度.P2.3O令U1DS18B20图2-4DS18B20温度检测功

13、能电路具体操作如下:1 .DS18B20初始化.(1)数据线拉到低电平“0.(2)延时480微妙(该时间的时间范围可以从480到960微妙).(3)数据线拉到高电平“1.(4)延时等待80微妙.如果初始化成功那么在15到60微妙时间内产生一个由DS18B20所返回的低电平“0.根据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时判断.(5)假设CPU读到了数据线上的低电平“0后,还要做延时,其延时的时间从发出的高电平算起(第(3)步的时间算起)最少要480微妙.2 .限制器写时序.(1)数据线先置“0(2)延时15微妙.(3)按从低位到高位的顺序发

14、送数据(一次只发生一位)o(4)延时60微妙.(5)将数据线拉到高电平.(6)重复15步骤,直到发送完整的字节.(7)最后将数据线拉高.3 .限制器读时序.(1)将数据线拉低“0.(2)延时6微妙.(3)将数据线拉高“1,释放总线准备读数据.(4)延时4微妙.(5)读数据线的状态得到1个状态位,并进行数据处理.(6)延时30微妙.(7)重复17步骤,直到读完一个字节.2.4显示模块设计2.4.1 1602液晶显示器概述1. 液晶显示器简介液晶显示器的主要工作原理是通过电流刺激液晶分子,从而产生点、线、面、并配合背部灯管构成不同的显示画面.各种不同型号的液晶显示器都是根据显示字符的行数或者是液晶

15、显示器点阵的行、列数进行命名的.例如:1602液晶显示器所表述的意思就是,每行显示16个字符,一共能够有两行进行显示字符.本设计就是应用1602液晶显示器进行显示温度以及定时时间.液晶显示器的英文名称是LiquidCrystalDisplay,所以液晶显示器乂可以叫做LCD,以下的1602液晶显示器都称为LCD1602.字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式液晶显示器,LCD1602以并行操作方式占大多数,但是有的也并行操作方式和串行操作方式同时具有,用户自行选择并口或串口操作.2. LCD1602的根本参数及引脚功能:LCD1602分为带背光和不带背光两种,基限制器大局

16、部为HD44780,带背光的比不带背光的要厚,是否带背光在应用中并无差异,两者尺寸差异,如图2-5所示:图2-5LCD1602尺寸图3. LCD1602主要技术参数:(1)显示容量:162个字符(2)芯片工作电压:一(3)工作电流:(4)模块最正确工作电压:字符尺寸:引脚功能说明:LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-1所示:第1脚:VSS为地电源.第2脚:VDD接5V正电源.第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影,使用时可以通过一个10K的电位器调整比照度.第4脚:RS为存放器选择

17、,高电平时选择数据存放器、低电平时选择指令存放器.表2TLCD1602引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据口2VDD电源正极10D3数据口3VL液晶显示偏压11D4数据口4RS数据/命令选择12D5数据口5R/W读/写选择13D6数据口6E使能信号14D7数据口7DO数据口15BLA背光源正极8D1数据口16BLK背光源负极第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据.第6脚:E端为使能端,当E端由高

18、电平跳变成低电平时,液晶模块执行命令.第714脚:DOD7为8位双向数据线.第15脚:背光源正极.第16脚:背光源负极.5.LCD1602的指令说明:LCD1602内部的限制器共有11条限制指令,如表3-2所示.LCD1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的.说明:1为高电平、0为低电平令令令指指指表3-2LCD1602限制指令序号指令RSR/WD7D6D5D1D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关限制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001D

19、LNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容L清显示,指令码01H,光标复位到地址00H位置.2:光标复位,光标返回到地址00H.3:光标和显示模式设置I/D:光标移动方向.高电平右移,低电平左移.S:屏幕上所有文字是否左移或者右移.高电平表示有效,低电平那么无效.指令4:显示开关限制.D:限制整体显示的开与关,高电平表示开显示,低电平表示关显示.C:限制光标的开与关,高电平表示有光标,低电平表示无光标.B:

20、限制光标是否闪烁,高电平闪烁,低电平不闪烁.指令5:光标或显示移位.S/C:高电平时移动显示的文字,低电平时移动光标.指令6:功能设置命令.DL:高电平时为4位总线,低电平时为8位总线.N:低电平时为单行显示,高电平时双行显示.F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符.指令7:字符发生器RAM地址设置.指令8:DDRAM地址设置.指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙.指令10:写数据.指令n:读数据.6. LCD1602的RAM地址映射及标准字库表:液晶显示模块是一个慢显示器件,所以在执行每条指令之

21、前一定要确认模块的忙标志为低电平,表示不忙,否那么此指令失效.要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2-7是LCD1602的内部显示地址.在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预.每次输入指令前都要判断液晶模块是否处于忙的状态.图2-7LCD1602内部显示地址LCD1602液晶模块内部的字符发生存储器CGR0已经存储了160个不同的点阵字符图形,如图3-7所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比方大写的英文字母的代码是01000001B41H,显示时模块把地址

22、41H中的点阵字符图形显示出来,我们就能看到字母“A"o7. LCD1602的一般初始化复位过程:写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令OCH:显示开及光标设置2.4.2显示模块电路在该系统中显示用到的是LCD1602液晶显示器.液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各种小系统中得到了非常广泛的应用.LCD1602是指显示的内容为16X2,即可以显示2行,每行16个字符液晶模块显示字符和数字.图2-8LCD1602与单片机接线电路图2.5模块设计2.5.1键盘电路功能设定键盘电路图如图2-

23、9所示.P3.7.图2-9键盘电路图按键Sri6组成矩阵键盘与单片机AT89c52的P3口相连接.S2为“加,S10为“减,S3启动/关闭,S5为启动智能空调制冷状态,S6为调节走时按键,S7为启动智能空调暖风工作状态,S13为开启/关闭定时,S14为调节定时.2. 5.2矩阵键盘电路工作原理矩阵键盘采用动态扫描的方式:首先给口低电平,然后逐列扫描,如果S1键按下那么口为低电平;然后给口低电平,再逐列扫描,以此类推,直到为低电平,扫描完一次矩阵键盘.2.6外围驱动电路模块设计2.6.1驱动电路本系统中AT89c52单片机根据读取的按键值,做出不同的响应动作.单片机只是一个主控方,他的强大功能必

24、须依靠外围器件驱动才能完成,所以本设计中通过三极管VT1(8550),继电器K1后,驱动智能空调的启动/停止功能,最终使室内的温度保持在一个人为感觉良好的理想状态.通过限制继电器的通/断即可到达智能空调智能限制的要求.驱动电路图如图2-10所示.图2-10驱动电路图2.6.2JQC-3FF继电器继电器的工作原理实质是通过低电压、小电流限制高电压、大电流.JQC-3FF-5V继电器的触点形式是一开一闭.继电器的工作参数如表3-4所示.表2-4继电器工作参数额定电压:DC-12V额定电流:12触点切换电流:10触点切换电压:1防护特征:塑封式触点负载:大功率应用范围:电磁型号:JQC-3FF-5V

25、DC-1ZS(551)触点形式:一开一闭3系统软件设计系统软件设计采用模块化、结构化的设计思想,使程序便于移植.系统程序主要包括主程序、系统宏定义、键盘处理函数、LCD显示函数、温度检测、系统限制算法函数.首先系统上电后启动系统功能,此时处于待机状态,S3按下后液晶显示器显示,空调开始工作,然后可以通过人机交互选择系统所运行的功能.系统上电后自动开始走时,开机后显示器显示时间、室内温度确定值、设定值以及定时时间.通过人机交互选择系统所运行的功能,确定这些数值是否需要进行改动.当上述所有数值设定好后,再次通过人机交互选择系统所运行的功能,把所定时的时间写入到单片机的EEFROM中,把定时功能开启

26、.智能空调限制系统的主程序流程图,如图3-1所示:智能空调限制系统按键局部的子程序流程图,如图3-2所示:图3-2按键局部的子程序流程图液晶显示局部的子程序流程图,如图3-3所示:图3-3液晶显示局部的子程序流程图4系统测试及结果分析通过两周的设计和制作,本系统成功地实现了设计要求.为验证系统的功能和各项技术指标,下面通过实验对本系统进行功能验证.4.1系统测试L首先上电,液晶显示器不显示.按下后显示走时,定时、实际温度值等.3 .按下S7按键,开启暖风模式,右上角显示1.4 .按下S13按键,开启定时模式.5 .定时模式开启时,按下S14按键,可调节定时时间.此时光标闪烁.按下S2或S9可调

27、节时间.6 .按下S6按键,光标在时间处闪烁,此时按下S2或S9可调节时间.7 .2系统测试结果及分析通过以上的测试数据分析,可以得出以下结论:1、本系统的走时功能,定时功能得以实现.2、本装置使用了矩阵键盘.按键简洁方便,满足人们的习惯.可实现各个功能的调节与运行.3、走时精确度较高,与现实的时间相差其小,可以完全作为一个电子钟使用.走时精确,而就会减小定时长短的失误,更加精确化.利用单片机的自身资源,节省了本钱,减少了外围电路的设计.4、温度传感器检测的实时温度准确度较高,可以使室内温度始终保持在一个比拟理想的状态中,使人们的生活更加舒适.5、在本设计中,为了预防在温控点上压缩机频繁的启动

28、/关闭,影响其寿命,温控的精度误差限制在1摄氏度.实践证实,这对室内的温度并没有明显的影响.本论文分析了智能空调限制系统结构和特点,总结全文,主要的研究工作有以下几个方面:1、对智能空调限制系统的原理和组成进行了详细的介绍,确定了系统的总体设计方案.2、对智能空调限制系统的限制过程做了准确的算法分析,包括检测过程中的实时温度、按键复用、驱动等,通过上述分析最终通过程序算法实现温度的自动限制限制.3、对键盘详细的分析,采用内部定时器产生实时时钟供显示屏显示,使其可作为一台精度较高的电子时钟使用.这样节省了本钱.4、以AT89c52最小系统板为限制系统,进行并完成了系统要求所需的各硬件模块的原理图

29、,并做了相应的硬件制作调试.采用了DS18B20温度传感器检测实时温度状态,使数据更准确,并对DS18B20温度传感器进行了精确的限制,提升了检测系统的可靠性.5、完成了相关的分析算法程序和各功能模块的应用程序的设计,实现了温度限制.整个软件的设计采用模块化、结构化设计思想,使程序便于移植.6、分析了限制系统中可能存在的各种干扰源,在设计限制系统时,采用硬件和软件抗干扰技术相结合的方法进行了抗干扰设计,保证了限制系统的可靠性.1谭浩强,C程序设计.北京:清华大学出版社,.2 7805电压转换模块使用说明书.3 DS18B20温度传感器使用手册.4 LCD1602液晶显示模块使用说明书.5数字电

30、子技术根底.常丹华主编6单片机原理及应用技术.张淑清等编着7白度文库以及网上的各种资料.附录附录1系统主程序包含所需头文件#include<>#include,/,#include#defineuintunsignedint#defineucharunsignedchar/ucharkey_value;sbitled=F2-2;电源指示灯ucharp;定时中断参数ucharkey_scan();矩阵键盘扫描/*定时中断初始化*/voiddszd_init()TM0D=0x01;TRO=1;THO二(65535-10000)/256;TLO=(65535-10000)%256;ETO

31、=1;EA=1;ucharstart()if(key_value=2)按键s3按下翻开/关闭空调(delay(500);延时500nlskey_value=0;s3num+;s3num=s3nuni%2;if(sSnuml)begin=l;if(sSnum-O)begin=O;)if(s3num=1&&r=l&&slnum=0&&s2num=0)开关翻开/并且开启定时并且没有进行调试if(hour=hour_1&&min=min_1)(begin=0;s3num=0;)returnbegin;/*室温与设定温度比拟*/voidco

32、mpare()if(cold-0)制冷模式下(if(temper-temp>l)I!(temp-temper1)(jidianqi=1;温差大于一度启动电动机)if(temper二二temp)室内温度等于设定温度关闭电动机jidianqi_l=O;)暖风模式下if(hot=0)if(temper-temp>l)1!(temp-temper>1)(jidianqi_2=l;温差大于一度启动电动机)if(temper二二temp)室内温度等于设定温度关闭电动机jidianqi_2=0;/*"不呈j了*/voidmain()dszd_init();开定时中断whileke

33、y_scan();开矩阵键盘扫描start();关闭显示启动前/制冷/暖风指示灯初默write_com(0x08);jidianqi二0;jidianqi_2=0;电机关闭cold=0;hot=0;关闭while(begin)(initO;始化液晶显示cold=0;认为制冷模式hot=1;while(begin)led=1;电源指示灯一直亮间键盘扫描扫描空调开启/关闭模式更新液晶时间显示更新液晶温度显示定时时间显示和调节温度检测机起动/关闭)write_hms(0,hour);write_hms(3,min);write_hms(6,sec);显示时key_scan();矩阵start();l

34、cd_mode();工作LCD_scan();/lcd_temp();/dingshi();/LcdDisplay(Ds18b20ReadTemp();/compare();温度比拟,限制电动一/*口H、J匚,附f*/voidTimer0()interrupt1TH0=(65536-10000)/256;TLO=(65536-10000)%256;P+;if(p=100)(P二0;sec+;if(sec=60)(sec=0;min+;if(min=60)(min=0;hour+;if(hour-24)(hour=0;)子程序Sifndef_LCD1602_H_define_LCD1602_H_

35、#defineuintunsignedint#defineucharunsignedcharucharkey_value;sbitsbitsbitsbitcold=P2P;hot=P21;jidianqi二P1/1;jidianqi_2=Pr2;绿灯时制冷指示灯红灯为暖风指示灯sbitLCDE=P2/;sbitLCDRS=F2-6;sbitLCDRW=F2-5;ucharnum,sinum,s2num,s3num,r;ucharhour,min,sec,hour_l=l,min_l;uchartemper=26;ucharshi,ge;ucharbegin;ucharcodetable二27/

36、26OFF0;液晶显示器第一行显示结果ucharcodetable_2="00:00:0000:00;液晶显示器第二行显示结果voiddelay(uintz)lms延时函数uinti,j;for(i=0;i<z;i+)for(j=0;j<110;j+);/*矩阵键盘扫描程序>k*)k*>k/ucharkey_scan()uchartable=0,i;for(i=0;i<4;i+)(P3="(0xl0«i);table=P3;table=table&0x0f;if(table!=0x0f)(delay(5);去抖table=P3

37、;区分独立键盘tab1e=tab1e&OxOf;if(table!=0x0f)(switch(table)caseOxOe:key_value=0+i;break;caseOxOd:key_value=4+i;break;case0x0b:key_value=8+i;break;case0x07:key_value=12+i;break;)while(table!=OxOf)松手检测(table=P3;table=table&OxOf;)returnkey_value;_-/*液晶显示器写命令*/voidwrite_com(ucharcom)(LCDRS=O;LCDRW=O;P

38、0=com;delay(5);LCDE=1;delay(5);LCDE=0;_/*液晶显示器写数据*/voidwrite_data(uchardate)(LCDRS=1;LCDRW=0;PO二date;delay(5);延时5nlsLCDE=1;delay(5);LCDE=0;_/*液晶显示器初始化*/voidinit()(LCDE=0;write_com(0x38);显示模式设制write_com(OxOc);开显示不显示光标光标不闪烁%Tite(0x06);当读或写一个字符后地址指针加一,且光标加一整屏不移动write_com(0x01);显示清屏write_com(0x80);设计数据指

39、针地址for(num=O;num<16;num+)write_data(table_lnum);delay(20);延时20mswrite_com(0x80+0x40);重新设置数据指针换行for(num=O;num<16;num+)write_data(tab1e_2num);delay(20);/voidwrite_hms(ucharadd,uchardate)ucharshi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);/kIz7777v

40、oidwrite_temp(uchardate)(ucharshi,ge;shi=date/10;ge=date%10;write_com(0x80+0x07);write_data(0x30+shi);write_data(0x30+ge);/*调整液晶显示器时间*/voidLCD_scan()(ucharpanduan_l;if(key_value=5)/按键S6摘下(panduan_l=l;/delay(50);延时50nlswhile(panduan_l)(if(key_value=5)(delay(500);延时500ms预防加的过快slnum+;key_value=0;if(sln

41、uml)(TRO=0;停止时间计时write_com(0x80+0x40+1);/重新设置数据指针换行一write_com(0x0f);显示光标光标闪烁)if(slnum=2)(write_com(0x80+0x40+4);if(slnum-3)(write_com(0x80+0x40+7);if(slnum=4)slnum=O;write_com(OxOc);TRO=1;panduan_l=O;判断标志位清零退出时间调节if(slnum!=O)(if(key_value=l)/按键S2按下(delay(500);/延时500ms预防加的过快key_value=0;if(slnuml)(hou

42、r+;if(hour-24)hour=0;write_hms(0,hour);光标在小时处闪烁write_com(0x80+0x40+1);使光标再回到小时处闪烁if(slnum2)(min+;if(min-60)min=0;write_hms(3,min);光标在分处闪烁write_com(0x80+0x40+4);光标再回到分处闪烁)if(slnum-3)sec+;sec;if(sec=-l)sec=60;write_hms(6,sec);光标在秒处闪烁write_com(0x80+0x40+7);光标再回到秒处闪烁)key_scan();)/I41,AE1-7r7r7rJ4*IIKII/

43、voidlcd_mode()if(key_value=4)按键s5按下/delay(50);key_value=0;write_com(0x80+0x0f);write_data(0x30+0x00);jidianqi_l=l;显示0表示制冷继电器1起jidianqi_2=0;继电器2关cold=0;制冷指示灯完暖风指示灯灭)if(key_value=6)按键s7按下delay(50);key_value=0;write_com(0x80+0x0f);write_data(0x30+0x01);jidianqi_l=0;闭jidianqi_2=l;动hot=0;指示灯亮cold=1;指示灯灭)

44、显示1表示加热继电器1关继电器2起暖风制冷)voidlcd_temp()(if(slnum=0&&s2num=0)没有调时的情况下,直接按上下键调温度(if(key_value=l)(/delay(50);key_value=0;temper+;if(temper>30)最高温度30度(temper=30;)write_temp(temper);if(key_value=9)(/delay(50);key_value=0;最低temper;if(temper<16)温度16度temper=16;)write_temp(temper);/*定时开关及定时时间调整*/v

45、oiddingshi()(ucharpanduan_2;write_hms(11,hour_l);write_hms(14,min_l);if(key_value=12)关闭定时按键S13按下开启/delay(500);延时500ms防止加的过快key_value=0;r+;r=r%2;if(r=l)开定时write_com(0x80+0x0b);write_data(,O');write_data(,N');write_data(0x20);write_com(0x0c);)if(r=0)/关定时.write_com(0x80+0x0b);write_data(,O'

46、);write_data(,F');write_data(,F');write_com(0x0c);if(r=l)/按键S13握下开定时(/delay(50);延时50nlsif(key_value=13)(panduan_2=l;while(panduan_2)(if(key_value=13)(delay(500);/延时500nls预防加的过快key_value=0;s2num+;if(s2num=l)(write_com(0x80+0x40+0x0c);/光标移至小时处闪烁write_com(0x0f);)if(s2num=2)write_com(0x80+0x40+0

47、x0f);光标移至分处闪烁)if(s2num=3)(s2num=0;write_com(0x0c);光标停止闪烁panduan_2=0;跳出循环)if(s2num!=0)if(key_value=l)/按键S2按下delay(500);/延时500mskey_value=0;if(s2num=l)(hour_l+;if(hour_l=24)hour_l=0;write_hms(11,hour_l);光标在小时处闪烁write_com(0x80+0x40+0x0c);使光标再回到小时处闪烁if(s2num=2)(min_l+;if(min_l=60)min_l=0;write_hms(14,mi

48、n_l);光标在分处闪烁write_com(0x80+0x40+0x0f);光标再回到分处闪烁)if(key_value=9)/按键S10按下(delay(500);/延时500mskey_value=0;if(s2num=l)hour一;ifhour二二一1hour二23;write-hms(11,hour);光标在小时处闪烁write_com(0x80+0x40+0x0c);使光标再回到小时处闪烁)if(s2num=2)(min_l-;if(min_l=-l)min_l=59;write_hms(14,min_l);光标在分处闪烁write_com(0x80+0x40+0x0f);光标再回

49、到分处闪烁)key_scan();)子程序Sifndef_DS_H_Sdefine_DS_H_#defineuintunsignedint#defineucharunsignedcharsbitDSPORT=P2"3;dsl8b20接口inttemp,temp_l;uchardeceive_ready;voiddelay_us(uintus)while(us-);)/、JQ*函数名*函数功能*输入*输出|卜</,J/J,<(*'j*卜/J,J/J/J.,i('/J卜<,J卜</J/卜''卜J卜<,J卜9卜J/9,i(9卜J

50、rJ,J卜J卜J/卜''*卜J/J,JrJ/J.('?*卜J/J'J/,/J卜:Dsl8b20Init:初始化:无:初始化成功返回1,失败返回0、'6'.<Z>6,',"',*.J卜,*','*4>*',*.J卜/,'*4>*',*'.J卜6,*',*4J(,'6*,J卜,*',*4*",*'.*46,',*4>6*',*4*6,*',*4*/ucharDsl8b20Init()DSPORT=O;delay_us(50);DSPORT=1;将总线拉低480us、960us/延时642us然后拉高总线,如果DS18B20做出反响会招

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论