電子信息工程畢業(yè)設(shè)計論文:酒精濃度檢測儀設(shè)計_第1頁
電子信息工程畢業(yè)設(shè)計論文:酒精濃度檢測儀設(shè)計_第2頁
電子信息工程畢業(yè)設(shè)計論文:酒精濃度檢測儀設(shè)計_第3頁
電子信息工程畢業(yè)設(shè)計論文:酒精濃度檢測儀設(shè)計_第4頁
電子信息工程畢業(yè)設(shè)計論文:酒精濃度檢測儀設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、電子信息工程畢業(yè)設(shè)計論文:酒精濃度檢測儀設(shè)計 JIANGXI AGRICULTURAL UNIVERSITY本 科 畢 業(yè) 設(shè) 計 題目: 酒精濃度檢測儀設(shè)計 學(xué)院: 工學(xué)院 姓名: * 學(xué)號: 專業(yè):電子信息工程 年級: 08 級 指導(dǎo)教師: * 職 稱:講師二 0 一 二 年 五 月目錄中文摘要IAbstractII1 緒論11.1 呼吸氣體酒精濃度檢測報警儀開發(fā)背景11.2呼吸氣體酒精濃度檢測報警儀的簡介11.3呼吸氣體酒精濃度檢測報警儀課程設(shè)計根本要求與設(shè)計簡介22 單片機(jī)最小系統(tǒng)介紹32.1STC89C52簡介32.2 復(fù)位電路介紹52.3 晶振電路介紹63 信號采集和AD轉(zhuǎn)換過程的

2、軟硬件設(shè)計73.1 MQ-3酒精濃度傳感器模塊簡介73.2 AD轉(zhuǎn)換軟硬件件設(shè)計83.2.1 ADC0804簡介83.2.2 本設(shè)計中ADC0804外圍硬件連接103.2.3 本設(shè)計中AD轉(zhuǎn)換軟件實(shí)現(xiàn)114 顯示模塊軟硬件設(shè)計134.1 LCD1602簡介134.2 本設(shè)計中LCD1602的硬件連接介紹144.3 本設(shè)計中LCD1602的軟件設(shè)計144.3.1 本設(shè)計的液晶寫命令子函數(shù)和寫數(shù)據(jù)子函數(shù)程序分析144.3.2 本設(shè)計中用到的液晶指令介紹164.3.3 本設(shè)計中的字符串顯示和數(shù)據(jù)實(shí)時更新的實(shí)現(xiàn)方法165其它外圍設(shè)備軟硬件設(shè)計195.1 報警電路軟硬設(shè)計195.1.1 硬件局部設(shè)計19

3、5.1.2 軟件局部設(shè)計195.2 待機(jī)指示燈軟硬件設(shè)計205.2.1 硬件局部設(shè)計205.2.2 軟件局部設(shè)計205.3 按鍵軟硬件設(shè)計205.3.1 硬件局部設(shè)計215.3.2 軟件局部設(shè)計215.4 電源電路226.系統(tǒng)總體設(shè)計236.1 硬件總體框圖236.2 程序流程圖246.3 硬件調(diào)試256.4 軟件調(diào)試256.4.1 標(biāo)志數(shù)的應(yīng)用256.4.2 按鍵的消抖與松手檢測的程序?qū)崿F(xiàn)266.4.3 定時器與定時器中斷27結(jié)束語28致謝29參考文獻(xiàn)30附錄一 硬件設(shè)計原理圖31附錄二 實(shí)物照片32附錄三 程序33中文摘要 新世紀(jì)以來,中國的經(jīng)濟(jì)不斷開展,人民生活水平不斷提高,私家車逐漸走

4、進(jìn)千家萬戶,給人們的生活帶來了極大的便利。然而高速文明的背后,新的問題、新的挑戰(zhàn)也接踵而至,例如城市交通擁堵,汽車尾氣造成的嚴(yán)重環(huán)境污染以及交通事故等等。這些問題正在影響甚至危害著人們的正常生活。作為即將步入社會的大學(xué)畢業(yè)生,作為新世紀(jì)四有青年,作為社會主義事業(yè)的踐行者,我們應(yīng)當(dāng)積極將自己所學(xué)知識與實(shí)際問題實(shí)際挑戰(zhàn)相結(jié)合,解決實(shí)際問題,造福廣闊人民。酒駕正是造成交通事故的重要原因,2021年05月01日,備受關(guān)注的?刑法修正案八?和修改后的?道路交通平安法?正式施行,酒駕被正是列為刑事犯罪,最高可處以6個月的刑事拘留和2000元罰款。 本設(shè)計正是設(shè)計酒精濃度檢測儀,設(shè)計成品可以對呼吸氣體中的酒

