基于單片機的酒精濃度測試的設計與研究設計說明_第1頁
基于單片機的酒精濃度測試的設計與研究設計說明_第2頁
基于單片機的酒精濃度測試的設計與研究設計說明_第3頁
基于單片機的酒精濃度測試的設計與研究設計說明_第4頁
基于單片機的酒精濃度測試的設計與研究設計說明_第5頁
已閱讀5頁,還剩37頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、畢 業 設 計設計題目:基于單片機的酒精濃度測試的設計與研究系 別:信息工程系 班 級:電子信息工程 基于單片機的酒精濃度測試的設計與研究摘 要對于人體酒精濃度的高低的判斷主要依據于人酒后所呼出的氣體中酒精濃度的高低做出適當的判斷。隨著經濟的發展,人民生活水平的提高,酒后駕駛所造成的交通事故頻頻發生。為防止此類事故的發生,交通執法者檢測駕駛員是否酒后駕駛尤為重要。本文設計了一個基于單片機的酒精濃度檢測報警系統,單片機作為主控芯片。MQK2酒精傳感器將檢測到的信息發送至芯片和設定的閾值比較后判斷是否報警,若報警GSM模塊實現了將報警信號發送至手機端,同時在液晶顯示屏上顯示測量結果。本次設計的檢測

2、裝置將89c51作為主要控制芯片、MQ302A 酒精傳感器、AD0804 轉換器、AT89C51 單片機控制器、聲光報警、LCD1602 顯示器、GSM模塊等構成 。文中對酒精濃度檢測的原理做出具體的分析和設計方案,對各個子模塊進行了論證和比較。硬件設計采用Protel DXP軟件,完成了各個模塊的原理圖設計。軟件設計采用KeilB編程軟件,實現了對酒精濃度信號處理過程的編程和調試。關鍵字:單片機 酒精濃度傳感器 LCD1602 GSM模塊 聲光報警Design And Research Of The Alcohol Concentration Test Based On MCUAbstrac

3、tMake a proper judgment on the alcohol concentration of alcohol concentration to determine the main basis to drunk the exhaled gas in the level of. With the development of economy, people's living standards improve, drunken driving caused by traffic accidents happen frequently. To prevent this k

4、ind of accident, traffic law enforcement detect whether the driver drunk driving is particularly important.This paper describes the design of an alarm system for detecting alcohol concentration based on single-chip microcomputer, microcontroller as the main control chip. MQK2 alcohol sensor will det

5、ect the information sent to the chip and the set threshold comparison to determine whether the alarm, the alarm GSM module to achieve the alarm signal will be sent to the mobile phone terminal, at the same time, the measured results are displayed on the LCD screen.The detection device design will fo

6、rm the 89C51 as the main control chip, MQ302A alcohol sensor, AD0804 converter, AT89C51 controller, alarm, LCD1602 display, GSM module etc. Principle of alcohol concentration detection in this paper makes the analysis and the specific design of each module, are discussed and compared. The hardware d

7、esign using Protel DXP software, completed the design of each module principle diagram. Software design using Keil uVision2, the realization of signal processing of alcohol concentration during programming and debugging.Keywords: SCM alcohol concentration sensor LCD1602 GSM module sound-light alarm目

8、 錄1 引言12 系統總體方案設計22.1 總體設計思路分析22.2 總體設計框圖分析23 系統硬件設計43.1STC89C5A60S2單片機電路設計43.1.1.STC89C5A60S2單片機特性概述43.1.2 STC89C5A60S2引腳功能43.1.3 晶振電路53.1.4 復位電路63.2 酒精濃度模塊設計73.2.1 酒精濃度傳感器MQ3的特點73.2.2 A/D 轉換電路83.2.3 MAX3232電路93.3 液晶顯示器LCD160293.3.1 LCD1602介紹93.3.2 系統LCD1602顯示說明103.4通信模塊設計113.4.1 GSM模塊介紹123.5 按鍵鍵盤設

9、計123.5.1按鍵鍵盤說明123.5.2 按鍵電路設計123.6 報警電路設計123.6.1蜂鳴器說明123.6.2發光二極管說明133.6.3聲光報警電路134 系統軟件設計144.1 軟件設計概述144.1.1 Keil軟件介紹144.2 系統軟件設計144.2.1 主程序流程圖144.2.2 酒精濃度檢測子程序154.2.3 LCD顯示子程序154.2.4 無線通信子程序164.2.5 報警子程序204.2.5 串行口子程序215 硬件焊接與調試235.1 概要說明235.1.1硬件焊接235.1.2 軟件調試235.1.3 軟硬聯調235.2 調試中出現的問題與解決方法246 結論2

