版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)的酒精濃度測試儀設(shè)計(jì)摘要中國經(jīng)濟(jì)的飛速發(fā)展使得私家車的占有量越來越高。人們生活水平的提高,車輛的大幅度增多,也使得道路安全問題越來越嚴(yán)重。有些事故是讓人回天乏術(shù)的,而有些事故是完全可以避免的。比如酒后駕車,這種行為是對自己以及他人生命的嚴(yán)重不負(fù)責(zé)。為了遏制這種行為,對駕駛員進(jìn)行酒精濃度測試不失為一種有效的方法。酒精濃度測試儀不僅要能準(zhǔn)確測出酒精的濃度,而且要讓測試人員讀出該濃度。當(dāng)然也要有報(bào)警裝置,提醒人們濃度超標(biāo)。本設(shè)計(jì)目的在于實(shí)現(xiàn)對不同的酒精濃度的檢測和顯示,通過適當(dāng)改進(jìn)可以用于對駕駛員進(jìn)行是否酒后駕車的檢測。本文主要采用STC89C52單片機(jī)與MQ-3型氣體傳感器,而且能夠?qū)︼@示出所測量的數(shù)據(jù),加之二極管的使用就可以簡單地顯示出所測的酒精濃度。當(dāng)其濃度超過允許值時,檢測儀將發(fā)出蜂鳴聲。關(guān)鍵詞:酒精濃度檢測;STC89C52單片機(jī);MQ-3氣體傳感器;A/D轉(zhuǎn)換,AlcoholtesterbasedonMCUAbstractTherapiddevelopmentofChina'seconomymakestheshareofprivatecarsincrease.What’smore,theimprovementofpeople'slivingstandardsandasubstantialincreaseinthevehiclemakestheroadsafetyproblemgetworse.Someaccidentsarebeyondresurrection,whileothersarecompletelycanbeavoided.Suchasdrunkdriving.suchbehaviorisseriousnotresponsibletotheirandtheothers’lives.Inordertocurbthisbehavior,thedriveralcoholtestisaneffectivemethod.Alcoholtesterisnotonlyabletoaccuratelymeasuretheconcentrationofalcohol,butalsocanlettestersreadstheconcentration.Ofcourse,wehaveanalarmsystemtoalertpeopletotheconcentrationexceeded.Thedesignaimstoachievedifferentalcoholconcentrationdetectionanddisplay.Anditcanbeusedforthedriverisdrunkdrivingteststhroughappropriateimprovements.ThispaperusesSTC89C52MCUandMQ-3GasSensorasthemaindevices.Withtheuseofthediode,thealcoholtestercandisplaythemeasureddataandsimplyshowthealcoholconcentrationmeasured.Whentheconcentrationexceedstheallowablevalue,thedetectorwillbeep.KeywordsSTC89C52microcontroller;MQ-3gassensor;A/Dconversion目錄第1章緒論 11.1酒精測試儀現(xiàn)狀和發(fā)展趨勢 11.2酒精濃度檢測儀設(shè)計(jì)的意義 11.3研究內(nèi)容 21.4系統(tǒng)總體思路 2第2章系統(tǒng)總體方案設(shè)計(jì) 32.1總體設(shè)計(jì) 32.2控制模塊方案論證 32.3顯示模塊方案論證 3第3章硬件電路設(shè)計(jì) 53.1單片機(jī)電路設(shè)計(jì) 53.1.1單片機(jī)介紹 53.1.2STC89C52的功能特性 63.1.3STC89C52的原理說明 63.2MQ3氣體傳感器 73.2.1MQ-3主要技術(shù)指標(biāo) 73.2.2MQ-3結(jié)構(gòu)、外形、測試電路 83.2.3MQ-3傳感器調(diào)理電路 103.3電源電路 113.4ADC0809 113.5LCD液晶顯示模塊 123.5.1LCD1602顯示模塊技術(shù)參數(shù) 123.5.2LCD602顯示模塊功能 133.6發(fā)光二極管顯示報(bào)警電路 153.7閾值存儲電路 163.8系統(tǒng)硬件設(shè)計(jì)原理圖分析 16第4章軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 184.1主程序設(shè)計(jì) 184.2分部分軟件設(shè)計(jì) 194.2.1ADC程序流程圖 194.2.2LCD程序流程圖 20第5章系統(tǒng)的調(diào)試及實(shí)驗(yàn)結(jié)果 215.1調(diào)試步驟 215.1.1按鍵修改酒精閾值程序 215.1.2模數(shù)轉(zhuǎn)換測試 215.1.3液晶顯示程序設(shè)計(jì) 225.1.4聲光報(bào)警測試 255.1.5整體功能調(diào)試程序 255.2實(shí)驗(yàn)結(jié)果 25結(jié)論 27致謝 28參考文獻(xiàn) 29附錄A譯文 30STC89C51RC/RD+系列MCU 30附錄B外文原文 38STC89C51RC/RD+seriesMCU 38附錄C 51附錄a:全局變量頭文件和延時模塊 51附錄b:AD轉(zhuǎn)化模塊 53附錄c:24c08存儲模塊 54附錄d:LCD顯示模塊 59附錄e:主函數(shù) 64第1章緒論1.1酒精測試儀現(xiàn)狀和發(fā)展趨勢汽車的發(fā)明,使世界的文明跨出了一大步。汽車產(chǎn)業(yè)的飛速發(fā)展使得擁有汽車已不是遙不可及的夢?,F(xiàn)在幾乎每家每戶都有汽車,汽車讓人們的距離不再遙遠(yuǎn),但交通事故卻給人們帶來了不可挽回的悲劇。交通事故多發(fā)的原因有很多,其中能避免的就是由于酒后駕車引起的交通事故。中國的酒桌文化由來已久,很多人認(rèn)為自己雖然喝了酒,但是還是能掌控車輛。但是這是完全錯誤的,在酒精的作用下,人的大腦并不能做出正確的判斷,容易錯誤的操控車輛,從而導(dǎo)致悲劇的發(fā)生。為了從根源上遏制由于酒后駕車引發(fā)的交通事故的發(fā)生,酒精濃度檢測儀的誕生便可以方便快捷的解決這一問題。不僅如此,涉及到酒精濃度檢測的食品加工、釀酒等行業(yè),也廣泛運(yùn)用酒精濃度檢測儀來提高生產(chǎn)安全性。由于科技的飛速發(fā)展,用于檢測酒精濃度的首要元件——?dú)怏w傳感器越來越符合現(xiàn)代社會的生產(chǎn)需求。用來檢測酒精濃度的傳感器正朝著功耗低,功能多,方便,快捷的方向發(fā)展。地球上大部分國家使用的都是呼吸式酒精濃度檢測儀,只要駕駛?cè)藛T對著檢測儀呼氣,就可以現(xiàn)場檢測出駕駛員體內(nèi)的酒精濃度,確定他們有沒有酒后駕車,以及是否為醉酒開車。這樣就可以大大減少這種可避免的交通事故的發(fā)生。1.2酒精濃度檢測儀設(shè)計(jì)的意義進(jìn)入二十一世紀(jì)以來,我國的經(jīng)濟(jì)發(fā)生了突飛猛進(jìn)的發(fā)展,人們的生活水平越來越高,私家車幾乎成為每家每戶的必備品。凡事有利有弊,有私家車的人大多生活質(zhì)量還不錯,這種情況下,聚會,談生意等場合下飲酒的可能性也相對比較大。由于駕駛員飲用大量酒精后導(dǎo)致駕駛?cè)藛T判斷力降低,不能很好的操控機(jī)動車,從而導(dǎo)致非常嚴(yán)重的交通事故,家破人亡,慘絕人寰的事情頻頻發(fā)生。為什么喝酒以后不宜開車呢?那是因?yàn)榫坪篑{車,由于駕駛員體內(nèi)酒精濃度比較高,會使其反應(yīng)速度比較慢,對危險(xiǎn)的評估能力比較低,因而不能對危險(xiǎn)起到很好的控制,悲劇就此發(fā)生。而酒精濃度檢測儀可以檢測出駕駛員體內(nèi)的酒精濃度,從而預(yù)防駕駛員酒后駕車,從而減少因酒后駕車導(dǎo)致的交通事故的發(fā)生。因此研究酒精濃度測試儀對這個社會的安定和諧是有重大意義的。1.3研究內(nèi)容本論文研究的主要內(nèi)容如下:(1)氣體傳感器:本設(shè)計(jì)使用的是MQ-3氣體傳感器。主要研究MQ-3氣體傳感器的性能特性,以及怎樣將其運(yùn)用到本設(shè)計(jì)中去;(2)單片機(jī):選擇STC89C52單片機(jī),作為控制單元;(3)模數(shù)轉(zhuǎn)換:模擬電壓信號經(jīng)放大電路被放大后,通過單片機(jī)內(nèi)部的模數(shù)轉(zhuǎn)換器,將模擬電壓信號變成數(shù)字電壓信號;(4)LCD顯示器:數(shù)碼管顯示器上顯示其測得的酒精濃度,并與所設(shè)置的濃度閾值進(jìn)行對比,若超過閾值,則通過蜂鳴器發(fā)出報(bào)警;(5)軟件方面:通過對單片機(jī)的編程,最終實(shí)現(xiàn)數(shù)據(jù)在數(shù)碼管上的顯示1.4系統(tǒng)總體思路設(shè)計(jì)酒精濃度檢測儀首先要有一個氣體傳感器將乙醇的濃度變成電信號。本設(shè)計(jì)選擇的是MQ-3型氣體傳感器,該傳感器靈敏度高,價(jià)格低,使用方便,是做酒精濃度檢測儀的不二之選。而傳感器得到的電信號不能直接用來傳輸給單片機(jī),因此得到的信號要經(jīng)過一定的電路處理,變成0~5V的模擬電壓后方能輸出。由于這里得到的是模擬電壓,要經(jīng)過A/D轉(zhuǎn)換器才能將其變成數(shù)字電壓。這里選用STC89C52單片機(jī)的好處就體現(xiàn)出來了。因?yàn)镾TC89C52單片機(jī)內(nèi)部自帶的A/D轉(zhuǎn)換模塊,無需外接轉(zhuǎn)換器,這樣就大大地降低了設(shè)計(jì)難度和設(shè)計(jì)成本。模擬信號通過A/D轉(zhuǎn)換后便會輸出酒精濃度的數(shù)據(jù),把該數(shù)據(jù)與預(yù)先設(shè)定的醉酒閾值進(jìn)行對比。要想實(shí)現(xiàn)酒精濃度值在數(shù)碼管上顯示或報(bào)警,就要將該該數(shù)據(jù)送到單片機(jī)的P1口,再通過STC89C52單片機(jī)進(jìn)行一些軟件程序的處理。 第2章系統(tǒng)總體方案設(shè)計(jì)2.1總體設(shè)計(jì)圖2-1總體設(shè)計(jì)框圖本論文的第一步就是信號采集模塊,即由傳感器采集酒精濃度信號。然而采集到的僅僅是模擬信號,所以要通過一個模數(shù)轉(zhuǎn)換器,將原本的模擬信號轉(zhuǎn)變成數(shù)字信號。這就要求單片機(jī)內(nèi)部能進(jìn)行模數(shù)轉(zhuǎn)換。出于這方面的考慮,就選擇了STC89C51型單片機(jī)。這樣省去了不少麻煩。單片機(jī)作為控制模塊與LCD顯示器相連接,并通過編程,控制其顯示出所測試的乙醇的濃度。同時單片機(jī)還與鍵盤連接,這樣就能改變閾值,使所設(shè)計(jì)的酒精濃度檢測儀適應(yīng)多種場合需要。另外所測得的酒精濃度與閾值做比較,當(dāng)超過預(yù)設(shè)閾值時,報(bào)警器就會發(fā)出報(bào)警。2.2控制模塊方案論證控制模塊主要是由單片機(jī)來完成。單片機(jī)接收酒精濃度傳感器送來的模擬數(shù)據(jù),首先要將其變成數(shù)字量。然后通過對單片機(jī)的一系列編程,使其控制LCD顯示器顯示酒精濃度值。同時,通過鍵盤改變閾值,把設(shè)置的閾值傳送給單片機(jī),這樣就能使測得的酒精濃度與實(shí)時閾值相比較,并將比較結(jié)果通過單片機(jī)傳達(dá)給聲光報(bào)警器。最終實(shí)現(xiàn)報(bào)警功能。2.3顯示模塊方案論證顯示模塊選擇LCD液晶顯示器來完成,因其符合設(shè)計(jì)的需求,將單片機(jī)的P0口與LCD相連便可傳輸經(jīng)過單片機(jī)處理的數(shù)據(jù),使酒精濃度值在LCD上顯示。通過一系列編程,便能達(dá)到設(shè)計(jì)預(yù)想的結(jié)果。第3章硬件電路設(shè)計(jì)3.1單片機(jī)電路設(shè)計(jì)單片機(jī)介紹STC89C52單片機(jī)是宏晶公司生產(chǎn)的STC系列增強(qiáng)型8051單片機(jī),這種單片機(jī)幾乎囊括了采集數(shù)據(jù)和系統(tǒng)控制過程中所有的單元模塊。這種單片機(jī)的指令代碼完全可以兼容傳統(tǒng)的8051單片機(jī),這樣既能使元件性能提高,又不用大費(fèi)周章的重新編寫指令代碼。STC89C52單片機(jī)在標(biāo)準(zhǔn)的8051基礎(chǔ)上新增了許多實(shí)用功能:ISP/IAP編程方式,6時鐘/機(jī)器周期模式,內(nèi)部擴(kuò)展RAM,雙DPTR數(shù)據(jù)指針,擴(kuò)展P4口,內(nèi)置看門狗電路,多種復(fù)位方式,省電模式實(shí)現(xiàn)超低功耗,PCA/PWM功能。相較于傳統(tǒng)的8051功能更加強(qiáng)大。其引腳圖和內(nèi)部結(jié)構(gòu)如圖3-1所示:圖3-1STC89C52單片機(jī)管腳圖STC89C52的功能特性(1)內(nèi)有增強(qiáng)型52內(nèi)核。(2)工作電壓:3.4~5.5V。(3)內(nèi)部集成MAX810專用復(fù)位,使復(fù)位可靠更高,8級可選復(fù)位門檻電壓,徹底省掉外部復(fù)位電路。(4)低功耗設(shè)計(jì)(5)工作頻率:0~35MHz,相當(dāng)于普通8051:0~4205MHz。(6)通用I/O口,無需上拉電阻便可作為總線擴(kuò)展用,但必須加上上拉電阻才能作為I/O口使用。(8)UART(通用異步串行口)。(9)具有片上集成512字節(jié)RAM數(shù)據(jù)存儲器。(10)具有片內(nèi)EEPROM功能(11)ISP/IAP,,無需編程器/仿真器便可通過串口直接下載用戶程序,而且速度非常快。(12)8通道,8位逐次逼近式ADC。(13)捕獲/比較單元(PWM/PCA)STC89C52的原理說明圖3-2單片機(jī)系統(tǒng)原理圖STC89C52單片機(jī)為52內(nèi)核8位單片機(jī),選擇這個型號的單片機(jī)的一個重大原因是它內(nèi)部集成了8位多路A/D轉(zhuǎn)換模塊。如圖3-2所示,這個單片機(jī)系統(tǒng)原理圖適用于常用檢測。該原理圖中STC89C52占主要地位。MQ-3傳感器模塊將檢測電壓信號通過AOUT這條線送入單片機(jī)的ADC7端口進(jìn)行處理,然后經(jīng)過單片機(jī)內(nèi)部的ADC0809處理后,變成數(shù)字電平信號,由單片機(jī)的P0口送出。P0口則與LCD顯示器相連。通過把數(shù)據(jù)信號傳送給LCD使其顯示出測得的濃度。這樣更加直觀的讓使用者知道濃度的具體值。然后比較測得的酒精濃度與閾值大小。如果測得的信號如果超出閾值,就會發(fā)出報(bào)警信號。另外上圖最下方是一個時鐘電路,用于產(chǎn)生時鐘信號。P1.0與P1.1是與外部存儲器相連的,這個存儲器用于存儲設(shè)定的閾值,這樣就能更加人性化,使該設(shè)計(jì)的應(yīng)用場合更加廣泛。3.2MQ3氣體傳感器酒精濃度檢測的準(zhǔn)確性決定于其所用的傳感器。而MQ-3乙醇?xì)怏w傳感器具有較高的靈敏度,和較好的穩(wěn)定性,可以應(yīng)用用于機(jī)動車駕駛?cè)藛T及其他嚴(yán)禁酒后作業(yè)人員的現(xiàn)場檢測,也用于其他場所乙醇蒸汽的檢測。其技術(shù)特點(diǎn)為:靈敏度高,酒精濃度的細(xì)微變化,都能檢測出來對于外界的干擾具有良好的選擇性具有快速的響應(yīng)恢復(fù)特性有效工作時間比較長而且比較穩(wěn)定具有簡單的驅(qū)動回路具有信號輸出指示能夠輸出兩路信號TTL輸出有效信號為低電平這時可直接接單片機(jī)MQ-3主要技術(shù)指標(biāo)表3-1MQ-3主要技術(shù)指標(biāo)MQ-3結(jié)構(gòu)、外形、測試電路如圖3-3所示,是MQ-3傳感器的內(nèi)部主要結(jié)構(gòu)。因其良好的特性,而且價(jià)格便宜,所以這種傳感器被廣泛用于單片機(jī)學(xué)習(xí)中。和一般的電子元器件一樣,它只需要5V電壓為其供電,因此功耗比較低。使用時應(yīng)注意要預(yù)熱20s,這樣更能確保其檢測的準(zhǔn)確性。圖3-3MQ-3氣敏元件結(jié)構(gòu)圖表3-2MQ-3傳感器的主要組成材料表下圖3-4為MQ-3乙醇?xì)怏w傳感器的靈敏度曲線。其工作原理是,當(dāng)酒精氣體濃度發(fā)生改變時,MQ-3的氣敏電阻也隨之改變,由圖可以看出,該傳感器的靈敏度非常高,因此準(zhǔn)確性也比較高。圖3-4MQ-3乙醇?xì)怏w傳感器靈敏度曲線MQ-3傳感器調(diào)理電路圖3-5為MQ-3乙醇?xì)怏w傳感器接入電路原理圖。其實(shí)物圖如圖3-6所示。MQ-3測得的信號,經(jīng)過一定的電路處理后,在輸入單片機(jī)的A/D轉(zhuǎn)換模塊。這樣更便于單片機(jī)處理信號。圖3-5傳感器模塊原理圖圖3-6MQ-3傳感器模塊實(shí)物圖本論文所設(shè)計(jì)的傳感器模塊為了方便與單片機(jī)系統(tǒng)連接組成酒精濃度檢測儀。RP是用來調(diào)節(jié)閾值的,當(dāng)LM393的2腳(即測得的酒精濃度信號)比3腳高時,其1腳就會輸出低電平。這時LED燈就會亮起。圖中R3為限流電阻,C1為濾波電容。而且該電路有兩路信號輸出,另一路是MQ-3檢測到的模擬量,通過AOUT與單片機(jī)ADC7端口相連,實(shí)現(xiàn)模擬信號送入A/D轉(zhuǎn)換模塊。3.3電源電路本設(shè)計(jì)采用USB接口供電,供電電壓為5V。當(dāng)USB接口與電腦相連時,并不能直接供電,而要通過內(nèi)含的PL2303芯片的轉(zhuǎn)換電路才能實(shí)現(xiàn)對單片機(jī)進(jìn)行程序編寫。其電路原理如圖所示。圖3-7供電及程序下載電路3.4ADC0809ADC0809是8路8位逐次逼近式的A/D轉(zhuǎn)換器。該器件的主要性能如下:1.采用單一的+5v電源逐次逼近式A/D轉(zhuǎn)換。實(shí)現(xiàn)A/D轉(zhuǎn)換所需要的時間極端,僅為100s。2.分辨率為8位二進(jìn)制碼,總失調(diào)誤差為1LSB。3.具有8通道模擬量選通開關(guān)控制,可以直接接入8個單端模擬量。4.轉(zhuǎn)換后的數(shù)字信號采用三態(tài)邏輯,輸出符合TTL電平。ADC0809引腳功能如下:1.IN0-IN7:8個模擬輸入通道的輸入引腳。2.D0-D7:8位數(shù)字量輸出引腳,輸出轉(zhuǎn)換結(jié)果。3.START:啟動信號輸入引腳。A/D轉(zhuǎn)換由正脈沖啟動,其上升沿使ADC0809復(fù)位,下降沿啟動A/D轉(zhuǎn)換。4.ALE:地址鎖存允許信號,輸入。A/B/C3位地址碼被送入內(nèi)部的地址鎖存器中,以選擇模擬輸入通道。5.EOC:轉(zhuǎn)換結(jié)束信號,輸出。啟動信號后經(jīng)延時,使EOC降為低電平,待轉(zhuǎn)換結(jié)束,恢復(fù)到高電平。6.OE:高電平允許輸入。7.CLK:時鐘信號,典型值為640KHz,范圍為10KHz-1280KHz。8.(+)和(-):參考電壓的正負(fù)端輸入引腳。其典型值為(+)=+5V.(-)=0V。9.和GND:+5V的電源和地。圖3-8模數(shù)轉(zhuǎn)換IN0用于接收MQ-3傳感器傳來的模擬電壓信號,IN1為比較器LM393的電壓信號。D0-D7用來輸出轉(zhuǎn)換后的數(shù)字電壓信號3.5LCD液晶顯示模塊LCD即液晶顯示器,是一種低功耗的顯示器,其應(yīng)用十分廣泛。液晶顯示器可根據(jù)需要將電極做成各種文字、數(shù)字、圖形以獲得各種形態(tài)的顯示。1602是一款通用的字符型LCD,由于其價(jià)格低,采購容易,方便控制,得到廣泛運(yùn)用。1602有14和16條引腳線兩種,區(qū)別在于多了2條背光電源線。主要功能有:40通道點(diǎn)陣LCD驅(qū)動;有行驅(qū)動和列驅(qū)動兩種選擇。LCD1602顯示模塊技術(shù)參數(shù)表3-3LCD1602的主要技術(shù)參數(shù)顯示容量16×2個字符芯片工作電壓4.5~5.5V最佳工作電壓5.0V最佳工作電流2.0mA字符尺寸2.95×4.35mmLCD602顯示模塊功能表3-4LCD1602引腳,符號功能說明引腳標(biāo)號狀態(tài)說明Vss1接地VDD2電源正極(5V)VL3用于調(diào)整液晶顯示器的對比度RS4輸入用于選擇用何種寄存器,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。R/W5輸入讀寫選擇,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作E6輸入使能端,當(dāng)E端從高電平變成低電平,液晶模塊執(zhí)行命令D0~D77~14三態(tài)8位雙向數(shù)據(jù)IOBLA15輸入背光源正極BLB16輸入背光源負(fù)極表3-5LCD1602部分指令說明表指令碼功能01H顯示清屏,數(shù)據(jù)指針清0,所有顯示清008H顯示關(guān)閉06H顯示光標(biāo)移動設(shè)置0CH顯示開及光標(biāo)設(shè)置02H顯示回車,數(shù)據(jù)指針清01602液晶顯示器要想得到廣泛運(yùn)用,就需要包含數(shù)字,英文字母等常見字符。要能擁有這些字符,則需有存儲器存儲這些字符,即有字符發(fā)生存儲器(CGROM)。如何將這些不同形式的字符存儲到液晶顯示器內(nèi),就需要一種代碼。這種代碼稱為ASCII碼。而且為了不造成混亂,每一個字符都有自己的專屬代碼,比如數(shù)字0的代碼是30H,顯示時模塊把地址30H中的點(diǎn)陣字符圖形顯示出來,我們就能看到數(shù)字“1”通過對ASCII碼賦值,實(shí)現(xiàn)對LCD顯示器的操作。當(dāng)然也可以直接用字符型常量或者變量賦值表3-6LCD1602寄存器選擇控制表單片機(jī)控制LCD的接口電路如圖3-9所示。其中J2的3腳為背光引腳,與R9和R10電阻連接主要為了調(diào)節(jié)背光亮度,使其不至于出現(xiàn)鬼影。,單片機(jī)對LCD顯示器的控制主要通過J2的4、5、6引腳,這三個引腳為液晶顯示器的RS、E/W和E控制引腳與單片機(jī)的P2.5,P2.6,P2.7相連,。J2的7—14引腳與單片機(jī)的P0.0-P0.7相連,用于傳輸數(shù)據(jù)。圖3-9LCD與單片機(jī)接口電路3.6發(fā)光二極管顯示報(bào)警電路圖3-10聲光報(bào)警電路當(dāng)經(jīng)過A/D轉(zhuǎn)換后的數(shù)字信號值比預(yù)設(shè)的閾值大時,單片機(jī)的P3.3口輸出低電平。而P3.3口語聲光報(bào)警電路相連,當(dāng)其為低電平時,三級管Q1就會導(dǎo)通,那么二極管就會發(fā)光,而且蜂鳴器也會發(fā)出蜂鳴聲。當(dāng)P3.3口輸出高電平時,聲光報(bào)警電路將不能導(dǎo)通,不會有報(bào)警現(xiàn)象。3.7閾值存儲電路當(dāng)對傳感器模塊的Rp進(jìn)行調(diào)節(jié)時,所設(shè)立的閾值會相應(yīng)的做出改變。這個值必須經(jīng)過存儲,才能用于比較大小。所以必須要有一個存儲器。單片機(jī)通過P1.0和P1.1口對EEPROM進(jìn)行編程,EEPROM將新的閾值存儲到芯片中,從而實(shí)現(xiàn)閾值的重新設(shè)置。芯片AT24C04的SCL和SDA分別與單片機(jī)的P1.0和P1.1相連。圖3-11EEPROM存儲電路3.8系統(tǒng)硬件設(shè)計(jì)原理圖分析圖3-12系統(tǒng)硬件設(shè)計(jì)原理圖上圖中USB接口與電腦相連,與單片機(jī)的RXD0口和TXD口相連,給單片機(jī)提供5V電源。當(dāng)按下K1鍵時,電路接通,指示燈亮起,說明有供電。EEPROM存儲電路的SCL口和SDA口分別與單片機(jī)的P1.0和P1.1相連,用于存儲新設(shè)定的閾值。下面要解決的問題就是怎樣把傳感器測得的信號傳給單片機(jī)了。傳感器的兩個接口AOUT和DOUT分別與單片機(jī)的P1.7和P1.4相連,用來給單片機(jī)傳輸測得的模擬電壓。經(jīng)過單片機(jī)內(nèi)部的模數(shù)轉(zhuǎn)換功能,將模擬變壓變成數(shù)字電壓,并將其傳送給LCD顯示器。單片機(jī)通過P2.7,P2.6,P2.5與LCD顯示器的4,5,6引腳相連,控制其工作。7-14引腳分別與單片機(jī)的P0.0-P0.7相連,用于傳輸數(shù)據(jù)。第4章軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)4.1主程序設(shè)計(jì)圖4-1主程序流程圖程序設(shè)計(jì)的第一步便是使系統(tǒng)初始化,因?yàn)楸驹O(shè)計(jì)可以自行設(shè)定閾值,所以只能通過中斷來設(shè)定需要的閾值。如果沒有中斷即沒有設(shè)置閾值,那么就用之前的閾值。如果有外部中斷,那么就啟動設(shè)定閾值操作。另一方面,氣體傳感器檢測到酒精后,要經(jīng)過A/D轉(zhuǎn)換模塊,然后經(jīng)過一系列的數(shù)據(jù)處理,得到酒精濃度值。這個值一方面要在LCD上顯示出來,另一方面要與閾值進(jìn)行對比,若大于閾值,就要啟動聲光報(bào)警器,若小于閾值就不報(bào)警。程序的主要難點(diǎn)就在怎樣得到酒精濃度值上面。而這項(xiàng)操作主要在單片機(jī)內(nèi)完成的。所以本論文設(shè)計(jì)的酒精濃度測試儀,功耗低,速度快,結(jié)果準(zhǔn)確。4.2分部分軟件設(shè)計(jì) ADC程序流程圖ADC程序流程圖圖4-2ADC程序流程圖因?yàn)锳/D轉(zhuǎn)換必須依靠下降沿觸發(fā)才能啟動,所以編程時要注意做一定的延時,通常為10ms,再進(jìn)入下一步操作。然后才進(jìn)行A/D轉(zhuǎn)換,如果轉(zhuǎn)換完成,就會得到數(shù)字電壓,然后經(jīng)過調(diào)用數(shù)據(jù)處理程序就能夠得到所測得的酒精濃度值。如果轉(zhuǎn)換未完成,則繼續(xù)轉(zhuǎn)換。LCD程序流程圖圖4-3LCD控制流程圖在對系統(tǒng)進(jìn)行初始化后,如果檢測到該酒精濃度檢測儀有外部中斷,那么就可以重新設(shè)置酒精濃度閾值。這個閾值不僅要設(shè)置,還要儲存起來,以便與以后要檢測的酒精濃度進(jìn)行比較。如果沒有外部中斷響應(yīng),那么測得的酒精濃度值還是與之前的閾值比較。第5章系統(tǒng)的調(diào)試及實(shí)驗(yàn)結(jié)果5.1調(diào)試步驟 按鍵修改酒精閾值程序設(shè)置酒精濃度閾值的程序的思路就是,如何讓單片機(jī)知道使用者正在設(shè)置閾值。這就要求檢測儀要不間斷地檢測。一旦發(fā)現(xiàn)有按鍵被按下,就知道要修改閾值。并且按照按鍵按下的次數(shù)修改。檢測到的酒精濃度應(yīng)與最新設(shè)置的閾值相比較,一旦比閾值大,蜂鳴器就要工作而且指示燈要亮起。模數(shù)轉(zhuǎn)換測試A/D轉(zhuǎn)換模塊首先要初始化,然后將得到的關(guān)于酒精濃度的模擬量經(jīng)過一系列處理,變成數(shù)字量。而且要將其通過單片機(jī)傳送到液晶顯示上面。同時得到的數(shù)字量還要與預(yù)先設(shè)立的閾值相比較。液晶顯示程序設(shè)計(jì)液晶顯示器程序首先是要將其初始化,要實(shí)現(xiàn)其能接收單片機(jī)傳來的數(shù)據(jù)。聲光報(bào)警測試 當(dāng)測得酒精濃度超過閥值時,單片機(jī)的P3.3口就會變成低電平,就會激發(fā)蜂鳴器和指示燈工作。整體功能調(diào)試程序本設(shè)計(jì)分成幾個部分共同完成操作,然后分別對不同的模塊進(jìn)行調(diào)試,最后再進(jìn)行整合。再將所有的程序放到keil編譯器里面進(jìn)行編譯,編譯成功后,便會生成HEX文件,再將改程序燒錄到單片機(jī)中,然后上電便可以工作了。上電以后,所設(shè)計(jì)的酒精濃度測試儀便會按照所設(shè)置的初始化程序工作,酒精濃度的閾值也是當(dāng)初設(shè)定的,如果酒精濃度超過該閾值,測試儀就會發(fā)出報(bào)警。如果設(shè)定酒精濃度閾值的按鍵被使用者按下,則酒精濃度的閾值就會被重新設(shè)定,并被保存下來,所測得的酒精濃度將與重新設(shè)定的閾值進(jìn)行比較,如果超過閾值,就會報(bào)警,而且所測得的酒精濃度值也會在液晶顯示器上顯示。5.2實(shí)驗(yàn)結(jié)果 本設(shè)計(jì)是基于單片機(jī)的酒精濃度測試儀,采用模塊化程序設(shè)計(jì)思想,相對來說結(jié)構(gòu)簡單,而且使用起來方便。,通過硬件電路的設(shè)計(jì)和軟件方面的調(diào)試,最終實(shí)現(xiàn)了酒精濃度的檢測。其實(shí)驗(yàn)結(jié)果基本能夠滿足設(shè)計(jì)要求。而且通過按鍵,可以修改門限值,當(dāng)檢測到的酒精濃度超出所設(shè)定的閾值時,就會顯示所測得的酒精濃度值,而且系統(tǒng)會自動報(bào)警此次酒精測試儀的設(shè)計(jì),在軟件方面參考了一些網(wǎng)上的資料,在硬件方面也找了許多書本作為參考。選用STC89C52單片機(jī)的主要原因是其內(nèi)部含有A/D轉(zhuǎn)換功能,這樣就比較方便,而且操作起來也相對簡單。剛開始設(shè)計(jì)電路時,想直接把閥值設(shè)置為定值,直接燒進(jìn)單片機(jī)的程序里,但是后來發(fā)現(xiàn)這樣不能應(yīng)用于實(shí)際,那研究也就失去了原本的意義。于是增加了AT24C02用來存儲閾值。并通過兩個電位鍵來調(diào)整閾值的大小。本次畢業(yè)設(shè)計(jì),讓我受益匪淺。我熟悉了protel的操作,Keil的運(yùn)用,c語言的知識以及單片機(jī)的使用。我相信將所學(xué)到的知識用到以后的工作中去,一定會增加自己的砝碼。在這期間我發(fā)現(xiàn)的自身的不足,也促使我在將來的學(xué)習(xí)工作中逐漸改善,通過本次學(xué)習(xí)實(shí)踐,我的知識能力得到了提高,也增強(qiáng)了我學(xué)習(xí)新知識的能力。結(jié)論本次設(shè)計(jì)的總的方向的把握不是很難,思路很清晰。要檢測濃度,首先要有傳感器,有了傳感器得到模擬信號就要有模數(shù)轉(zhuǎn)換。變成數(shù)字信號后,要讓使用者知道濃度具體值的大小,,那就需要一個顯示器。同時還要有一個評判是否酒駕的閾值,要想更具實(shí)用性,閾值得能隨意改動,就需要一個存儲閾值的存儲器。而且需要一個比較器,比較測得的濃度和閾值。比較結(jié)果通過報(bào)警器是否工作來實(shí)現(xiàn)。大體需要哪些東西心里有數(shù)了,但是元器件的選擇也是個難點(diǎn)。首先要準(zhǔn)確,其次要方便操作,同時還要功耗低。在具體電路連接時也要考慮其可操作性。電路搭建好了就是編程,這又是一大難點(diǎn)。在參考了好多相關(guān)資料和老師的幫助下,終于如愿得到了預(yù)期的效果??偟膩碚f,通過這次設(shè)計(jì),發(fā)現(xiàn)自己還有很多不足,還有很多地方需要學(xué)習(xí)。也使我學(xué)到了很多知識。每個新知識的學(xué)習(xí)都會在以后的道路上給自己增添底氣。致謝首先非常感謝老師能在百忙之中抽空指導(dǎo)我的論文,在老師的幫助下,我由原來對單片機(jī)不大了解的人,漸漸熟悉起來。原本也從未用過protel,在老師的幫助下也漸漸知道怎么用,學(xué)到了一樣新的技能。我對c語言的知識已經(jīng)忘得差不多了,在老師的幫助下也完成了軟件方面的設(shè)計(jì)。要不是老師給予我的幫助,我可能根本無法完成這次課程設(shè)計(jì)。衷心感謝老師。參考文獻(xiàn)1肖金球,馮翼.增強(qiáng)型51單片機(jī)與仿真技術(shù)[M].北京:清華大學(xué)出版社,2011,22-318.2肖金球.單片機(jī)原理與接口技術(shù)[M].北京:清華大學(xué)出版社,2004,17-128.3周鴻武.基于單片機(jī)的酒精濃度檢測儀設(shè)計(jì)[J].制造業(yè)自動化,2012,02:6-8.4趙書紅,張健健.基于單片機(jī)的酒精氣體濃度測試儀的設(shè)計(jì)與制作[J].電子世界,2013,20:1-10.5李亞梅,郝雪明,馬艷玲.基于單總線技術(shù)的智能測溫報(bào)警儀研制.晉中學(xué)院學(xué)報(bào)[N],2008,25.6康華光.電子技術(shù)基礎(chǔ)模擬部分(第五版)[M].北京:高等教育出版社,2006:123-340.7康華光.電子技術(shù)基礎(chǔ)數(shù)字部分(第五版)[M].北京:高等教育出版社,2006:10-256.8紀(jì)宗南.單片機(jī)外圍器件使用手冊—輸入通道器件分冊[M].北京:北京航空航天大學(xué)出版社,2005:121-126.9賈伯年.傳感器技術(shù)[M].南京:東南大學(xué)出版社,2000:55-60.10孫傳友.溫控系統(tǒng)原理與設(shè)計(jì)[M].
北京:北京航空航天大學(xué)出版社,2002:15-27.11何希才.傳感器及其應(yīng)用[M].北京:國防工業(yè)出版社,2001:36-45.12鄭學(xué)堅(jiān).微型計(jì)算機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2006:332-351.附錄A譯文STC89C51RC/RD+系列MCU8.2UART操作模式通過在SFRSCON中設(shè)置SM0和SM1可以使串口(UART)在4種不同模式下工作。其中模式1,模式2和模式3是異步通信。而在模式0下,UART僅作為一個簡單的移位寄存器。模式0:8位移位寄存器當(dāng)寫0s到SCON的SM1和SM0時,就會選擇模式0,使串口進(jìn)入8位移位寄存器模式。通過RXD,串行數(shù)據(jù)進(jìn)入和輸出。TXD口輸出移位時鐘。8個數(shù)據(jù)位最先用LSB發(fā)送/接收數(shù)據(jù)。波特率固定為1/12系統(tǒng)時鐘周期默認(rèn)值。如果相同的情況在STC-ISP中寫/編程,波特率將為1/6系統(tǒng)時鐘周期。傳輸是通過使用SBUF作為目標(biāo)寄存器的指令開始的。“寫入SBUF”信號也以為著加一個“1”到發(fā)送移位寄存器的第9位,并通知TX控制模塊開始傳輸。內(nèi)部定時是這樣的,一個完整的系統(tǒng)時鐘周期從“寫SBUF”開始到激活發(fā)送結(jié)束。SEND把移位寄存器的輸出值發(fā)送到P3.0的選擇輸出口,同時將移位時鐘發(fā)送到P3.1的選擇輸出口。在移位時鐘的下降沿,移位寄存器內(nèi)的數(shù)據(jù)將右移。當(dāng)數(shù)據(jù)位正好把“0”從左邊移到右邊。當(dāng)數(shù)據(jù)的MSB字節(jié)在移位寄存器中時被存到第9位的“1”的正好位于MSB的左側(cè),并且左邊的所有位置都包含零。這種情況下標(biāo)志著TX控制模塊做最后一次移位,然后解除SEND并設(shè)置TI。這兩種行為都是在“寫SBUF”后發(fā)生的。當(dāng)REN=1和RI=0時,開始接收。在那之后,RX控制單元寫11111110到負(fù)責(zé)接收的移位寄存器,并在下一時鐘激活接收。接收使能移位時鐘到P3.1的選擇輸出端。在接收被激活時,接收移位寄存器的內(nèi)容向左移一個位置。從右側(cè)取到的值就是P3.0在移位時鐘的上升沿的取樣值。當(dāng)把右邊的數(shù)據(jù)向左側(cè)移一位,當(dāng)最初加載到移位寄存器最右邊位置的“0”移到最左邊的位置,標(biāo)志著RX控制區(qū)將做最后一次移位并加載SBUF。然后RECEIVE被清除,RI被設(shè)置。模式1:8位可變波特率的UART在模式1情況下,STC89xx串行端口可作為一個8位可變波特率的UART?;蛘呤恰巴ㄓ卯惒浇邮掌?發(fā)射器”。這是一個接收和發(fā)送一系列數(shù)據(jù)的設(shè)備,每個數(shù)據(jù)字符接收和發(fā)送串行數(shù)據(jù)之前有一個起始位(低),后面是一個停止位(高)。奇偶校驗(yàn)位的最后一個數(shù)據(jù)位和停止位之間有時會插入相同位。UART的一個基本操作就是并行到串行輸出數(shù)據(jù)的轉(zhuǎn)換和串行到并行輸入數(shù)據(jù)的轉(zhuǎn)換。在模式1情況下,10比特通過TXD傳送或通過RXD接收。該數(shù)據(jù)幀包括一個起始位(0),8個數(shù)據(jù)位(LSB在前)以及一個停止位(總是1)。對于接收操作,停止位進(jìn)入在SFR–SCON中的RB8。波特率由定時器1或定時器2的溢出率決定。在模式1下的波特率=(2SMOD/32)×定時器1溢出率或=(2SMOD/16)×定時器2溢出率
傳輸就是通過使用SBUF作為目標(biāo)寄存器的指令開始。在“寫SBUF”信號也加載一個“1”進(jìn)入發(fā)送移位寄存器的9th位時,標(biāo)志著正在發(fā)送請求TX控制單元。實(shí)際上發(fā)送過程發(fā)生在16位計(jì)數(shù)器的下次翻轉(zhuǎn)。因此,位時間與16計(jì)數(shù)器是同步的,而不是與“寫入SBUF”信號同步。激活SEND以后開始傳輸,這使TXD是起始位。一比特時間后,DATA被激活,這使發(fā)送移位寄存器輸出到TXD。第一個移位脈沖發(fā)生在那之后。當(dāng)數(shù)據(jù)位移到右邊,零是從左邊移入。當(dāng)數(shù)據(jù)字節(jié)的MSB在移位寄存器的輸出位置,則1就被最初被植入MSB左邊的第9位,并且所有包含零的都在左側(cè)位置。這種情況標(biāo)志TX控制單元將做最后一次移位,然后解除SEND并給TI置位。這發(fā)生在第10除以16翻轉(zhuǎn)在“寫S??BUF”之后。通過檢測1到0的轉(zhuǎn)變開始接收RXD。為了這個目的,RXD被既定波特率的16倍速度采樣。當(dāng)檢測到轉(zhuǎn)換時,分逐16計(jì)數(shù)器立即復(fù)位,同時將1FFH寫入輸入移位寄存器。對照其循環(huán)翻轉(zhuǎn)重新劃分16位計(jì)數(shù)器。16位計(jì)數(shù)器將每個位時間分成16份。在每個位時間的第7,第8和第9計(jì)數(shù)狀態(tài)時,位檢測樣品RXD的值。接受的值是被認(rèn)為在至少2/3的采樣的值??。這樣做是為了抑制噪聲。為了防止錯誤位,如果在第一個位時間接受的值不是0,接收電路就會復(fù)位,單元繼續(xù)尋找另一個1到0的轉(zhuǎn)變。這是為了防止錯誤的起始位。如果起始位有效,則移入輸入移位寄存器,繼續(xù)接受該幀的其余部分。當(dāng)數(shù)據(jù)位“1”從右邊移出到左側(cè)。當(dāng)起始位到達(dá)移位寄存器的最左邊的位置,這是在模式1下的9位寄存器),標(biāo)志著RX控制區(qū)將做最后一次移位,載入SBUF和RB8,并且設(shè)置RI。該信號加載SBUF和RB8并設(shè)置如果RI生成,且僅當(dāng)以下條件滿足時產(chǎn)生最后一個移位脈沖的時間。1)RI=0而且2)無論是SM2=0,或SM2=0和接收到的停止位=1如果任這兩個條件不滿足,接收到的數(shù)據(jù)幀都會丟失。如果兩個條件都滿足時,停止位進(jìn)入RB8,而8位數(shù)據(jù)則進(jìn)入SBUF,并且RI被激活。此時,在上述條件是否得到滿足,該單元繼續(xù)尋找一個1到0的RXD過渡。模式2:9位有固定波特率的UART當(dāng)SM1=1和SM0=0時,串行端口在模式2下作為一個9位固定波特率的UART。11位通過TXD傳送或通過RXD接收。數(shù)據(jù)幀包括一個起始位(0),8個數(shù)據(jù)位,一個可編程的第9位數(shù)據(jù)和一個停止位(1)。發(fā)送時,第9位來自SCON中的TB8。在接收時,第9個數(shù)據(jù)位進(jìn)入SCON的RB8。波特率可編程為1/32或1/64的系統(tǒng)時鐘周期。模式2下的波特率=(2SMOD/64)×SYSCLK傳輸是通過使用SBUF作為目標(biāo)寄存器的指令開始?!皩慡BUF”信號也加載TB8到移位寄存器的第9位,并且告訴TX控制單元,請求發(fā)送。實(shí)際上發(fā)送過程發(fā)生在按16劃分的計(jì)數(shù)器的下次翻轉(zhuǎn)。因此,位時間是與16計(jì)數(shù)器同步劃分的,而不是與“寫入SBUF”信號。當(dāng)SEND被激活,傳輸開始。這使TXD在一比特后開始。DATA被激活,使移位寄存器向TXD輸出比特。第一移位脈沖在那之后發(fā)生。第一個移位時鐘的“1”(停止位)插入移位寄存器的第9位。此后,只有“0”被計(jì)時了。當(dāng)數(shù)據(jù)位轉(zhuǎn)移到右邊,“0”從左邊移入。當(dāng)TB的數(shù)據(jù)字節(jié)在移位寄存器的輸出位置時,停止位剛好在TB8的左邊,并且所有的位置都在包含“0”的左邊。這種情況標(biāo)志TX控制單元將做最后一次移位,然后停用SEND并置位TI。這發(fā)生在“寫SBUF”的16次翻轉(zhuǎn)中的第11次。在RXD檢測1到0的轉(zhuǎn)變開始接收。為了這個目的,RXD被的任何波特率16倍采樣。無論波特率是否確定。當(dāng)檢測到轉(zhuǎn)換時,分逐16計(jì)數(shù)器立即復(fù)位,同時將1FFH寫入輸入移位寄存器。在每個位時間的第7,第8和第9計(jì)數(shù)狀態(tài)時,都要對RXD的值進(jìn)行位檢測。只有2/3的采樣值被接受??。這樣做是為了抑制噪聲。為了防止錯誤位,如果在第一個位時間接受的值不是0,接收電路復(fù)位,單元繼續(xù)尋找另一個1到0的轉(zhuǎn)變。如果起始位有效,則移入輸入移位寄存器,繼續(xù)接受該幀的其余部分。當(dāng)數(shù)據(jù)位從右邊進(jìn)來,“1”移出到左側(cè)。當(dāng)起始位到達(dá)移位寄存器的最左邊的位置,(這是一個模式2和3下的9位寄存器),它標(biāo)志著RX控制區(qū)將做最后一次移位,加載SBUF和RB8,并且設(shè)置RI。該信號加載SBUF和RB8并設(shè)置如果RI生成,且僅當(dāng)以下條件滿足時產(chǎn)生最后一個移位脈沖時間:1)RI=0而且2)無論是SM2=0,或接收到的第9位數(shù)據(jù)=1如果這兩個條件任一個不滿足,接收到的數(shù)據(jù)幀都會丟失。如果兩個條件都滿足時,停止位進(jìn)入RB8,前8位數(shù)據(jù)則進(jìn)入SBUF,并且RI被激活。這時,上述條件是否被滿足,該單元繼續(xù)尋找1至0的RXD輸入轉(zhuǎn)換。需要注意的是接收到的停止位的值與SBUF,RB8或RI無關(guān)。模式3:9位可變波特率的UART模式3,9位可變波特率的UART,除了波特率是可變的,其他和模式2是一樣。模式3下的波特率=(2SMOD/32)x定時器1overflow率或=(2SMOD/16)×定時器2溢出率在四種模式中,傳輸是通過使用SBUF作為目標(biāo)寄存器的指令開始。當(dāng)RI=0和REN=1時,在模式0下開始接收。如果REN=1且輸入的起始位1是到0的過渡,那么在其他模式下啟動一次接收。8.3幀錯誤檢測當(dāng)用于幀錯誤檢測時,UART會在通訊丟失停止位。如果缺少位將設(shè)置SCON寄存器的FE位。FE位股SCON.7位和SM0SCON.7的功能由PCON.6(SMOD0)決定。如果SMOD0被設(shè)置,那么SCON.7的功能是FE。SCON.7的功能是SM0當(dāng)該位用來作為cleared.WhenFE,SCON.7只能由software.Refer清除下圖。8.4多機(jī)通信模式2和3對multiproceasor通信的特殊規(guī)定。在這些模式中9位數(shù)據(jù)被接收。第9位進(jìn)入RB8。接著進(jìn)來一個停止位。該端口可以進(jìn)行編程,這樣當(dāng)收到停止位后,串口中斷將僅當(dāng)RB8=1,此功能是通過設(shè)置位SM2SCON中啟用激活。一種方法要使用此功能在多處理器系統(tǒng)如下。當(dāng)主處理器要數(shù)據(jù)塊傳輸?shù)侥骋慌_從機(jī)時,首先發(fā)送一個地址字節(jié)以識別目標(biāo)從機(jī)。地址字節(jié)不同于數(shù)據(jù)字節(jié)的第9位為1的地址字節(jié)和0byte.WithSM2=1數(shù)據(jù),從沒有將一個數(shù)據(jù)字節(jié)中斷。地址字節(jié),但是,將中斷所有從機(jī),這樣每個從機(jī)可以檢查接收到的字節(jié),看看它是否正在addressed.The尋址的從機(jī)將清零SM2位,并準(zhǔn)備接收數(shù)據(jù)字節(jié)將到來。那些沒有被-ING的奴隸解決離開SM2S設(shè)置,并繼續(xù)他們的工作,忽略進(jìn)來的數(shù)據(jù)字節(jié)。SM2在模式0中沒有任何影響,并且在模式1可以用來檢測停止位的有效性。在接收模式1中,如果SM2=1,接收中斷不會被激活,除非vatid停止位被接收。
8.5自動地址識別自動地址識別是一個未來的,它允許UART使用硬件進(jìn)行比較,識別串行比特流特定的地址。此功能通過省去軟件來檢測通過串行端口每串行地址節(jié)省了大量的軟件開銷。該功能通過設(shè)定SCON的SM2位來開啟。在9位UART模式,模式2和模式3,接收中斷標(biāo)志(RI)當(dāng)接收的字節(jié)中包含“給定”地址或“廣播”地址會被自動設(shè)置。在9位模式下要求第9個信息位為“1”,以指示所接收的信息是地址而不是數(shù)據(jù)。8位模式,即模式1下,如果SM2已啟用,收到的信息有一個有效的停止位后的8位地址和信息是一個給定或廣播address.Mode0RI標(biāo)志將被設(shè)置是移位寄存器模式,SM2被忽略。使用自動地址識別功能可以讓一個主機(jī)選擇性的同一個或多個從機(jī)通過調(diào)用給定的從機(jī)地址或地址進(jìn)行通信。所有從機(jī)可以使用廣播地址可以聯(lián)系。兩個特殊功能寄存器用來定義從機(jī)地址:SADDR和地址屏蔽SADEN。SADEN用于定義這些都是SADDR位要使用的,哪些位是“不關(guān)心”。SADEN屏蔽可以邏輯與SADDR打造的“給定”地址,主機(jī)使用該地址對每一從機(jī)。使用給定地址允許扣除其多個從機(jī)被認(rèn)可。下面的例子就顯示了該方案的通用性:在前面的例子中SADDR是相同的,而SADEN數(shù)據(jù)被用于在兩個從站之間進(jìn)行區(qū)分。從機(jī)0要求在0位是“0”而忽略位1。從機(jī)1需要一個“0”位和1位0被忽略。一個獨(dú)特的地址從0將是自11000010從機(jī)1需要一個“0”位1.唯一地址從1是11000001,因?yàn)橐粋€“1”位0將排除從0奴隸都可以在選定的由具有位0=0(從機(jī)0)和位1=0(用于藥膏1)一個地??址同一時間。因此,既可以解決與11000000。在一個更復(fù)雜的系統(tǒng)以下可用于從機(jī)1和2,而不會從0:另外,在上述實(shí)施例中的3從站的分化是在較低的3個地址bits.Slave0要求的bit0=0,它可以通過11100110.從機(jī)1被唯一尋址要求位1=0,它可以由11100101被唯一尋址從機(jī)2要求位2=0和其唯一地址是11100011.要選擇藥膏0和1,不包含從屬2,使用地址11100100,由于有必要使位2=1,以排除從2。廣播地址為每個從由SADDR和SADEN服用邏輯或創(chuàng)建的。在這個結(jié)果零趨于為不用管它。在大多數(shù)的關(guān)心,解釋不用管它因?yàn)槟切?,廣播地址為FFH。復(fù)位時SADDR和SADEN都含有“0”。這將產(chǎn)生的所有“不用管它,以及廣播地址的所有的”無關(guān)“一個給定的地址。這樣有效地禁止了自動尋址模式,允許微處理器使用標(biāo)準(zhǔn)80C51型UART驅(qū)動器不使用此功能。例如:寫一個程序,不斷發(fā)送緩沖器發(fā)送字符。如果輸入的字符在串行端口上檢測,將它們存儲在接收緩沖區(qū)起始于內(nèi)部RAM的位置50H。假設(shè)STC89C51RC/RD+系列單片機(jī)串口已在模式1初始化。當(dāng)定時器1作為波特率發(fā)生器,定時器1的中斷應(yīng)該在此應(yīng)用程序被禁用。定時器本身可針對“定時器”或“cormter”操作進(jìn)行配置,并且在任何的三種運(yùn)行模式中。8.6波特率和演示程序波特率在模式0是固定的:
模式0波特率=
波特率在模式2取決于位SMOD的特殊功能寄存器PCON的價(jià)值。如果SMOD=0(這是復(fù)位值),波特率1/64的系統(tǒng)時鐘周期。如果SMOD=1,波特率為1/32系統(tǒng)時鐘周期。模式2波特率=×(SYSCLK)(SYSCLK)
在STC89xx系列,波特率在模式1和3是由定時器1或定時器2溢出rate.The波特率模式確定1和3是固定的:
模式1,3波特率=(2SMOD/32)×定時器1溢出率
=(2SMOD/32)×2定時器溢出率定時器1溢出率=(SYSCLK/12)/(256-TH1);定時器2溢出率=SYSCLK/(65536-(RCAP2H,RCAP2L))當(dāng)定時器1作為波特率發(fā)生器,定時器1的中斷應(yīng)該在此應(yīng)用程序被禁用。定時器本身可針對“定時器”或“cormter”操作進(jìn)行配置,并且在任何的三種運(yùn)行模式中。在最typcial應(yīng)用中,它被配置為“定時器”運(yùn)行,在自動重裝模式(高四位的TMOD=0010B)。人們可以通過保留定時器1中斷使能,并配置定時器作為一個16位的定時器運(yùn)行(TMOD的=0001B高四位),并使用定時器1中斷做l6-達(dá)到非常低的波特率與定時器1位軟件重裝。下圖列出了各種常用的波特率以及它們?nèi)绾螐亩〞r器1獲得。當(dāng)定時器2作為波特率發(fā)生器(無論是TCLK或RCLKT2CON是'1'),波特率如下,
模式1,3波特率=第9章IAP/EEPROMSTC89xx系列的ISP使得可以無需從實(shí)際的最終產(chǎn)物中除去的MCU芯片便可更新用戶的應(yīng)用程序和非易失性的應(yīng)用程序數(shù)據(jù)(在IAP存儲)。這個有用的功能使得廣泛的現(xiàn)場更新的應(yīng)用成為可能。(請注意,ISP需要在ISP-存儲器裝載程序預(yù)編程。)在一般情況下,用戶不必知道ISP如何工作的,因?yàn)镾TC提供了標(biāo)準(zhǔn)的ISP工具,并在STC中嵌入ISP代碼運(yùn)樣品。但是為了給ISP的功能制定好方案,用戶需要了解嵌入式閃存的架構(gòu)。嵌入式閃存包括90(最大值)的頁面。每個頁面都包含512個字節(jié)。閃光燈處理,用戶在對它寫數(shù)據(jù)(編程)之前必須在頁面單元刪除它。擦除閃存意味著設(shè)置了閃存作為FFH的內(nèi)容。該芯片有兩種擦除模式可用。一個是質(zhì)量模式,另一種是頁模式。質(zhì)量模式具有更多的性能,但它會擦除整個閃存。頁模式性能較少,但它很靈活,因?yàn)樗鼤陧搯卧獎h除閃光燈。不同于RAM的實(shí)時操作,擦除閃存或?qū)懀ǔ绦颍╅W存往往需要很長的時間等待它完成。此外,它擦除/編程閃存是一個相當(dāng)復(fù)雜的定時程序。幸運(yùn)的是,STC89xx自帶方便的機(jī)制,以幫助用戶讀取/修改Flash內(nèi)容。只用在幾個的SFR填充目標(biāo)地址和數(shù)據(jù),并且觸發(fā)內(nèi)置的ISP自動化,用戶就可以很容易地擦除,讀取和編程嵌入式閃存和可選寄存器。內(nèi)置應(yīng)用程序是為用戶的讀/寫非易失性數(shù)據(jù)閃存設(shè)計(jì)的。它可能會給存儲參數(shù)這些應(yīng)該是獨(dú)立的電和電源進(jìn)行操作帶來很大的幫助。換句話說,用戶可以在數(shù)據(jù)閃存中存儲數(shù)據(jù),并且在關(guān)閉MCU和重啟的MCU后,他就可以得到原來的值。用戶可以按照相同的方式ISP程序編程數(shù)據(jù)閃存,所以他應(yīng)該得到關(guān)于SFRISP_DATA,ISP_ADDRL,ISP_ADDRH,ISP_CMD,ISP_TRIG和ISP_CONTR更深層次的理解。附錄B外文原文STC89C51RC/RD+seriesMCU8.2UARTOperationalModesTheserialport(UART)canbeoperatedin4differentmodeswhichareconfiguredbysettingSM0andSM1inSFRSCON.Mode1,Mode2andMode3areasynchronouscommunication.InMode0,UARTisusedasasimpleshiftregister.Mode0:8-BitShiftRegisterMode0,selectedbywriting0sintobitsSM1andSM0ofSCON,putstheserialportinto8-bitshiftregistermode.SerialdataentersandexitsthroughRXD.TXDoutputstheshiftclock.Eightdatabitsaretransmitted/receivedwiththeleast-significant(LSB)first.Thebaudrateisfixedat1/12theSystemclockcycleinthedefaultstate.IfthecorrespondingoptionissetinSTC-ISPWriter/Programmer,thebaudrateis1/6Systemclockcycle.TransmissionisinitiatedbyanyinstructionthatusesSBUFasadestinationregister.The“writetoSBUF”signalalsoloadsa“1”intothe9thpositionofthetransmitshiftregisterandtellstheTXControlblocktocommenceatransmission.Theinternaltimingissuchthatonefullsystemclockcyclewillelapsebetween"writetoSBUF,"andactivationofSEND.SENDtransferstheoutputoftheshiftregistertothealternateoutputfunctionlineofP3.0,andalsotransfersShiftClocktothealternateoutputfunctionlineofP3.1.AtthefallingedgeoftheShiftClock,thecontentsoftheshiftregisterareshiftedonepositiontotheright.Asdatabitsshiftouttotheright,“0”comeinfromtheleft.WhentheMSBofthedatabyteisattheoutputpositionoftheshiftregister,thenthe“1”thatwasinitiallyloadedintothe9thpositionisjusttotheleftoftheMSB,andallpositionstotheleftofthatcontainszeroes.ThisconditionflagstheTXControlblocktodoonelastshiftandthendeactivateSENDandsetTI.Bothoftheseactionsoccurafter"writetoSBUF".ReceptionisinitiatedbytheconditionREN=1andRI=0.Afterthat,theRXControlunitwritesthebits11111110tothereceiveshiftregister,andinthenextclockphaseactivatesRECEIVE.RECEIVEenablesSHIFTCLOCKtothealternateoutputfunctionlineofP3.1.AtRECEIVEisactive,thecontentsofthereceiveshiftregisterareshiftedtotheleftoneposition.ThevaluethatcomesinfromtherightisthevaluethatwassampledattheP3.0pintherisingedgeofShiftclock.Asdatabitscomeinfromtheright,“1”sshiftouttotheleft.Whenthe“0”thatwasinitiallyloadedintotheright-mostpositionarrivesattheleft-mostpositionintheshiftregister,itflagstheRXControlblocktodoonelastshiftandloadSBUF.ThenRECEIVEisclearedandRIisset.Mode1:8-BitUARTwithVariableBaudRateInmode1theSTC89xxserialportoperatesasan8-bitUARTwithvariablebaudrate.AUART,or"universalasynchronousreceiver/transmitter,"isadevicethatreceivesandtransmitsserialdatawitheachdatacharacterprecededbyastartbit(low)andfollowedbyastopbit(high).Aparitybitissometimesinsertedbetweenthelastdatabitandthestopbit.TheessentialoperationofaUARTisparallel-to-serialconversionofoutputdataandserial-to-parallelconversionofinputdata.Inmode1,10bitsaretransmittedthroughTXDorreceivedthroughRXD.Theframedataincludesastartbit(always0),8databits(LSBfirst)andastopbit(always1).Forareceiveoperation,thestopbitgoesintoRB8inSFR–SCON.ThebaudrateisdeterminedbytheoverflowrateofTimer1orTimer2.Baudrateinmode1=(2SMOD/32)xtimer1overflowrateor=(2SMOD/16)xTimer2overflowrateTransmissionisinitiatedbyanyinstructionthatusesSBUFasadestinationregister.The“writetoSBUF”signalalsoloadsa“1”intothe9thbitpositionofthetransmitshiftregisterandflagstheTXControlunitthatatransmissionisrequested.Transmissionactuallyhappensatthenextrolloverofdivided-by-16counter.Thusthebittimesaresynchronizedtothedivided-by-16counter,nottothe“writetoSBUF”signal.ThetransmissionbeginswithactivationofSEND,whichputsthestartbitatTXD.Onebittimelater,DATAisactivated,whichenablestheoutputbitofthetransmitshiftregistertoTXD.Thefirstshiftpulseoccursonebittimeafterthat.Asdatabitsshiftouttotheright,zeroesareclockedinfromtheleft.WhentheMSBofthedatabyteisattheoutputpositionoftheshiftregister,thenthe1thatwasinitiallyloadedintothe9thpositionisjusttotheleftoftheMSB,andallpositionstotheleftofthatcontainzeroes.ThisconditionflagstheTXControlunittodoonelastshiftandthendeactivateSENDandsetTI.Thisoccursatthe10thdivide-by-16rolloverafter“writetoSBUF.”Receptionisinitiatedbya1-to-0transitiondetectedatRXD.Forthispurpose,RXDissampledatarateof16timestheestablishedbaudrate.Whenatransitionisdetected,thedivided-by-16counterisimmediatelyreset,and1FFHiswrittenintotheinputshiftregister.Resettingthedivided-by-16counteralignsitsroll-overswiththeboundariesoftheincomingbittimes.The16statesofthecounterdivideeachbittimeinto16ths.Atthe7th,8thand9thcounterstatesofeachbittime,thebitdetectorsamplesthevalueofRXD.Thevalueacceptedisthevaluethatwasseeninatleast2ofthe3samples.Thisisdonetorejectnoise.Inordertorejectfalsebits,ifthevalueacceptedduringthefirstbittimeisnota0,thereceivecircuitsareresetandtheunitcontinueslookingforanother1-to-0transition.Thisistoproviderejectiono
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職核工程與核技術(shù)應(yīng)用(核設(shè)施運(yùn)行基礎(chǔ))試題及答案
- 2025年中職(增材制造技術(shù)應(yīng)用)零件打印工藝試題及答案
- 2025年大學(xué)(智慧農(nóng)業(yè)技術(shù))農(nóng)業(yè)智能化綜合測試試題及答案
- 2025年中職家庭教育(家庭教育基礎(chǔ))試題及答案
- 2025年高職大數(shù)據(jù)技術(shù)(數(shù)據(jù)操作規(guī)范)試題及答案
- 2025年大學(xué)大四(應(yīng)急管理)應(yīng)急物資儲備管理試題及答案
- 2025年中職(會計(jì))財(cái)務(wù)管理階段測試題及答案
- 2025年大學(xué)動物醫(yī)學(xué)(寵物疾病預(yù)防)試題及答案
- 2025年高職農(nóng)村電氣技術(shù)(農(nóng)村電網(wǎng)建設(shè))試題及答案
- 2025年高職新聞學(xué)(新聞攝影)試題及答案
- 2025-2026學(xué)年人教版七年級上冊道德與法治期末試卷(含答案和解析)
- 無錫公建工程質(zhì)量檢測有限公司2025年下半年公開招聘專業(yè)技術(shù)人員備考題庫及答案詳解一套
- 北京市平谷區(qū)政務(wù)服務(wù)中心綜合工作人員招聘筆試備考題庫及答案解析
- 2026年高級會計(jì)師面試題及答案解析
- 安全注射標(biāo)準(zhǔn)2025
- 安全文明施工措施費(fèi)用支付計(jì)劃三篇
- 人教版九年級化學(xué)導(dǎo)學(xué)案全冊
- 國開電大商業(yè)銀行經(jīng)營管理形考作業(yè)3參考答案
- 陳獨(dú)秀早期社會建設(shè)思想的形成、淵源及啟迪,東方哲學(xué)論文
- GB/T 1865-2009色漆和清漆人工氣候老化和人工輻射曝露濾過的氙弧輻射
- 2023年自考高級財(cái)務(wù)會計(jì)真題和答案
評論
0/150
提交評論