此项目是为别人代做的一个简单项目
点击下载源码
客户要求是:根据她给的公式,将通过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”