这个程序的流程图怎么画?

流程图,是51单片机连mq2气体传感器,LED灯,光敏,风扇,1602a液晶,温湿度传感器进行工作
有键盘:温度,湿度和切换+-模式,有上极限值  视频https://share.weiyun.com/1FUq9s1c
***************************main.c**********************

#include "stc12c5a60s2.h"
#include "intrins.h"
#include "stdio.h"
#include "math.h"
#include "string.h"
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define u8 unsigned char
#define u16 unsigned int
#define vu8 unsigned char
#define vu16 unsigned int
#define vu32 unsigned long int
vu8  sys[4];
vu8  dat11[5];	
void delayms(int z)//延时函数
{
	int x,y;
	for(x=110*6;x>0;x--)
		for(y=z;y>0;y--);
}
#define delay_ms delayms
#include "1602_12864.h"
#include "eeprom.h"
#include "adc.h"
#include "usart.h"
#include "ds18b20.h"
#include "dht11.h"
#include "display.h"
#include "int.h"
sbit k1=P2^5;
sbit k2=P2^6;
sbit k3=P2^7;
sbit fs=P1^5;
sbit led=P1^6;
sbit gm=P1^3;

vu8 CardID[4];
void main(void)//
{
		vu16 i,status,k,mq2;
    LCD_Init();//液晶初始化
		Usart_Config(1);//串口1初始化
		Timer0_Init();//定时器0初始化

		SysRead((u8 *)&sys[0],4);//系统读取参数
		InitADC();  
		while(1)
    {
				mq2=GetADCResult(7)/(1024.0/99.0);//mq-2气体传感器
				DH11_GetTempDamp();//dht11温湿度传感器
				if(gm==1)
					led=0;//开灯
				else
					led=1;//关灯
				display2(TempNow,DampNow,&sys[0],&sys[1]);
				if((TempNow>sys[0])||(DampNow>sys[1]))   //风扇
				{
					fs=0;//打开风扇
				}
				else
				{
					fs=1;//关闭
				}
	
				k++;
				if(k>12)    //通过SIM800a模块发送数据给手机app
				{
						k=0;
						sendchar(1,'S');//固定字符S
						sendchar(1,'0');						
						sendchar(1,'1');
						sendchar(1,'0');	
						sendchar(1,TempNow/10+48);
						sendchar(1,TempNow%10+48);						
						sendchar(1,',');
						sendchar(1,DampNow/10+48);
						sendchar(1,DampNow%10+48);						
						sendchar(1,',');	
						sendchar(1,mq2/10+48);
						sendchar(1,mq2%10+48);						
						sendchar(1,',');
						sendchar(1,(vu8)gm+48);	
						sendchar(1,'E');//固定字符E					
				}
				delayms(100);
		}
}



************************1602a液晶显示器****************************

display.h

#define disname1 "T1"
#define disname2 "T2"
#define disname3 "T3"
#define disname4 "T4"

#define disname1max 99
#define disname2max 99
#define disname3max 99
#define disname4max 99
sbit keys=P2^5;
sbit key1=P2^6;
sbit key2=P2^7;
sbit key3=P3^7;
sbit key4=P2^4;
vu8 AddFlag=0;
//display2(TempNow,DampNow,&sys[0],&sys[1]);	
void display1(vu8 a1,vu8 *val1h)//只显示一组比较值
{

	 if(keys==0)
	 {
				(*val1h)--;
				if((*val1h)>disname1max)
					(*val1h)=disname1max;
				SysSave((u8 *)&sys[0],2);
	 }
	 
	 if(key1==0)
	 {

				(*val1h)++;
				if((*val1h)>disname1max)
					(*val1h)=0;

			SysSave((u8 *)&sys[0],2);
	 }

	 LCD_DisStr(0,0,disname1);
	 LCDW_Dat(':');
	 LCDW_Dat(a1/10+48);
	 LCDW_Dat(a1%10+48);		
	
	 LCD_DisStr(1,0,"H:");
	 LCDW_Dat(*(val1h)/10+48);
	 LCDW_Dat(*(val1h)%10+48);

}	

