天天看點

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

部落客福利:100G+電子設計學習資源包!

​​http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect​​ --------------------------------------------------------------------------------------------------------------------------

本論文主要完成一氧化碳檢測儀軟體和硬體仿真設計,設計内容包括:A/D轉換器程式、控制程式、超标報警、鍵盤檢測、資料顯示等。

硬體設計部分主要包括:單片機、A/D轉換器、時鐘晶片、LCD、外圍擴充資料RAM等晶片的選擇;硬體主電路設計、資料采集、模數轉換電路設計、液晶顯示電路設計、外圍擴充存儲器接口電路、時鐘電路、複位電路、鍵盤接口電路等功能子產品電路設計。硬體結構框圖2.1。硬體設計總體電路圖見附錄A1。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.1 硬體結構框圖

2.1 STC89C52單片機簡介

本系統采用STC89C52單片機。而目前世界上較為著名的8位單片機的生産廠家和主要機型如下:

美國Intel公司:MCS—51系列及其增強型系列;

美國Motorola公司:6801系列和6805系列;

美國Atmel公司:89C51等單片機;

美國Zilog公司:Z8系列及SUPER8;

美國Fairchild公司:F8系列和3870系列;

美國Rockwell公司:6500/1系列;

美國TI(德克薩司儀器儀表)公司:TMS7000系列;

NS(美國國家半導體)公司:NS8070系列等等。

MCS—51系列單片機包括三個基本型8031、8051、8751。

本系統采用STC89C52單片機為控制核心。而相比之下52型功能更為強大,ROM和RAM存儲空間更大,52還相容51指令系統。基于本系統設計内容的需要,綜合考慮後,我們選擇單片機ATME公司的STC89C52為控制核心;主要基于考慮STC89C52是一個低電壓,高性能CMOS 8位單片機,片内含8KB的可反複擦寫的Flash隻讀程式存儲器和256 bytes的随機存取資料存儲器(RAM)、6個中斷源;時鐘頻率0~24MHz;器件采用高密度、非易失性存儲技術生産,并相容标準MCS-51指令系統,功能強大。

STC89C52是美國ATMEL公司生産的低電壓,高性能CMOS 8位單片機,片内含8K bytes的可反複擦寫的隻讀程式存儲器(PEROM)和256K bytes的随機存取資料存儲器,器件采用ATMEL公司的高密度,非易失性存儲技術生産,與标準MCS-51指令系統及8052産品引腳相容,片内置通用8位中央處理器和FLASH存儲單元,功能強大,STC89C52單片機适合于許多較為複雜控制應用場合。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.2 引腳圖

主要性能參數:

與MCS-51産品指令和引腳完全相容;

8K位元組可重擦寫FLASH閃存存儲器;

1000次寫/擦循環;

時鐘頻率:0Hz~24MHz;

三級加密存儲器;

256位元組内部RAM;

32個可程式設計I/O口線;

3個16位定時/計數器;

6個中斷源;

可程式設計串行UART通道。

2.2單片機最小系統的設計

    采用STC89C52來設計一個單片機系統能運作起來的需求最小的系統[15],電路圖見圖2.3:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.3 單片機最小系統圖

上圖的最小單片機系統包含有晶振電路和複位電路,STC89C52晶片組成。

晶振電路在各種指令的微操作在時間上有嚴格的次序,這種微操作的時間次序稱作時序, STC89C52的時鐘産生方式有兩種,一種是内部時鐘方式,一種是外部時鐘方式。本系統中采用了内部時鐘方式,為了盡量降低功耗的原則。電路圖見圖2.4。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.4 晶振電路圖

在89C52單片機的内部有一個震蕩電路,隻要在單片機的XTAL1和XTAL2引腳外接石英晶體(簡稱晶振)就構成了自激振蕩器并在單片機内部産生時鐘脈沖信号,圖中電容器C1和C2穩定頻率和快速起振,晶振CRY選擇的是12MHz。

複位電路在單片機工作中仍然是不可缺少的主要部件中,單片機工作時必須處于一種确定的狀态。端口線電平和輸入輸出狀态不确定可能使外圍裝置誤動作,導緻嚴重事故的發生;内部一些控制寄存器(專用寄存器)内容不确定可能導緻定時器溢出、程式尚未開始就要中斷及序列槽亂傳向外設發送資料[1]。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.5 上電複位電路圖

本設計中複位電路采用的是上電複位與手動複位電路,開關未按下是上電複位電路,上電複位電路在上電的瞬間,由于電容上的電壓不能突變,電容處于充電(導通)狀态,故RST腳的電壓與VCC相同。随着電容的充電,RST腳上的電壓才慢慢下降。選擇合理的充電常數,就能保證在開關按下時是RST端有兩個機器周期以上的高電平進而使STC89C52内部複位。開關按下時是按鍵手動複位電路,RST端通過電阻與VCC電源接通,通過電阻的分壓就可以實作單片機的複位[4]。電路圖見圖2.6:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.6 複位電路圖

