基于stm32f407的雨滴传感器,原理就是进行ADC采样,然后使用模拟量输出口A0,D0可以不用接,因为是直接输出高低电平,再接VCC和GND就可以了,我是用的是PB1,通道9采样详情请看附件。
单片机源程序如下:
- #include "Raindrops.h"
- //雨滴传感器,PB1采样,通道9
- void Raindrops_Get(void)
- {
- u16 adcx;
- float temp,rh;
- adcx=Get_Adc_Average(ADC_CH9,20);
- LCD_ShowxNum(134,220,adcx,4,16,0); //显示ADC的值
-
- rh=1.0f-(float)adcx/4096; //雨滴采样公式
-
- temp=(float)adcx*(3.3/4096);
- adcx=temp;
- LCD_ShowxNum(134,240,adcx,1,16,0); //显示电压值
- temp-=adcx;
- temp*=1000;
- LCD_ShowxNum(150,240,temp,3,16,0X80);
- LCD_ShowxNum(134,260,rh*100,6,16,0); //显示湿度的值
- delay_ms(250);
-
- }
复制代码- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "adc.h"
- #include "Raindrops.h"
-
- int main(void)
- {
-
- Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
- delay_init(168); //延时初始化
- uart_init(84,115200); //初始化串口波特率为115200
- LED_Init(); //初始化LED
- LCD_Init(); //初始化LCD
- Adc_Init(); //初始化ADC
-
- POINT_COLOR=BLUE;//设置字体为蓝色
- LCD_ShowString(30,220,200,16,16,"ADC1_CH9_VAL:");
- LCD_ShowString(30,240,200,16,16,"ADC1_CH9_VOL:0.000V");
- LCD_ShowString(30,260,200,16,16," RH: %");
-
- while(1)
- {
- Raindrops_Get();
- }
- }
复制代码
所有资料51hei提供下载:
雨滴传感器.7z
(151.56 KB, 下载次数: 122)
|