void display2(vu8 a1,vu8 a2,vu8 *val1h,vu8 *val2h)
{
		
	 if(keys==0)
	 {
			delayms(10);
		  if(keys==0)
				AddFlag=1-AddFlag;
			while(keys==0);
	 }
	 
	 if(key1==0)
	 {
		  if(AddFlag==0)
			{
				(*val1h)++;
				if((*val1h)>disname1max)
					(*val1h)=0;
			}
			else
			{
				(*val1h)--;
				if((*val1h)>disname1max)
					(*val1h)=disname1max;
			}			
			SysSave((u8 *)&sys[0],2);
	 }
	 if(key2==0)
	 {
		  if(AddFlag==0)
			{
				(*val2h)++;
				if((*val2h)>disname2max)
					(*val2h)=0;
			}
			else
			{
				(*val2h)--;
				if((*val2h)>disname2max)
					(*val2h)=disname2max;
			}		
			SysSave((u8 *)&sys[0],2);
	 }
	 LCD_DisStr(0,0,disname1);
	 LCDW_Dat(':');
	 LCDW_Dat(a1/10+48);
	 LCDW_Dat(a1%10+48);		
	
	 LCD_DisStr(0,12,"H:");
	 LCDW_Dat(*(val1h)/10+48);
	 LCDW_Dat(*(val1h)%10+48);
	
	
	 LCD_DisStr(1,0,disname2);
	 LCDW_Dat(':');
	 LCDW_Dat(a2/10+48);
	 LCDW_Dat(a2%10+48);	
	
	 LCD_DisStr(1,12,"H:");
	 LCDW_Dat(*(val2h)/10+48);
	 LCDW_Dat(*(val2h)%10+48);
	
}	

//显示4个参数,可调其值
void display4(vu8 *val1,vu8 *val2,vu8 *val3,vu8 *val4)
{
		
	 if(keys==0)
	 {
			delayms(10);
		  if(keys==0)
				AddFlag=1-AddFlag;
			while(keys==0);
	 }
	 
	 if(key1==0)
	 {
		  if(AddFlag==0)
			{
				(*val1)++;
				if((*val1)>disname1max)
					(*val1)=0;
			}
			else
			{
				(*val1)--;
				if((*val1)>disname1max)
					(*val1)=disname1max;
			}			
			SysSave((u8 *)&sys[0],4);
	 }
	 if(key2==0)
	 {
		  if(AddFlag==0)
			{
				(*val2)++;
				if((*val2)>disname2max)
					(*val2)=0;
			}
			else
			{
				(*val2)--;
				if((*val2)>disname2max)
					(*val2)=disname2max;
			}		
			SysSave((u8 *)&sys[0],4);
	 }
	 
	 if(key3==0)
	 {
		  if(AddFlag==0)
			{
				(*val3)++;
				if((*val3)>disname3max)
					(*val3)=0;
			}
			else
			{
				(*val3)--;
				if((*val3)>disname3max)
					(*val3)=disname3max;
			}		
			SysSave((u8 *)&sys[0],4);
	 }	

	 if(key4==0)
	 {
		  if(AddFlag==0)
			{
				(*val4)++;
				if((*val4)>disname4max)
					(*val4)=0;
			}
			else
			{
				(*val4)--;
				if((*val4)>disname4max)
					(*val4)=disname4max;
			}		
			SysSave((u8 *)&sys[0],4);
	 }	 	 
	 
	 LCD_DisStr(0,0,disname1);
	 LCDW_Dat(':');
	 LCDW_Dat(*(val1)/10+48);
	 LCDW_Dat(*(val1)%10+48);		
	
	 LCD_DisStr(0,16-strlen(disname2)-3,disname2);
	  LCDW_Dat(':');
	 LCDW_Dat(*(val2)/10+48);
	 LCDW_Dat(*(val2)%10+48);
	
	
	 LCD_DisStr(1,0,disname3);
	 LCDW_Dat(':');
	 LCDW_Dat(*(val3)/10+48);
	 LCDW_Dat(*(val3)%10+48);	
	
	 LCD_DisStr(1,16-strlen(disname4)-3,disname4);
	 LCDW_Dat(':');
	 LCDW_Dat(*(val4)/10+48);
	 LCDW_Dat(*(val4)%10+48);
	
}	


****************************dht11温湿度传感器***************************

dht11.h


#define STC_1T//ÊÇ·ñ1Tµ¥Æ¬»ú

//Èç¹û89c52,¶¨Ê±Æ÷10ms
sbit PIN_DHT11=P1^2;
vu8 TempNow=0x01,DampNow=0x01;

