《智能空调控制系统设计毕业设计(共56页).doc》由会员分享,可在线阅读,更多相关《智能空调控制系统设计毕业设计(共56页).doc(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上摘 要智能空调控制系统是根据温度传感器采集室内的环境温度与系统的预设值进行对比,通过控制系统的预先设置,空调进行自动制冷或制热,从而达到了智能控制的目的。根据人们对生活环境的要求和单片机的应用特性,本文介绍了应用STC89C52单片机进行控制的智能空调控制系统。智能空调控制系统主要由电源电路、液晶显示电路、单片机控制电路、按键电路、控制指示电路等组成。其工作原理是温度传感器DS18B20采集室内温度传送给单片机,单片机分析数据,控制智能空调加热或制冷。 此系统可以通过按键设置空调的温度,使空调对室内进行加温或降温,也可以对系统预设一个温度值,通过传感器感知室内温度与智
2、能空调的预设温度值进行对比,通过单片机控制空调对室内进行加温或降温,达到智能空调的自动控制功能。在定时功能启动的情况下,如果计时时间与定时时间相同,此时空调相应的状态会自动关闭,把定时时间存在STC89C52单片机内部的EEPROM中,断电后不会消失,直至通过按键去改变,达到了智能空调的定时功能。关键词:智能空调;液晶显示;STC89C52单片机;ds18b20温度检测芯片 专心-专注-专业目 录1 智能空调控制系统的方案设计本系统以单片机STC89C52为核心,采用电源模块、温度采集、键盘输入、液晶显示、驱动电路等,实现了基于空调温度控制系统。把定时时间存入单片机EEPROM中,不易丢失。人
3、机交互采用按键输入、液晶显示,界面友好,易于操作。 1.1 智能空调控制系统DS18B20温度传感器采集室内温度数据,并将信息反馈给CPU,单片机分析并与设定的温度值进行比较,通过驱动电路使智能空调调节不同的工作状态,单片机的工作状态有加热、制冷工作状态。不同的按键S的功能设置为:S2为“加”,S10为“减”,S3启动/关闭,S5为启动智能空调制冷状态,S6为调节走时按键,S7为启动智能空调暖风工作状态,S13为开启/关闭定时,S14为调节定时。系统的结构框图如图1-1所示:单片机 液晶显示 键盘输入 温度检测 晶振电路 驱动电路复位电路图1-1 智能空调控制系统结构框图1.2 系统工作原理1
4、.2.1 系统功能模块工作原理介绍电源管理模块将外部交流电通过整流变压器及稳压芯片7805进行稳压,以便提供给各个系统工作模块,如DS18B20温度传感器、单片机主控制单元、液晶显示单元、驱动电路单元等。单片机(STC89C52)主控制单元负责整个智能空调控制系统的运行控制,通过人际交互单元(按键及液晶显示)的系统功能设置,用1602液晶显示器将室内温度显示出来,并且可以通过按键进行调整,实现空调加热或制冷的工作状态设置,即达到智能空调的手动控制功能。通过DS18B20温度传感器实时检测室温并通过1602液晶显示器显示室温,并将室温与预设值进行对比,实现空调自动制冷或加热,实现了智能空调的自动
5、控制功能。在定时功能启动的情况下,如果计时时间与定时时间相同,此时,空调相应的工作状态会自动关闭。把定时时间存在STC89C52单片机内部的EEPROM中,断电后不会消失,直至通过按键去改变,实现了智能空调的定时加热或制冷功能。1.2.2 各功能要求实现的工作原理1、定时与时间显示刚开始上电时,1602液晶显示器上产生实时时间。此系统运用单片机的定时器功能产生走时,采用的是二十四小时制,在一直通电的情况下,会一直加到23:59:59,然后清零从00:00:00重新开始。若开启定时功能,液晶右下角显示定时时间,在显示器的右上角显示ON,未开启定时功能则显示 OFF。液晶显示屏的显示画面,如表1-
6、1所示:表1-1 未开启定时或开启定时功能,液晶显示屏显示结果0123456789101112131415OOFNF单片机得电后,其内部定时器会立即开启,在软件程序中设定其相应的内部定时器的寄存器从而相应的走时会比较准确的记录下来。2、温度检测与显示DS18B20检测的室内温度信号返回给单片机,单片机会相应的处理此温度信号,同时送往液晶显示器显示。提前设定的温度值存在单片机ROM中,单片机处理后,也会在液晶上显示。如表1-2所示,用*表示实时室内温度。表1-2 液晶显示屏显示实时室内温度(*为温度值)0123456789101112131415* 智能温控就是感温头精确感应,把室内温度的变化传
7、递给中央控制芯片,由芯片控制系统使室内温度达到显示屏上的设定温度,使用者只需要自身的要求而去设定不同的温度即可,以达到最大的智能化控制。3、键盘调节人机交互采用键盘输入。通过键盘输入指令,控制相应的不同状态的切换、时间定时长短的设定。调整时间设定(*表示光标闪烁)如表1-3所示。表1-3 液晶显示的调整时间设定(*为走时时间,为定时时间)0123456789101112131415*:*:*:通过按键把定时的时间写入单片机的EEPROM中,永久性保存。2 系统功能模块的设计与实现2.1 主控制模块2.1.1 主控制单元模块设计系统主控制单元,采用AT89c52单片机为主控制芯片,主要包括AT8
8、9c52单片机、复位电路、时钟电路、下载电路、电源指示电路。2.1.2 主控制单元工作原理系统主控制单元如图2-1所示:图2-1 系统主控制单元功能电路STC89C52单片机具有256KB的程序存储区、8KBFlashROM,完全满足系统设计需要,按键S1为复位按键,采用低电平复位,电容C3与电阻R10组成上电复位电路,为了提高串行通信波特率的准确度,时钟电路采用12MHZ的晶振和电容C1、电容C2组成振荡电路。2.2 电源模块设计2.2.1 电源模块概述LM7805是常用的三端稳压器,一般使用的是TO-220封装,能提供DC 5V的输出电压,应用范围广,内含过流和过载保护电路。带散热片时能持
9、续提供1A的电流,如果使用外围器件,它还能提供不同的电压和电流。2.2.2 电源模块的应用电源模块电路如图2-2所示。电源电路主要为系统提供工作图2-2 电源模块功能电路电源,总电源有220V输入,通过变压器和整流器输出12V直流电源。但是这个直流电源很不稳定,所以再用一个7805进行稳压,输出稳定的5V直流电源。供单片机、lcd1602等使用。2.3 温度检测模块设计2.3.1 温度传感器的选取温度是一种最基本的环境参数,人民的生活舒适度与环境的温度息息相关,DS18B20装置适用于人民的日常生活和工业和农业生产用的温度测量。由半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适
10、配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。DS18B20具有体积小,接口方便,传输距离远等特点。采用数字温度传感器DS18B20,与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线( 单线接口) 读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高,成
11、本更低。测量温度范围为-55+125。在-10+85,精度为0.5。DS18B20的精度较差为2。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。2.3.2 DS18B20概述1DS18B20的性能特点:(1) 采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)。(2) 测温范围是-55+125。(3) 内含64位经过激光修正的只读存储器ROM。(4) 适配各种单片机或系统机。(5) 用户可分别设定各路温度的上、下限。(6) 内含寄生电源。2DS18B20内部结构DS18B20内部结构主
12、要由4部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,配制寄存。DS18B20的管脚排列如图2-3所示。图2-3 DS18B20引脚图3DS18B20引脚功能如下:NC(1 、2 、6 、7 、8脚) :空引脚,悬空不使用。VDD(3脚):可选电源脚,电源电压范围是35.5V。DQ(4脚):数据输入/输出脚,漏极开路,常态下高电平。2.3.3 温度检测单元电路温度检测单元采用DS18B20实现温度的检测。功能电路如图2-4所示,温度传感器DS18B20将采集回来的数据经P2.3口给AT89c52单片机,AT89c52单片机把这些数据进行分析,送至1602液晶显示器上显
13、示温度。图2-4 DS18B 20温度检测功能电路具体操作如下:1DS18B20初始化。(1) 数据线拉到低电平“0”。(2) 延时480微妙(该时间的时间范围可以从480到960微妙)。(3) 数据线拉到高电平“1”。(4) 延时等待80微妙。如果初始化成功则在15到60微妙时间内产生一个由DS18B20所返回的低电平“0”。根据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时判断。(5) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(3)步的时间算起)最少要480微妙。2控制器写时序。(1) 数据线先置
14、“0”(2) 延时15微妙。(3) 按从低位到高位的顺序发送数据(一次只发生一位)。(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液晶显示器进行显示温度以及定时时间。液晶显示器的英文名称是Liquid Crystal Display,所以液晶显示器又可以叫做LCD,以下的1602液晶显示器都称为LCD1602。字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式液晶显示器,LCD1602以并行操作方式占大多数,但是有的也并行操作方式和串行操作方式同时具有,用户自行选择并口或串口操作。2 LCD
16、1602的基本参数及引脚功能:LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的要厚,是否带背光在应用中并无差别,两者尺寸差别,如图 2-5 所示:图2-5 LCD1602尺寸图3LCD1602主要技术参数:(1)显示容量:162个字符(2)芯片工作电压:4.55.5V(3)工作电流:2.0mA(5.0V)(4)模块最佳工作电压:5.0V(5)字符尺寸:2.954.35(WH)mm4.引脚功能说明:LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-1所示:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:V
17、L为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。表2-1 LCD1602引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据口2VDD电源正极10D3数据口3VL液晶显示偏压11D4数据口4RS数据/命令选择12D5数据口5R/W读/写选择13D6数据口6E使能信号14D7数据口7D0数据口15BLA背光源正极8D1数据口16BLK背光源负极第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS
18、和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。5LCD1602的指令说明:LCD1602内部的控制器共有11条控制指令,如表3-2所示。LCD1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)表3-2 LCD1602控制指令序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光
19、标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向。高电平右移,低电平左移。 S:屏幕上所有文字是否左移或者右移。
20、高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标。B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位。S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令。 DL:高电平时为4位总线,低电平时为8位总线。 N:低电平时为单行显示,高电平时双行显示。 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示
21、忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。6LCD1602的RAM地址映射及标准字库表:液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2-7是LCD1602的内部显示地址。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。图2-7 LCD1602内部显示地址LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了16
22、0个不同的点阵字符图形,如图3-7所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。7. LCD1602的一般初始化(复位)过程:写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置2.4.2 显示模块电路在该系统中显示用到的是LCD1602液晶显示器。液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各种小系统中得到了非常广泛的应用。LCD1
23、602是指显示的内容为162,即可以显示2行,每行16个字符液晶模块(显示字符和数字)。图2-8 LCD1602与单片机接线电路图2.5 模块设计2.5.1 键盘电路功能设定键盘电路图如图2-9所示。图2-9 键盘电路图按键S116组成矩阵键盘与单片机AT89c52的P3口相连接。S2为“加”,S10为“减”,S3启动/关闭,S5为启动智能空调制冷状态,S6为调节走时按键,S7为启动智能空调暖风工作状态,S13为开启/关闭定时,S14为调节定时。2.5.2 矩阵键盘电路工作原理矩阵键盘采用动态扫描的方式:首先给P3.0口低电平,然后逐列扫描,如果S1键按下则P3.4口为低电平;然后给P3.1口
24、低电平,再逐列扫描,以此类推,直到P3.3为低电平,扫描完一次矩阵键盘。2.6 外围驱动电路模块设计2.6.1 驱动电路 本系统中AT89c52单片机根据读取的按键值,做出不同的响应动作。单片机只是一个主控方,他的强大功能必须依靠外围器件驱动才能完成,所以本设计中通过三极管VT1(8550),继电器K1后,驱动智能空调的启动/停止功能,最终使室内的温度保持在一个人为感觉良好的理想状态。通过控制继电器的通/断即可达到智能空调智能控制的要求。驱动电路图如图2-10所示。图2-10 驱动电路图2.6.2 JQC-3FF继电器继电器的工作原理实质是通过低电压、小电流控制高电压、大电流。JQC-3FF-
25、5V继电器的触点形式是一开一闭。继电器的工作参数如表3-4所示。表2-4 继电器工作参数额定电压:DC-12V额定电流:12触点切换电流:10触点切换电压:1防护特征:塑封式触点负载:大功率应用范围:电磁型号:JQC-3FF-5VDC-1ZS(551)触点形式:一开一闭3 系统软件设计系统软件设计采用模块化、结构化的设计思想,使程序便于移植。系统程序主要包括主程序、系统宏定义、键盘处理函数、LCD显示函数、温度检测、系统控制算法函数。首先系统上电后启动系统功能,此时处于待机状态,S3按下后液晶显示器显示,空调开始工作,然后可以通过人机交互选择系统所运行的功能。系统上电后自动开始走时,开机后显示
26、器显示时间、室内温度确定值、设定值以及定时时间。通过人机交互选择系统所运行的功能,确定这些数值是否需要进行改动。当上述所有数值设定好后,再次通过人机交互选择系统所运行的功能,把所定时的时间写入到单片机的EEPROM中,把定时功能开启。智能空调控制系统的主程序流程图,如图3-1所示:开始调用键盘程序DS18B20检测温度 判断按键做出相应处理液晶显示有按键?NY图3-1主程序流程图智能空调控制系统按键部分的子程序流程图,如图3-2所示:图3-2 按键部分的子程序流程图液晶显示部分的子程序流程图,如图3-3所示:图3-3液晶显示部分的子程序流程图4 系统测试及结果分析通过两周的设计和制作,本系统成
27、功地实现了设计要求。为验证系统的功能和各项技术指标,下面通过实验对本系统进行功能验证。4.1 系统测试1.首先上电,液晶显示器不显示。2.S3按下后显示走时,定时、实际温度值等。3.按下S7按键,开启暖风模式,右上角显示1. 4. 按下S13按键,开启定时模式。5. 定时模式开启时,按下S14按键,可调节定时时间。此时光标闪烁。按下S2或S9可调节时间。6. 按下S6按键,光标在时间处闪烁,此时按下S2或S9可调节时间。4.2 系统测试结果及分析通过以上的测试数据分析,可以得出以下结论:1、本系统的走时功能,定时功能得以实现。2、本装置使用了矩阵键盘。按键简洁方便,满足人们的习惯。可实现各个功
28、能的调节与运行。3、走时精确度较高,与现实的时间相差甚小,可以完全作为一个电子钟使用。走时精确,而就会减小定时长短的失误,更加精确化。利用单片机的自身资源,节省了成本,减少了外围电路的设计。4、温度传感器检测的实时温度准确度较高,可以使室内温度始终保持在一个比较理想的状态中,使人们的生活更加舒适。5、在本设计中,为了防止在温控点上压缩机频繁的启动/关闭,影响其寿命,温控的精度误差控制在1摄氏度。实践证明,这对室内的温度并没有明显的影响。结 论本论文分析了智能空调控制系统结构和特点,总结全文,主要的研究工作有以下几个方面: 1、对智能空调控制系统的原理和组成进行了详细的介绍,确定了系统的总体设计
29、方案。2、对智能空调控制系统的控制过程做了准确的算法分析,包括检测过程中的实时温度、按键复用、驱动等,通过上述分析最终通过程序算法实现温度的自动控制控制。3、对键盘详细的分析,采用内部定时器产生实时时钟供显示屏显示,使其可作为一台精度较高的电子时钟使用。这样节省了成本。4、以AT89c52最小系统板为控制系统,进行并完成了系统要求所需的各硬件模块的原理图,并做了相应的硬件制作调试。采用了DS18B20温度传感器检测实时温度状态,使数据更准确,并对DS18B20温度传感器进行了精确的控制,提高了检测系统的可靠性。5、完成了相关的分析算法程序和各功能模块的应用程序的设计,实现了温度控制。整个软件的
30、设计采用模块化、结构化设计思想,使程序便于移植。6、分析了控制系统中可能存在的各种干扰源,在设计控制系统时,采用硬件和软件抗干扰技术相结合的方法进行了抗干扰设计,保证了控制系统的可靠性。 1 谭浩强,C程序设计.北京:清华大学出版社,2005.07。2 7805电压转换模块使用说明书。3 DS18B20温度传感器使用手册。4 LCD1602液晶显示模块使用说明书。5 数字电子技术基础。常丹华 主编6 单片机原理及应用技术。张淑清等编著7 百度文库以及网上的各种资料。 附 录附录1 系统主程序/包含所需头文件#include#includeLCD1602.h#includeds18b20.h#d
31、efine uint unsigned int#define uchar unsigned char/uchar key_value;sbit led=P22; /电源指示灯uchar p; /定时中断参数uchar key_scan(); /矩阵键盘扫描/*定时中断初始化*/void dszd_init()TMOD=0x01;TR0=1;TH0=(65535-10000)/256;TL0=(65535-10000)%256;ET0=1;EA=1;/*空调启动停止*/uchar start()if(key_value=2) /按键s3按下 打开/关闭空调delay(500); /延时500ms
32、key_value=0;s3num+;s3num=s3num%2;if(s3num=1)begin=1;if(s3num=0)begin=0;if(s3num=1&r=1&s1num=0&s2num=0) /开关打开/并且开启定时并且没有进行调试if(hour=hour_1&min=min_1)begin=0;s3num=0;return begin;/*室温与设定温度比较*/void compare()if(cold=0)/制冷模式下if(temper-temp1)|(temp-temper1)jidianqi_1=1;/温差大于一度 启动电动机if(temper=temp)/室内温度等于设
33、定温度 关闭/电动机jidianqi_1=0;if(hot=0)/暖风模式下if(temper-temp1)|(temp-temper1)jidianqi_2=1;/温差大于一度 启动电动机if(temper=temp)/室内温度等于设定温度 关闭电动机jidianqi_2=0;/*主程序*/void main()dszd_init(); /开定时中断 while(1)key_scan();/开矩阵键盘扫描start();write_com(0x08);/关闭显示jidianqi_1=0;jidianqi_2=0;/启动前电机关闭cold=0;hot=0; / 制冷/暖风指示灯关闭while(
34、begin)init(); /初始化液晶显示cold=0; /默认为制冷模式hot=1;while(begin)led=1; /电源指示灯一直亮write_hms(0,hour);write_hms(3,min);write_hms(6,sec);/显示时间key_scan(); /矩阵键盘扫描start(); /扫描空调开启/关闭lcd_mode(); /工作模式LCD_scan();/更新液晶时间显示lcd_temp();/更新液晶温度显示dingshi();/定时时间显示和调节LcdDisplay(Ds18b20ReadTemp();/温度检测compare();/温度比较,控制电动机起
35、动/关闭/*定时中断*/void Timer0() interrupt 1TH0=(65536-10000)/256; TL0=(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; 子程序LCD1602.h#ifndef _LCD1602_H_#define _LCD1602_H_#define uint unsigned int#define uchar unsigned charuchar key_value;sbit cold=P20;/绿灯
36、时制冷指示灯sbit hot=P21;/红灯为暖风指示灯sbit jidianqi_1=P11;sbit jidianqi_2=P12;/*定义液晶显示器*/sbit LCDE=P27;sbit LCDRS=P26;sbit LCDRW=P25;uchar num,s1num,s2num,s3num,r;uchar hour,min,sec,hour_1=1,min_1;uchar temper=26;uchar shi,ge;uchar begin;uchar code table_1=27 / /26 OFF 0; /液晶显示器第一行显示结果uchar code table_2=00:00
37、:00 00:00; /液晶显示器第二行显示结果void delay(uint z) /1ms延时函数uint i,j;for(i=0;iz;i+)for(j=0;j110;j+);/*矩阵键盘扫描程序*/uchar key_scan()uchar table=0,i;for(i=0;i4;i+)P3=(0x10i);table=P3;table=table&0x0f;if(table!=0x0f)delay(5); /去抖table=P3; /区分独立键盘table=table&0x0f;if(table!=0x0f)switch(table)case 0x0e:key_value=0+i;
38、break;case 0x0d:key_value=4+i;break;case 0x0b:key_value=8+i;break;case 0x07:key_value=12+i;break;while(table!=0x0f) /松手检测 table=P3;table=table&0x0f;return key_value;/*液晶显示器写命令*/void write_com(uchar com) LCDRS=0;LCDRW=0;P0=com;delay(5);LCDE=1;delay(5);LCDE=0;/*液晶显示器写数据*/void write_data(uchar date) LC
39、DRS=1;LCDRW=0;P0=date;delay(5); /延时5msLCDE=1;delay(5);LCDE=0;/*液晶显示器初始化*/void init() LCDE=0;write_com(0x38); /显示模式设制write_com(0x0c); /开显示 不显示光标 光标不闪烁write_com(0x06); /当读或写一个字符后地址指针加一,且光标加一 整屏不移动write_com(0x01); /显示清屏write_com(0x80); /设计数据指针地址for(num=0;num16;num+)write_data(table_1num);delay(20); /延时20 mswrite_com(0x80+0x40); /重新设置数据指针 换行for(num=0;num16;num+)write_data(table_2num);delay(20);/*/void write_hms(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x
限制150内