- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "lcd.h"
- #include "adc.h"
- #include "mq2.h"
- //ADC实现ADC1通道0-1
- extern __IO uint16_t ADC_ConvertedValue[2];
-
- int main(void)
- {
- u8 i;
- float temp1,temp2;
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //LED端口初始化
- LCD_Init();
- Adc_Init(); //ADC初始化
-
- POINT_COLOR=RED;//设置字体为红色
- LCD_ShowString(44,50,200,16,16,"Mini STM32");
- LCD_ShowString(44,70,200,16,16,"ADC TEST");
- LCD_ShowString(44,90,200,16,16,"QingYeMuRong");
- LCD_ShowString(44,110,200,16,16,"2020/7/19");
- //显示提示信息
- POINT_COLOR=BLUE;//设置字体为蓝色
- LCD_ShowString(44,130,200,16,16,"ADC_CH0_VAL:");
- LCD_ShowString(44,150,200,16,16,"ADC_CH0_VOL:"); //先在固定位置显示小数点
-
-
- LCD_ShowString(44,170,200,16,16,"ADC_CH1_VAL:");
- LCD_ShowString(44,190,200,16,16,"ADC_CH1_VOL:"); //先在固定位置显示小数点
- while(1)
- {
- temp1 = Get_ADCValue_Water(); //水位获取
- temp1 = temp1 *40/4096;
- temp2 = MQ2_GetPPM(); //气体
-
- printf("水位:%f mm , 气体:%f ppm\r\n",temp1,temp2);
-
- LCD_ShowxNum(140,130,ADC_ConvertedValue[0],4,16,0);//显示ADCC采样后的原始值
- i=temp1;
- LCD_ShowxNum(140,150,i,2,16,0);//显示电压值
- temp1-=i; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
- temp1*=1000; //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
- LCD_ShowString(156,150,200,16,16,".");
- LCD_ShowxNum(164,150,temp1,3,16,0X80);//
- LCD_ShowString(180,150,200,16,16," mm");
-
-
-
- LCD_ShowxNum(140,170,ADC_ConvertedValue[1],4,16,0);//显示ADCC采样后的原始值
- i=temp2;
- LCD_ShowxNum(140,190,i,4,16,0);//显示ppm
- temp2-=i; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
- temp2*=1000;
- //LCD_ShowString(156,190,200,16,16,"."); //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
- //LCD_ShowxNum(172,190,temp2,3,16,0X80);//
- LCD_ShowString(180,190,200,16,16," ppm");
- LED0=!LED0;
- delay_ms(1000);
- }
- }