【《单片机智能家居系统的硬件和软件设计案例》3900字】_第1页
【《单片机智能家居系统的硬件和软件设计案例》3900字】_第2页
【《单片机智能家居系统的硬件和软件设计案例》3900字】_第3页
【《单片机智能家居系统的硬件和软件设计案例》3900字】_第4页
【《单片机智能家居系统的硬件和软件设计案例》3900字】_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

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

文档简介

单片机智能家居系统的硬件和软件设计案例目录TOC\o"1-3"\h\u9060第1章智能家居安防系统硬件接口电路设计 2321091.1数据采集模块接口电路设计 2150331.1.1DHT11温湿度传感器接口电路设计 2245301.1.2MQ-2烟雾传感器接口电路设计 2235481.1.3MQ-5可燃气体传感器接口电路设计 3240121.2A/D转换模块接口电路设计 429161.2.1ADC0832接口电路设计 4265441.3显示及报警模块接口电路设计 5268841.3.1LCD1602接口电路设计 546231.3.2蜂鸣器接口电路设计 6271.4按键设置模块接口电路设计 6224001.5系统整体硬件电路设计 75314第2章智能家居安防系统软件设计 8118022.1数据采集模块 8236512.1.2温度采集模块 8229182.1.1湿度采集模块 995592.1.3烟雾浓度采集模块 1098962.1.4可燃气体浓度采集模块 11105192.2A/D转换模块 12124422.3显示与报警模块 13183812.1.1液晶显示模块 13108612.4按键设置模块 16137192.5主程序模块 17第1章智能家居安防系统硬件接口电路设计1.1数据采集模块接口电路设计1.1.1DHT11温湿度传感器接口电路设计硬件结构DHT11一共有四个引脚:GND为电源地;Dout为数字信号输入/输出端;VCC为电源输入端;NC引脚悬空。由于DHT11本身就自带A/D转换电路,因此Dout端可直接与单片机相连接,本次设计中将该元件的数字信号输出端与单片机的P3^3口相连接。接口电路如图所示:图4-1DHT11与单片机接口电路DHT11工作时一般在两端施加3-2.5V的电压,在传感器接通电源后,不能直接开始工作,需要等待约1s左右,在这段时间内无需做任何动作,等传感器的状态稳定后,测得的结果才准确。DHT11与单片机通讯时有固定的数据格式,一般是单总线数据格式,与单片机完成一次通讯的时间约是4ms左右,每次发送的数据长度均为40位,依次湿度的8位整数和8位小数部分,温度的8位整数和8位小数部分,再加上8位校验和,高位先出。DHT11未工作时默认为低功耗模式,在进行数据采集时,DHT11先等待单片机发送开始信号,此时立刻转换为高速模式,在单片机发送的开始信号结束后,DHT11随即发送一个响应信号回送单片机,而后送出40位的数据,并触发一次信号采集,可根据需要读取部分数据或者是全部数据REF_Ref17111\r\h[9]。1.1.2MQ-2烟雾传感器接口电路设计MQ-2模块具有四个引脚:VCC接5V电源;DOUT为TTL高低电平(即开关量)输出端;AOUT为模拟电压输出端;GND接地。本次设计采用模拟量输出接法,由于MQ-2不像DHT11,它本身并没有模数转换功能,而此次选用的单片机也不带A/D转换模块,因此需在传感器与单片机之间连接一个单独的A/D转换模块,接收MQ-2输出的电压信号,待将其转换为单片机可识别的数字量之后,再由A/D转换芯片将数据传输给单片机,单片机就可以直接处理了。在此选择采用ADC0832,将MQ-2的AOUT端与ADC0832的CH0引脚相连。接口电路如图所示:图4-2MQ-2与ADC0832接口电路图MQ-2模块输出的结果可以是0V—5V的模拟电压,也可以是TTL开关电平。但由于此次设计需要显示出具体的数据,因此用模拟电压输出。1.1.3MQ-5可燃气体传感器接口电路设计硬件结构:MQ-5也属于半导体传感器的一种,与MQ-2传感器类似,同样具有四个引脚,第一个引脚和第四个引脚分别是电源和地,第三个引脚是模拟量输出,第二个引脚是高低电平(即开关量)输出。同样的,MQ-5输出的为电压信号,且自身不带模数转换功能,因此也需要先与A/D转换模块相连,将MQ-5的AOUT口与ADC0832的CH1引脚相连,接口电路如图所示:图4-3MQ-5与ADC0832接口电路图1.2A/D转换模块接口电路设计1.2.1ADC0832接口电路设计正常情况下ADC0832一共有CS、CLK、DO、DI这4条数据线,在使用时将其与单片机对应的接口分别相连。DO端与DI端跟单片机通过接口连接时,是双向通讯的,而且在与单片机通信的时候,这两个端口一般不会同时使用,所以在单片机连接的元器件较多,I/O口使用较为紧张的时候,可以将DO和DI并联起来,这样就只使用一根数据线与单片机相连,只会占用一个端口。本次设计即将DO和DI并联使用,ADC0832与STC89C52RC直接连接,CS引脚接单片机的P3^4,CLK接P3^5,DO和DI并联接P3^6。接口电路如图所示:图4-4ADC0832与单片机接口电路图CS为片选端,当CS=1时ADC0832不能工作,这时候可以随意设置另外三个端口的电平;当CS=0时,芯片进入工作状态,到A/D转换完全结束这个时间段内CS都必须保持低电平。当CS端处于低电平时,ADC0832开始转换数据,CLK端输入周期性的脉冲信号,DI端具有选择输入通道的功能,在第1个下降沿到来前必须使DI=1,表示启始信号;在第2、3个下降沿到来前DI端应输入两位数据用于选择通道功能REF_Ref17480\r\h[10]。具体如下表所示:表4-1ADC0832通道功能通道地址通道工作方式说明SGL/DIFODD/SIGN0100+-差分方式01-+10+单端输入方式11+第3个下降沿到来后就开始用DO输出转换数据;从第4个下降沿开始,从DO端由高到低输出8位转换数据,到第11个脉冲时可完成一个字节数据的输出;然后又从这个脉冲开始从低到高输出8位数据,到第19个脉冲时即可完成数据输出,到此一次A/D转换就结束了;转换完成后再将CS电平拉高,将数据发送给单片机处理。1.3显示及报警模块接口电路设计1.3.1LCD1602接口电路设计LCD1602是16×2点阵字符型液晶显示模块,它内部包含着一个存储器,即字符发生存储器(CGROM),其中存储有160个不同的点阵字符图形,在使用时可以显示简单的字母、数字、符号等REF_Ref17712\r\h[11]。LCD1602共有16个引脚,其中第4、5、6引脚是三个控制位分别为RS,R/W和EN,D0-D7是8位数据线。其中,RS=0/1表示选择指令/数据寄存器;R/W=0/1表示进行写/读操作,EN是使能端。在此次设计中将LCD的D0-D7引脚与单片机的P0^0-P0^7相连接,该元件与单片机的具体接口电路如图所示:图4-5LCD1602与单片机接口电路图1.3.2蜂鸣器接口电路设计在本设计中,利用程序控制蜂鸣器发出报警声音来表示有检测数值超过阈值。蜂鸣器可直接连接到单片机,其接口电路图如下:图4-6蜂鸣器与单片机接口电路图其中输出端口与单片机的P2^7管脚相连,当单片机输出低电平时,与蜂鸣器相连接的三极管导通,蜂鸣器开始报警,故三极管在报警电路中相当于一个开关REF_Ref17941\r\h[12]。1.4按键设置模块接口电路设计本次设计用了四个功能按键,分别为“设置”、“加”、“减”、“确定”,由于采用的是单个按键,因此一个按键与单片机的一个引脚相连,将四个按键分别和单片机的P2^0,P2^1,P2^2,P2^3相连,其接口电路图如下:图4-7按键与单片机接口电路图1.5系统整体硬件电路设计将烟雾传感器和可燃气体传感器与ADC0832连接后,ADC0832连接到单片机,温湿度传感器、LCD、按键和蜂鸣器则直接与单片机连接,具体接口电路图如下:图4-8整体硬件接口电路图