5、精濃度進(jìn)行實(shí)時采集,顯示,報警。成品可用于交警對汽車駕駛者測試與監(jiān)督,也可以用于司機(jī)駕車前的自我檢測。 本設(shè)計的微控制單元MCU選擇的是STC公司生產(chǎn)的STC89C52單片機(jī),傳感器那么選用MQ?3酒精濃度傳感器。系統(tǒng)將由MQ-3酒精濃度傳感器輸出的微弱電流經(jīng)具有放大濾波等功能的調(diào)理電路后,輸入以模數(shù)轉(zhuǎn)換芯片ADC0804為核心的轉(zhuǎn)換電路轉(zhuǎn)換為八位數(shù)字信號,再由單片機(jī)進(jìn)行處理,最終送入LCD液晶顯示屏顯示實(shí)時檢測的酒精濃度以及實(shí)現(xiàn)超值報警功能??紤]到MQ?3酒精濃度傳感器的預(yù)熱時間較長,系統(tǒng)上電后自動進(jìn)入待機(jī)狀態(tài),在工作時也可以隨時通過按鍵控制進(jìn)入待機(jī)狀態(tài),待機(jī)狀態(tài)中系統(tǒng)不進(jìn)行酒精濃度采集、顯

6、示和報警,而是給傳感器預(yù)熱并顯示十分鐘以內(nèi)的簡易計時,讓使用者大致掌握預(yù)熱時間。待機(jī)狀態(tài)中也可隨時通過按鍵進(jìn)入工作狀態(tài)。 本文詳細(xì)介紹了酒精濃度采集、轉(zhuǎn)換、顯示、報警以及待機(jī)的工作原理,工作過程,硬件子系統(tǒng)和軟件實(shí)現(xiàn)方法。關(guān)鍵詞:MCU;STC89C52;MQ-3酒精濃度傳感器;ADC0804Abstract Since the new century, China 's economic development, people's living standards improve, private cars are gradually into the tens of tho

7、usands of households, the life that gives people brought great convenience. However, behind the high civilization, new problems, new challenges also come one after another, such as city traffic congestion, caused by vehicle exhaust pollution and traffic accident and so on. These problems are affecti

8、ng and even endanger the normal life of people. As will enter the society of university graduates, as the new century appearance, as the cause of socialism practice, we should actively their knowledge and practical problems combining the actual challenge, solving practical problems, the benefit of t

9、he broad masses of the people. Drunk driving is causing a major cause of road accidents,2021,May01, concern about the" criminal law amendment eight" and the revised" law of road transportation safety" was officially implemented, drunk driving is just as criminal offenses punishab

10、le by 6months, the highest criminal detention and a fine of 2000 yuan. This design is the design of alcohol concentration detector, design products to vapors in breath alcohol concentration real-time acquisition, display, alarm. The finished product can be used for traffic police to motorists to tes

11、ting and supervision, can also be used for the drivers before self detection. The design of the micro control unit MCU choose STC company STC89C52MCU, sensor selection of MQ - 3alcohol concentration sensor. The system will consist of the MQ - 3alcohol concentration sensor output current with the amp

12、lifying and filtering and other functions of the conditioning circuit, input to the A / D conversion chip as the core ADC0804conversion circuit converts the eight bit digital signal, then the MCU processing, ultimately into the LCD display. The real-time detection of the alcohol concentration and re

13、alize the value of alarm function. Considering the MQ - 3alcohol concentration sensor warm-up time is longer, power system automatically enter the standby state, the work also can be controlled through the buttons to enter the standby state, a standby state system without alcohol concentration acqui

14、sition, display and alarm, but to the sensor preheating and displayed within ten minutes of the simple timing, let users grasp the preheating time. A standby state can also be readily through the button to enter the working state. This paper introduces in detail the acquisition, conversion, alcohol

15、concentration display, alarm and standby work principle, work process, hardware system and software realization method.Key words: MCU; STC89C52; MQ-3 alcohol concentration sensor; ADC08041 緒論1.1 呼吸氣體酒精濃度檢測報警儀開發(fā)背景 我國經(jīng)濟(jì)、科技正在迅速騰飛,汽車早已進(jìn)入尋常百姓家。我國正在步入“汽車社會,2021年我國汽車總數(shù)突破8000萬輛,位居世界第三,這也帶來了許多問題,酒駕正是其中之一。酒精有

16、使神經(jīng)系統(tǒng)鎮(zhèn)定松弛的作用,但也會成抑制力明顯減弱,可能造成酒后暴力行為。如果酒后駕車,由于神經(jīng)系統(tǒng)松散和判斷力下降,有可能造成嚴(yán)重交通事故。據(jù)科學(xué)實(shí)驗(yàn)說明,飲酒后對交通燈的反響慢,轉(zhuǎn)向急速駕車搖擺不定,違法轉(zhuǎn)彎和急速轉(zhuǎn)彎等行為發(fā)生概率大大增大。喝酒后開車發(fā)生交通事故的概率是未喝酒時的16倍。2021年05月01日,我國正式將酒駕列為刑事犯罪。 酒駕給了我們慘痛教訓(xùn),為了防止悲劇的再次發(fā)生,檢測儀器便出現(xiàn)了,本課程設(shè)計所制作的基于單片機(jī)的呼吸氣體酒精濃度測試報警儀正是用于交警檢測和自我檢測的良好儀器,防止酒后駕車引發(fā)的交通事故。 燃料電池型、半導(dǎo)體型、氣體色譜分析型、比色型、紅外線型是呼吸氣體酒

