智能遥控温控风扇设计_第1页
智能遥控温控风扇设计_第2页
智能遥控温控风扇设计_第3页
智能遥控温控风扇设计_第4页
智能遥控温控风扇设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

引言生活中,我们经常会使用一些与温度有关的设备。比方,现在虽然不少城市家庭用上了空调,但在占中国大局部人口的农村地区依旧使用电风扇作为降温防暑设备,春夏〔夏秋〕交替时节,白天温度依旧很高,电风扇应高转速、大风量,使人感到清凉;到了晚上,气温降低,当人入睡后,应该逐步减小转速,以免使人感冒。虽然电风扇都有调节不同档位的功能,但必须要人手动换档,睡着了就无能为力了,而普遍采用的定时器关闭的做法,一方面是定时时间长短有限制,一般是一两个小时;另一方面可能在一两个小时后气温依旧没有降低很多,而风扇就关闭了,使人在睡梦中热醒而不得不起床重新翻开风扇,增加定时器时间,非常麻烦,而且可能屡次定时后最后一次定时时间太长,在温度降低以后风扇依旧继续吹风,使人感冒;第三方面是只有简单的到了定时时间就关闭风扇电源的单一功能,不能满足气温变化对风扇风速大小的不同要求。又比方在较大功率的电子产品散热方面,现在绝大多数都采用了风冷系统,利用风扇引起空气流动,带走热量,使电子产品不至于发热烧坏。要使电子产品保持较低的温度,必须用大功率、高转速、大风量的风扇,而风扇的噪音与其功率成正比。如果要低噪音,那么要减小风扇转速,又会引起电子设备温度上升,不能两全其美。为解决上述问题,我们设计了这套智能遥控温控自动风扇系统。本系统采用高精度集成温度传感器,用单片机控制,能显示实时温度,根据温度用遥控器调节风速的大小,晚上睡觉时可以设置风扇的速度和定时时间、并且可以设置最小温度关闭风扇。智能遥控温控风扇设计摘要本设计主要介绍了一种智能遥控温控电风扇的设计方案。该系统以单片机为核心,为用户提供了更智能化的管理。本设计采用的温度智能控制,使风扇可以感知环境的温度,以调节风扇的转速,到达更好的工作效果。用户可以选择这种智能调速的方式。中选择遥控方式时,用户可以根据环境温度或自己感受用遥控器调适风速。而定时工作功能可以让用户自己定制风扇工作时间的长短,以提供更人性化的效劳。数码管显示功能使用数码管显示当前室温度,风扇工作时间等参数,美观大方。关键词:智能控制、风扇、温控ABSTRACT:Thisdesignintroducesanintelligentremotecontroltemperaturecontrolfandesign.Microcontrollerasthecoreofthesystemtoprovideuserswithmoreintelligentmanagement.Thedesignofintelligentcontrolwithtemperature,sothatfanscansensethetemperatureoftheenvironment,toadjustthefanspeedtoachievebetterworkresults.Userscanchoosethiswayofintelligentspeedcontrol,youcanalsochoosetomanuallysettocontrolspeed.Whenyouselectremotecontrolmode,theusercanfeelthetemperaturewitharemotecontroloradjusttheirspeed.Whenyouselectmanualsettingmode,theremotecontroldoesnotwork.Theregularworkfunctionallowsuserstocustomizetheirownfansthelengthofworkinghourstoprovideamorepersonalizedservice.Digitaldisplayfeaturesadigitalcontroldisplaysthecurrentroomtemperature,currenttime,thefanworkingtimeandotherparameters,elegantappearance.Keyword:Intelligentcontrol,fan,temperaturecontrol目录TOC\o"1-6"\u引言1摘要2第一章、遥控器电路41.工作原理及组成局部42.红外发射53.红外发射的编码方式54.硬件设计65.软件设计7第二章、红外接收电路7第三章、单片机最小系统和电源电路81、单片机最小系统82、电源电路9第四章、数码管显示电路和声响电路101、数码管显示电路102、声响电路11第五章、温度采集电路12第六章、电机控制电路171、控制局部172、风类173、工作方式:自动控制和遥控两种方式184、硬件设计:195、软件设计19附录1:智能遥控电风扇控制器源程序22附录2:总原理图36总结与展望37致谢37参考文献38第一章、遥控器电路为了能远离距的控制电风扇,采用了红外遥控器。通常红外遥控器由发射和接收两局部组成,发射局部由单片机89C2051等构成。接收局部装在电风扇的控制器内,由89C51等构成,如图1.1所示。图1.1红外线系统遥控框图1.工作原理及组成局部(1)CPU采用AT89C2051单片机,AT89C2051的功能:和MCS-8051产品兼容、2KB可重编程闪速存储器、耐久性:1000写/擦除周期、2.7V~6V的操作范围、全静态操作:0Hz~24MHz、两级加密程序存储器、128×8位内部RAM、15根可编程I/O引线、6个中断源、可编程串行UART通道、直接LED驱动输出、片内模拟比拟器、低耗空载和掉电方式。〔2〕电源采用4节7号电池来提供电源,并用一个二极管〔IN4148〕进行降压。〔3〕调制局部:采用CD40106进行缓冲放大并整形.发送的数字信号与38K的载波进行相与,将其调制在一起,整形并缓冲放大,经8050进行放大驱动红外发射管,使其发射红外光。(4)红外发射方原理见图如图1.2所示。键盘键盘38KHz载波发生器编码调制红外发射图1.2遥控器原理框图2.红外发射〔1〕发射局部包括键盘矩阵、编码调制、红外发送器。使用89C2051芯片将按键信号调制在38KHz的载波信号上通过三极管放大后发射出去。红外编码为:全码=引导码+系统码+系统反码+数据码+数据反码。89C2051的P2口构成矩阵式键盘,用T1产生定时中断,驱动P3.1产生一个38K的方波,作为红外线的调制基波。将发送的数据和P3.0进行逻辑与后,经过40106整形,用三极管驱动红外发射管发射。(2)按键功能K1:低档、中档、高档;键值为01HK2彩灯:键值为02HK3:自然风、睡眠风、正常风键;值为03HK4定时;键值为04HK5开/关机;键值为05H(3)当无键按下时,延时10秒后进入待机状态,系统处于低功耗模式。当有按键按下时,INT0中断产生中断,同时唤醒CPU进行工作状态。3.红外发射的编码方式遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比拟广泛,解码比拟容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:(1)采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,到达降低电源功耗的目的。然后再通过红外发射二极管发射。(2)遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制0FFH;后16位为8位操作码〔功能码〕及其反码。(3)遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1(4)其相关的波形图如图1.3所示:图1.3遥控编码4.硬件设计硬件设计见电路原理图如图1.4。图1.4遥控器电路原理图5.软件设计(1)采用中断的处理程序完成整个系统的操作,INT0中断处理完成键盘扫描以及发送。(2)程序流程图如图1.5:开始初始化开始初始化延时10秒主程序有键闭合时进入中断系统进入待机模式键盘中断处理程序读列线有键闭合读行数有键闭合延时消抖动发送RETI存键值取按键编码yesYESYESNONO图1.5遥控器软件流程图第二章、红外接收电路红外接收电路采用红外HS0038接收头,HS0038黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏度高。在用小功率发射管发射信号情况下,其接收距离可达35m。它能与TTL、COMS电路兼容。HS0038为直立侧面收光型。它接收红外信号频率为38kHz,周期约26μs,三个管脚分别是地、+5V电源、解调信号输出端。红外接收电路一体化的红外接收装置将遥控信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的TTL信号,这样大大简化了接收电路的复杂程度和电路的设计工作,如图2所示。图2红外接收电路第三章、单片机最小系统和电源电路1、单片机最小系统AT89C52是一种带4K字节闪存可编程可擦除只读存储器〔FPEROM〕256B片内RAM的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案电路图如图3.1所示。管脚功能:RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,那么在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。图3.1单片机最小系统图2、电源电路电源电路采用LM7805集成稳压器作为稳压器件,LM7805是三端正电源稳压电路,它的封装形式是T0-220。由于内部电流的限制,以及过热保护和平安工作区的保护,使他根本上不会损坏。如果能够提过足够的散热片,它就能够提供大于1.5A以上的电流。采用用典型接法,220V电源整流滤波后送入LM7805稳压,在输出端接一个470U和0.1U电容进一步滤除纹波,得到5V稳压电源如图3.2所示。图3.2电源电路第四章、数码管显示电路和声响电路1、数码管显示电路显示局部包括如下列图5:5个八段〔共阳〕数码管、PNP型三极管、电阻等。其连接方式如下:应用单片机P0口连接八段数码管,用P1口的P1.0—P1.4五个端口作为数码管的片选信号输出端口,其中要用8550〔PNP型〕三极管做驱动。又因为P0口做I/O口时要加上拉电阻,所以我们给P0各位各加一个10K的电阻到电源。为了防止烧坏数码管,所以给数码管各段各加一个2.2K欧姆的限流电阻。要显示的数据通过P0口送给数码管显示,通过P1口的P1.0—P1.4五个端口分别对数码管进行位选,事实上数码管是间断被点亮的,只是其间断时间十分短,扫描周期在20ms以下,利用人眼视觉暂留,我们根本看不出它们的闪烁电路图如图4.1所示流程图如图4.2所示。图4.1显示电路取扫描字入口取扫描字入口取显示数据查段码表从P0口输出小数点处理延时指向下一位?P0,P1复位返回NY2、声响电路声响电路在每按下按键时会响一声,当没有把DS18B20接入到电路中时,单片机就会通过蜂鸣器发出报警声音电路图如图4.3所示。图4.3声响电路第五章、温度采集电路温度采集电路主要是由DS18B20构成,它可以把采集的温度数据转化成二进制数,经过单片机处理后输出送数码管显示。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改良型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:●独特的单线接口仅需要一个端口引脚进行通信;●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;●无须外部器件;●可通过数据线供电,电压范围为3.0~5.5V;●零待机功耗;●温度以9或12位数字;●用户可定义报警设置;●报警搜索命令识别并标志超过程序限定温度〔温度报警条件〕的器件;●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR-35封装或8脚SOIC封装电路图如图5.1所示。图5.1DS18B20封装图6464位ROM和一线端口存储和控制逻辑高速暂存器8位CRC生成器供电方式选择配置存放器低温触发器TL高温触发器TH温度传感器INTERNALVDDVDD图5.2DS18B20的内部结构DS18B20的内部结构图如图5.2所示。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置存放器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时存放器中的分辨率转换为相应精度的温度数值。该字节各位的定义低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。DS18B20温度转换的时间比拟长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保存未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750表1DS18B20温度转换时间表DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比拟。假设T>TH或T<TL,那么将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码〔CRC〕。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比拟,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门翻开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度存放器中,计数器1和温度存放器被预置在-55电路图如图5.3所示,复位图如图5.4所示。图5.3温度采集电路入口总线=0?60us到?总线=0?总线拉高返回NYNYYN图5.4DS18B20复位与检测子程序第六章、电机控制电路1、控制局部如图6.1所示。图6.1电机引线图1小时1小时2小时4小时30分钟图6.2定时时循环图2、风类自然风的处理流程:弱风6秒弱风6秒中风6秒强风6秒停6秒图6.3自然风的循环图睡眠风的处理流程:弱风6秒弱风6秒中风6秒强风6秒停6秒高风6秒停6秒图6.4自然风的循环图正常风的处理流程:弱风弱风10秒中风10秒强风10秒图6.5正常风循环3、工作方式:自动控制和遥控两种方式该电路为控制风速的自动控制与遥控两种方式之温控模式时的控制电路,中选择为自动控制时,单片机默认为弱风,当当前温度低于所设的温度下限TL时继电器1吸合,关闭风扇,当当前温度高于所设的温度上限时继电器2吸合,切换到强风档,主要方便与晚上睡觉时使用。当采用遥控方式时,人们可以根据自身感受采用遥控器调节风速和风类。4、硬件设计电路图如图6.6所示:图6.6电风扇控制板电路原理图5、软件设计(1)红外遥控输入在P3.0。单片机收到一个中断后,开始计数,然后在主程序有一个判断子程序,首先判断是否>8MS,是否有高电平,再判断是否>4MS的低电平,然后再判断是否是0或1,循环32次完成,32个码的接收和存储。(2)程序流程图如图6.7所示。主程序主程序检测中断标志位1标志位处理程序开始初始化检测中断标志位2NOYESYES图6.7控制板主程序流程图标志位处理程序标志位处理程序键值与〔04H〕比拟键值与〔05H〕比拟去除标志位键值与〔01H〕比拟键值与〔02H〕比拟键值与〔03H〕比拟返回主程序处理K5子程序键值与〔05H〕比拟处理K1子程序处理K2子程序处理K3子程序处理K4子程序不等不等不等相等相等相等相等相等图6.8键值处理流程入口入口C1=0,C2=0C1=0,C2=0C1=1,C2=1返回YYYYNNN图6.9实时温度值与设定TH,TL值比拟及超、欠温处理子程序流程图附录1:智能遥控电风扇控制器源程序#include"AT89x051.H"#defineucharunsignedchar#defineuintunsignedint#defineb10xe200#defineb20xe210#defineb30xe208#defineb40xe218#defineb50xe204#defineb60xe214#defineb70xe20c #defineb80xe21c #defineb90xe280 #defineon_off0xe240 #definech_a0xe250 #definech_soxe248 #definetime0xe2e8 #definelouver0xe24c #definecount_num500 #definetime1_num18000#definetime2_num100#definebellP3_4#definec_f0xd4 #definec_h0xce #definec_g0x81uinttime1=time1_num; uchartime2=time2_num;uintcount=count_num; ucharsort=3; uchardis_bit=0; ucharcode_length=16;uchardatadis[4]={0x02,0x02,0x00,0xff}; uchartemperature;uintcode_t=0;ucharcode1=0;ucharcode2=0;bitbdatacode_start=0; bitbdatabutton=0; bitbdatai_flag=0; bitbdatat_flag=0;bitbdatabt=0; bitbdataoff=0; ucharcodeTAB[11]={0x5f,0x0a,0x9d,0x9b,0xca,0xd3,0xd7,0x5a,0xdf,0xdb,0x75};voidtimer_0(void);voiddis_t(void); voiddis_s(void); voiddis_h(void); voiddis_off(void); voiddelay(uintt); uchard_code(uintt); ucharbegin=0; voidc_code(void); voidoff_time(void); voidmeasure_temperature(void);voidkey_time(void); voidsort_key(void);voidmov_p1(uchart0,t1,t2);voidbutton_process(void); //********定时关机*********voidoff_time(void) { if(off==1) { if(time1--==0) { time2--; time1=time1_num; } if(time2==0) { dis[3]=dis[3]-1; time2=time2_num; } if(dis[3]==0) { code_t=on_off; //关机 c_code(); } } }//********定时器0中断*********voidtimer0()interrupt1using2 { off_time(); if(dis_bit==0&&t_flag==0) { key_time(); sort_key(); } switch(sort) { case0: if(count!=0) { mov_p1(dis[0],dis[1],TAB[10]); count--; } break; case1: if(count!=0) { mov_p1(c_f,c_g,TAB[dis[2]]); count--; } break; case2: if(count!=0) { dis_h(); count--; } break; case3: mov_p1(0x5f,c_f,c_f); default: break; } timer_0(); if(count==0) { P3_0=P3_1=P3_5=1; if(i_flag==0&&t_flag==0) measure_temperature(); count=count_num; sort=(sort&0x03)+1; if(sort>=3) sort=0; } }//***********定时按钮************voidkey_time(void) { biti=P1_2; P1_2=1; if(P1_2==0) { delay(50); if(P1_2==0) { bell=0; delay(100); bell=1; while(P1_2==0) {;} if(dis[3]==0xff) { dis[3]=1; off=0; } else { if(dis[3]<9) { dis[3]=dis[3]+1; off=0; } else off=1; } sort=2; code_t=time; c_code(); } } P1_2=i; i_flag=0; }//***********换档按钮************voidsort_key(void) { biti=P1_1; P1_1=1; if(P1_1==0) { delay(50); if(P1_1==0) { button=1; bell=0; delay(200); bell=1; while(P1_1==0) {;} if(dis[2]<9) { dis[2]=dis[2]+1; code2=dis[2]; } else { dis[2]=0; code2=10; } delay(100); sort=1; count=5000; } } P1_1=i; i_flag=0; }//********定时器1中断测温************voidtimer1()interrupt3using3 { uinttemp; TR0=0; //计数停 TR1=0; //定时停 temp=TH0*256+TL0; //取温度值 temperature=(7000-temp)/11; //计算温度 dis[0]=TAB[temperature/10]; dis[1]=TAB[temperature%10]; IE0=0; t_flag=0; timer_0(); EX0=1; }//***********键号转换************voidc_code(void) { bitbdatai=0; switch(code_t) { caseb1: code1=1; break; caseb2: code1=2; break; caseb3: code1=3; break; caseb4: code1=4; break; caseon_off: code1=5; dis[3]=0xff; button=0; i_flag=0; bt=0; off=0; time1=time1_num; time2=time2_num; count=count_num; break; casetime: off=~off; if(off==0) dis[3]=0xff; i=1; bt=1; count=5000; sort=2; TF0=1; break; caselouver: P3_3=~P3_3; code1=code2; break; default: code1=0; break; } if(bt==1&&i==0) { if(code1<9) { dis[3]=code1; bt=0; } } else if(i==0) { code2=code1; count=5000; if(code1==10) { dis[2]=0; sort=3; } else { dis[2]=code1; sort=1; } TF0=1; } }//**********判断代码************uchard_code(uintt) { if(t<=0x220&&t>=0x190) return0; else { if(t<=0x430&&t>=0x390) return1; else return0xff; } }//***********接收代码中断************voidreceive_code()interrupt0using1 { uinttemp,i; ET0=0; i_flag=1; if(TR1==0) { TR1=0; TMOD=0x11; TH1=TL1=0; TR1=code_start=1; } else { TR1=code_start=0; temp=TH1*256+TL1; if((d_code(temp)==0||d_code(temp)==1)&&code_length!=0) { TH1=TL1=0; TR1=code_start=1; code_t=(code_t<<1)+d_code(temp); code_length--; } else { if(code_length==0&&((code_t&0xff00)==0xe200)) { code_length=16; bell=0; c_code(); for(i=0;i<6000;i++) { EX0=0; P3_0=P3_1=P3_5=1; if(i>800) bell=1; IE0=0; if(P3_2==0) i--; button=1; } i_flag=0; } else { code_length=16; for(i=0;i<6000;i++) { EX0=0; IE0=0; if(P3_2==0) i--; i_flag=0; //恢复执行其它任务 } } timer_0(); EX0=1; } } }//***********显示代码送P1口************voidmov_p1(uchart0,t1,t2) { switch(dis_bit) { case0: P1=t0; P3_1=P3_5=1; P3_0=0; dis_bit=1; break; case1: P1=t1; P3_0=P3_5=1; P3_1=0; dis_bit=2; break; case2: P1=t2; P3_1=P3_0=1; P3_5=0; dis_bit=0; break; } }//***********显示定时时间************voiddis_h(void) { switch(dis_bit) { case0: P1=c_h; //"H" P3_1=P3_5=1; P3_0=0; dis_bit=1; break; case1: P1=c_g; //"=" P3_0=P3_5=1; P3_1=0; dis_bit=2; break; case2: if(dis[3]>10) P1=TAB[0]; else P1=TAB[dis[3]]; P3_1=P3_0=1; P3_5=0; dis_bit=0; break; } }//********定时器0************voidtimer_0(void) { TMOD=0x01; TR0=0; TH0=0xfc;TL0=0x55; ET0=1; TR0=1; }//***********延时************voiddelay(uintt){ uinti,j; for(i=0;i<t;i++) if(button==0) for(j=0;j<10;j++);}//***********测温度************voidmeasure_temperature(void) { t_flag=1; ET1=1; EX0=0; ET0=0; TMOD=0x15; //T0计数方式1,T1定时方式1 TH1=0x3c;TL1=0xb0; //置初值100ms TH0=0x00;TL0=0x00; //清零 TR0=1; //计数开始 TR1=1; }//***********风速************voids1(void) { P3_7=0; }voids2(void) { P3_7=0; delay(230); P3_7=1; delay(25); }voids3(void) { P3_7=0; delay(180); P3_7=1; delay(40); }voids4(void) { P3_7=0; delay(130); P3_7=1; delay(40); }voids5(void) { P3_7=0; delay(90); P3_7=1; delay(40); }voidgust(void) { uchari,j; if(button==1) j=255; else j=0; for(i=j;i<50;i++) s6(); P3_7=0; delay(5000); for(i=j;i<25;i++) s2(); for(i=j;i<35;i++) s3(); for(i=j;i<25;i++) s5(); delay(6000); }voidnatural(void) { uchari; ucharcode*p; for(i=0;i<100;i++) { if(button==0) { P3_7=0; delay((*p++)*8); P3_7=1; if(*p<10) delay(7000); else delay(300); } } }voidautomation(void) { if(temperature<=29) s6(); else if(temperature<=30) gust(); else if(temperature==31) s5(); else if(temperature==32) s4(); else if(temperature<=33) s3(); else if(temperature==34) s2(); else s1(); }//***********按键处理************voidbutton_process(void) { button=0; switch(code2) { case1: s1(); break; case2: s2(); break; case3: s3(); break; cas

温馨提示

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

评论

0/150

提交评论