【《基于单片机环境监测系统的硬件和软件设计案例》8700字】_第1页
【《基于单片机环境监测系统的硬件和软件设计案例》8700字】_第2页
【《基于单片机环境监测系统的硬件和软件设计案例》8700字】_第3页
【《基于单片机环境监测系统的硬件和软件设计案例》8700字】_第4页
【《基于单片机环境监测系统的硬件和软件设计案例》8700字】_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

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

文档简介

第3章环境监测系统硬件设计基于单片机环境监测系统的硬件和软件设计案例目录TOC\o"1-3"\h\u8047基于单片机环境监测系统的硬件和软件设计案例 V第2章系统软件设计2.1环境监测系统软件设计思路环境监测系统软件有如下几个部分,其中主要是传DHT11温湿度传感器的程序、LCD1602液晶的显示程序、CO检测的程序、ESP8266WIFI模块的程序还有一些部分子程序。首要的是,我们还是需要联系实际,考虑适用性去确认程序的思路内容,紧接着我们开始编写传感器的程序,第二步是编写液晶显示的程序,最后来到编写部分子程序的环节。如此,就完成了完整的系统。主要设计思路的流程图如图2.1所示。图2.1主要设计思路流程图我们来根据预想好的流程从启动主程序开始,然后系统开始上电,初始化程序然后开始执行,要设置好我们所需要预设的数值,然后当DHT11传感器建立起和单片机的通信后,就会启动传送温湿度,以及单片机开始处理数据,液晶显示模块随之接收到数据紧接着并显示数据,最后去对比数值,从而就会判断是否开启蜂鸣报警器进行报警。2.2DHT11传感器程序设计在该系统中温湿度采集模块是非常重要的核心之一,DHT11要开始运行的话是得先需要单片机的I/O接口开始发出指令才可以,温湿度传感器会在期间控制整个单元,负责采集信号,还有进行模数的转换。工作流程图如图2.2所示。图2.2温湿度传感器的工作流程图传感器程序部分的子程序清单如下所示。//主机拉低18msP2_0=0;Delay1(180);P2_0=1;//总线由上拉电阻拉高主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();//主机设为输入判断从机响应信号P2_0=1;//判断是否有低电平响应信号,如不响应则跳出,响应则向下运行if(!P2_0)//T!{U8FLAG=2;//判断从机是否发出80us的低电平响应信号是否结束while((!P2_0)&&U8FLAG++);U8FLAG=2;//判断从机是否发出80us的高电平,如发出则进入数据接收状态while((P2_0)&&U8FLAG++);//数据接收状态COM();U8RHdata_Htemp=U8comdata;COM();U8RHdataLtemp=U8comdata:COM();U8TdataH_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdatatemp=U8comdataP2_0=1;//数据校验那么当系统程序启动之后,DHT11就会初始化程序,在接收到单片机给出的指令之后,建立起通信的联系,从而去完成单片机给出的指令。2.3CO检测程序设计单片机它会把所处的环境周围中的PM2.5以及CO都采集好,然后再传送给转换芯片,转换芯片就会紧随其后将模拟量转换成数字量。如果超出限制,蜂鸣报警器就会开始报警,反之低于限制,则报警器会爆出关闭状态。流程图如图2.3所示。图2.3蜂鸣报警器的工作流程图CO检测程序的部分子程序如下所示。Value1=adc0832(0x00);//PM2.5检测Value1=Value1*(float)(Value1/15);//浓度校准len=!ottoStringst_pm,Value1);//转换成字符串while(len<3){str_pm[len+t]='';}str_pm[len]='\0';//添加字符串结束符Lcdshowstr(8,o,str_pm);//烟雾浓度显示到液晶屏上Value2=adc0832(1);//CO检测Value2=(float)(Value2*1.5);//浓度校准len=IntToString(str_co,Value2);//转换成字符串{str_co[len++]='';}str_co[len]='\0';//添加字符串结束符Lcdshowstr(10,1,str_co);//烟雾浓度显示到液晶屏上elseif(moshi==3)//设置PM2.5浓度上限模式{P_buff[0]=P_baoiing/100+0x30;P_buff[1]=P_baojing%100/10+0x30;P_buff[2]=P_baojing%10+0x30;p_buff[4]='\0';Lcdshowstr(6,1,P_buff);}elseif(moshi==4)//设置CO浓度上限模式{C_buff[0]=C_baojing/100+0x30;C_buff[1]=C_baoing%100/10+0x30;C_buff[2]=C_baojing%10+0x30;C_buff[4]='\0';LcdshowStr(6,1,C_buff);}2.4按键及报警电路程序设计本系统主要是选择8个虚拟的按键,在我们设定预设值的时候,单片机就会自己自行比较起来数值是否符合所定规则,不符合的话报警器就会工作然后发出蜂鸣声,当然,反之报警器则保持关闭状态不会运行。具体的流程图如图2.4所示。图2.4按键及报警电路的流程图该程序的部分子程序如下所示。elseif(moshi==1)//设置温度上限模式{T_buffl0]=T_baoing/10+0x30;T_buff[1]=T_baojing%10+0x30;T_buff[2]='\0';LcdshowStr(6,1,T_buff);}elseif(moshi==2)//设置湿度上限模式{H_buff[0]=H_baojing/10+0x30;H_buff[1]=H_baojing%10+0x30;H_buff[2]='\0';Lcdshowstr(6,1,H_buff);}elseif(moshi==3)//设置PM2.5浓度上限模式{P_buff[0]=P_baojing/100+0x30;P_buff[1]=P_baoi0g%100/10+0x30;P_buffl2]=P_haoiing%10+0x30;P_buff[4]='\0';Lcdshowstr(6,1,P_buff);}elseif(moshi==4)//设置CO浓度上限模式*/unsignedcharlntToString(unsignedchar*str,intdat){signedchari=0;unsignedcharlen=0;unsignedcharbuf[6);if(dat<o)//如果为负数,首先{dat=-dat;*str++='-';len++;}do{//先转换为低位在前的十进制数组buf[i++]=dat%10;dat/=10;}while(dat>0);/*定时器中断子程序(定时1ms)*/该模块程序设计过程是这样的,当我们将系统启动之后,我们在程序中进行编写温湿度以及烟雾(PM2.5、CO)的希望的限制范围。在此之后,单片机自然会根据得到的数据去判段是否符合我们所设置的预设值,而后再进行下一步的操作。2.5无线传输电路程序设计如下为初始化程序,这其中包括WIFI的启动,还有通信方式的确定,以及如何建立和UDP协议的通信,使得局域网内的电脑端、智能手机端都可以与它进行通信的功能,并且向其发送指令。uart_init(115200);//串口初始化为9600delay_ms(1000);//设置WIFI名称工作方式printf("AT+CWSAP=\"LiMing\",\"0123456789\",11,0\r\n");delay_ms(50);//设置通信方式:采用UDP网络通信协议printf("AT+CIPSTART=\"UDP\",\"\",5000,5000\r\n");delay_ms(50);数据发送代码参考下方历程,发送字符串数据,首先要发送字符串位数,然后延时,再发送字符串,再延时。printf("AT+CIPSEND=1\r\n");//发送字符串位数delay_ms(1);printf("D\r\n");//发送字符串delay_ms(1);printf("AT+CIPSEND=4\r\n");//发送字符串位数4位delay_ms(1);printf("%f\r\n",Battery_All);//发送变量%f浮点型delay_ms(1);change=5;if(USART_RX_STA==12)//(USART_RX_STA&0x8000)if(USART_RX_BUF[0]=='M')if(USART_RX_BUF[1]=='5')Mode_System=2;OUT_B=0;Flag_Mode=5;}elseif(USART_RX_BUF[1]=='6'){Mode_System=2;OUT_B=1;Flag_Mode=6;}elseif(USART_RX_BUF[1]=='1'){Mode_System=1;2.6程序编译2.6.1Keil软件介绍在这次设计中,设计的系统进行编译的是用Keil这个软件的C语言功能,这个软件非常利于程序的开发,非常便捷,而且在编译器中还可以避免一些平时常出现的错误和失误。这与之前的汇编语言对比,C语言不管是在功能、结构、可维护及其可读方面都有着非常显而易见的优势,初次学习也容易上手操作,学习起来并非特别复杂,操作起来也非常便捷。最重要的是,C语言对客户端计算机的系统需求也不刁钻,非常高的兼容性,这样就会不限制硬件需求,应用的范围就会非常广泛,所以C语言成为了现在最主流的编程软件。2.6.2程序编译经过了程序的设计以及编写,环目前我们的环境监测编程工作就全部完成了。我们选择的是Keil这一软件进行编译。第一步我们需要打开Keil软件,然后点击“Project”,新建文件,输入想设置的文件名称,紧接着需要在“Atmel”上选择单片机型号(AT89S52)。选择单片机的操作如图2.5所示。图2.5单片机选择然后我们需要按照顺序打开“Target”还有“SourceGroup”这两项。如图2.6所示。图2.6依次打开“Target”以及“Source

温馨提示

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

评论

0/150

提交评论