10、5辭26參考文獻27附錄2837 / 421 引言近年來,隨著我國經濟的高速發展,人民的生活水平迅速提高,越來越多的人有了私家車,伴隨而來的酒后駕車造成的交通事故也頻頻發生。酒后駕車引起的交通事故是由于司機的過量飲酒造成人體酒精濃度過高,麻痹神經,造成大腦反應遲緩,肢體不受控制等造成的。多年前交通管理者判定駕駛人員是否有飲酒只能靠主觀判斷、肉眼的觀察和去醫院進行血液中酒精含量的檢測,這些不科學不與時的方法造成了很多不必要的誤會和麻煩;而現在伴隨著科技的發展酒精濃度測試儀已經基本裝備了交通管理者的隊伍。為此,需要設計一款便攜式儀器能夠監測駕駛員體酒精含量。本畢業設計通過對酒精濃度測試的研究和設計

11、,使學生認識了解單片機對數據采集分析的過程、方法與步驟,提高并鞏固學生所學的理論知識,結合課題的需要提高學生獲取新知識的能力。使學生能掌握單片機基本使用方法。力求使學生在收集資料,查閱文獻,調查研究,方案設計,外文應用,計算機處理,撰文論證,文字表達等方面加強訓練,實現所學知識向能力的轉化。能夠熟練使用設計所依賴的開發平臺。本文所述酒精濃度測試儀采用MQK2酒精濃度傳感器檢測人呼出氣體中酒精的濃度并且輸出電壓信號,然后把信號輸出到高集成度的混合集成芯片C8051F040作處理,并完成數據采集、判斷處理、數據的傳輸等功能。測試儀進行氣體測試的基本步驟是:單片機采集酒精傳感器的響應信號,并且進行轉

12、換,儲存在數據存儲器(SRAM)中,然后單片機進行氣體濃度的識別,并且將結果輸出到液晶顯示屏上,同時可發出濃度閾值的光(聲)警報信號也可通過網絡將警報發送至手機。2 系統總體方案設計2.1 總體設計思路分析本文所述的酒精濃度測試儀分為硬件部分和軟件部分。其中硬件部分利用MQ3氣敏傳感器采集空氣中酒精的濃度,并轉換為電壓信號經 A/D 轉換后傳給單片機系統,由單片機與其外圍電路進行信號的處理,顯示濃度值以與超閾值聲光報警;并且將報警信號經過GSM模塊發送至所設定的手機。軟件設計采用C語言編程,程序采用模塊化設計思想。各個子程序的功能相對獨立,便于調試和修改。而硬件電路又大體可分為單片機小系統電路

13、、A/D 轉換電路、聲光報警電路、LED顯示電路,GSM模塊電路,各部分電路的設計與原理將會在硬件電路設計部分詳細介紹;程序的設計使C語言編程。2.2 總體設計框圖分析本文的總體設計框圖如下:酒精傳感器顯示語音報警A/D轉換單片機GSM模塊網絡手機圖2-1 系統總體設計框圖各模塊說明功能如下:1.MQ3酒精濃度傳感器是一種檢測裝置對乙醇蒸汽有很高的靈敏度和良好的選擇性。經過MQ3檢測空氣中的酒精濃度后,檢測值經過數模轉換器傳送至單片機,經過單片機處理與所設定的閾值進行比較,判斷是否報警。2.顯示部分是將采集到的酒精濃度進行顯示。本設計采用LCD1602顯示屏對采集到的數據進行顯示的。1602液

14、晶模塊部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,完全可以滿足對溫濕度的顯示。3.本設計為了更加便于使用,相比于普通的酒精濃度測試儀增加了GSM模塊。當單片機判斷所檢測到的酒精濃度超出所設定的閾值時,發出聲光報警的同時并將報警信號發送至提前設定好的手機。4. STC12C5A60S2/AD/PWM系列單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代51單片機。指令代碼完全兼容傳統的51單片機,但是速度快8-12倍。部集成MAX810專用復位電路,2路PWM,8

15、路高速10位A/D轉換。5.GSM模塊有GSM射頻芯片、系帶處理芯片、存儲器、功放器件等。能夠發送手機短信。6. .設定值由接收端的按鍵控制,其中一個為設置鍵,另有兩個按鍵控制設定值的加減,比較報警選用蜂鳴器和LED電路表示報警信號。3 系統硬件設計3.1STC89C5A60S2單片機電路設計3.1.1.STC89C5A60S2單片機特性概述STC12C5A60S2/AD/PWM系列單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代51單片機。指令代碼完全兼容傳統的51單片機,但是速度快8-12倍。部集成MAX810專用復位電路,2路PWM,8路高速10