17、精濃度測報警儀的五種最根本類型。其中燃料電池型和半導(dǎo)體型是使用最為普遍的兩種類型。 燃料電池型與其它類型相比具有抗干擾能力強(qiáng),精度高,受環(huán)境因素影響小,穩(wěn)定性好等特點(diǎn)。它是當(dāng)前全世界科學(xué)家都在廣泛研究的環(huán)保型應(yīng)用技術(shù),它可以直接把可燃?xì)怏w轉(zhuǎn)變成電能,而不產(chǎn)生污染,其應(yīng)用前景之一就是作為無污染的清潔能源,酒精傳感器便是燃料電池的一個分支。燃料電池酒精傳感器采用白金作為電極,在燃燒室內(nèi)填充相應(yīng)特殊催化劑,使進(jìn)入燃燒室內(nèi)的酒精充分燃燒轉(zhuǎn)變?yōu)殡娔?也就是在兩個電極上產(chǎn)生電壓,電能消耗在外接負(fù)載上,此電壓與進(jìn)入燃燒室內(nèi)氣體的酒精濃度成正比。 與半導(dǎo)體型相比,燃料電池型呼氣酒精測試儀具有穩(wěn)定性好,精度高,

18、抗干擾性好的優(yōu)點(diǎn)。但是由于燃料電池酒精傳感器的結(jié)構(gòu)要求非常精密,制造難度相當(dāng)大,目前只有美國、英國、德國等少數(shù)幾個國家能夠生產(chǎn),加上材料本錢高,因此價格相當(dāng)昂貴,是半導(dǎo)體酒精傳感器的幾十倍。本設(shè)計傳感器是采用半導(dǎo)體型。 本設(shè)計要求成品能對呼吸氣體中的酒精濃度進(jìn)行實(shí)時采集、轉(zhuǎn)換、分析、顯示、超值報警。 成品硬件主要包括基于STC89C52單片機(jī)的微控制模塊、MQ-3傳感器采集模塊、基于ADC0804芯片的A/D轉(zhuǎn)換模塊、按鍵控制模塊、以1602為核心的顯示模塊、報警電路模塊等。軟件局部包括實(shí)時數(shù)據(jù)采集轉(zhuǎn)換程序設(shè)計、實(shí)時按鍵檢測程序設(shè)計、顯示程序設(shè)計、報警檢測和報警程序設(shè)計,考慮到MQ-3傳感器在

19、使用前有一個預(yù)熱過程所以設(shè)計還參加了待機(jī)程序的設(shè)計。2 單片機(jī)最小系統(tǒng)介紹 圖1 最小系統(tǒng)電路圖 本設(shè)計以STC89C52單片機(jī)為控制核心。單片機(jī)也就是MCU,即微控制單元,大學(xué)本科階段51型和52型是同學(xué)最常使用的,用于課程設(shè)計或畢業(yè)設(shè)計的為控制單元。52型是在51型的根底上開展而來的,它兼容51指令系統(tǒng),其功能更為強(qiáng)大,ROM和RAM存儲空間也比51型更大。STC89C52是52型中最普遍的一種。它除了具備一般52型的優(yōu)點(diǎn)以外,還具有程序無法解密,價格低,功耗低,運(yùn)算高速,高可靠強(qiáng)性,抗靜電和抗干擾能力強(qiáng),功能強(qiáng)大等突出優(yōu)點(diǎn)。 STC89C52有40個引腳,32 I/O口,它們分別是:P0

20、口,1號到8號引角;P3口,10號到17號引角;P2口,21號到28腳;P0口,32號到39號引腳。STC89C52可以實(shí)現(xiàn)兩級中斷嵌套,內(nèi)含2個外部中斷入口,可以同時實(shí)現(xiàn)兩個計時器或計數(shù)器中斷,還含有一個串口通信中斷。串口通信中可以使用2個全雙工串行通信口。2個讀寫口線,片內(nèi)振蕩器及時鐘電路也給使用者帶來了極大方便。STC89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。STC_ISP_V479是本設(shè)計使用的程序下載軟件,它以冷啟動的方式,很方便地將hex文件載入單片機(jī)。相比以往的MCU,STC89C52可降至0Hz的靜態(tài)邏輯操作,可自由選擇兩種軟件節(jié)電工作模式也是其突出優(yōu)點(diǎn)。空閑方式時,

21、自動停止CPU當(dāng)前工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng),繼續(xù)工作,即可以隨時相應(yīng)突發(fā)狀況,重新進(jìn)入工作模式,這樣可以節(jié)省電源。另外STC89C52的ROM采用電擦除電存儲方式,具有可反復(fù)擦寫的Flash存儲器,這給程序編寫者帶來了極大方便,可以反復(fù)擦寫下載十萬余次,方便程序調(diào)試,同時大大節(jié)約了設(shè)計本錢。 圖2 STC89C52單片機(jī)各引腳圖 2.2 復(fù)位電路介紹 圖3 復(fù)位電路電路圖 單片機(jī)工作過程中有一個程序指針,它指向即將要執(zhí)行的程序。單片機(jī)上電時要執(zhí)行復(fù)位操作,使得程序指針指針指向程序的0000H地址處,即單片機(jī)將要執(zhí)行第一條語句,以后每執(zhí)行完一條語句程序指針都依次增加

