加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

基于STM32的天然氣煤氣檢測(cè)報(bào)警仿真設(shè)計(jì)(仿真+程序+講解)

09/11 10:34
1174
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
    • 演示視頻
    • 1.主要功能
    • 2.仿真
    • 3. 程序
    • 4. 資料清單&下載鏈接
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

仿真圖proteus 8.9

程序編譯器:keil 5

編程語言:C語言

設(shè)計(jì)編號(hào):C0081

演示視頻


基于STM32的天然氣煤氣可燃?xì)怏w檢測(cè)報(bào)警仿真設(shè)計(jì)

1.主要功能

功能說明:

1、以STM32單片機(jī)為控制核心設(shè)計(jì)可燃?xì)怏w(天然氣 煤氣)檢測(cè)報(bào)警設(shè)計(jì);

2、通過液晶屏LCD1602顯示氣體濃度;

3、可以通過撥動(dòng)開關(guān)設(shè)置自動(dòng)或者手動(dòng)開啟風(fēng)扇,手動(dòng)模式指示燈亮,自動(dòng)模式下模式指示燈滅。

4、手動(dòng)模式通過按鍵控制風(fēng)扇開關(guān)。自動(dòng)模式下檢測(cè)到氣體濃度高于2.0mg/L風(fēng)扇自動(dòng)啟動(dòng)。

5、監(jiān)測(cè)到氣體濃度高于2.0mg/L蜂鳴器報(bào)警。

主要硬件設(shè)備:STM32F103單片機(jī)

以下為本設(shè)計(jì)資料展示:

2.仿真

整體設(shè)計(jì)方案

本實(shí)驗(yàn)的目的是利用STM32單片機(jī)的先進(jìn)數(shù)字模擬轉(zhuǎn)換器(ADC)、通用輸入輸出(GPIO)和定時(shí)器等資源,將軟件和硬件有效地結(jié)合在一起,以實(shí)現(xiàn)對(duì)輸入模擬天然氣煤氣傳感器的AD值的準(zhǔn)確識(shí)別,并通過1602液晶顯示屏(LCD1602)正確顯示相關(guān)數(shù)據(jù)。此外,我們還希望系統(tǒng)能夠根據(jù)預(yù)設(shè)的報(bào)警值,通過蜂鳴器和風(fēng)扇等外設(shè)進(jìn)行氣體濃度的報(bào)警。

在這個(gè)實(shí)驗(yàn)中,值得注意的是,Proteus軟件并沒有內(nèi)置的天然氣煤氣等有害氣體的濃度傳感器。因此,為了模擬可燃?xì)怏w濃度的變化,我們使用了滑動(dòng)變阻器。雖然這種方式不能直接應(yīng)用于實(shí)際硬件設(shè)計(jì),但是對(duì)于理解和測(cè)試算法的基本行為是非常有用的。對(duì)于需要進(jìn)行實(shí)物設(shè)計(jì)的用戶,建議根據(jù)實(shí)際傳感器進(jìn)行相應(yīng)的調(diào)試和修改。

總的來說,這個(gè)實(shí)驗(yàn)提供了一個(gè)基礎(chǔ)的框架,展示了如何利用STM32單片機(jī)結(jié)合ADC、GPIO和定時(shí)器等資源,實(shí)現(xiàn)對(duì)模擬天然氣煤氣傳感器信號(hào)的采集和處理,并通過LCD1602顯示和報(bào)警裝置進(jìn)行展示和報(bào)警。雖然不能直接用于實(shí)物設(shè)計(jì),但對(duì)于理解和掌握相關(guān)技術(shù)的基本原理和應(yīng)用,具有很大的價(jià)值。

本測(cè)試如下所示:

仿真運(yùn)行情況:

開始仿真后LCD1602實(shí)時(shí)顯示檢測(cè)到的氣體濃度,可以通過滑動(dòng)變阻器改變測(cè)量值??赏ㄟ^開關(guān)選擇風(fēng)扇的運(yùn)行模式。如果開關(guān)閉合,風(fēng)扇是自動(dòng)模式工作,氣體濃度高于報(bào)警值時(shí),風(fēng)扇啟動(dòng),低于報(bào)警值的時(shí)候,風(fēng)扇不轉(zhuǎn)動(dòng)。如果風(fēng)扇是手動(dòng)模式,通過按鍵控制風(fēng)扇的開關(guān)。蜂鳴器報(bào)警電路在氣體濃度高于報(bào)警值時(shí)啟動(dòng),有嘟嘟報(bào)警聲,低于不啟動(dòng)。

下圖檢測(cè)到氣體濃度是1.5mg/L,低于報(bào)警值2.0mg/L,風(fēng)扇和蜂鳴器電路不工作。

img

下圖檢測(cè)到氣體濃度是2.0mg/L,大于等于報(bào)警值,蜂鳴器報(bào)警,風(fēng)扇轉(zhuǎn)動(dòng)模擬排氣通風(fēng)。

img

3. 程序

程序是用keil5 mdk版本打開的,如果打開有問題,核實(shí)下keil的版本。程序是固件庫(kù)版本編寫的,有注釋可以結(jié)合講解理解。
mian.c代碼

#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"
#define LED PAout(3)
#define BEEP PAout(4)
#define KEY1 PAin(8)
#define KEY2 PAin(9)
#define KEY3 PAin(10)
void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能P端口時(shí)鐘
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;				 //LED0 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽輸出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 GPIO_SetBits(GPIOA,GPIO_Pin_3);						 //輸出高
 GPIO_SetBits(GPIOA,GPIO_Pin_4);						 //輸出高

}
void KEY_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; //定義結(jié)構(gòu)體變量	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;	//上拉輸入
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
}
int main(void)
{
int a,b,c,d;
	float temp;
	int count;
	delay_init();	    	 //延時(shí)函數(shù)初始化	  	
	LCD1602_Init();
  ADC1_GPIO_Config();		
  ADC_Config();  
	LCD1602_ShowStr(2,0,"Qiti=0.0mg/L",13);
	LED_Init();		//風(fēng)扇控制引腳
	KEY_Init();		//按鍵初始化
	while(1)
	{
		count++;
		if(count>5000){//用于計(jì)數(shù),防止系統(tǒng)執(zhí)行轉(zhuǎn)換太頻繁
			count = 0;
			b=ADC_GetConversionValue(ADC1);//獲取ADC的值
			temp=(float)b*(3.4/4096);//換算ADC的值
			a=temp/1;
			c=temp*10;
			d=c%10;
			LCD_ShowNum(7,0,a);
			LCD_ShowNum(9,0,d);//顯示檢測(cè)到的AD值

				if(KEY3==0){//按鍵控制
					if(temp>2) LED=1;//LED1是風(fēng)扇控制引腳,1打開 0關(guān)閉
					else LED=0;
				}	else{
					if(KEY1==0) LED=1;
					if(KEY2==0) LED=0;
				}	
			if(temp>2) BEEP=0;//蜂鳴器報(bào)警值判斷,BEEP==0蜂鳴器報(bào)警 1蜂鳴器關(guān)閉
				else BEEP=1;	
				delay_ms(10);
		}



	}
}




img

4. 資料清單&下載鏈接

0、常見使用問題及解決方法–必讀!?。?!

1、源程序

2、仿真圖

3、功能要求

4、講解視頻

Altium Designer 軟件資料

KEIL軟件資料

Proteus軟件資料

單片機(jī)學(xué)習(xí)資料

答辯技巧

設(shè)計(jì)報(bào)告常用描述

鼠標(biāo)雙擊打開查找更多51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url

img

資料下載鏈接(可點(diǎn)擊):

  • 設(shè)計(jì)資料獲取聯(lián)系方式.doc

相關(guān)推薦

電子產(chǎn)業(yè)圖譜