16、位A/D轉換。增強型8051 CPU,1T,單時鐘/機器周期,工作頻率圍:0 - 35MHz,相當于普通8051的 0420MHz,片上集成1280字節RAM,有EEPROM功能(STC12C5A62S2/AD/PWM無部EEPROM),部集成MAX810專用復位電路(外部晶體12M以下時,復位腳可直接1K電阻到地);工作溫度圍:-40 - +85(工業級) / 0 - 75(商業級)21。封裝:PDIP-40,LQFP-44,LQFP-48 I/O口不夠時,可用2到3根普通I/O口線外接 74HC164/165/595(均可級聯)來擴展I/O口, 還可用A/D做按鍵掃描來節省I/O口,或用雙

17、CPU,三線通信,還多了串口。3.1.2STC89C5A60S2引腳功能1.增強型8051 CPU,1T,單時鐘/機器周期,指令代碼完全兼容傳統8051。2.工作電壓:STC12C5A60S2系列工作電壓:5.5V- 3.3V(5V單片機)。TC12LE5A60S2系列工作電壓:3.6V- 2.2V(3V單片機)。3.工作頻率圍:0 - 35MHz,相當于普通8051的 0420MHz。4.用戶應用程序空間8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字節.5.片上集成1280字節RAM。6.通用I/O口(36/40/44個),復位后為:準雙

18、向口/弱上拉(普通8051傳統I/O口) 可設置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏 每個I/O口驅動能力均可達到20mA,但整個芯片最大不要超過55mA。7. ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器 可通過串口(P3.0/P3.1)直接下載用戶程序,數秒即可完成一片。8.有EEPROM功能(STC12C5A62S2/AD/PWM無部EEPROM)。10.部集成MAX810專用復位電路(外部晶體12M以下時,復位腳可直接1K電阻到地)。11.外部掉電檢測電路:在P4.6口有一個低壓門檻比較器,5V單片機為1.32V,誤差為+/

19、-5%,3.3V單片機為1.30V,誤差為+/-3%。12.時鐘源:外部高精度晶體/時鐘,部R/C振蕩器(溫漂為+/-5%到+/-10%以) 1用戶在下載用戶程序時,可選擇是使用部R/C振蕩器還是外部晶體/時鐘 常溫下部R/C振蕩器頻率為:5.0V單片機為:11MHz15.5MHz,3.3V單片機為:8MHz12MHz,精度要求不高時,可選擇使用部時鐘,但因為有制造誤差和溫漂,以實際測試為準。13.共4個16位定時器,兩個與傳統8051兼容的定時器/計數器,16位定時器T0和T1,沒有定時器2,但有獨立波特率發生器,做串行通訊的波特率發生器,再加上2路PCA模塊可再實現2個16位定時器。14.