22、。這樣使得單片機(jī)每次執(zhí)行程序都處于確定狀態(tài),如果沒有程序指針,就不知道程序一開始應(yīng)該從哪里開始執(zhí)行,也不知道工作時應(yīng)該執(zhí)行哪條語句。上電時的自動復(fù)位,使得各端口的輸出輸入電平不會處于不確定狀態(tài),不會使外圍設(shè)備產(chǎn)生誤動作;也能防止內(nèi)部一些控制存放器的功能紊亂。 另外,在單片機(jī)工作過程中,如前所述,ATC89C52單片機(jī)的就好引腳RST假設(shè)輸入大于2個機(jī)器周期時間的高電平時,單片機(jī)就會執(zhí)行復(fù)位操作,即程序指針將由當(dāng)前指針跳回到程序的0000地址處。 以上所說的上電復(fù)位,和RST按鍵復(fù)位正是單片機(jī)復(fù)位操作的兩種根本形式。上電復(fù)位的實(shí)現(xiàn)方法是,在接通電源時,RST引腳獲得瞬間高電平,因?yàn)殡娙蓦妷翰荒芡?/p>

23、變,隨著圖3中的電容C2的充電,RST引腳所獲得的高電平逐漸下降,但能保持兩個機(jī)器周期以上的時間,單片機(jī)復(fù)位。RST按鍵復(fù)位的方法是,在圖3所示的復(fù)位電路中,當(dāng)輕觸開關(guān)S1被按下,RST與VCC相連,也能獲得瞬間高電平,因?yàn)殡娙蓦妷翰荒芡蛔?隨著圖3中的電容C2的充電,RST引腳所獲得的高電平逐漸下降,但能保持兩個機(jī)器周期以上的時間,單片機(jī)復(fù)位。 在復(fù)位電路的設(shè)計中,要選擇適宜的元器件參數(shù),電阻的阻值不宜過大或者過小,過大使得RST不可能獲得高電平,過小也不能起到限流作用。另外電容容值也應(yīng)該適宜,要保證放電時,RST引腳上的高電平也能保持兩個機(jī)器周期以上的高電平。本設(shè)計使用的電解電容容值和各電

24、阻阻值在圖3中都有標(biāo)注。2.3 晶振電路介紹 圖4 晶振電路電路圖 單片機(jī)必須有時鐘信號控制,才能使得工作時各指令在操作上有嚴(yán)格的時間次序,可以通過兩種方法提供時鐘信號,一種是外部時鐘方式,另一種是內(nèi)部時鐘方式。外部時鐘方式是在XTAL1端引入外部已有的時鐘信號,而XTAL2端懸空,外部時鐘信號一般是頻率小于12MHZ的方波。外部時鐘方式一般是用于多臺單片機(jī)協(xié)同工作時,如單片機(jī)之間的通信,這樣要使單片機(jī)有統(tǒng)一的工作節(jié)奏。本設(shè)計采用內(nèi)部時鐘方式,其電路結(jié)構(gòu)簡單,功率消耗低。 本系統(tǒng)中為了盡量降低功耗的原那么,采用了內(nèi)部時鐘方式。晶振全稱為晶體振蕩器(英文Crystal Oscillators),

25、其作用在于產(chǎn)生原始的時鐘頻率。內(nèi)部時鐘方式的電路實(shí)現(xiàn)方法是在XTAL1和XTAL2引腳外接石英晶體,與單片機(jī)片內(nèi)震蕩電路形成震蕩回路,圖中電容C3和C4的容值為22pF,它們的作用是加快起振和穩(wěn)定頻率。 3 信號采集和AD轉(zhuǎn)換過程的軟硬件設(shè)計3.1 MQ-3酒精濃度傳感器模塊簡介 圖5 MQ-3酒精濃度傳感器模塊引腳示意圖 MQ-3酒精濃度傳感器模塊由傳感器探頭和調(diào)理電路組成。MQ-3酒精濃度傳感器探頭輸出的微弱電流送入調(diào)理電路,使信號放大并濾去雜波。MQ-3酒精濃度傳感器模塊引腳示意圖如上圖,除VCC和GND以外,模塊還有兩個輸出端口,TTL電平輸出端口和模擬信號輸出端口。 在檢測的酒精濃度

26、值大于傳感器內(nèi)預(yù)設(shè)值時,TTL電平輸出端口將輸出高電平,起報警信號作用,假設(shè)小于預(yù)設(shè)值那么輸出低電平。由于傳感器模塊內(nèi)部預(yù)設(shè)值不方便通過程序改變,所欲在本設(shè)計中TTL電平輸出端口懸空,而報警值那么在程序中設(shè)定,報警由單片機(jī)程序控制,這要便于修改。 模擬信號輸出端口能輸出0到+VCC 的模擬信號,當(dāng)檢測的酒精濃度越大時輸出電壓越高。此端口接入ADC0804的6號引腳,實(shí)現(xiàn)AD轉(zhuǎn)換。 表1 MQ-3傳感器參數(shù)表符號?參數(shù)名稱?技術(shù)條件?備注 Vc 回路電壓?±0.2V AC or DC RL 負(fù)載電阻?可調(diào) RH 加熱電阻?31±3?室溫 PH 加熱功耗?900mW 符號?參數(shù)

