標題:
基于STM32F103C8T6芯片+煙霧報警器+串口顯示源程序
[打印本頁]
作者:
JN0717
時間:
2021-4-22 19:40
標題:
基于STM32F103C8T6芯片+煙霧報警器+串口顯示源程序
int main(void)
{
delay_init(); //延時函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
USART1_init(); //串口初始化為115200
Smog_Init();
while(1)
{printf("光強 \r\n");
Smog_Trans_Concentration();
delay_ms(300);
}
}
復制代碼
#include "smog.h"
#include "delay.h"
#include "usart.h"
#include "adc.h"
//初始化煙霧傳感器
void Smog_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTF時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PC0 anolog輸入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入引腳
GPIO_Init(GPIOA, &GPIO_InitStructure);
Adc2_Init();
}
//讀取煙霧傳感器的電壓值
u16 Smog_Get_Vol(void)
{
u32 temp_val=0;
u8 t;
for(t=0;t<SMOG_READ_TIMES;t++)
{
temp_val+=Get_Adc2(SMOG_ADC_CHX); //讀取ADC值
delay_ms(5);
}
temp_val/=SMOG_READ_TIMES;//得到平均值
printf("Smog_ADC_Val:%d\r\n", temp_val);
return (u16)temp_val;
}
//分析從煙霧傳感器獲取的電壓值,通過公式計算出可燃氣體的濃度值
//設Rs為傳感器的體電阻,其中氣體濃度上升,將導致Rs下降。而Rs的下降則會導致,MQ-2的4腳、6腳對地輸出的電壓增大。
//所以氣體濃度增大,其輸出的電壓也會增大。因Rs在不同氣體中有不同的濃度值,所以該函數(shù)僅作為參考.
u16 Smog_Trans_Concentration(void)
{
u16 ulVal = 0;
u16 temp_val = Smog_Get_Vol();
u16 Rs;
Rs = SMOG_PIN46_R*(4096.0/temp_val - 1);
printf("Smog_Rs_Val:%d\r\n", Rs);
ulVal = Rs;//這里填寫公式根據(jù)Rs計算氣體濃度
return ulVal;
}
復制代碼
全部代碼51hei下載地址:
smog成功.7z
(197.76 KB, 下載次數(shù): 106)
2021-4-23 04:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1