20、 2個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘。15.外部中斷I/O口7路,傳統的下降沿中斷或低電平觸發中斷,并新增支持上升沿中斷的PCA模塊,Power Down模式可由外部中斷喚醒,INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通過寄存器設置到P4.2 ),CCP1/P1.4 (也可通過寄存器設置到P4.3)。16. PWM(2路)/PCA(可編程計數器陣列,2路),也可用來當2路D/A使用 -也可用來再實現2個定時器,也可用來再實現2個外部中斷(上升沿中斷/下降沿中

21、斷均可分別或同時支持)。17.A/D轉換, 10位精度ADC,共8路,轉換速度可達250K/S(每秒鐘25萬次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時器或PCA軟件實現多串口。19. STC12C5A60S2系列有雙串口,后綴有S2標志的才有雙串口,RxD2/P1.2(可通過寄存器設置到P4.2),TxD2/P1.3(可通過寄存器設置到P4.3)。20.工作溫度圍:-40 - +85(工業級) / 0 - 75(商業級)21.封裝:PDIP-40,LQFP-44,LQFP-48 I/O口不夠時,可用2到3根普通I/O口線外接 74HC164/16

22、5/595(均可級聯)來擴展I/O口,還可用A/D做按鍵掃描來節省I/O口,或用雙CPU,三線通信,還多了串口。3.1.3 晶振電路晶振是石英振蕩器的簡稱,它是時鐘電路中最重要的部件,它的主要作用是向顯卡、網卡、主板等配件的各部分提供基準頻率,它就像個標尺,工作頻率不穩定會造成相關設備工作頻率不穩定,自然容易出現問題。STC89C52片有一個高增益反相放大器,其輸入端(XTAL1)和輸出端(XTAL2)用于外接石英晶體和微調電容,構成振蕩器,如圖3-2所示:電容C3和C4對頻率有微調作用,電容的選擇圍一般為1.212MHz,晶振頻率越快,單片機指令周期越短,運行越快。部時鐘信號由振蕩器輸出的振

23、蕩脈沖經2分頻得到,用來控制單片機部各功能部件按照順序協調工作,其周期稱為時鐘周期。一個機器周期由6個時鐘周期構成,指令周期以機器周期為單位,所以晶振頻率越快,單片機指令周期越短,運行越快。本設計晶振選擇頻率為11.0529MHz,電容選擇30pF。經計算得單片機工作機器周期約為:1s。3.1.4 復位電路為確保單片機系統穩定可靠工作,復位電路是必可少的一部分,復位電路的第一功能是上電復位。所謂上電復位,是指在計算機上電瞬間,要在RST引腳上產生寬度大于10ms的正脈沖,使計算機進入復位狀態。等待系統電源穩定后,復位信號停止。當系統在工作中受到干擾后,容易出現程序“跑飛”而盲目運行甚至出現死機

24、現象。此時復位信號有效,使微機系統重新恢復正常運行。目前為止,單片機復位電路主要有四種類型:1.微分型復位電路;2.積分型復位電路;3.比較器型復位電路;4.看門狗型復位電路7。在本設計中,當電源VCC上電時,因電容C3兩端電壓不能突變,所以RES 在上電時會有一段時間為高電平,電容中的電流越來越小,R1上的電壓就越來越小,呈指數變化。過一段時間后,電容逐漸充電完畢,RST端恢復高電平,復位有效。持續一段時間后,復位撤除,微機開始工作。該電路具有結構簡單、實用等優點。本設計采用按鍵結合上電復位,當電源連接后,按下按鍵則系統復位,單片機程序從頭開始執行,具體的復位電路如圖3-3所示:3.2 酒精

25、濃度模塊設計3.2.1酒精濃度傳感器MQ3的特點MQ3酒精濃度傳感器是一種檢測裝置對乙醇蒸汽有很高的靈敏度和良好的選擇性,快速的反應和恢復速度,長期的壽命和可靠的性能,并且所需要的驅動電路簡單。MQ3酒精濃度傳感器的探測濃度圍為:0.01mg/L-10mg/L。適合用于檢測機動車駕駛員是否為酒后駕駛;也可用于其他場合乙醇濃度的檢測。MQ3 型氣敏傳感器由微型Al2O3、瓷管和SnO2 敏感層、測量電極和加熱器構成的敏感元件固定在塑料或者不銹鋼的腔體,加熱器為氣敏元件的工作提供了必要的工作條件。傳感器的標準回路有兩部分組成:其一為加熱回路;其二為信號輸出回路,它可以準確反映傳感器表面電阻的變化。

26、傳感器表面電阻RS 的變化,是通過與其串聯的負載電阻RL 上的有效電壓信號VRL 出面獲得的。二者之間的關系表述為:RS/RL=(VCVRL)/VRL,其中VC 為回路電壓,10V。負載電阻RL 可調為0.5200K,加熱電壓Uh 為5V。MQ3 的結構和外形MQ3標準回路傳感器阻值變化率與酒精濃度、外界溫度之間的關系為了更好地使用酒精傳感器MQ3,現將MQ3 的標準工作條件和環境條件進行介紹,如表一和表二所示。表一標準工作條件表二酒精傳感器MQ3 的環境條件3.2.2 A/D 轉換電路在單片機應用系統中,被測量對象的有關變化量,如溫度、壓力、流量、速度等非電物理量,須經傳感器轉換成連續變化的

27、模擬電信號(電壓或電流),這些模擬電信號必須轉換成數字量后才能在單片機中用軟件進行處理。實現模擬量轉換成數字量的器件稱為 A/D 轉換器(ADC)。A/D 轉換器大致分有三類:一是雙積分 A/D 轉換器,優點是精度高,抗干擾性好,價格便宜,但速度慢;二是逐次逼近式 A/D 轉換器,精度、速度、價格適中;三是并行 A/D 轉換器,速度快,價格也昂貴。本設計中采用的A/D 轉換器是STC12C5A60S2單片機部所帶的A/D 轉換器。此單片機A/D轉換為10位精度ADC,共8路,轉換速度可達250K/S(每秒鐘25萬次)。3.2.3 MAX3232電路MAX3232收發器采用專有的低壓差發送器輸出

28、級,具有一個完整的串口(3路驅動器/5路接收器)。利用雙電荷泵在3.0V至5.5V電源供電時能夠實現真正的RS-232性能。器件僅需四個0.1µF的外部小尺寸電荷泵電容。MAX3222確保在120kbps數據速率下維持RS-232輸出電平。MAX3232具有2路接收器和2路驅動器。MAX3232電路如下圖所示:MAX323電路3.3 液晶顯示器LCD16023.3.1LCD1602介紹LCD1602分為帶背光和不帶背光兩種,基控制器大部分為HD44780,不帶背光的比帶背光的薄,在應用中是否帶背光并無差別。LCD1602的主要技術參數:1.顯示容量:一行16個字符,共32字符;2.芯

29、片工作電壓:4.55.5V;3.芯片工作電流:2.0mA(5.0V);4.模塊最佳工作電壓:+5V;5.每個字符尺寸:2.95×4.35mmLCD1602液晶模塊部的控制器共有11條控制指令,分別為:指令1:清屏。指令碼0x01H,光標復位到0x00H這個地址的位置。指令2:光標復位。光變應該回到地址0x00H。指令3:設置輸入模式。I/D:它表示光標應該移動的方向,高電平的時候右移,低電平的時候左移;S:它控制屏幕上所有的文字方向是左移或右移,高電平有效,而低電平此位無效。指令4:用于顯示的開關控制。D:它表示整體的顯示開與關,高電平時顯示為開,低電平時顯示為關;C:它表示了光標開

30、與關,有光標時是高電平,無光標時是低電平。 B:它表示光標的閃爍,閃爍時高電平,不閃爍時低電平。指令5:光標以與顯示的移位。S/C:若移動顯示的文字則是高電平,若移動光標則是低電平;R/L:右移時高電平,左移時低電平。指令6:設置功能的命令。D/L:4位總線時高電平,8位總線時低電平;D:高電平時,雙行顯示,低電平時,單行顯示;F:若為高電平,則顯示5×10,若為低電平,則顯示5×7。指令7:設置RAM的地址。指令8:設置DDRAM的地址。指令9:讀光標地址以與忙信號。BF:為忙標志位,忙的時候是高電平,這時其不收命令或數據,不忙的時候是低電平。指令10:寫數據。指令11:

31、讀數據。3.3.2 系統LCD1602顯示說明LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,本設計選用16引腳的帶背光接口,LCD1602引腳接口說明如表3-2所示:表3-2 LCD1602引腳接口說明 編號符號引腳說明編號符號引腳說明1VSS電源地9D2數據2VDD電源正極10D3數據3VL液晶顯示偏壓11D4數據4RS數據/命令控制12D5數據5R/W讀/寫控制13D6數據6E使能信號14D7數據7D0數據15BLA背光源電源端8D1數據16BLK背光源接地端在該設計系統中,單片機將DHT11溫濕度傳感器送入的40位數據按照5個8位字節存入不同的變量中,然后通過變換形式轉

32、換為字符形式在LCD1602上顯示。本設計中LCD1602與單片機連接圖如圖3-5所示:圖3-5 LCD1602顯示電路從圖中可以看出:1引腳為接地端,與單片機的地相連;2引腳接+5V電源,連接單片機的+5V電源;3引腳為液晶顯示偏壓,連接一個最大阻值為10K的電位器,通過調節電位器的阻值可以調節液晶屏的顯示清晰度,使酒精濃度的數值清晰地顯示在液晶屏上;4引腳RS為寄存器選擇,為高電平時選擇數據寄存器,低電平時選擇指令寄存器,設計時RS接單片機的P2.0引腳,通過程序對其狀態進行控制;5引腳RW為讀/寫信號選擇線,為高電平時進行讀操作,低電平時進行寫操作,設計時RW接單片機的P2.1引腳,通過

33、編程控制其狀態變化;6引腳E(或EN)端為模塊使能控制端,編程時結合RS和RW控制液晶屏完成顯示任務,硬件連接時接單片機的P2.2引腳;714腳P0P7為8位雙向數據端,和單片機的P0口相連,程序中對LCD1602進行寫命令和寫數據都通過這8個數據端進行傳輸;15腳為背光源正極,必須和電源的正極相連;16腳為背光源負極,必須和電源的負極相連。在使用液晶模塊之前要先進行初始化,首先要設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,不需要重新設置。在每次輸入指令前都要判斷液晶模塊是否處于忙的狀態。3.4通信模塊設計隨著科學技術的不斷發展,無線通信已經滲透到人們的生活,工作,和學習當中。在智能

34、家居、車輛監控防盜、機器人控制、無線抄表、門禁系統、工業數據采集系統等方面都廣泛的使用無線傳輸模塊?,F今無線通信技術已經十分成熟,無線通信模塊可以實現短時間、長距離、低功耗、高靈敏度、抗干擾性、高集成度,從而節省了人力、物力,并且還能進行實時監測,與時處理現場突發狀況。因此本設計選用無線傳輸模塊GSM模塊作為酒精濃度測試的通信模塊。3.4.1 GSM模塊介紹GSM模塊是將GSM射頻芯片、基帶處理芯片、存儲器、功放器件等集成在一塊電路板上,具有獨立的操作系統、GSM射頻處理、基帶處理并提供標準接口的功能模塊。因此,GSM模塊具有發送SMS短信,語音通話,GPRS數據傳輸等基于GSM網絡進行通信的

35、所有基本功能。簡單來講,GSM模塊加上鍵盤、顯示屏和電池,就是一部手機。在本設計中單片機處理的數據經過MAX3232處理后經過串口將報警數據傳輸到GSM模塊,然后GSM模塊將報警信號發送至所設定的手機終端。3.5 按鍵鍵盤設計3.5.1按鍵鍵盤說明 按鍵是單片機系統中常用的信息輸入部件,同時也是人機對話中不可缺少的輸入設備。在和單片機構成系統時,按鍵通常有兩種接法,一種叫獨立式按鍵,另一種叫矩陣式按鍵。用口線較多時,可以將鍵盤接成矩陣的形式,這種形式節省口線。本設計中采用的是獨立式按鍵。3.5.2 按鍵電路設計本設計中的按鍵主要完成對酒精濃度閾值的設定。其電路圖如下:按鍵圖本設計中,

36、S1按鍵為對酒精濃度控制的選擇鍵,S2和S3酒精濃度的調節鍵,S2控制設定值的增加,S3控制酒精濃度的減小。3.6 報警電路設計3.6.1蜂鳴器說明蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、定時器等電子產品中作發聲器件。蜂鳴器分為有源與無源兩種。有源蜂鳴器直接接額定電源就可連續發聲,而無源蜂鳴器則和電磁揚聲器一樣,需要接在音頻輸出電路中才能發聲。有源蜂鳴器和無源蜂鳴器的主要差別是對輸入信號的要求不一樣,有源蜂鳴器工作的理想信號是直流電,無源蜂鳴器工作的理想信號是方波。無源蜂鳴器接直流電是不會工作的。本設計采用一個有源蜂鳴器進行聲音報警。3.6.2發光二極管

37、說明50年前人們已經了解半導體材料可產生光線的基本知識,第一個商用二極管產生于1960LED是英文light emitting diode(發光二極管)的縮寫,它的基本結構是一塊電致發光的半導體材料,置于一個有引線的架子上,然后四周用環氧樹脂密封,起到保護部電路的效果,所以LED的抗震性能很好。發光二極管的核心部分是由P型半導體和N型半導體組成的晶片,在P型半導體和N型半導體之間有一個過渡層,稱為PN結。在某些半導體材料的PN結中,注入的少數載流子與多數載流子復合時會把多余的能量以光的形式釋放出來,從而把電能直接轉換為光能。PN結加反向電壓,少數載流子難以注入,故不發光。這種利用注入式電致發光

38、原理制作的二極管叫發光二極管,通稱LED。 當它處于正向工作狀態時(即兩端加上正向電壓),電流從LED陽極流向陰極時,半導體晶體就發出從紫外到紅外不同顏色的光線,光的強弱與電流有關。3.6.3聲光報警電路本設計中采用的是聲光同事報警,在采集到的酒精濃度的值超過報警值時,電路同事發出聲光報警信號。聲光報警電路如下圖:聲光報警電路 由上圖可以看出,蜂鳴器通過一個PNP型三極管放接。三極管選擇9012型三極管,它的發射極直接連接+5V電源,基極通過1K的電阻和單片機的P2.3引腳相連,集電極連接蜂鳴器的正極,蜂鳴器的負極接地。發光二極管的樣機與單片機的P1.6引腳相連,陰極接一個1K的電阻與放大器的

39、發射極相連同事接在+5V的電源上,電路的主要作用是用9012三極管將基極電流放大以驅動蜂鳴器和發光二極管工作。工作過程為:當酒精濃度值大于設定的上限值,程序會將對應三極管基極連接的單片機引腳置為低電平,這樣三極管就可以驅動蜂鳴器和發光二極管工作,發出聲光報警。4 系統軟件設計4.1 軟件設計概述系統軟件設計是整個控制器系統設計至關重要的組成部分,軟件部分設計的好壞,直接關系到整個系統功能實現和運行的可靠性。隨著計算機技術的不斷進步,計算機程序設計也在不斷向前發展,用來描述程序的語言也在不斷地進步完善,程序設計語言也從初期的機器語言到用符號表示的匯編語言以至發展到高級語言。在設計過程中,人們也開

40、始擺脫進行程序設計必須先熟悉機器部結構的桎梏,把精力集中于解決思路和方法上。本設計使用Keil軟件開發平臺。發送端、接收端和通信設備使用C語言編程實現 。4.1.1 Keil軟件介紹隨著單片機開發技術的不斷發展,從普遍使用匯編語言到逐漸使用高級語言開發,單片機的開發軟件也在不斷發展,Keil C51軟件是一個基于32位Windows環境的應用程序,支持C語言和匯編語言編程,其6.0以上的版本將編譯和仿真軟件統一為uVision2 (通常稱為uV2)。Keil提供包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在的完整開發方案。利用Keil軟件編程流程:(1)建立一個新工程:單擊

41、Project菜單,在彈出的下拉菜單中選中New Project選項;(2)選擇單片機的型號,根據所使用的單片機來選擇,本設計所使用的是STC89C52,選擇STC89C52之后,然后點擊確定設置工程的配置參數,選中創建HEX文件;(3)打開/建立程序文件。創建的文件用*.c形式保存;(4)編譯和連接工程。在進行編譯和前,需要將創建的源代碼文件添加到工程中,在Source Group1處單擊右鍵然后點add group.;(5)糾正程序中的書寫和語法錯誤并重新編譯連接。在編譯窗口中把需要編譯的程序輸入,然后點編譯按鈕,即可對所寫程序編譯。4.2 系統軟件設計系統的軟件設計分為C語言程序。C語言

42、編寫的程序又由主程序流程和子程序流程組成,子程序流程分為:酒精濃度檢測子程序,LCD顯示子程序,無線通信子程序,按鍵設定上限值子程序和串行子程序。4.2.1 主程序流程圖本設計發送端與接收端分別使用一個單片機作為控制芯片,發送端主程序包括酒精濃度檢測子程序、顯示子程序、無線通信子程序的初始化聲明,以與將各子程序聯系起來共同完成發送端的所有功能;接收端主程序包括無線接收子程序、按鍵設定上限值、串口子程序的初始化聲明與各子程序聯系。發送端和接收端主流程圖如圖4-1所示:開始酒精濃度檢測子程序無線通信子程序顯示子程序發送子程序各部分初始化開始GSM初始化接收數據子程序調用串口子程序串口初始化上下限設

43、定子程序報警子程序圖4-1發送端與接收端主流程圖4.2.2 酒精濃度檢測子程序數據采集子程序主要是采集檢測傳感器輸出的模擬電壓信號,并將其轉換為單片機程序控制所需的數字量信號。首先對AD轉換器進行初始化,然后將其0通道輸入的0-5V的模擬信號轉換為對應的數字量OOH-FFH,然后將對應數值存儲到3FH存單元。4.2.3LCD顯示子程序系統采用LCD1602液晶顯示模塊作為溫濕度的顯示器件。在對LCD1602編程時,首先需要對其初始化,測試LCD1602是否處在忙碌狀態,若忙碌則等待到空閑時間,檢測到空閑時對其進行寫控制指令。初始化完成后可以在指定的地址上顯示相應的數據。由于LCD1602自帶字

44、母字符庫和數字字符庫,因此可以直接可以在程序中寫字母和數字字符。顯示子程序流程圖如下圖4-3所示:子程序入口LCD是否忙碌?YNLCD1602初始化調用顯示程序返回主程序圖4-3顯示子程序流程圖LCD初始化程序如下:void LCD_Init(void)LCD_EN=0;/LCD_WriteCmd(CMD_CLEAR_SCREEN);/_nop_();LCD_WriteCmd(CMD_WORK_MODE);_nop_();/LCD_WriteCmd(CMD_HOME);/_nop_();LCD_WriteCmd(CMD_INPUT_MODE3);_nop_();LCD_WriteCmd(CMD

45、_DISPLAY_MODE1);_nop_();LCD_WriteCmd(CMD_DDRAM_ADDR);4.2.4 無線通信子程序 本設計中采用GSM模塊作為通信模塊,將報警信號發送至提前設定好的手機終端。而且所要報警的手機可以通過發送短信的方式進行更改。其主程序如下:#include "gsm.h"extern unsigned char uart1_busy;unsigned char ct=0;unsigned char xdata gsm_buffer120;void delay_ms(unsigned char ms)unsigned int j;for(ms;

46、ms>0;ms-)for(j=110*12;j>0;j-);void clear_buffer()unsigned char i;for(i=0;i<120;i+) gsm_bufferi=0;ct=0;unsigned char init_command(unsigned char *command)unsigned char time=0;/uart1_init();douart1_sendstring(command);delay_ms(500);if(strstr(gsm_buffer,"OK")!=NULL)time=0;clear_buffer

