找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5868|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于STM32F103C8T6芯片+煙霧報(bào)警器+串口顯示源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:679189 發(fā)表于 2021-4-22 19:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

  1. int main(void)
  2. {
  3.         delay_init();                     //延時(shí)函數(shù)初始化         
  4.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  5.          USART1_init();         //串口初始化為115200
  6.          
  7.         Smog_Init();
  8.         while(1)
  9.         {printf("光強(qiáng) \r\n");        
  10.                 Smog_Trans_Concentration();
  11.         delay_ms(300);
  12.         }
  13. }
復(fù)制代碼
  1. #include "smog.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "adc.h"

  5. //初始化煙霧傳感器
  6. void Smog_Init(void)
  7. {
  8.         GPIO_InitTypeDef GPIO_InitStructure;
  9.         
  10.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTF時(shí)鐘        
  11.         
  12.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //PC0 anolog輸入
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                //模擬輸入引腳
  14.         GPIO_Init(GPIOA, &GPIO_InitStructure);        
  15.         Adc2_Init();
  16. }
  17. //讀取煙霧傳感器的電壓值
  18. u16 Smog_Get_Vol(void)
  19. {
  20.         u32 temp_val=0;
  21.         u8 t;
  22.         for(t=0;t<SMOG_READ_TIMES;t++)
  23.         {
  24.                 temp_val+=Get_Adc2(SMOG_ADC_CHX);        //讀取ADC值
  25.                 delay_ms(5);
  26.         }
  27.         temp_val/=SMOG_READ_TIMES;//得到平均值
  28.         printf("Smog_ADC_Val:%d\r\n", temp_val);
  29.     return (u16)temp_val;
  30. }
  31. //分析從煙霧傳感器獲取的電壓值,通過(guò)公式計(jì)算出可燃?xì)怏w的濃度值
  32. //設(shè)Rs為傳感器的體電阻,其中氣體濃度上升,將導(dǎo)致Rs下降。而Rs的下降則會(huì)導(dǎo)致,MQ-2的4腳、6腳對(duì)地輸出的電壓增大。
  33. //所以氣體濃度增大,其輸出的電壓也會(huì)增大。因Rs在不同氣體中有不同的濃度值,所以該函數(shù)僅作為參考.
  34. u16 Smog_Trans_Concentration(void)
  35. {
  36.     u16 ulVal = 0;
  37.     u16 temp_val = Smog_Get_Vol();
  38.         u16 Rs;
  39.         Rs = SMOG_PIN46_R*(4096.0/temp_val - 1);
  40.         printf("Smog_Rs_Val:%d\r\n", Rs);
  41.         
  42.         ulVal = Rs;//這里填寫(xiě)公式根據(jù)Rs計(jì)算氣體濃度
  43.         
  44.     return ulVal;
  45. }
復(fù)制代碼

全部代碼51hei下載地址:
smog成功.7z (197.76 KB, 下載次數(shù): 106)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表