基于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);
-
- }
復(fù)制代碼- #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);//設(shè)置時鐘,168Mhz
- delay_init(168); //延時初始化
- uart_init(84,115200); //初始化串口波特率為115200
- LED_Init(); //初始化LED
- LCD_Init(); //初始化LCD
- Adc_Init(); //初始化ADC
-
- POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
- 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();
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
雨滴傳感器.7z
(151.56 KB, 下載次數(shù): 122)
2020-7-31 15:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|