47、();return 1;elseclear_buffer();time+;if(time=MAX_TIME)return 0;while(1);unsigned char gsm_init()if(init_command("ATr")=0)return AT_ERROR;if(init_command("AT+CSCA?r")=0)return CSCA_ERROR;if(init_command("AT+CNMI=1,1,2r")=0)return CNMI_ERROR;if(init_command("AT+CMGF=

48、1r")=0)return CMGF_ERROR;return 0;void send_message(unsigned char *num,unsigned char *s)uart1_sendstring("AT+CMGF=1r");delay_ms(500);uart1_sendstring("AT+CSMP=17,167,0,0r");delay_ms(500);uart1_sendstring("AT+CSCS=GSMr");delay_ms(500);uart1_sendstring("AT+CMGS=

49、");uart1_sendstring(num);uart1_send('r');delay_ms(500);uart1_sendstring(s);uart1_send(0x1a);/delay_ms(500);clear_buffer();unsigned char is_message_coming()return ct;void get_message(unsigned char *numbuf,unsigned char *buf)unsigned char *p;unsigned char *p1;unsigned char n;delay_ms(1000

50、);if(strstr(gsm_buffer,"+CMTI")!=NULL)p=strchr(gsm_buffer,',');n=*(p+1);clear_buffer();uart1_sendstring("AT+CMGR=");uart1_send(n);uart1_send('r');delay_ms(1000);p=strchr(gsm_buffer,',');p+=2;p1=strchr(p,'"');memset(numbuf,0,20);memcpy(numbuf,p

51、,p1-p);/p=NULL;p1+=1;p1=strchr(p1,'"');p1+=1;p1=strchr(p1,'"');p1+=3;p=strchr(p1,'r');if(p=NULL) memcpy(buf,p1,(gsm_buffer+119-p1);else memcpy(buf,p1,p-p1);/*if(p=NULL)memcpy(buf,p1,39);elseif(p-p1)<39)memcpy(buf,p1,p-p1);elsememcpy(buf,p1,39); */p1=NULL;clear_bu

52、ffer();uart1_sendstring("AT+CMGD=");uart1_send(n);uart1_send('r');delay_ms(10);clear_buffer();elseclear_buffer();void uart1() interrupt 4 if(RI) if(ct<119)gsm_bufferct=SBUF;ct+; RI=0; if(TI) TI=0;uart1_busy=1; 4.2.5 報警子程序系統設定的閾值保存在以50H開始的3個單元,是為了便于比較和顯示,閾值的百位放入50H中,十位放入5lH,個位放人5

53、2H中。本電路中報警電路分為蜂鳴器報警電路和發光報警電路兩部分,當輸入端P2.3為低電平時,有電流通過蜂鳴器,蜂鳴器發出聲音報警;而當輸入端為高電平時不報警。當輸人端P1.6為低電平時,LED點亮報警,反之輸入端P1.6為高電平則不報警。 報警子程序執行之前,將報警閾值轉換為壓縮的BCD碼并存放在兩個存儲單元中。傳感器輸入值經A/D轉換后,首先調用比較子程序,再進行數據處理、數據顯示和測量值與閾值之間的比較運算,小于閾值則繼續執行顯示程序,若大于閾值則將單片機的P1.6、P2.3兩端口清零進行聲光報警。40H、4lH、42H單元存放A/D轉換后,并進行十進制轉換后的結果。40H和50H分別存放

54、的是處理后的測量值與閾值的百位的壓縮BCD碼,41H和51H分別存放的是處理后的測量值與閾值的十位壓縮的BCD碼,42H和52H分別存放的是處理后的測量值與閾值的個位的壓縮BCD碼。程序首先對40H、50H中的值進行比較大小,如果40H中的值大于50H中的值,則進行報警。4.2.5 串行口子程序串行傳送數據時需傳8個值,兩個監測點的溫濕度值和4個設定的溫濕度上限值。發送前要先對串口初始化,設置波特率等參數。發送中將兩組溫濕度值存放到一個數組中,每次發送時調用8次串口發送程序將數據發送出去。對SCON選工作方式,對PCON設波特率加倍位“SMOD”(缺省值=0),采用中斷方式,要打開 ES串口中

55、斷允許位和總中斷EA位。初始化程序如下:void uart1_init()/*SCON=0X50;TMOD=0X20;PCON &= -(FOSC/32/BAUD);TH1=TL1=0xfd;TR1=1;ES=1;EA=1; */PCON |= 0x80;/UART0 Double Rate EnableSCON = 0x50;/UART0 set as 10bit , UART0 RX enableTMOD &= (1<<6);/Timer1 Set as Timer, 12TTMOD = (TMOD & 0x30) | 0x20;/Timer1 set as 8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論