27、名稱?技術(shù)條件?備注 Tao 使用溫度 -10-50 Tas 儲存溫度 -20-70 RH?相對濕度 小于 95% RH O2 氧氣濃度 21%標(biāo)準(zhǔn)條件 氧氣濃度會影響靈敏度特性?最小值大于2%?C.靈敏特性符號 參數(shù)名稱 技術(shù)參數(shù) 備注Rs 敏感體電阻1M- 8 M200ppm alcohol 適用范圍:10-1000ppm Alcohol ?(200/100)alcohol濃度斜率0.6標(biāo)準(zhǔn)工作條件 溫度: 20±2±0.1V相對濕度: 65%±±0.1V預(yù)熱時間不少于24小時 3.2 AD轉(zhuǎn)換軟硬件件設(shè)計3.2.1 ADC0804簡介 圖6 ADC

28、0804引腳示意圖 ADC0804是屬于連續(xù)漸進(jìn)式的A/D轉(zhuǎn)換器,這類型的A/D轉(zhuǎn)換器除了轉(zhuǎn)換速度快(幾十至幾百us)、分辨率高外,還有價錢廉價的優(yōu)點(diǎn),普遍被應(yīng)用于微電腦的接口設(shè)計上。 芯片參數(shù): 工作電壓:+5V,即VCC+5V。 模擬輸入電壓范圍:0+5V,即0Vin+5V。 分辨率:8位,即分辨率為1/21/256,轉(zhuǎn)換值介于0255之間。 轉(zhuǎn)換時間:100us(fCK640KHz時)。 轉(zhuǎn)換誤差:±1LSB。 參考電壓:2.5V,即Vref2.5V。 3.2.2 本設(shè)計中ADC0804外圍硬件連接 圖7 ADC0804外圍電路連接 20號引腳角和10號引腳分別接VCC和GND

29、,為芯片提供工作電壓。在精確測量時,8號引腳模擬地和10號引腳數(shù)字地應(yīng)該分開接,為芯片提供基準(zhǔn)電壓,此處把它們接在一起,同時接地。 1號引腳,片選信號接入P1.5,當(dāng)P1.5輸出低電平時,芯片被選中處于工作狀態(tài)。 引腳二為外部讀數(shù)據(jù)允許位,它接到P1.6,當(dāng)P1.6輸出低電平時,芯片處于外部許狀態(tài),轉(zhuǎn)換后的數(shù)據(jù)被送入DB0到DB7引腳,DB0到DB7引腳為數(shù)據(jù)輸出端口,它與單片機(jī)P3口依次相連,此時單片機(jī)可以從P3口取走。 引腳三為外部寫數(shù)據(jù)允許位,它與單片機(jī)P1.7口相連,當(dāng)P1.7輸?shù)碗娖綍r,芯片處于外部寫允許狀態(tài),此時芯片從6號和7號引腳獲取電壓差值,當(dāng)此引腳再次拉高時,芯片便開始AD轉(zhuǎn)

30、換。 6號引腳Vin+接傳感器模塊的模擬信號輸出端口,其間接入的10K電阻并不影響輸入電壓,但可以起到限流作用,防止瞬間高電流將芯片燒壞。7號引腳Vin(-)接地,轉(zhuǎn)換的原始模擬電壓就是6號引腳和7號引腳的電壓差值。 5號引腳在轉(zhuǎn)換時輸出高電平信號,結(jié)束時輸出低脈沖。它如果與單片機(jī)的外部中斷端口(P3.2或P3.3)相連,在轉(zhuǎn)換結(jié)束后給單片機(jī)一個中斷,讓單片機(jī)讀走數(shù)據(jù)。考慮到ADC0804的轉(zhuǎn)換時間還是非??斓?本設(shè)計中此引腳懸空,沒有和單片機(jī)外部中斷入口相連。在程序中可以用軟件延時的方式等待它轉(zhuǎn)換完畢,或者用定時器中斷方式每隔一定時間采樣,讓芯片有充分轉(zhuǎn)換時間。在本設(shè)計中采用了第一種做法模擬

31、信號輸出端口,具體方法在下一小節(jié)中介紹。 19號引腳跨接一個10K電阻與4號引腳相連,4號引腳在與56PF的電容相接,電容另一端接地。這樣電阻和電容便于芯片內(nèi)部電路形成了RC震蕩電路,它產(chǎn)生周期信號,為芯片提供時序,芯片正是在此時序的控制下有條不紊的工作。 9號引腳應(yīng)接入二分之一的VCC為電路提供參考基準(zhǔn)電壓,具體做法是,將兩個10K電阻串聯(lián)接在VCC和GND上分壓,接號引腳并接在他們中間,獲取參考電壓。3.2.3 本設(shè)計中AD轉(zhuǎn)換軟件實(shí)現(xiàn) 圖8 ADC0804控制時序圖 參考上圖,CS端在初始化函數(shù)void init()中便將他拉低使芯片一直處于工作狀態(tài),在主函數(shù)中先判斷是否處于檢測狀態(tài),假