第2章智能家居安防系统软件设计智能家居安防系统的程序模块主要包括:获取温度数值程序、获取湿度数值程序、获取烟雾浓度数值程序、获取可燃气体浓度数值的程序、LCD液晶显示程序、蜂鸣器报警程序、A/D转换程序以及按键读取程序,还有主程序模块等。通过编程使传感器采集相关的数据,输出是模拟信号的通过A/D转换程序依次转化为数字信号,通过串口传送到单片机,数据经过处理后显示到LCD上,并与阈值进行对比,在达到条件时控制蜂鸣器报警。另外,当读到有按键触发时,LCD上显示阈值调整的情况。2.1数据采集模块2.1.2温度采集模块上电后,整个系统初始化,在接收到单片机发出的开始信号后,传感器进行温度的采集,接收温度的整数部分和小数部分并进行数据校验,数据接收正确后,单片机控制LCD显示具体温度数值。其程序流程如图5-1所示:图5-1DHT11采集温度程序流程图具体程序如下:voidDHT11_receive(){ unsignedcharR_H,R_L,T_H,T_L,RH,RL,TH,TL,revise; DHT11_start(); if(Data==0) { while(Data==0); DHT11_delay_us(40); R_H=DHT11_rec_byte(); R_L=DHT11_rec_byte(); T_H=DHT11_rec_byte(); T_L=DHT11_rec_byte(); revise=DHT11_rec_byte(); DHT11_delay_us(25); if((R_H+R_L+T_H+T_L)==revise) { RH=R_H; RL=R_L; TH=T_H; TL=T_L;shidu=RH; wendu=TH; } }}2.1.1湿度采集模块检测湿度与温度采用的是同一传感器,在对湿度进行采集后,接收湿度数据的整数部分和小数部分并校验,经判断接收正确后再通过LCD1602显示具体的湿度数据。其程序流程如图5-2所示:图5-2DHT11采集湿度程序流程图由于与温度采集在同一个函数中完成,因此程序代码在此不再赘述。2.1.3烟雾浓度采集模块烟雾传感器模块由于输出的是电压,单片机不能直接处理,因此系统初始化后,随即进行烟雾浓度的采集,将输出的电压通过串口传输到ADC0832,随后ADC0832将模拟信号转化为数字信号后再传送给单片机,最后将数据显示到LCD上。图5-3MQ-2检测烟雾程序流程图相关代码如下:voidMQ_2data(void){ floatADC_1; ADC_1=ADC0832_ADC(0); ADC_1=(ADC_1/255)*100; MQ_2=(int)ADC_1;}2.1.4可燃气体浓度采集模块可燃气体传感器模块与烟雾浓度传感器模块类似,同样在感受到可燃气体浓度后要先通过A/D转换。其程序流程图如下:图5-4MQ-5检测可燃气体程序流程图相关代码如下:voidMQ_5data(void){floatADC_2;ADC_2=ADC0832_ADC(1);ADC_2=(ADC_2/255)*100;MQ_5=(int)ADC_2;}2.2A/D转换模块由于MQ-2与MQ-5传感器输出的是模拟电压信号,如果直接连接到单片机,单片机没有办法对他们的数据进行处理,因此必须先经过ADC0832的转换,将模拟信号转化为数字信号,再传输到单片机,单片机才能正常识别。其转换过程代码如下:ucharADC0832_ADC(charCH){ uchari,dat1=0,dat2=0; CS=0;CLK=0;DIO=1;_nop_();_nop_(); CLK=1;_nop_();_nop_(); CLK=0;DIO=1;_nop_();_nop_(); CLK=1;_nop_();_nop_(); if(CH==0) { CLK=0;DIO=0;_nop_();_nop_();CLK=1;DIO=1;_nop_();_nop_(); } if(CH==1) { CLK=0;DIO=1;_nop_();_nop_();CLK=1;DIO=0;_nop_();_nop_(); } CLK=0;DIO=1;_nop_();_nop_(); for(i=0;i<8;i++) { CLK=1;_nop_();_nop_(); CLK=0;_nop_();_nop_(); dat1=dat1<<1|DIO; } for(i=0;i<8;i++) { dat2=dat2|((uchar)(DIO)<<i); CLK=1;_nop_();_nop_(); CLK=0;_nop_();_nop_(); } CS=1; return(dat1==dat2)?dat1:0; }2.3显示与报警模块2.1.1液晶显示模块在采集到相关的数据之后,为了能让人们亲眼观察到数据的变化,处理完的最终结果要通过LCD1602进行显示,首先要对LCD进行初始化。初始化代码如下:voidLCD1602_Init(){ lcdrw=0; lcden=0; Write_Cmd(0x38); Write_Cmd(0x0e); Write_Cmd(0x06); Write_Cmd(0x01); Write_Cmd(0x80); Write_Cmd(0x0c);}LCD1602显示两行数据,上一行前面显示烟雾浓度,然后紧邻着显示温度,下一行前面显示可燃气体浓度,后面紧邻着显示湿度,在数值达到阈值时蜂鸣器发出报警声。代码如下:voidDisplay_00(void){ LCD1602_Show(0,0,"MQ-2:"); LCD1602_num(5,0,3,MQ_2); LCD1602_Show(8,0,"%"); LCD1602_Show(9,0,"WD:"); LCD1602_num(12,0,3,wendu); LCD1602_Show(15,0,"C"); LCD1602_Show(0,1,"MQ-5:"); LCD1602_num(5,1,3,MQ_5); LCD1602_Show(8,1,"%"); LCD1602_Show(9,1,"SD:"); LCD1602_num(12,1,3,shidu); LCD1602_Show(15,1,"%"); if(KEY1_num==1){KEY1_num=0;LCD1602_Rest();DisplayFlag=1;} if(KEY4_num==1){KEY4_num=0;LCD1602_Rest();DisplayFlag=4;} if((MQ_2>MQ_2Flag)||(MQ_5>MQ_5Flag)||(shidu>ShiduFlag)||(wendu>WenduFlag))FMQ=0; elseFMQ=1;}此外,对于阈值的调整也可以进行实时地显示,代码如下:对于烟雾浓度阈值的设置显示如下:voidDisplay_01(void){ LCD1602_Show(0,0,"ThresholdSetting"); LCD1602_Show(0,1,"MQ-2:"); LCD1602_num(5,1,3,MQ_2Flag); LCD1602_Show(8,1,"%"); if(KEY2_num==1){MQ_2Flag=MQ_2Flag+1;KEY2_num=0;} if(KEY3_num==1){MQ_2Flag=MQ_2Flag-1;KEY3_num=0;}if(KEY1_num==1){LCD1602_Rest();DisplayFlag=0;KEY1_num=0;} if(KEY4_num==1){LCD1602_Rest();DisplayFlag=2;KEY4_num=0;} if(MQ_2Flag>100)MQ_2Flag=0; if(MQ_2Flag<0)MQ_2Flag=100; }对于温度阈值的设置显示如下:voidDisplay_03(void){ LCD1602_Show(0,0,"ThresholdSetting"); LCD1602_Show(0,1,"WD:"); LCD1602_num(3,1,3,WenduFlag); LCD1602_Show(6,1,"C"); if(KEY2_num==1){WenduFlag=WenduFlag+1;KEY2_num=0;} if(KEY3_num==1){WenduFlag=WenduFlag-1;KEY3_num=0;}if(KEY1_num==1){LCD1602_Rest();DisplayFlag=2;KEY1_num=0;} if(KEY4_num==1){LCD1602_Rest();DisplayFlag=4;KEY4_num=0;} if(WenduFlag>100)WenduFlag=0; if(WenduFlag<0)WenduFlag=100; }对于可燃气体浓度阈值的设置显示如下:voidDisplay_02(void){ LCD1602_Show(0,0,"ThresholdSetting"); LCD1602_Show(0,1,"MQ-5:"); LCD1602_num(5,1,3,MQ_5Flag); LCD1602_Show(8,1,"%"); if(KEY2_num==1){MQ_5Flag=MQ_5Flag+1;KEY2_num=0;} if(KEY3_num==1){MQ_5Flag=MQ_5Flag-1;KEY3_num=0;}if(KEY1_num==1){LCD1602_Rest();DisplayFlag=1;KEY1_num=0;} if(KEY4_num==1){LCD1602_Rest();DisplayFlag=3;KEY4_num=0;} if(MQ_5Flag>100)MQ_5Flag=0; if(MQ_5Flag<0)MQ_5Flag=100; }对于湿度阈值的设置显示如下:voidDisplay_04(void){ LCD1602_Show(0,0,"ThresholdSetting"); LCD1602_Show(0,1,"SD:"); LCD1602_num(3,1,3,ShiduFlag); LCD1602_Show(6,1,"%"); if(KEY2_num==1){ShiduFlag=Shi

温馨提示

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

评论

0/150

提交评论