河流监测系统设计论文_第1页
河流监测系统设计论文_第2页
河流监测系统设计论文_第3页
河流监测系统设计论文_第4页
河流监测系统设计论文_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

附录A总原理图图A-1总原理图附录B程序/*************************************************************文件名:main.c*描述:用3.5.0版本建的工程模板。*库版本:ST3.5.0*作者:**************************************************************/#include"include.h"#include"esp8266.h"/************************************************函数名:main*描述:主函数*输入:无*输出:无***********************************************/intmain(void){ /*配置系统时钟为72M*/SystemInit(); SysTick_Init(); LED_GPIO_Config(); Param_int(); //系统参数初始化 //USART1_Init(115200); //串口1初始化wifi //uart_init(115200); TIM4_PWMConfig(199,7199); Adc_Init(); TIM_SetCompare4(TIM4,195);//0? ESP8266_Init(115200); while(1) { MainProc();//TIM_SetCompare4(TIM4,195);//0?// delay_ms(1000);// TIM_SetCompare4(TIM4,190);//45?// delay_ms(1000);// TIM_SetCompare4(TIM4,185);//90?// TIM_SetCompare4(TIM4,180);//135?// delay_ms(1000);// TIM_SetCompare4(TIM4,177);//?180?????????,???????180?????????,??????????// delay_ms(1000); } //addyourcodehere^_^。}/************************ENDOFFILE************/intfputc(intch,FILE*f){ while((USART1->SR&0X40)==0);//????,??????USART1->DR=(u8)ch; delay_ms(2); returnch;}ADC:/************************************************函数名:*描述:*输入:无*输出:无***********************************************/#include"include.h"floatVerAD=0; //基准电压的AD值 floatVerD=0;floatVer=2480.0; //基准电压单位mvunsignedshortVbaAD[6]={0}; //采集通道的ADfloatVba[6]={0}; //采集通道的电压//floatx=0.78; //电压系数//floatx1=1.264; //电压系数/************************************************函数名:*描述:初始化ADC这里我们仅以规则通道为例 我们默认将开启通道0~3 *输入:无*输出:无***********************************************/ voidAdc_Init(void){ ADC_InitTypeDefADC_InitStructure; GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_GPIOA,ENABLE); RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_ADC1 ,ENABLE); //使能ADC1通道时钟 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子672M/6=12,ADC最大时间不能超过14M //PA6ADC_Channel_0作为模拟通道输入引脚基准电压采集2.495v GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; //模拟输入引脚 GPIO_Init(GPIOA,&GPIO_InitStructure); //PA1ADC_Channel_1作为模拟通道多选一输入引脚弱电采集 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; //模拟输入引脚 GPIO_Init(GPIOA,&GPIO_InitStructure); // //PB1ADC_Channel_6作为模拟通道多选一输入引脚360VIN// GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;// GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; //模拟输入引脚// GPIO_Init(GPIOB,&GPIO_InitStructure); ADC_DeInit(ADC1); //复位ADC1 ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在独立模式 ADC_InitStructure.ADC_ScanConvMode=DISABLE; //模数转换工作在单通道模式 ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; //模数转换工作在单次转换模式 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; //ADC数据右对齐 ADC_InitStructure.ADC_NbrOfChannel=1; //顺序进行规则转换的ADC通道的数目 ADC_Init(ADC1,&ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器 ADC_Cmd(ADC1,ENABLE); //使能指定的ADC1 ADC_ResetCalibration(ADC1); //使能复位校准 while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束 ADC_StartCalibration(ADC1); //开启AD校准 while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束// ADC_SoftwareStartConvCmd(ADC1,ENABLE); //使能指定的ADC1的软件转换启动功能} /************************************************函数名:*描述:获得ADC值ch:通道值0~3*输入:无*输出:无***********************************************/unsignedshortGet_AdcValue(unsignedcharch){ //设置指定ADC的规则组通道,一个序列,采样时间 ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5); //ADC1,ADC通道,采样时间为239.5周期 ADC_SoftwareStartConvCmd(ADC1,ENABLE); //使能指定的ADC1的软件转换启动功能 while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待转换结束 returnADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果}/************************************************函数名:*描述:*输入:无*输出:无***********************************************/unsignedshortGet_Adc_Average(unsignedcharch,unsignedchartimes){ u32temp_val=0; u8t; for(t=0;t<times;t++) { temp_val+=Get_AdcValue(ch); delay_ms(5); } returntemp_val/times;} /************************************************函数名:CD4051*描述:*输入:无*输出:无***********************************************/voidRDADchannl(void){// VerAD=Get_Adc_Average(ADC_Channel_0,5); //ADC_Channel_0采集基准电压需要处理正确性// Vba[1]=((float)Ver*(float)Get_Adc_Average(ADC_Channel_1,5)/(float)VerAD)/1000.0; //ADC_Channel_1采集PH// OLED_ShowNum(24,2,Vba[1],2,16);// delay_ms(200);// Vba[2]=(Ver*Get_Adc_Average(ADC_Channel_4,5)/VerAD); //ADC_Channel_4采集浊度// OLED_ShowNum(88,2,(3291.3-(865.68*Vba[2]*2)),4,16);// delay_ms(200); VerD=0; VerAD=Get_Adc_Average(ADC_Channel_0,5); //ADC_Channel_0采集基准电压需要处理正确性 VerD=Ver/VerAD; VbaAD[1]=Get_Adc_Average(ADC_Channel_1,5); Vba[1]=VbaAD[1]*VerD*2/1000; //ADC_Channel_1采集PH //Paramter.DATYW=4850*Vba[1]+250; //OLED_ShowNum(24,2,Paramter.DATYW,5,16);}/***********************************************structSTRUCT_USART_FramESP8266_Fram_Record_Struct={0};//定义了一个数据帧结构体voidESP8266_Init(u32bound){//GPIO_InitTypeDefGPIO_InitStructure;//RCC_APB2PeriPHClockCmd(ESP8266_RST_Pin_PeriPH_Clock|ESP8266_CH_PD_Pin_PeriPH_Clock,ENABLE);//GPIO_InitStructure.GPIO_Pin=ESP8266_RST_Pin;//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//复用推挽输出//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//GPIO_Init(ESP8266_RST_Pin_Port,&GPIO_InitStructure);//GPIO_InitStructure.GPIO_Pin=ESP8266_CH_PD_Pin;//GPIO_Init(ESP8266_CH_PD_Pin_Port,&GPIO_InitStructure);USART1_Init(bound);// ESP8266_Rst();// ESP8266_CH_PD_Pin_SetH; ESP8266_AT_Test(); printf("正在配置ESP8266\r\n");ESP8266_Net_Mode_Choose(STA);while(!ESP8266_JoinAP(User_ESP8266_SSID,User_ESP8266_PWD));ESP8266_Enable_MultipleId(DISABLE); while(!ESP8266_Link_Server(enumUDP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT,Single_ID_0));//while(!ESP8266_Link_Server(enumTCP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT,Single_ID_0));while(!ESP8266_UnvarnishSend()); printf("\r\n配置完成"); wifi_success=1;}//对ESP8266模块发送AT指令//cmd待发送的指令//ack1,ack2;期待的响应,为NULL表不需响应,两者为或逻辑关系//time等待响应时间//返回1发送成功,0失败boolESP8266_Send_AT_Cmd(char*cmd,char*ack1,char*ack2,u32time){ESP8266_Fram_Record_Struct.InfBit.FramLength=0;//重新接收新的数据包ESP8266_USART("%s\r\n",cmd);if(ack1==0&&ack2==0)//不需要接收数据{returntrue;}delay_ms(time);//延时 delay_ms(1000);ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength]='\0'; printf("%s",ESP8266_Fram_Record_Struct.Data_RX_BUF);if(ack1!=0&&ack2!=0){return((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack1)||(bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack2));}elseif(ack1!=0)//strstr(s1,s2);检测s2是否为s1的一部分,是返回该位置,否则返回false,它强制转换为bool类型了return((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack1));elsereturn((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack2));}//复位重启voidESP8266_Rst(void){ESP8266_RST_Pin_SetL;delay_ms(500);ESP8266_RST_Pin_SetH;}//发送恢复出厂默认设置指令将模块恢复成出厂设置voidESP8266_AT_Test(void){charcount=0;delay_ms(1000);while(count<10){if(ESP8266_Send_AT_Cmd("AT+RESTORE","OK",NULL,500)){printf("OK\r\n");return;}++count;}}//选择ESP8266的工作模式//enumMode模式类型//成功返回true,失败返回falseboolESP8266_Net_Mode_Choose(ENUM_Net_ModeTypeDefenumMode){switch(enumMode){caseSTA:returnESP8266_Send_AT_Cmd("AT+CWMODE=1","OK","nochange",2500);caseAP:returnESP8266_Send_AT_Cmd("AT+CWMODE=2","OK","nochange",2500);caseSTA_AP:returnESP8266_Send_AT_Cmd("AT+CWMODE=3","OK","nochange",2500);default:returnfalse;}}//ESP8266连接外部的WIFI//pSSIDWiFi帐号//pPassWordWiFi密码//设置成功返回true反之falseboolESP8266_JoinAP(char*pSSID,char*pPassWord){charcCmd[120]; sprintf(cCmd,"AT+CWJAP=\"%s\",\"%s\"",pSSID,pPassWord);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,5000);}//ESP8266透传使能//enumEnUnvarnishTx是否多连接,bool类型//设置成功返回true,反之falseboolESP8266_Enable_MultipleId(FunctionalStateenumEnUnvarnishTx){charcStr[20];sprintf(cStr,"AT+CIPMUX=%d",(enumEnUnvarnishTx?1:0));returnESP8266_Send_AT_Cmd(cStr,"OK",0,500);}//ESP8266连接服务器//enumE网络类型//ip,服务器IP//ComNum服务器端口//id,连接号,确保通信不受外界干扰//设置成功返回true,反之fasleboolESP8266_Link_Server(ENUM_NetPro_TypeDefenumE,char*ip,char*ComNum,ENUM_ID_NO_TypeDefid){charcStr[100]={0},cCmd[120];switch(enumE){caseenumTCP:sprintf(cStr,"\"%s\",\"%s\",%s","TCP",ip,ComNum);break;caseenumUDP:sprintf(cStr,"\"%s\",\"%s\",%s","UDP",ip,ComNum);break;default:break;}if(id<5)sprintf(cCmd,"AT+CIPSTART=%d,%s",id,cStr);elsesprintf(cCmd,"AT+CIPSTART=%s",cStr);returnESP8266_Send_AT_Cmd(cCmd,"OK","ALREAYCONNECT",4000);}//透传使能//设置成功返回true,反之falseboolESP8266_UnvarnishSend(void){if(!ESP8266_Send_AT_Cmd("AT+CIPMODE=1","OK",0,500))returnfalse;returnESP8266_Send_AT_Cmd("AT+CIPSEND","OK",">",500);}//ESP8266发送字符串//enumEnUnvarnishTx是否使能透传模式//pStr字符串//ulStrLength字符串长度//ucId连接号//设置成功返回true,反之falseboolESP8266_SendString(FunctionalStateenumEnUnvarnishTx,char*pStr,u32ulStrLength,ENUM_ID_NO_TypeDefucId){charcStr[20];boolbRet=false;if(enumEnUnvarnishTx){ESP8266_USART("%s",pStr);bRet=true;}else{if(ucId<5)sprintf(cStr,"AT+CIPSEND=%d,%d",ucId,ulStrLength+2);elsesprintf(cStr,"AT+CIPSEND=%d",ulStrLength+2);ESP8266_Send_AT_Cmd(cStr,">",0,1000);bRet=ESP8266_Send_AT_Cmd(pStr,"SENDOK",0,1000);}returnbRet;}//ESP8266退出透传模式voidESP8266_ExitUnvarnishSend(void){delay_ms(1000);ESP8266_USART("+++");delay_ms(500);}//ESP8266检测连接状态//返回0:获取状态失败//返回2:获得ip//返回3:建立连接//返回4:失去连接u8ESP8266_Get_LinkStatus(void){if(ESP8266_Send_AT_Cmd("AT+CIPSTATUS","OK",0,500)){if(strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,"STATUS:2\r\n"))return2;elseif(strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,"STATUS:3\r\n"))return3;elseif(strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,"STATUS:4\r\n"))return4;}return0;}staticchar*itoa(intvalue,char*string,intradix){inti,d;intflag=0;char*ptr=string;/*Thisimplementationonlyworksfordecimalnumbers.*/if(radix!=10){*ptr=0;returnstring;}if(!value){*ptr++=0x30;*ptr=0;returnstring;}/*ifthisisanegativevalueinserttheminussign.*/if(value<0){*ptr++='-';/*Makethevaluepositive.*/value*=-1;}for(i=10000;i>0;i/=10){d=value/i;if(d||flag){*ptr++=(char)(d+0x30);value-=(d*i);flag=1;}}/*Nullterminatethestring.*/*ptr=0;returnstring;}/*NCL_Itoa*/voidUSART_printf(USART_TypeDef*USARTx,char*Data,...){constchar*s;intd;charbuf[16];va_listap;va_start(ap,Data);while(*Data!=0)//判断数据是否到达结束符{if(*Data==0x5c)//'\'{switch(*++Data){case'r'://回车符USART_SendData(USARTx,0x0d);Data++;break;case'n'://换行符USART_SendData(USARTx,0x0a);Data++;break;default:Data++;break;}}elseif(*Data=='%'){switch(*++Data){case's'://字符串s=va_arg(ap,constchar*);for(;*s;s++){USART_SendData(USARTx,*s);while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);}Data++;break;case'd'://十进制d=va_arg(ap,int);itoa(d,buf,10);for(s=buf;*s;s++){USART_SendData(USARTx,*s);while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);}Data++;break;default:Data++;break;}}elseUSART_SendData(USARTx,*Data++);while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);}}//下面为ESP8266MQTT功能指令/**MQTT配置用户属性*LinkID连接ID,目前只支持0*scheme连接方式,这里选择MQTToverTCP,这里设置为1*client_idMQTTclientID用于标志client身份*username用于登录MQTT服务器的username*password用于登录MQTT服务器的password*cert_key_ID证书ID,目前支持一套cert证书,参数为0*CA_ID目前支持一套CA证书,参数为0*path资源路径,这里设置为""*设置成功返回true反之false*/boolESP8266_MQTTUSERCFG(char*pClient_Id,char*pUserName,char*PassWord){charcCmd[120];sprintf(cCmd,"AT+MQTTUSERCFG=0,1,\"%s\",\"%s\",\"%s\",0,0,\"\"",pClient_Id,pUserName,PassWord);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,500);}/**连接指定的MQTT服务器*LinkID连接ID,目前只支持0*IP:MQTT服务器上对应的IP地址*ComNumMQTT服务器上对应的端口号,一般为1883*设置成功返回true反之false*/boolESP8266_MQTTCONN(char*Ip,intNum){charcCmd[120];sprintf(cCmd,"AT+MQTTCONN=0,\"%s\",%d,0",Ip,Num);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,500);}/**订阅指定连接的MQTT主题,可重复多次订阅不同topic*LinkID连接ID,目前只支持0*Topic订阅的主题名字,这里设置为Topic*Qos值:一般为0,这里设置为1*设置成功返回true反之false*/boolESP8266_MQTTSUB(char*Topic){charcCmd[120];sprintf(cCmd,"AT+MQTTSUB=0,\"%s\",1",Topic);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,500);}/**在LinkID上通过topic发布数据data,其中data为字符串消息*LinkID连接ID,目前只支持0*Topic订阅的主题名字,这里设置为Topic*data:字符串信息*设置成功返回true反之false*/boolESP8266_MQTTPUB(char*Topic,char*temp){charcCmd[120];sprintf(cCmd,"AT+MQTTPUB=0,\"%s\",\"%s\",1,0",Topic,temp);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,1000);}/**关闭MQTTClient为LinkID的连接,并释放内部占用的资源*LinkID连接ID,目前只支持0*Topic订阅的主题名字,这里设置为Topic*data:字符串信息*设置成功返回true反之false*/boolESP8266_MQTTCLEAN(void){charcCmd[120];sprintf(cCmd,"AT+MQTTCLEAN=0");returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,500);}//ESP8266发送字符串//enumEnUnvarnishTx是否使能透传模式//pStr字符串//ulStrLength字符串长度//ucId连接号//设置成功返回true,反之falseboolMQTT_SendString(char*pTopic,char*temp2){ boolbRet=false;ESP8266_MQTTPUB(pTopic,temp2); delay_ms(1000);bRet=true;returnbRet;}LED:/************************************************文件名:led.c*描述:*实验平台:*硬件连接:*库版本:ST3.5*作者:**********************************************************************************/#include"include.h"/************************************************函数名:LED_GPIO_Config*描述:配置LED用到的I/O口*输入:无*输出:无***********************************************/voidKey_Int(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_2|GPIO_Pin_1|GPIO_Pin_0; //K1234GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOC,&GPIO_InitStructure);}/************************************************函数名:LED_GPIO_Config*描述:配置LED用到的I/O口*输入:无*输出:无***********************************************/voidLED_GPIO_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; // RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_AFIO,ENABLE); RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_GPIOA,ENABLE); RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_GPIOB,ENABLE); RCC_APB2PeriPHClockCmd(RCC_APB2PeriPH_GPIOC,ENABLE); //GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); //改变管脚映射GPIO_Remap_SWJ_DisableSWJ完全禁用(JTAG+SW-DP) //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //改变管脚映射GPIO_Remap_SWJ_JTAGDisable,JTAG-DP禁用+SW-DP使能 //GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); /*****************LED1******************/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStructure); GPIO_ResetBits(GPIOC,GPIO_Pin_15); //turnoffBEEP GPIO_ResetBits(GPIOC,GPIO_Pin_13); //turnoffled /*****************rely1/2******************/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_12); //turnoff过滤 GPIO_ResetBits(GPIOB,GPIO_Pin_13); //turnoff投碱 GPIO_ResetBits(GPIOB,GPIO_Pin_14); //turnoff投酸 /*****************HZ******************/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure); //EXTIX_Init();}//****************************************************//读取HX711//****************************************************unsignedlongHX711_Read(void) //增益128{ unsignedlongcount; unsignedchari; //GPIO_SetBits(Sensor_Gpio,DATA);//HX711_DOUT=1; delay_us(1); GPIO_ResetBits(Sensor_Gpio,CLK);//HX711_SCK=0; count=0; while(GPIO_ReadInputDataBit(Sensor_Gpio,DATA)); for(i=0;i<24;i++) { GPIO_SetBits(Sensor_Gpio,CLK);//HX711_SCK=1; count=count<<1; delay_us(1); GPIO_ResetBits(Sensor_Gpio,CLK);//HX711_SCK=0; if(GPIO_ReadInputDataBit(Sensor_Gpio,DATA)) count++; delay_us(1); } GPIO_SetBits(Sensor_Gpio,CLK);//HX711_SCK=1;count=count^0x800000;//第25个脉冲下降沿来时,转换数据 delay_us(1); GPIO_ResetBits(Sensor_Gpio,CLK);//HX711_SCK=0; return(count);}/*******************(C)COPYRIGHT2012WildFireTeam*****ENDOFFILE****/unsignedcharCRC8_Table(unsignedchar*p,charcounter){unsignedcharcrc8=0;for(;counter>0;counter--){crc8=crc_array[crc8^*p];//????CRC?p++;}returncrc8;}/************************************************函数名:*描述:*输入:无*输出:无***********************************************/unsignedcharChecksum(unsignedchar*t,charcounter){ unsignedchari,c=0; for(i=1;i<counter;i++) { c+=t[i]; } c=~c; returnc+1;}/************************************************函数名:*描述:*输入:无*输出:无***********************************************/voidParam_int(void) //0--onlyreadorfirstint1-writint{ Paramter.ID=0x01; Paramter.ALMPHL=4; // Paramter.ALMPHH=10; // Paramter.Almflg=0; //超限标志 MainPrcParamter.Main_state=0; MainPrcParamter.Main_dely=0;}/************************************************函数名:*描述:*输入:无*输出:无***********************************************/unsignedcharshangchuan[256];voidMainProc(void){ switch(MainPrcParamter.Main_state) { case0://TH//18b20// if(DHT11_Read_data(DHT11buffer)==0)// {// // Paramter.DATTM=DHT11buffer[2]+DHT11buffer[3]/10.0;// OLED_ShowNum(24,0,(unsi

温馨提示

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

评论

0/150

提交评论