#ifdef STC_1T
	void  Delay_10us(void)
	{
		uchar i;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;	
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;
		i--;

	}

	vu8  COM(void)
	{     
		uchar i,date=0,timeout; 
		Delay_10us();        
		for(i=0;i<8;i++)	   
		{
			date<<=1;
			timeout=2;	
			while((!PIN_DHT11)&&(timeout++))
				Delay_10us();
			if(timeout==1)
				break;//³¬Ê±Í˳ö
			//50usÒÔºó¼ì²â
			Delay_10us();
			Delay_10us();
			Delay_10us();
			Delay_10us();
			Delay_10us();

			if(PIN_DHT11)
			{
				date|=1;
				timeout=2;
				while((PIN_DHT11)&&(timeout++));
				if(timeout==1)
					break;//³¬Ê±Í˳ö 
			}
		
		}	
		return date;
	}
	//Éϵçºó1ÃëµÄÊý¾ÝÎȶ¨,²»ÒªÉÏÀ­µç×è,²»È»IO¿ÚÎÞ·¨À­µÍ
	void DH11_GetTempDamp(void)
	{
		u16 i,y;
		vu8 tab[5],timeout;
		PIN_DHT11=0;
	 
		for(i=110*6;i>0;i--)
			for(y=25;y>0;y--);

		PIN_DHT11=1;
		Delay_10us();
		Delay_10us();
		Delay_10us();
		Delay_10us();
		 
		if(!PIN_DHT11)  
		{			
			timeout=2;	 
			while((!PIN_DHT11)&&(timeout++))
				Delay_10us();
			timeout=2;
			while((PIN_DHT11)&&(timeout++));
				Delay_10us();
			for(i=0;i<5;i++)
				tab[i]=COM();			
			PIN_DHT11=1;	 
			if(tab[4]==(tab[0]+tab[1]+tab[2]+tab[3]))
			{
				TempNow=tab[2];//tab[0]ÊÇʪ¶ÈµÄÕûÊý,tab[1]ÊÇСÊý,tab[2]ÊÇζÈÕûÊý,tab[3]ÊÇʪ¶ÈСÊý
							   //tab[4]ÊÇУÑéºÍ,ÊÇÇóºÍºóµÄ×îµÍλ
				DampNow=tab[0];
			}		   
		}
	}
#else

uchar TAB[4];
uchar  U8FLAG,U8temp;

uchar  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
uchar  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
uchar  U8comdata;

void  Delay_10us(void)
{
	uchar i;
	i--;
	i--;
	i--;
	i--;
	i--;
	i--;




}

void  COM(void)
{     
	uchar i; 
	Delay_10us();        
	for(i=0;i<8;i++)	   
	{
	
		U8FLAG=2;	
		while((!PIN_DHT11)&&U8FLAG++);
		Delay_10us();
		Delay_10us();
		Delay_10us();
		U8temp=0;
		if(PIN_DHT11)
			U8temp=1;
		Delay_10us();
		U8FLAG=2;
		while((PIN_DHT11)&&U8FLAG++);	  
		if(U8FLAG==1)
			break;	   	 
		U8comdata<<=1;
		U8comdata|=U8temp; 
	}	   
}

void DH11_GetTempDamp(void)
{

	PIN_DHT11=0;
	delayms(15);
	PIN_DHT11=1;
	Delay_10us();
	Delay_10us();
	Delay_10us();
	Delay_10us();
	PIN_DHT11=1;	  
	if(!PIN_DHT11)  
	{
		U8FLAG=2;	 
		while((!PIN_DHT11)&&U8FLAG++);
		U8FLAG=2;
		while((PIN_DHT11)&&U8FLAG++);	 
		COM();
		U8RH_data_H_temp=U8comdata;
		COM();
		U8RH_data_L_temp=U8comdata;
		COM();
		U8T_data_H_temp=U8comdata;
		COM();
		U8T_data_L_temp=U8comdata;
		COM();
		U8checkdata_temp=U8comdata;
		PIN_DHT11=1;	 
		U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
		if(U8temp==U8checkdata_temp)
		{
			U8RH_data_H=U8RH_data_H_temp;
			U8RH_data_L=U8RH_data_L_temp;
			U8T_data_H=U8T_data_H_temp;
			U8T_data_L=U8T_data_L_temp;
			U8checkdata=U8checkdata_temp;
		}
		TAB[0]=U8T_data_H/10; 
		TAB[1]=U8T_data_H%10;  	
		TAB[2]=U8RH_data_H/10; 
		TAB[3]=U8RH_data_H%10;
		TempNow=U8T_data_H;
		DampNow=U8RH_data_H;
				   
	}

}
#endif

 

你要先自己弄清楚流程,然后用Word里面画流程图的符号画出来。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632