2.3資料采集系統的簡介

CO傳感器選用CO/CF-1000探頭組成,如下表2.1。

表2.1 傳感器參數

名稱 一氧化碳傳感器 CO/CF-1000
測量範圍 0 - 1 000 ppm
輸 出 100±20nA/ppm
分辨率 0.05 ppm
響應時間 (T 90) ﹤50 seconds
濕度範圍 15-90 %RH(非凝結)
最大零點漂移(20℃to 40℃) 10 ppm
長期漂移 ﹤2% /每月
推薦負載值 10Ω
線性度輸出 線性

測量電路由CO/CF-1000一氧化碳傳感器、ADC0832組成。當空氣被内部的采樣系統接收後,産生一個與一氧化碳濃度成正比的電壓信号,該電壓信号經

ADC0832與STC89C52單片機相連,在顯示器上顯示出一氧化碳的濃度值,當超過國家規定的标準時報警[5]。

2.4模數轉換器的簡介

由于ADC0832模數轉換器具有8位分辨率、雙通道A/D轉換、輸入輸出電平與TTL/CMOS相相容、5V電源供電時輸入電壓在0~5V之間、工作頻率為250KHZ、轉換時間為32微秒、一般功耗僅為15MW等優點,适合本系統的應用,是以我們采用ADC0832為模數轉換器件[3]。電路圖見圖2.7如下:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.7 模數轉換電路圖

ADC0832 具有以下特點:

①8位分辨率;

②雙通道A/D轉換;

③輸入輸出電平與TTL/CMOS相相容;

④5V電源供電時輸入電壓在0~5V之間;

⑤工作頻率為250KHZ,轉換時間為32μS;

⑥一般功耗僅為15mW;

⑦8P、14P—DIP(雙列直插)、PICC 多種封裝;

⑧商用級晶片溫寬為0℃到+70℃,工業級晶片溫寬為−40℃到+85℃;

晶片接口說明:

①CS_片選使能,低電平晶片使能;

②CH0模拟輸入通道0,或作為IN+/-使用;

③CH1模拟輸入通道1,或作為IN+/-使用;

④GND晶片參考0電位(地);

⑤DI資料信号輸入,選擇通道控制;

⑥DO資料信号輸出,轉換資料輸出;

⑦CLK晶片時鐘輸入;

⑧Vcc/REF電源輸入及參考電壓輸入(複用)。

由于ADC0832模數轉換器的位數為8位,是以ADC0832模數轉換器的精度為:10ppm/256=0.039ppm。

2.5按鍵電路的設計

本系統選擇獨立式按鍵。鍵盤分為:獨立式和矩陣式兩類,每一類按其編碼方法又可以分為編碼和非編碼兩種。本系統具有人機對話功能,該功能即能随時發出各種控制指令和資料輸入以及和LCD連接配接顯示運作狀态和運作結果。由于本系統隻有UP、DOWN、OK、CANCEL4個控制指令,所需按鍵較少,是以本系統選擇獨立式按鍵[13]。電路圖見圖2.8。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.8 按鍵電路圖

2.6外圍擴充存儲器的簡介

由于考慮STC89C52單片機具有8KB的程式存儲器(ROM),256B的資料存儲器(RAM),由于考慮到本系統的資料處理與存儲所需的容量,現在需要擴充存儲器的容量。在應用中要儲存一些參數和狀态,本系統選用AT24C128存儲器[8]。電路圖見圖2.9。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.9 外圍擴充存儲電路圖

2.7上拉電阻電路的設計

在主電路圖中接在P0口處有一個排阻RP1,由于P0口沒有内接上拉電阻,為了為P0口外接線路有确定的高電平,是以要接上排阻RP1,以確定有P0口有穩定的電平[11]。電路連接配接圖見圖2.10。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.10 上拉電阻電路圖

2.8液晶顯示器簡介

我們選用了AMPIRE128X64液晶顯示子產品,是由于本系統要有顯示裝置完成顯示功能,顯示器最好能夠顯示資料、圖形,考慮到同種LCD顯示器的螢幕越大體積越大,功耗越大的特點,該型号顯示器消耗電量比較低,可以滿足系統要求。該類液晶顯示子產品采用動态的液晶驅動,可用5V供電。AMPIRE128X64液晶共有22個引腳[9]。

AMPIRE128X64液晶顯示子產品與計算機的接口電路有兩種方式。分為直接通路方式和間接控制方式。直接通路方式是把液晶子產品作為存儲器或I/O裝置直接接在單片機的總線上,單片機以通路存儲器或I/O裝置的方式操作液晶顯示子產品的工作。間接控制方式則不使用單片機的資料系統,而是利用它的I/O口來實與顯示子產品的聯系。即将液晶顯示子產品的資料線與單片機的Pl口連接配接作為資料總線,另外三根時序控制信号線通常利用單片機的P3口中未被使用的I/O口來控制。這種通路方式不占用存儲器空間,它的接口電路與時序無關,其時序完全靠軟體程式設計實作。本系統采用間接控制方式[14]。液晶顯示電路連接配接原理圖見圖下:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖2.11 液晶顯示器電路圖

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