32、設(shè)是檢測狀態(tài),不斷調(diào)用檢測命令和顯示命令,使單片機(jī)可以實(shí)時檢測。當(dāng)測試值超標(biāo),那么使報警電路報警,顯示模塊和報警電路的軟硬件設(shè)計將在后面詳細(xì)介紹。 下面具體講述轉(zhuǎn)換過程,上電后由于RD和WR都和I/O相連,即輸出默認(rèn)電平,無需初始化。在轉(zhuǎn)換時先將WR拉低,調(diào)用帶形參子函數(shù)void delay(),用delay(1);語句延時約一毫秒,讓ADC0804有足夠時間讀走6、7號引腳上的電壓差值。RD拉高后,芯片開始轉(zhuǎn)換,此時程序用delay(5);語句軟件延時約五毫秒,讓芯片轉(zhuǎn)換完成。再讓RD端拉低,同樣軟件延時一毫秒,讓單片機(jī)讀走數(shù)據(jù)。 下面介紹轉(zhuǎn)換原那么,ACD0804有八位數(shù)據(jù)輸出口,即轉(zhuǎn)換精

33、度為256,它將最高值(此處為1000ppm),分為255份,當(dāng)?shù)玫揭粋€轉(zhuǎn)換數(shù)據(jù)時,用最大值除以255,再乘以該數(shù)據(jù)值便是最終轉(zhuǎn)換值。 AD轉(zhuǎn)換子函數(shù)分析:void adwr0;/將WR拉低,讓芯片開始讀6、7號引腳電壓值delay1;/延時約一毫秒,讓芯片忙完wr1; /將WR拉高,上升沿到來時,AD轉(zhuǎn)換開始delay5;/軟件延時約五毫秒,等待AD轉(zhuǎn)換完成P30xff; /將P3口全部拉高,等待測試數(shù)據(jù)delay1;/延時一會,防止紊亂rd0; /將RD拉低,芯片送出數(shù)據(jù)delay1;/延時約一毫秒,讓P3口tempP3; /將數(shù)據(jù)存入temprd1; /將RD拉高4 顯示模塊軟硬件設(shè)計4

34、.1 LCD1602簡介 LCD1602每行可以輸出16個字符,可以顯示兩行,故稱1602,它不帶中文字庫,故只能顯示數(shù)字、字母和普通字符。在本設(shè)計中不檢測液晶的忙與閑,用前面對待ADC0804的方法,用軟件延時來等待液晶的忙操作時間。 液晶顯示輸出D0到D7口接P0.0到 P0.7,單獨(dú)使用一個口,另外還要接上10K上拉電阻來提高P0口帶負(fù)載能力。 當(dāng)處于讀狀態(tài)時,RS處于低脈沖,R/W為高脈沖,E為高脈沖 ,D0D7狀態(tài)字 當(dāng)處于讀數(shù)據(jù)時,RS為高脈沖,R/W為高脈沖,E為高脈沖,D0D7數(shù)據(jù)。 當(dāng)處于寫指令時,RS為低脈沖,R/W為低脈沖,D0D7指令碼,E高脈沖。 當(dāng)處于寫數(shù)據(jù)時,RS

35、為高脈沖,R/W為低脈沖,E為高脈沖,D0D7數(shù)據(jù)。4.2 本設(shè)計中LCD1602的硬件連接介紹 圖9 LCD1602硬件連接圖 1號引腳VSS接地2號引腳VDD接電源正,為液晶提供適宜電壓。15號和16號引腳也分別接電源正和地,點(diǎn)亮液晶背光燈,15號叫也可以串接一個5歐姆電阻,適當(dāng)減小背光亮度,本設(shè)計中并未接。 3號角接到10K可調(diào)電阻M103的可調(diào)端,M103另外兩端接電源正和地。用于調(diào)整液晶比照度。 RS、R/W、E分別與I/O口P2.5、P2.6、P2.7相連。 數(shù)據(jù)口與P0口連接,外接10歐姆上拉電阻。4.3 本設(shè)計中LCD1602的軟件設(shè)計4.3.1 本設(shè)計的液晶寫命令子函數(shù)和寫數(shù)

36、據(jù)子函數(shù)程序分析 圖10 LCD1602寫操作時序 注意前提,在初始化函數(shù)void init()中,已將R/W拉低(對應(yīng)lcden0;語句),即只對液晶進(jìn)行寫操作,不讀液晶狀態(tài)。之前有位定義sbit lcdrsP25;sbit lcdrwP26;sbit lcdenP27; 寫命令函數(shù)各語句分析:void write_comuchar comlcdrs0; /將RS拉低,說明對指令操作, 上電時是默認(rèn)高電平P0com; /對P0賦值,該值是對應(yīng)命令碼 ,com為形參delay5;/延時約五毫秒lcden1; /E拉高,讓液晶讀P0口,寫入對應(yīng)命令碼delay5;/延時約五毫秒,讓液晶忙完再對其

37、操作,防止數(shù)據(jù)喪失lcden0; /將E拉低 寫數(shù)據(jù)函數(shù)各語句分析:void write_comuchar dalcdrs1; /將RS拉低高,說明對數(shù)據(jù)操作P0da; /對P0賦值,該值是要寫入的數(shù)據(jù) ,da為形參delay5;/延時約五毫秒lcden1; /E拉高,讓液晶讀P0口,寫入數(shù)據(jù)delay5;/延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)喪失lcden0; /將E拉低 結(jié)合圖10,將對以上分析更加清楚。 值得注意的是,在寫數(shù)據(jù)的操作中,寫入的都是字符ASCII碼,例如想寫1,讓液晶在某處顯1,可寫write_data(1);或者write_data(0x30+1);4.3.2 本

