个人项目——基于STM32的MQ-3酒精浓度检测

        此项目是为别人代做的一个简单项目

        点击下载源码

        客户要求是:根据她给的公式,将通过ADC采集MQ-3模块的值转换为酒精浓度值显示在LCD屏幕上,单片机是正点原子mini板,并且设置阈值,超过阈值报警,阈值有两个,第一个阈值可以通过按键调整大小,第二个阈值不变,没有超过阈值屏幕显示绿色,超过第一个阈值显示红色,超过第二个显示棕色,项目非常简单

       部分代码如下: 

//显示提示信息
	POINT_COLOR=BLACK;//设置字体为蓝色	      
	LCD_ShowString(10,100,136,16,16,"Alcohol: .   mg/L");
	LCD_ShowString(10,120,120,16,16,"Threshol1: .   ");
	LCD_ShowString(10,140,120,16,16,"Threshol2:0.500");
	
	while(1)
	{
		
		adcx=Get_Adc_Average(ADC_Channel_1,10);
		//LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
		temp=((float)adcx*(5.0/4096))*0.36-1.08;
		printf("value:%f",temp);
		t=KEY_Scan(0);		//得到键值
		if(t==KEY0_PRES)
		{
				threshol1+=0.01;
				
		
		}else if(t==KEY1_PRES)
		{
				threshol1-=0.01;
		}
		threshol_1=threshol1;
		LCD_ShowxNum(90,120,threshol_1,1,16,0);//显示浓度值
		threshol_2=(threshol1-threshol_1)*1000;
		LCD_ShowxNum(106,120,threshol_2,3,16,0);
		if(temp > threshol1 && temp < threshol2)		//如果浓度大于阈值
		{
			PB9=0;						//开启蜂鸣器
      delay_ms(1000);	
	    delay_ms(1000);	
			PB9=1;						//蜂鸣器关闭
      delay_ms(1000); 
			LCD_Fill(70,200,170,300,RED);
		}else if(temp > threshol2){		//急促
			PB9=0;						//开启蜂鸣器
      delay_ms(300);	
			PB9=1;						//蜂鸣器关闭
      delay_ms(50);
			LCD_Fill(70,200,170,300,BROWN);
		}else
		{
			PB9=1;		//蜂鸣器关闭
			LCD_Fill(70,200,170,300,GREEN);
		}
		adcx=temp;
		LCD_ShowxNum(74,100,adcx,1,16,0);//显示浓度值
		temp-=adcx;
		temp*=1000;
		LCD_ShowxNum(90,100,temp,3,16,0);
		
		LED0=!LED0;
		delay_ms(250);	
		
	}			

        硬件连接

      MQ-3 
      AO口 接  PA1
      GND  接  GND
      VCC  接  VCC5V

       蜂鸣器
       VCC 接 VCC3.3
       GND 接 GND

       I/O 接 PB9

        2.8寸TFTLCD通过插槽连接

        至此,教程结束,谢谢大家,也欢迎大家关注我的个人技术与资源分享公众号“linkutures”


你可能感兴趣的:(STM32)