2.9報警電路的設計

報警信号通常有三種類型:一是閃光報警,因為閃動的訓示燈更能提醒人們注意;二是鳴音報警,發出特定的音響,作用于人的聽覺器官,易于引起和加強警覺;三是語音報警,不僅能起到報警作用,還能直接給出警報種類的資訊。其中,前兩種報警裝置因硬體結構簡單,軟體程式設計友善,常常在單片機應用系統中使用;而語音報警雖然警報資訊較直接,但硬體成本高,結構較複雜。單頻音報警實作單頻音報警的接口電路比較簡單,其發音元件通常可采用壓電蜂鳴器,當在蜂鳴器兩引腳上加3~15V直流工作電壓,就能産生3kHZ左右的蜂鳴振蕩音響。壓電式蜂鳴器,約需10mA的驅動電流,可在某端口接上一隻三極管和電阻組成的驅動電路來驅動,如圖2.12所示。在圖2.12中,P1.0接三極管基極輸入端,當P1.0輸出高電平“1”時,三極管導通,蜂鳴器的通電而發音,當P1.0輸出低電平“0”時,三極管截止,蜂鳴器停止發音[12]。

3.1軟體設計結構

軟體設計部分主要包括:主程式/子程式流程的設計、功能子產品程式的編寫、軟/硬體結合調試與示範。主要包括以下功能子產品:51驅動、檢測、液晶顯示、時鐘、鍵盤、模數軟換[10],軟體結構框圖3.1。    

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖3.1 軟體結構框圖

3.2主程式子產品的設計

主程式實作的功能:與硬體相結合實作便攜式一氧化碳檢測儀的各個功能。主要是檢測與顯示,時間調整與顯示,資料存儲,功能子函數的調用,見圖3.2。

檢測主程式程式見附錄A2。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖3.2 主程式流程圖

3.3模數轉換的設計

ADC0832轉換的流程圖見下圖3.3;

ADC0832程式見附錄A3。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖3.3 數轉換流程圖

3.4按鍵子產品的設計和時鐘子產品的設計

按鍵查詢式的流程圖見下圖,按鍵程式見附錄A4。

時鐘子產品操作流程圖見下圖,時鐘程式見附錄A5。

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖3.5 時鐘子產品操作流程圖

3.5液晶顯示子產品的設計

LCD子產品在本系統中主要起着開界面漢字顯示,以及各控制效果的顯示。采用直接通路方式。液晶顯示的操作流程圖見下圖3.6,液晶程式見附錄A6。

系統調試及功能實作

4.1總體系統調試

4.1.1軟體調試

打開keil軟體,打開程式,檢查後單擊編譯按鍵,如果未發現錯誤和警告則說明程式能夠正常運作。

編譯結果如圖所示:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

圖4.1 軟體編譯結果圖

是以程式能夠正常運作。

4.1.2 軟體下載下傳

通過序列槽将電腦中已經編寫好的程式傳輸入51單片機中,打開電源,檢查各子產品是否正常工作。

首先将STC_ISP_V483這個序列槽通信軟體打開,選擇打開程式檔案選項,找到需要錄入單片機的hex檔案,選擇下載下傳選項,點選後給單片機上電複位,等待資訊框中顯示已下載下傳成功,說明程式已經錄入單片機。接下來首先通過按鍵選擇工作模式,然後根據傳感器子產品的類型将相應的氣體放置在傳感器探頭附近,等待聲光報警子產品工作,當報警子產品工作後,通過按下外部中斷按鍵選擇報警模式,按一下則led二極管關閉,按第二下則蜂鳴器關閉,按第三下則led和蜂鳴器都打開。将三個傳感器子產品都檢查完畢後,按下複位鍵,并關閉電源。通過監測總體系統能夠正常工作。

4.2 實物展示

焊接成品如下圖4.2所示:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

4.2 焊接成品圖

在焊接過程中,本設計采用萬能闆來焊接,同時外接電源采用的是USB供電。

接通電源初始圖如4.3所示 :

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

4.3 接通電源初始圖

在電源剛接通時,液晶屏顯示目前CO濃度為000 PM,設定的界限值為100 PM,風扇處于未轉動狀态,發光二極管未亮并且蜂鳴器不報警。

系統工作時如圖4.4所示:

基于單片機的CO濃度檢測及報警系統設計(電路+程式流程)

4.4 工作實物圖

當CO傳感器檢測到的CO濃度大于國家标準值100ppm時,蜂鳴器報警同時紅色訓示燈發光、風扇轉動。

結論

繼續閱讀