38、設(shè)計中用到的液晶指令介紹分析本設(shè)計程序,你會看到這些寫指令命令: write_com0x38;write_com0x0c;write_com0x06;write_com1;write_com0x80+; 下面對它們中的指令碼做介紹: 0x38:液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行,并且每個字符顯示處的點(diǎn)陣為5X7; 0x0C:不顯示光標(biāo),光標(biāo)不閃爍; 0x06:在寫入一個數(shù)據(jù)后地址自動加一,顯示不移動; 1即0x01:清屏指令,即將液晶內(nèi)部存儲數(shù)據(jù)清楚,地址指針指向零; 0x80+:設(shè)置寫入數(shù)據(jù)的地址,所加的就是對應(yīng)地址。4.3.3 本設(shè)計中的字符串顯示和數(shù)據(jù)實(shí)時更新的實(shí)現(xiàn)方法

39、 寫字符串子程序: void write_struchar *p while*p write_data*p+; 這里靈巧的應(yīng)用了數(shù)組指針,比傳統(tǒng)的for嵌套循環(huán)寫入方便很多。用while*p自動檢測是否寫完,當(dāng)寫完后指針變?yōu)榱?跳出循環(huán)。如想寫入"AC value:",只需先定義數(shù)組uchar code str"AC value:",再寫語句write_strstr;寫完后指針變?yōu)榱?自動結(jié)束。數(shù)據(jù)實(shí)時更新的實(shí)現(xiàn)方法,檢測時不斷調(diào)用顯示子函數(shù),display;顯示函數(shù)如下:void displayuint value;/定義局部變量valueuchar

40、a,b,c; /定義局部變量a、b、cvalue3.92*temp; /獲得value值,它是以ppm為單位avalue/100; /a為value的百位bvalue%100/10; /b為value的十位cvalue%10;/c為value的個位write_com0x80+0x40+4; /將數(shù)據(jù)寫在第二行,第五個字符處write_data0x30+a; /在第二行,第五個字符處寫入value百位write_com0x80+0x40+5;/將數(shù)據(jù)寫在第二行,第六個字符處write_data0x30+b; /在第二行,第六個字符處寫入value十位write_com0x80+0x40+6;/將

41、數(shù)據(jù)寫在第二行,第七個字符處write_data0x30+c; /在第二行,第七個字符處寫入value個位 在循環(huán)語句中不斷調(diào)用AD轉(zhuǎn)換程序, ad;,又不斷調(diào)用顯示函數(shù),數(shù)據(jù)就能實(shí)時檢測更新。 在待機(jī)時,循環(huán)程序中不斷執(zhí)行語句:write_com0x80+6; /將數(shù)據(jù)寫在第一行,第七個字符處write_datatablea; /在第一行,第七個字符處寫入時鐘的分鐘 write_com0x80+7; /將數(shù)據(jù)寫在第一行,第八個字符處write_datatableb; /在第一行,第八個字符處寫入閃爍的冒號write_com0x80+8; /將數(shù)據(jù)寫在第一行,第九個字符處write_datat

42、ablec; /在第一行,第九個字符處寫入時鐘的秒鐘十位write_com0x80+9; /將數(shù)據(jù)寫在第一行,第十個字符處write_datatabled; /在第一行,第十個字符處寫入時鐘的秒鐘個位 由于是在不斷循環(huán)調(diào)用,即不斷數(shù)據(jù)刷新,而a、b、c、d的改變是通過定時器零實(shí)現(xiàn)的。這在后面的程序調(diào)試中詳細(xì)說明。 5其它外圍設(shè)備軟硬件設(shè)計5.1 報警電路軟硬設(shè)計5.1.1 硬件局部設(shè)計圖11 報警電路 將蜂鳴器的正端接電源正,負(fù)端接P1.0。低電平有效,蜂鳴器響起。 發(fā)光二極管D1為報警燈,它的正端接電源正,負(fù)端與470K電阻相連再接上P1.1。低電平有效,D1點(diǎn)亮。電阻限流電阻。5.1.2

43、軟件局部設(shè)計 位定義語句: sbit beepP10;/定義蜂鳴器 sbit d1P11; /定義報警燈 用程序讓蜂鳴器響: beep0; /低電平輸出時,蜂鳴器翻開 用程序讓蜂鳴器關(guān)閉: beep1; /高電平輸出時,蜂鳴器關(guān)閉 用程序?qū)1點(diǎn)亮: d10; /低電平輸出時,D1點(diǎn)亮 用程序?qū)1熄滅: d11; /高電平輸出時,D1熄滅5.2 待機(jī)指示燈軟硬件設(shè)計5.2.1 硬件局部設(shè)計圖12 待機(jī)指示燈電路 發(fā)光二極管D2為待機(jī)指示燈,它的正端接電源正,負(fù)端與470K電阻相連再接上P1.3。低電平有效,D2點(diǎn)亮。電阻限流電阻。5.2.2 軟件局部設(shè)計 位定義語句: sbit d2P11;

