一、 設(shè)計(jì)意義
二、 硬件設(shè)計(jì)
1、設(shè)計(jì)框圖
2、乙醇信號(hào)檢測及調(diào)理電路
3、單片機(jī)電路
4、顯示電路
5、供電及程序下載電路
三、 Protel硬件開發(fā)軟件
1.Protel軟件組成
2.PCB板設(shè)計(jì)
四、 軟件編程
1、軟件流程圖
2、主程序
五、 下載與調(diào)試
1、 USB轉(zhuǎn)串口驅(qū)動(dòng)安裝
2、 下載程序
參考文獻(xiàn)
程序
一、 設(shè)計(jì)意義自《道路交通安全法》正式實(shí)施,“醉酒駕駛”正式入刑。不僅交警部門,而且很多車主都期盼能夠有便攜儀器方便地測量氣體酒精濃度,為安全駕駛提供保障,有效減少重大交通事故的發(fā)生。 本研究設(shè)計(jì)的酒精濃度測試儀是一款實(shí)用性強(qiáng)、安全可靠的氣體乙醇濃度檢測工具,采用高精度MQ-3乙醇?xì)怏w傳感器對(duì)空氣中的乙醇濃度進(jìn)行檢測,利用宏晶公司高性能低成本單片機(jī)STC89C52對(duì)檢測信號(hào)進(jìn)行A/D轉(zhuǎn)換和處理,最后通過液晶屏顯示輸出。本研究設(shè)計(jì)的酒精濃度測試儀還具有醉酒閾值設(shè)定功能,可以根據(jù)法律法規(guī)或用戶需要設(shè)定修改醉酒閾值,并進(jìn)行保存。 二、 硬件設(shè)計(jì)
1、設(shè)計(jì)框圖本研究設(shè)計(jì)的酒精濃度測試儀框圖如圖1所示。MQ-3乙醇?xì)怏w傳感器輸出信號(hào)經(jīng)信號(hào)調(diào)理電路處理,輸出隨乙醇濃度變化的電壓信號(hào),該電壓信號(hào)送入單片機(jī)系統(tǒng),經(jīng)AD轉(zhuǎn)換,與設(shè)定的醉酒閾值進(jìn)行比較,并顯示或報(bào)警。 圖1 酒精濃度測試儀方框圖 2、乙醇信號(hào)檢測及調(diào)理電路MQ-3乙醇?xì)怏w傳感器可以應(yīng)用用于機(jī)動(dòng)車駕駛?cè)藛T及其他嚴(yán)禁酒后作業(yè)人員的現(xiàn)場檢測,也用于其他場所乙醇蒸汽的檢測。其技術(shù)特點(diǎn)為: - 對(duì)乙醇蒸汽有很高的靈敏度和良好的選擇性
- 快速的響應(yīng)恢復(fù)特性
- 長期的壽命和可靠的穩(wěn)定性
- 簡單的驅(qū)動(dòng)回路
主要技術(shù)指標(biāo): MQ-3乙醇?xì)怏w傳感器靈敏度曲線如圖2所示,其傳感原理為氣敏電阻的輸出阻值隨乙醇?xì)怏w等濃度變化而變化。 圖2 MQ-3乙醇?xì)怏w傳感器靈敏度曲線 MQ-3乙醇?xì)怏w傳感器管腳與測試電路如圖3所示。 (a) 管腳圖 (b) 測試電路 圖3 MQ-3乙醇?xì)怏w傳感器管腳及測試電路 MQ-3乙醇?xì)怏w傳感器及其調(diào)理電路原理如圖4所示。其外形如圖5所示。經(jīng)過調(diào)理,檢測信號(hào)由電阻值轉(zhuǎn)變成電壓值,便于后續(xù)電路進(jìn)行A/D轉(zhuǎn)換和處理。 圖4 傳感器及調(diào)理模塊原理圖 該傳感器模塊具有如下特點(diǎn),方便與單片機(jī)系統(tǒng)接口組成檢測儀器。 - 具有信號(hào)輸出指示。
- 雙路信號(hào)輸出(模擬量輸出及TTL電平輸出)
- TTL輸出有效信號(hào)為低電平。
(當(dāng)輸出低電平時(shí)信號(hào)燈亮,可直接接單片機(jī)) 3、單片機(jī)電路本設(shè)計(jì)選用宏晶公司高性能單片機(jī)STC89C52,其管腳如圖6所示。 圖6 STC89C52單片機(jī)管腳圖 該芯片為52內(nèi)核8位單片機(jī),適用于常用檢測電路。由STC89C52組成的單片機(jī)系統(tǒng)原理圖如圖7所示。圖中AOUT為MQ-3傳感器模塊輸出的檢測電壓信號(hào),送入ADC0832采集芯片端口進(jìn)行處理,該信號(hào)可以根據(jù)乙醇?xì)怏w濃度直接輸出報(bào)警信號(hào),報(bào)警閾值通過模塊上的電位器進(jìn)行調(diào)節(jié)。 圖7 單片機(jī)系統(tǒng)原理圖 圖7中,按鍵K2和K3為醉酒閾值調(diào)整鍵,其中K2為“增加”,K3為“減小”按鍵。L2和L3為報(bào)警指示燈,分別可以進(jìn)行酒后和醉酒兩級(jí)報(bào)警。 4、顯示電路顯示部分采用SMC 1602液晶屏進(jìn)行數(shù)據(jù)顯示,其主要技術(shù)參數(shù)為: 表1 液晶屏技術(shù)指標(biāo) 接口信號(hào)說明如表2所示。 表2 液晶屏接口信號(hào)說明 與單片機(jī)接口電路如圖8所示。其中J2的3腳為背光引腳,R9和R10電阻用于調(diào)節(jié)背光亮度。J2的4、5、6引腳分別接液晶的RS、E/W和E控制引腳,J2的7—14引腳為數(shù)據(jù)引腳。 圖8 LCD與單片機(jī)接口電路 5、供電及程序下載電路本設(shè)計(jì)采用電池盒接口供電,電源電壓5V。同時(shí),其電路原理如圖10所示。 圖10 供電及程序下載電路 三、 Protel硬件開發(fā)軟件Protel是目前國內(nèi)最流行的通用EDA軟件,它是將電路原理圖設(shè)計(jì)、PCB板圖設(shè)計(jì)、電路仿真和PLD設(shè)計(jì)等多個(gè)實(shí)用工具軟件組合后構(gòu)成的EDA工作平臺(tái),是第一個(gè)將EDA軟件設(shè)計(jì)成基于Windows的普及型產(chǎn)品。它集成了軟件界面、仿真功能和PLD設(shè)計(jì)和信號(hào)完整性分析,在此基礎(chǔ)上Protel 99SE又增加了一些新的功能,用戶使用更加方便靈活。Protel的功能十分強(qiáng)大,在電子電路設(shè)計(jì)領(lǐng)域占有極其重要的地位。它以其強(qiáng)大功能和實(shí)用性,逐漸獲得廣大硬件設(shè)計(jì)人員的青睞,是目前眾多EDA設(shè)計(jì)軟件中用戶最多的產(chǎn)品之一。 1.Protel軟件組成Protel軟件主要由電路原理圖設(shè)計(jì)模塊、印制電路板設(shè)計(jì)模塊(PCB設(shè)計(jì)模塊)、電路信號(hào)仿真模塊和PLD邏輯器件設(shè)計(jì)模塊等組成,各模塊具有強(qiáng)大的功能,可以很好的實(shí)現(xiàn)電路設(shè)計(jì)與分析。 (1) 原理圖設(shè)計(jì)模塊(Schematic模塊) 電路原理圖是表示電氣產(chǎn)品或電路工作原理的重要技術(shù)文件,電路原理圖主要由代表各種電子器件的圖形符號(hào)、線路和結(jié)點(diǎn)組成。圖4.1所示為一張電路原理圖。該原理圖是由Schematic模塊設(shè)計(jì)完成的。Schematic模塊具有如下功能:豐富而靈活的編輯功能、在線庫編輯及完善的庫管理功能、強(qiáng)大的設(shè)計(jì)自動(dòng)化功能、支持層次化設(shè)計(jì)功能等。 (2) 印制電路板設(shè)計(jì)模塊(PCB設(shè)計(jì)模塊) 印制電路板(PCB)制板圖是由電路原理圖到制作電路板的橋梁。設(shè)計(jì)了電路原理圖后,需要根據(jù)原理圖生設(shè)計(jì)成印制電路板的制板圖,然后在根據(jù)制板圖制作具體的電路板。印制電路板設(shè)計(jì)模塊具有如下主要功能和特點(diǎn):可完成復(fù)雜印制電路板(PCB)的設(shè)計(jì);方便而又靈活的編輯功能;強(qiáng)大的設(shè)計(jì)自動(dòng)化功能;在線式庫編輯及完善的庫管理;完備的輸出系統(tǒng)等。 (3) 電路信號(hào)仿真模塊 電路信號(hào)仿真模塊是一個(gè)功能強(qiáng)大的數(shù)字/模擬混合信號(hào)電路仿真器,能提供連續(xù)的模擬信號(hào)和離散的數(shù)字信號(hào)仿真。它運(yùn)行在Protel的EDA/Client集成環(huán)境下,與Protel Advanced Schematic原理圖輸入程序協(xié)同工作,作為Advanced Schematic的擴(kuò)展,為用戶提供了一個(gè)完整的從設(shè)計(jì)到驗(yàn)證仿真設(shè)計(jì)環(huán)境。 在Protel中進(jìn)行仿真,只需從仿真用元器件庫中放置所需的元器件,連接好原理圖,加上激勵(lì)源,然后單擊防真按鈕即可自動(dòng)開始。 2.PCB板設(shè)計(jì)(1) 定元件的封裝 ① 打開網(wǎng)絡(luò)表(可以利用一些編輯器輔助編輯),將所有封裝瀏覽一遍,確保所有元件的封裝都正確無誤并且元件庫中包含所有元件的封裝,網(wǎng)絡(luò)表中所有信息全部大寫,一面載入出問題,或PCB BOM不連續(xù)。 ② 標(biāo)準(zhǔn)元件全部采用公司統(tǒng)一元件庫中的封裝。 ③ ④⑥⑤元件庫中不存在的封裝,應(yīng)自己建立元器件庫。 (2) 建立PCB板框 ① 根據(jù)PCB結(jié)構(gòu)圖,或相應(yīng)的模板建立PCB文件,包括安裝孔、禁布區(qū)等相關(guān)信息。 ② 尺寸標(biāo)注。在鉆孔層中應(yīng)標(biāo)明PCB的精確結(jié)構(gòu),且不可以形成封閉尺寸標(biāo)注。 (3) 載入網(wǎng)絡(luò)表 ① 載入網(wǎng)表并排除所有載入問題,具體請看《PROTEL技術(shù)大全》。其他軟件載入問題有很多相似之處,可以借鑒。 ② 如果使用PROTEL,網(wǎng)表須載入兩次以上(沒有任何提示信息)才可以確認(rèn)載入無誤。 (4) 布局 ① 首先要確定參考點(diǎn)。 一般參考點(diǎn)都設(shè)置在左邊和底邊的邊框線的交點(diǎn)(或延長線的交點(diǎn))上或印制板的插件的第一個(gè)焊盤。 ② 一但參考點(diǎn)確定以后,元件布局、布線均以此參考點(diǎn)為準(zhǔn)。布局推薦使用25MIL網(wǎng)格。 ③ 根據(jù)要求先將所有有定位要求的元件固定并鎖定。 ④ 布局的基本原則 A. 遵循先難后易、先大后小的原則。 B. 布局可以參考硬件工程師提供的原理圖和大致的布局,根據(jù)信號(hào)流向規(guī)律放置主要原器件。 C. 總的連線盡可能的短,關(guān)鍵信號(hào)線最短。 D. 強(qiáng)信號(hào)、弱信號(hào)、高電壓信號(hào)和弱電壓信號(hào)要完全分開。 E. 高頻元件間隔要充分。 F. 模擬信號(hào)、數(shù)字信號(hào)分開。 ⑤ 相同結(jié)構(gòu)電路部分應(yīng)盡可能采取對(duì)稱布局。 ⑥ 按照均勻分布、重心平衡、版面美觀的標(biāo)準(zhǔn)來優(yōu)化布局。 (5) PCB設(shè)計(jì)遵循的規(guī)則 ① 地線回路規(guī)則: 
圖11 地線回路規(guī)則 環(huán)路最小規(guī)則,即信號(hào)線與其回路構(gòu)成的環(huán)面積要盡可能小,環(huán)面積要盡可能小,環(huán)面積越小,對(duì)外的輻射越少,接收外界的干擾也越小。針對(duì)這一規(guī)則,在地平面分割時(shí),要考慮到地平面與重要信號(hào)走線的分布,防止由于地平面開槽等帶來的問題;在雙層板設(shè)計(jì)中,在為電源留下足夠空間的情況下,應(yīng)該將留下的部分用參考地填充,且增加一些必要的過孔,將雙面信號(hào)有效連接起來,對(duì)一些關(guān)鍵信號(hào)盡量采用地線隔離,對(duì)一些頻率較高的設(shè)計(jì),需特別考慮其地平面信號(hào)回路問題,建議采用多層板為宜。 ② 竄擾控制 竄擾(CrossTalk)是指PCB上不同網(wǎng)絡(luò)之間因較長的平行布線引起的相互干擾,主要是由于平行線間的分布電容和分布電感的作用?朔Z擾的主要措施是: A.加大平行布線的間距,遵循3W規(guī)則。 B.在平行線間插入接地的隔離線。 C.減少布線層與地平面的距離 ③屏蔽保護(hù) 
圖12 屏蔽保護(hù) 對(duì)應(yīng)地線回路規(guī)則,實(shí)際上也是為了盡量減小信號(hào)的回路面積,多用于一些比較重要的信號(hào),如時(shí)鐘信號(hào),同步信號(hào);對(duì)一些特別重要,頻率特別高的信號(hào),應(yīng)該考慮采用銅軸電纜屏蔽結(jié)構(gòu)設(shè)計(jì),即將所布的線上下左右用地線隔離,而且還要考慮好如何有效的讓屏蔽地與實(shí)際地平面有效結(jié)合。 ④ 走線方向控制規(guī)則 相鄰層的走線方向成正交結(jié)構(gòu),避免將不同的信號(hào)線在相鄰層走成同一方向,以減少不必要的層間竄擾;當(dāng)由于板結(jié)構(gòu)限制(如某些背板)難以避免出現(xiàn)該情況,特別是信號(hào)速率較高時(shí),應(yīng)考慮用地平面隔離各布線層,用地信號(hào)線隔離各信號(hào)線。 ⑤ 電源與地線層的完整性規(guī)則 對(duì)于導(dǎo)通孔密集的區(qū)域,要注意避免孔在電源和地層的挖空區(qū)域相互連接,形成對(duì)平面層的分割,從而破壞平面層的完整性,并進(jìn)而導(dǎo)致信號(hào)線在地層 的回路面積增大。 四、 軟件編程1、軟件流程圖本設(shè)計(jì)軟件主程序流程圖如圖13所示。 圖13 主程序流程圖 2、主程序 下面介紹main.c主程序編寫,其他程序略。
五、 下載與調(diào)試當(dāng)程序在uVision環(huán)境下編寫完成,并編譯生成.hex文件后,就可以下載并進(jìn)行調(diào)試了。 1、 USB轉(zhuǎn)串口驅(qū)動(dòng)安裝打開USB驅(qū)動(dòng)文件夾下的PL2303_Prolific_DriverInstaller_v130.exe安裝文件,按提示安裝USB轉(zhuǎn)串口驅(qū)動(dòng)程序。安裝完成后,插入U(xiǎn)SB下載線后,在[開始]-[控制面板]-[打印機(jī)和其他硬件]-[設(shè)備管理器],在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表示串口號(hào),如果沒有說明USB轉(zhuǎn)串口驅(qū)動(dòng)沒有安裝,須重新安裝。記住括號(hào)里的COM口號(hào)。 圖14 成功安裝USB轉(zhuǎn)串口驅(qū)動(dòng)示意圖 2、 下載程序打開STC單片機(jī)下載軟件文件夾,點(diǎn)擊運(yùn)行STC_ISP_V481.exe程序,出現(xiàn)如下界面。 圖15 下載軟件 正確選擇MCU 類型,COM口(與剛才安裝的COM號(hào)一致),最高波特率和最低波特率都選2400bps或者1200bps (下載線內(nèi)PL2303芯片所限,沒辦法。,并打開正確的.hex數(shù)據(jù)文件。 點(diǎn)擊“Download/下載”按紐,窗口出現(xiàn)提示: Chinese:正在嘗試與 MCU/單片機(jī) 握手連接 ... Connection is failure. You can try: 1.Give your MCU Power On Reset. 2.Stop operation, then re-select COM Port. 3.Because PLCC-DIP/PQFP-DIP Socket trace too long. 4.Update the STC ISP.exe version. 5.If still error, your MCU Firmware is error or null. Chinese:連接失敗,請嘗試以下操作: 1.在單片機(jī)停電狀態(tài)下,點(diǎn)下載按鈕,再給單片機(jī)上電 2.停止下載,重新選擇 RS-232 串口, 接好電纜 3.可能需要先將 P1.0/P1.1 短接到地 4.可能外部時(shí)鐘未接 5.因 PLCC、PQFP 轉(zhuǎn)換座引線過長而引起時(shí)鐘不振蕩,請 調(diào)整參數(shù) 6.可能要升級(jí)電腦端的 STC ISP.exe 軟件 7.若仍然不成功,可能 MCU/單片機(jī)內(nèi)無 ISP 系統(tǒng)引導(dǎo)碼, 或需退回升級(jí),或 MCU 已損壞 8.若使用 USB 轉(zhuǎn) RS-232 串口線下載,可能會(huì)遇到不兼容 的問題,可以讓我們幫助購買兼容的 USB 轉(zhuǎn) RS-232 串口線
仍在連接中, 請給 MCU 上電...
按下電路板上的電源按紐,保證其有個(gè)失電至上電的過程,則窗口顯示開始燒錄芯片。 芯片燒錄成功后,程序開始運(yùn)行,酒精濃度測試儀正常工作。
單片機(jī)源碼:
- #include <reg52.h> //調(diào)用單片機(jī)頭文件
- #define uchar unsigned char //無符號(hào)字符型 宏定義 變量范圍0~255
- #define uint unsigned int //無符號(hào)整型 宏定義 變量范圍0~65535
- #include <intrins.h>
- //#include "lcd1602.h"
- sbit CS=P2^4; //CS定義為P2口的第4位腳,連接ADC0832CS腳
- sbit SCL=P2^3; //SCL定義為P2口的第3位腳,連接ADC0832SCL腳
- sbit DO=P2^2; //DO定義為P2口的第4位腳,連接ADC0832DO腳
- sbit beep = P3^2; //蜂鳴器IO口定義
- long dengji,s_dengji = 50; //酒精等級(jí)
- bit flag_300ms ;
- uchar key_can; //按鍵值的變量
- uchar menu_1; //菜單設(shè)計(jì)的變量
- uchar flag_clock;
- #include "eeprom52.h"
- #include "lcd1602.h"
- /***********************1ms延時(shí)函數(shù)*****************************/
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<120;j++);
- }
- /******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eeprom中******************/
- void write_eeprom()
- {
- SectorErase(0x2000);
- // byte_write(0x2000, s_dengji);
- byte_write(0x2001, s_dengji);
- byte_write(0x2060, a_a);
- }
- /******************把數(shù)據(jù)從單片機(jī)內(nèi)部eeprom中讀出來*****************/
- void read_eeprom()
- {
- // s_dengji = byte_read(0x2000);
- s_dengji = byte_read(0x2001);
- a_a = byte_read(0x2060);
- }
- /**************開機(jī)自檢eeprom初始化*****************/
- void init_eeprom()
- {
- read_eeprom(); //先讀
- if(a_a != 2) //新的單片機(jī)初始單片機(jī)內(nèi)問eeprom
- {
- s_dengji = 80;
- a_a = 2;
- write_eeprom();
- }
- }
- /***********讀數(shù)模轉(zhuǎn)換數(shù)據(jù)********************************************************/
- //請先了解ADC0832模數(shù)轉(zhuǎn)換的串行協(xié)議,再來讀本函數(shù),主要是對(duì)應(yīng)時(shí)序圖來理解,本函數(shù)是模擬0832的串行協(xié)議進(jìn)行的
- // 1 0 0 通道
- // 1 1 1 通道
- unsigned char ad0832read(bit SGL,bit ODD)
- {
- unsigned char i=0,value=0,value1=0;
- SCL=0;
- DO=1;
- CS=0; //開始
- SCL=1; //第一個(gè)上升沿
- SCL=0;
- DO=SGL;
- SCL=1; //第二個(gè)上升沿
- SCL=0;
- DO=ODD;
- SCL=1; //第三個(gè)上升沿
- SCL=0; //第三個(gè)下降沿
- DO=1;
- for(i=0;i<8;i++)
- {
- SCL=1;
- SCL=0; //開始從第四個(gè)下降沿接收數(shù)據(jù)
- value<<=1;
- if(DO)
- value++;
- }
- for(i=0;i<8;i++)
- { //接收校驗(yàn)數(shù)據(jù)
- value1>>=1;
- if(DO)
- value1+=0x80;
- SCL=1;
- SCL=0;
- }
- CS=1;
- SCL=1;
- if(value==value1) //與校驗(yàn)數(shù)據(jù)比較,正確就返回?cái)?shù)據(jù),否則返回0
- return value;
- return 0;
- }
- /*************定時(shí)器0初始化程序***************/
- void time_init()
- {
- EA = 1; //開總中斷
- TMOD = 0X01; //定時(shí)器0、定時(shí)器1工作方式1
- ET0 = 1; //開定時(shí)器0中斷
- TR0 = 1; //允許定時(shí)器0定時(shí)
- }
- /****************按鍵處理顯示函數(shù)***************/
- void key_with()
- {
- if(key_can == 1)
- {
- s_dengji ++ ; //酒精濃度設(shè)置數(shù)加1
- if(s_dengji > 999)
- s_dengji = 999;
- }
- if(key_can == 2)
- {
- s_dengji -= 1; //酒精濃度設(shè)置數(shù)減1
- if(s_dengji <= 1)
- s_dengji = 1 ;
- }
- write_sfm2(2,9,s_dengji); //顯示酒精等級(jí)
- write_eeprom(); //保存數(shù)據(jù)
-
- }
- /********************獨(dú)立按鍵程序*****************/
- uchar key_can; //按鍵值
- void key() //獨(dú)立按鍵程序
- {
- static uchar key_new;
- key_can = 20; //按鍵值還原
- P1 |= 0x0f;
- if((P1 & 0x0f) != 0x0f) //按鍵按下
- {
- delay_1ms(1); //按鍵消抖動(dòng)
- if(((P1 & 0x0f) != 0x0f) && (key_new == 1))
- { //確認(rèn)是按鍵按下
- key_new = 0;
- switch(P1 & 0x0f)
- {
- case 0x0b: key_can = 2; break; //得到k3鍵值
- case 0x07: key_can = 1; break; //得到k4鍵值
- }
- }
- }
- else
- key_new = 1;
- }
- /****************報(bào)警函數(shù)***************/
- void clock_h_l()
- {
- static uchar value;
- if(dengji >= s_dengji ) //報(bào)警
- {
- value ++;
- if(value >= 2)
- {
- value = 10;
- beep = ~beep; //蜂鳴器報(bào)警
- }
- }else
- {
- if(dengji < s_dengji) //取消報(bào)警
- {
- value = 0;
- beep = 1;
- }
- }
- }
- /***************主函數(shù)*****************/
- void main()
- {
- beep = 0; //開機(jī)叫一聲
- delay_1ms(150);
- P0 = P1 = P2 = P3 = 0xff; //單片機(jī)IO口初始化為1
- init_eeprom(); //讀eeprom數(shù)據(jù)
- time_init(); //初始化定時(shí)器
- init_1602();
- while(1)
- {
- key(); //獨(dú)立按鍵程序
- if(key_can < 10)
- {
- key_with(); //按鍵按下要執(zhí)行的程序
- }
- if(flag_300ms == 1)
- {
- flag_300ms = 0;
- clock_h_l(); //報(bào)警函數(shù)
- dengji = ad0832read(1,0);
- dengji = dengji * 450 / 255.0;
- dengji = dengji - 130; //首先減去零點(diǎn)漂移,一般是1V
- if(dengji < 0)
- dengji = 0;
- dengji = dengji * 2; //將mV轉(zhuǎn)變成mg/L,系數(shù)需要校準(zhǔn)
- //電壓每升高0.1V,實(shí)際被測氣體的濃度增加20ppm
- //1ppm=1mg/kg=1mg/L=1×10-6 常用來表示氣體濃度,或者溶液濃度。
- write_sfm2(1,9,dengji); //顯示酒精濃度
- }
- }
- }
- /*************定時(shí)器0中斷服務(wù)程序***************/
- void time0_int() interrupt 1
- {
- static uchar value;
- TH0 = 0x3c;
- TL0 = 0xb0; // 50ms
- value ++;
- if(value % 6 == 0)
- {
- flag_300ms = 1; //300ms
- value = 0;
- }
- }
復(fù)制代碼
以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便保存):
酒精濃度測試儀.doc
(954.52 KB, 下載次數(shù): 316)
2018-5-22 10:22 上傳
點(diǎn)擊文件名下載附件
酒精濃度檢測 - 硬件電路.pdf
(197.55 KB, 下載次數(shù): 212)
2018-5-22 10:16 上傳
點(diǎn)擊文件名下載附件
缺少頭文件,無法編譯大家能修正一下嗎
|