44、 /待機(jī)指示燈警燈 用程序?qū)2點(diǎn)亮: d20; /低電平輸出時,D2點(diǎn)亮 用程序?qū)2熄滅: d21; /高電平輸出時,D2熄滅5.3 按鍵軟硬件設(shè)計5.3.1 硬件局部設(shè)計 圖13 按鍵電路 S2和S3分別和P2.1和P2.0,再與GND相接。S2為待機(jī)控制按鍵。S3為檢測控制按鍵。R18和R19與VCC相連再并接在開關(guān)前,是為了在松手時,使I/O獲得穩(wěn)定的高電平。5.3.2 軟件局部設(shè)計位定義語句: sbit k1P20; /S3位定義 sbit k2P21; /S2位定義 S2按鍵檢測:ifk10 /檢測按鍵是否按下delay5;/消抖ifk10 /再檢測按鍵是否按下flag0; /寫

45、入要進(jìn)行的操作,這里是將標(biāo)志數(shù)flag置零while!k1; /松手檢測 S3按鍵檢測:ifk20/檢測按鍵是否按下delay5; /消抖ifk20 /再檢測按鍵是否按下flag1; /寫入要進(jìn)行的操作,這里是將標(biāo)志數(shù)flag置一while!k2; /松手檢測5.4 電源電路 圖14 電源電路 如上圖為本設(shè)計的電源電路。接入220V交流電后從變壓器輸出12V交變電壓,再經(jīng)過橋式整流電路整流,輸出直流電。穩(wěn)壓芯片7805使電壓穩(wěn)定在5V,電解電容C5和C6濾除雜波。 S4為緊鎖開關(guān),也是電源總開關(guān)。D4與R17串聯(lián),跨接在VCC與GND之間,作為電源指示燈。6.1 硬件總體框圖 6.2 程序流程

46、圖6.3 硬件調(diào)試 在制作實(shí)物時有忘記連接、虛焊、飛線以及連接錯誤等情況,好在都成功檢查了出來并改善了。目前硬件工作正常。 制作過程中最嚴(yán)重的問題是將液晶的數(shù)據(jù)口與P0口連接錯誤,完全倒置連接。考慮到P0口與液晶數(shù)據(jù)口連接處布線密集,飛線難度大,最后既定,將8根數(shù)據(jù)線剪斷,再焊上兩排排針,用杜邦線連接,最后效果很好。 硬件的連接已經(jīng)在前面各節(jié)中詳細(xì)介紹,此處不再贅述。電路原理圖和實(shí)物照片參見附錄一和附錄二。 6.4 軟件調(diào)試 本設(shè)計所用編譯軟件時keil。 各模塊的軟件設(shè)計已經(jīng)在前面各節(jié)中介紹,這里主要介紹下標(biāo)志數(shù)的應(yīng)用,按鍵消抖和松手檢測,定時器和定時器中斷,主要談及它們的原理以及軟件實(shí)現(xiàn)過

47、程。6.4.1 標(biāo)志數(shù)的應(yīng)用(主函數(shù)運(yùn)行待機(jī)程序還是檢測程序的判斷)為了能讓主函數(shù)分清是執(zhí)行執(zhí)行待機(jī)程序還是檢測程序報警程序,引進(jìn)標(biāo)志數(shù)flag。 當(dāng)flag為1時執(zhí)行待機(jī)程序: while(flag1) 待機(jī)程序 當(dāng)flag為0時執(zhí)行檢測報警程序: while(flag0) 檢測報警程序 在初始化函數(shù)中先將flag置一: flag1; 上電后那么進(jìn)入待機(jī)狀態(tài)。 按鍵k1后使flag置零,執(zhí)行檢測報警程序。按鍵k2后使flag置零,又執(zhí)行待機(jī)程序。 值得注意的是要在執(zhí)行待機(jī)程序或檢測報警程序前,執(zhí)行待機(jī)程序的程序尾部,以及執(zhí)行檢測報警程序的程序尾部多參加按鍵檢測程序:ifk10 /按鍵檢測de

48、lay5;/消抖ifk10flag0;while!k1; /松手檢測ifk20 /按鍵檢測delay5; /消抖ifk20flag1;while!k2; /松手檢測這樣就可以重新設(shè)置flag,再執(zhí)行完待機(jī)程序或檢測報警程序后,判斷接下來要執(zhí)行什么程序。6.4.2 按鍵的消抖與松手檢測的程序?qū)崿F(xiàn) 為什么要消抖?主要在手剛剛按下輕觸開關(guān)時,會有抖動,有抖動時,程序會快速跑走,這樣有可能等同于按了兩下或多下按鍵的效果。 消抖原理:在檢測到按鍵后,立刻延時約五毫秒,即延時消抖,這樣就過了抖動時間,之后手的按鍵力度是非常穩(wěn)定的。注意延時結(jié)束后立馬在檢測下按鍵是否還按下,以免因其它抖動誤判。程序如下。 k1消抖:ifk10 /按鍵檢測delay5;/延時消抖ifk10 /再次按鍵檢測 k2消抖:ifk20 /按鍵檢測delay5;/延時消抖ifk20 /再次按鍵檢測 其實(shí)用了連個開關(guān)k1和k2來分別將標(biāo)志數(shù)flag置一或置零,此時消抖不是很重要,不消抖也不會讓程序誤判。

溫馨提示

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

評論

0/150

提交評論