住宅智能安防系統(tǒng)_第1頁
住宅智能安防系統(tǒng)_第2頁
住宅智能安防系統(tǒng)_第3頁
住宅智能安防系統(tǒng)_第4頁
住宅智能安防系統(tǒng)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.2DS18B20溫度傳感器電路溫度傳感器采用單總線數(shù)字溫度傳感器。電路連接相對簡單。只有對應(yīng)的數(shù)據(jù)引腳連接到MCU引腳。請注意以下幾點(diǎn):1.單總線接口模式從主機(jī)CPU到溫度傳感器只需要一條數(shù)據(jù)線;2、數(shù)據(jù)線本身供電,無需外接電源;3、當(dāng)電源倒轉(zhuǎn)時(shí),DS18B20不會出現(xiàn)故障,但不能正常工作。4、在本次畢業(yè)設(shè)計(jì)中為了更加穩(wěn)定地和DS18B20進(jìn)行通信,數(shù)據(jù)管腳連接到4.7K的上拉電阻上進(jìn)行工作。溫度采集電路圖如圖3-3所示。圖3-3溫度采集電路圖3.3MQ-5可燃?xì)怏w傳感器電路可燃?xì)怏w傳感器可以根據(jù)環(huán)境中可燃?xì)怏w的濃度改變傳感器的阻值。傳感器本身輸出的模擬量不能直接被STC89C52單片機(jī)進(jìn)行采集。需要連接一些外圍電路和使用LM393雙通道比較器組合起來進(jìn)行可燃?xì)怏w濃度輸出的對應(yīng)模擬電壓轉(zhuǎn)換成數(shù)字電壓的工作。首先,外圍電路有一個(gè)4.7k電阻和傳感器串聯(lián)起來。根據(jù)串聯(lián)電路劃分原理,當(dāng)外界可燃?xì)怏w濃度發(fā)生變化時(shí),對應(yīng)的傳感器內(nèi)阻發(fā)生變化,導(dǎo)致可燃?xì)怏w默契輸出的電壓發(fā)生變化,將變化的電壓信號傳輸給比較器,比較器進(jìn)行比較輸出高電平和低電平。單片機(jī)通過檢測引腳的電平狀態(tài),然后確定當(dāng)前可燃?xì)怏w濃度是否超過上限。在進(jìn)行可燃?xì)怏w濃度檢測電路設(shè)計(jì)時(shí)一定要注意模塊的加熱電路的設(shè)計(jì),因?yàn)楸敬萎厴I(yè)設(shè)計(jì)使用的MQ-5可燃?xì)怏w傳感器必須處于加熱狀態(tài)才能正常工作。加熱電路中的加熱線集成在傳感器內(nèi)部,如果加熱電路不能正常工作,將會導(dǎo)致傳感器采集的數(shù)據(jù)不正確。本設(shè)計(jì)中使用的限流電阻為7歐姆。當(dāng)然,如果平均溫度高或低,可以通過調(diào)整這個(gè)電阻的對應(yīng)阻值。例如,如果溫度較低,即降低限流電阻的值,就會產(chǎn)生更多的熱量用于維持傳感器溫度。其電路圖如圖3-4所示。圖3-4MQ-5基本電路圖3.4報(bào)警器電路作為一個(gè)完整的住宅智能安防系統(tǒng),報(bào)警電路部分往往是不可或缺的。當(dāng)系統(tǒng)環(huán)境值超標(biāo)時(shí),或者可燃?xì)怏w濃度超標(biāo),住宅智能安防系統(tǒng)將會判斷存在火災(zāi)安全隱患,然后會驅(qū)動警報(bào)LED發(fā)出報(bào)警,通知用戶及時(shí)確認(rèn)情況,并根據(jù)報(bào)警情況及時(shí)做出處理,經(jīng)過反饋和調(diào)整對應(yīng)的可燃?xì)怏w濃度閾值和外界溫度傳感器。本設(shè)計(jì)的報(bào)警設(shè)計(jì)是通過單片機(jī)控制的IO口輸出對應(yīng)的高低電平來驅(qū)動警報(bào)LED發(fā)光進(jìn)行實(shí)現(xiàn)的。報(bào)警電路相對簡單,通過任意IO端口控制單片機(jī),只要外界溫度或可燃?xì)怏w濃度超過設(shè)定值,相應(yīng)的單片機(jī)的輸入輸出端口輸出低電平,驅(qū)動警報(bào)LED燈進(jìn)行警報(bào)。當(dāng)可燃?xì)怏w濃度和外部溫度在正常范圍內(nèi)時(shí),單片機(jī)引腳處于高電平,警報(bào)LED出于熄滅狀態(tài)。報(bào)警電路圖如圖3-5所示。圖3-5LED報(bào)警電路圖3.5液晶顯示屏電路本設(shè)計(jì)的液晶顯示驅(qū)動電路選用LCD1602,它是一種字符型液晶,可以顯示32個(gè)字符。LCD1602液晶面板利用了液晶在適當(dāng)電流的驅(qū)動下會流動的特性,所以如果外部有一點(diǎn)壓力,液晶就會移動。通過打開電源來操作顯示屏,以便顯示圖形或字符。由于LCD1602價(jià)格低廉、使用簡單、穩(wěn)定可靠,本設(shè)計(jì)將其作為顯示電路的實(shí)現(xiàn)元器件。LCD1602引腳描述:1引腳:VSS為接地電源;2腳:VCC連接5V電源;3尺:V0是LCD顯示對比度調(diào)節(jié);4英尺:RS是一個(gè)寄存器選擇,它包括一個(gè)數(shù)據(jù)寄存器和一個(gè)指令寄存器;5英尺:讀寫信號線為R/W;6英尺:E端為使能端,控制液晶模塊是否執(zhí)行指令;7~14英尺:8位雙向數(shù)據(jù)線,可與8位相連,也可僅與4位相連,節(jié)省單片機(jī)資源;LCD接口電路圖如圖3-6所示。圖3-6液晶接口電路圖3.6按鍵電路在單片機(jī)中,按鍵輸入方式有獨(dú)立按鍵、觸摸屏輸入和矩陣鍵盤輸入等。在這些按鍵輸入方式中,每種輸入方式各有優(yōu)點(diǎn)。其中獨(dú)立按鍵輸入檢測速度快。然而,一個(gè)按鈕需要占用單片機(jī)的輸入和輸出端口,并且適合在按鈕數(shù)量較少的情況下使用。矩陣鍵盤按鈕可以檢測多個(gè)按鈕使用較少的單片機(jī)輸入和輸出端口。缺點(diǎn)是該方法占用MCU資源較大。觸摸屏輸入一般用在單片機(jī)上,處理速度比較快。原理是在觸摸屏上執(zhí)行模數(shù)轉(zhuǎn)換轉(zhuǎn)換。當(dāng)觸摸屏被按下時(shí),被按屏幕的電阻發(fā)生變化,通過在觸摸屏上執(zhí)行行和列。掃描得到被壓位置。本設(shè)計(jì)的簡單按鍵電路僅在按鍵接口被按下時(shí)處理按鍵信息。MCU的初始I/O端口設(shè)置為高電平。按下按鈕后,MCU將從原來的高電平變?yōu)榈碗娖?,并開始解析是哪個(gè)按鈕被按下。設(shè)計(jì)的按鍵電路采用三個(gè)功能按鍵來調(diào)節(jié)報(bào)警峰值。按鈕的一端連接MCU引腳,另一端接地。一開始,MCU引腳處于高狀態(tài),當(dāng)按鈕處于懸浮狀態(tài)時(shí),使用外部上拉電阻來穩(wěn)定IO端口的電平狀態(tài)。操作按鈕未按下時(shí),I/O口固定為高電平狀態(tài);當(dāng)操作按鈕時(shí),單片機(jī)對應(yīng)的輸入輸出口將會接地,電平狀態(tài)為低電平。通過檢測單片機(jī)引腳的電平狀態(tài)即可判斷是否按下了按鍵。當(dāng)按鈕松開不工作時(shí),MCU將再次保持在高電平。按鈕電路圖如圖3-7所示。圖3-7按鍵電路圖3.7PCF8574TIO擴(kuò)展芯片直接使用單片機(jī)輸入輸出口驅(qū)動液晶顯示屏LCD1602最少需要11個(gè)單片機(jī)引腳,這是對單片機(jī)硬件資源的巨大浪費(fèi),尤其是對STC89C52IO本身來說,它只有P1~P4四組引腳,要盡可能地減少IO的使用。對單片機(jī)的硬件性能進(jìn)行了測試后,為了節(jié)省單片機(jī)的IO端口,在本次畢業(yè)設(shè)計(jì)中,我們使用了PCF8574TIO擴(kuò)展芯片來擴(kuò)展STC89C52的IO,減少驅(qū)動LCD1602液晶屏?xí)r造成的硬件資源浪費(fèi)。PCF8574T是一個(gè)CMOS電路,它使大多數(shù)微型處理器能夠通過兩個(gè)雙向總線實(shí)現(xiàn)遠(yuǎn)程I/O擴(kuò)展,其中通訊協(xié)議為常用的I2C協(xié)議。PCF8574TIO引腳擴(kuò)展芯片包括一個(gè)8位準(zhǔn)雙向端口和一個(gè)總線接口。該元器件具有低電流消耗和輸出鎖存器,具有高電流驅(qū)動能力,可直接驅(qū)動LED。它還有一個(gè)可以連接到MCU中斷邏輯的中斷線路。使用INT遠(yuǎn)程I/O端口發(fā)送中斷信號,即可通知MCU是否有來自該端口的數(shù)據(jù)輸入,而沒有總線通信,這意味著PCF8574可以作為單個(gè)控制器使用。PCF8574T的電路圖如圖3-8所示。圖3-8PCF8574TIO擴(kuò)展芯片電路圖3.8I2總線特征I2C總線用于不同的集成電路或模塊之間的通信,這種傳輸協(xié)議只需要占用兩個(gè)單片機(jī)引腳。其中一條是串行數(shù)據(jù)線(SDA),另一條是串行時(shí)鐘線(SCL)。當(dāng)連接到單片機(jī)的輸入輸出口時(shí),單片機(jī)引腳處于輸出模式,兩條線必須連接到上拉電阻,以保證傳輸數(shù)據(jù)的穩(wěn)定性。數(shù)據(jù)的傳輸只能在總線空閑時(shí)進(jìn)行,否則將會造成總線傳輸數(shù)據(jù)出現(xiàn)錯誤。(1)位轉(zhuǎn)移當(dāng)每個(gè)時(shí)鐘脈沖發(fā)生時(shí),總線傳輸一個(gè)數(shù)據(jù)位。在時(shí)鐘信號的高周期內(nèi),SDA線路上的數(shù)據(jù)位應(yīng)該是穩(wěn)定的。如果此時(shí)SDA線路數(shù)據(jù)發(fā)生變化,則視為總線控制信號(見圖3-8-1)。啟動和停止信號,數(shù)據(jù)和時(shí)鐘線保持高時(shí),總線是空閑的。當(dāng)SCL線出于高電平狀態(tài)時(shí),SDA線路電平從高到低進(jìn)行跳變被定義為I2C協(xié)議的啟動信號;當(dāng)SCL線出于高電平狀態(tài)時(shí),SDA線路電平從低到高進(jìn)行跳變被定義為I2C協(xié)議的停止信號。(見圖3-8-2)圖3-8-1I2C總線上的位傳送圖3-8-2起始信號和停止信號定義(2)應(yīng)答在啟動和停止信號之間,I2C傳輸?shù)臄?shù)據(jù)量不受限制。每個(gè)8位字節(jié)后面是一個(gè)確認(rèn)應(yīng)答位。確認(rèn)應(yīng)答位的時(shí)鐘脈沖是由主機(jī)產(chǎn)生的。被控接收機(jī)在接收到每個(gè)字節(jié)的數(shù)據(jù)后必須發(fā)送確認(rèn)應(yīng)答信號;在接收到受控發(fā)射機(jī)發(fā)送的數(shù)據(jù)后,主控臺還必須發(fā)送確認(rèn)信號。當(dāng)與確認(rèn)應(yīng)答位相對應(yīng)的時(shí)鐘脈沖發(fā)生時(shí),產(chǎn)生確認(rèn)位的設(shè)備將把SDA線拉低,使SDA在與確認(rèn)位相對應(yīng)的時(shí)鐘脈沖的高周期內(nèi)保持低。建立和保留時(shí)間必須考慮在內(nèi)。當(dāng)主機(jī)作為一個(gè)接收器時(shí),它必須在控制器發(fā)送數(shù)據(jù)的最后一個(gè)字節(jié)后生成一個(gè)無確認(rèn)信號。此時(shí),發(fā)射機(jī)必須將數(shù)據(jù)線放高,使主控機(jī)能夠產(chǎn)生停止信號(見圖3-8-3)。圖3-8-3I2C總線上的應(yīng)答(3)準(zhǔn)雙向I/O口準(zhǔn)雙向I/O端口可以用作輸入和輸出兩種模式,而不需要通過控制寄存器定義數(shù)據(jù)的方向。I/O端口在開機(jī)時(shí)出于高電平狀態(tài)。在此模式下,只有vdd提供的電流是有效的。在高負(fù)荷輸出時(shí)提供一個(gè)額外的強(qiáng)大的上拉,使水平迅速上升。當(dāng)輸出被寫到高電平狀態(tài)時(shí),強(qiáng)上拉模式被打開,當(dāng)SCL下降沿時(shí),強(qiáng)上拉模式被關(guān)閉。I/O端口在用作輸入之前應(yīng)該是處于高電平狀態(tài)。本章小結(jié)在本章中,我們將對上一章所選的主控芯片的引腳、溫度傳感器模塊、可燃?xì)怏w采集模塊、液晶顯示模塊、IO擴(kuò)展芯片模塊、按鍵電路模塊進(jìn)行較為深入的講解。介紹了所選模塊之間的通信協(xié)議。本設(shè)計(jì)利用I2C協(xié)議實(shí)現(xiàn)單片機(jī)與IO擴(kuò)展芯片模塊之間的數(shù)據(jù)傳輸。當(dāng)與LCD通信時(shí),它以串行轉(zhuǎn)并行方式進(jìn)行驅(qū)動。第4章軟件設(shè)計(jì)本設(shè)計(jì)的程序是通過美國KeilSoft公司開發(fā)的KeilC51軟件開發(fā)的。編程語言主要是用C語言開發(fā)的。將整個(gè)程序分割成幾個(gè)小的編程驅(qū)動程序,以便于程序開發(fā)和在后續(xù)升級中添加新特性。根據(jù)系統(tǒng)實(shí)現(xiàn)的功能和使用的功能選擇對應(yīng)的硬件模塊編寫程序。本章首先介紹了主程序的流程圖,然后介紹了各個(gè)模塊的驅(qū)動程序。4.1開發(fā)軟件KEILC51軟件是KeilSoftwareCo.,Ltd.的產(chǎn)品,KeilSoftware是在美國生產(chǎn)的C語言編譯器。和一般的C語言編譯器不同的結(jié)構(gòu)功能是兼容系統(tǒng)開發(fā)的51系列單片機(jī)C語言軟件。比匯編語言更有優(yōu)勢。KeilC51的主要優(yōu)點(diǎn)是可讀性、可維護(hù)性和易用性。另一個(gè)要點(diǎn)是查看是否可以編譯生成的程序集代碼。由大多數(shù)語句生成的代碼生成的程序集緊湊且易于理解。在開發(fā)大型軟件時(shí),可以更好地反映真正的高級語言。我們必須完成編輯、編譯、鏈接、調(diào)試和仿真的開發(fā)過程。C51工具包中包含的U51和IShell是Windows和DOSC51集成開發(fā)環(huán)境(IDE)。開發(fā)人員可以使用IDE或其他編輯器編輯C源文件或程序集。C51和A51,其中對象文件(OBJ)分別編譯。然后將創(chuàng)建的目標(biāo)文件構(gòu)建到LIB51L51文件中,這些文件鏈接在一起以生成絕對目標(biāo)文件和庫文件。通過圖書館。調(diào)試器源代碼級別調(diào)試一個(gè)標(biāo)準(zhǔn)文件OH51ABS或十六進(jìn)制文件dscope51tscope51。它可以直接由模擬器調(diào)試目標(biāo)板使用,也可以直接寫入程序內(nèi)存。將整個(gè)程序分割成幾個(gè)小的編程驅(qū)動程序,以便于程序開發(fā)和在后續(xù)升級中添加新特性。4.2主程序設(shè)計(jì)系統(tǒng)上電后首先對系統(tǒng)各部分進(jìn)行初始化,然后在主循環(huán)中不斷地判斷系統(tǒng)是否超過設(shè)定溫度和超過預(yù)定的可燃?xì)怏w濃度,假如超過設(shè)定的溫度和可燃?xì)怏w濃度時(shí),則使與LED相連的單片機(jī)輸出引腳輸出低電平,驅(qū)動LED發(fā)光。同時(shí)在主程序中注冊定時(shí)器,當(dāng)定時(shí)時(shí)間到時(shí),進(jìn)入定時(shí)器中斷處理子函數(shù),在中斷處理子函數(shù)中,實(shí)現(xiàn)對按鍵的檢測以及溫度檢測的實(shí)現(xiàn),同時(shí)在溫度檢測子函數(shù)中,實(shí)現(xiàn)檢測的溫度結(jié)果在液晶顯示屏上的顯示。以此節(jié)省資源。當(dāng)溫度或可燃?xì)怏w濃度超過一定限度時(shí),判斷住宅有火災(zāi)隱患,也可以通過按鍵進(jìn)行修改報(bào)警閾值?;趩纹瑱C(jī)的住宅智能安防系統(tǒng)主程序流程圖如圖4-1所示。圖4-1主程序流程圖4.3PCF8574TIO擴(kuò)展芯片驅(qū)動程序在本次畢業(yè)設(shè)計(jì)中,為了節(jié)省單片機(jī)的輸入輸出口,使用了IO擴(kuò)展芯片PCF8574T作為LCD1602的驅(qū)動芯片。PCF8574T引腳擴(kuò)展芯片使用方便,有專門為LCD1602設(shè)計(jì)的驅(qū)動模塊,使用I2C協(xié)議進(jìn)行通信,只需要兩個(gè)電源引腳和兩個(gè)單片機(jī)輸入輸出口即可進(jìn)行使用,在程序中首先發(fā)送起始信號,成功發(fā)送起始信號之后,發(fā)送元器件地址,當(dāng)PCF8574TIO擴(kuò)展芯片接收到地址信號之后,會拉低SDA作為應(yīng)答。當(dāng)單片機(jī)接收到應(yīng)答信號之后,正式開始發(fā)送寄存器地址和命令,最后發(fā)出停止信號完成一次數(shù)據(jù)傳輸。PCF8574TIO擴(kuò)展芯片接收到命令后寫入芯片內(nèi)部對應(yīng)的寄存器,然后在IO口上輸出對應(yīng)的高低電平。從而驅(qū)動液晶顯示屏。PCF8574TIO擴(kuò)展芯片模塊部分程序流程圖如圖4-2所示。圖4-2PCF8574TIO擴(kuò)展芯片模塊程序流程圖4.4DS18B20溫度傳感器數(shù)據(jù)讀取程序DS18B20使用定時(shí)處理位來確認(rèn)信息交換的讀寫狀態(tài)。當(dāng)DS18B20在脈沖過渡時(shí)間后有復(fù)位脈沖時(shí),表示溫度傳感器開始發(fā)送和接收數(shù)據(jù)。DS18B20時(shí)需要寫入“0”,單片機(jī)將直接拉低15微妙,和DS18B20將有15微妙到60微妙的時(shí)間來讀取一位,DS18B20讀取最快的速度為15微妙,典型值是30微妙,在這段時(shí)間里進(jìn)行讀取,通常讀取一位的時(shí)間不會超過60微妙,DS18B20必須在這段時(shí)間讀取結(jié)束,否則讀取的數(shù)據(jù)將會出錯。當(dāng)數(shù)據(jù)1寫入DS18B20時(shí),單片機(jī)首先將引腳拉低,并且拉下時(shí)間大于1微妙。然后總線立即被釋放,引腳拉高,持續(xù)時(shí)間也大于60微妙。與寫“0”類似,DS18B20將在15到60微妙之間讀取這個(gè)“1”。當(dāng)讀取DS18B20的數(shù)據(jù)時(shí),我們的微控制器必須先將引腳拉低并保持至少1微妙,然后釋放引腳,并在釋放后盡快讀取。從下拉引腳到讀引腳的狀態(tài)不能超過15微妙。圖中主控制器的采樣時(shí)間必須在15微妙內(nèi)完成。溫度傳感器讀取程序流程圖如圖4-3所示。開始開始初始化模塊初始化模塊讀取模塊內(nèi)暫存器的溫度值讀取模塊內(nèi)暫存器的溫度值結(jié)束結(jié)束圖4-3溫度傳感器讀取程序流程圖4.5MQ-5可燃?xì)怏w傳感器數(shù)據(jù)讀取程序可燃?xì)怏w濃度的采集不是直接通過單片機(jī)采集可燃?xì)怏w傳感器??扇?xì)怏w傳感器的輸出為模擬信號電壓值。由于本次使用的STC89C52單片機(jī)沒有內(nèi)置的模數(shù)轉(zhuǎn)換功能,因此需要添加比較器LM393芯片將電壓值轉(zhuǎn)換為數(shù)字信號進(jìn)行輸出。本設(shè)計(jì)采用LM393雙電壓比較器芯片進(jìn)行采集處理。芯片與單片機(jī)通過IO口直接連接。該單片機(jī)可以方便地通過LM393雙電壓比較器芯片的高低電平來檢測可燃?xì)怏w的濃度。通過讀取單片機(jī)引腳的高低狀態(tài),檢測到當(dāng)前可燃?xì)怏w濃度是否超標(biāo)。4.6系統(tǒng)報(bào)警程序設(shè)計(jì)在設(shè)計(jì)中,需要對報(bào)警閥值進(jìn)行調(diào)整,按下按鈕即可對報(bào)警閥值進(jìn)行調(diào)整。報(bào)警電路的控制端由單片機(jī)的P2.4端完成,低電平有效。當(dāng)P2.4輸出低電平時(shí),報(bào)警LED燈亮,并驅(qū)動報(bào)警模塊發(fā)出報(bào)警。報(bào)警電路流程圖如圖4-5所示。4.7液晶屏顯示驅(qū)動程序液晶顯示屏LCD1602通過8位并行數(shù)據(jù)端口和響應(yīng)控制引腳與PCF8574TIO擴(kuò)展芯片相連。當(dāng)單片機(jī)驅(qū)動顯示屏顯示相關(guān)內(nèi)容時(shí),底層驅(qū)動部分根據(jù)顯示屏的通信協(xié)議,按照指定的時(shí)間寫入相應(yīng)的數(shù)據(jù)。底層函數(shù)已經(jīng)被廠家封裝好,只需要修改I2C協(xié)議中的PCF8574TIO擴(kuò)展芯片的期間地址即可進(jìn)行使用,只需調(diào)用該函數(shù)來編寫要顯示的內(nèi)容。該函數(shù)包含要顯示的位置和顯示內(nèi)容。調(diào)用函數(shù)時(shí),可以寫入相應(yīng)的參數(shù),提前顯示相應(yīng)的位置。內(nèi)容。開始開始初始化初始化溫度和可燃?xì)怏w濃度溫度和可燃?xì)怏w濃度是否超過設(shè)定值?否電路啟動LED報(bào)警模塊是

電路啟動LED報(bào)警模塊結(jié)束結(jié)束圖4-5報(bào)警電路流程圖本章小結(jié)本章首先介紹了主程序的流程圖,本次畢業(yè)設(shè)計(jì)中程序使用了主程序中調(diào)用各種子程序的方法來實(shí)現(xiàn)功能,主要是在主程序中不斷地檢測時(shí)間片是否達(dá)到定時(shí)時(shí)間,如果定時(shí)時(shí)間到,則進(jìn)入函數(shù)中執(zhí)行所需要的功能。然后介紹了各個(gè)模塊的驅(qū)動程序。根據(jù)設(shè)計(jì)的程序流程圖編寫程序,經(jīng)過調(diào)試得出實(shí)際結(jié)果。證明所設(shè)計(jì)的程序流程圖能夠達(dá)到預(yù)期的功能。本設(shè)計(jì)主要分為以下幾個(gè)小驅(qū)動程序:DS18B20溫度傳感器數(shù)據(jù)讀取程序、MQ-5可燃傳感器數(shù)據(jù)讀取程序、系統(tǒng)報(bào)警程序設(shè)計(jì)、按鍵模塊驅(qū)動程序和LCD顯示驅(qū)動程序。然后通過主程序調(diào)用每一個(gè)子程序來實(shí)現(xiàn)整體功能。

第5章系統(tǒng)調(diào)試在以上章節(jié)中,軟件設(shè)計(jì)是根據(jù)需要實(shí)現(xiàn)的功能,以及需要實(shí)現(xiàn)的功能,以硬件電路為基礎(chǔ)進(jìn)行的。在本章中,完成了整個(gè)系統(tǒng)的硬件調(diào)試和軟件調(diào)試。首先介紹了各模塊在硬件調(diào)試中的作用。然后介紹如何將程序刻錄到單片機(jī)中。5.1硬件調(diào)試焊接硬件環(huán)節(jié)也是一門藝術(shù),不能盲目的進(jìn)行焊接,首先需要做的是一個(gè)合理規(guī)劃的布局設(shè)計(jì),然后按一定的順序,焊接的時(shí)候首先把設(shè)計(jì)硬件分為以下幾個(gè)步驟:首先是對最小系統(tǒng)的單片機(jī)進(jìn)行焊接調(diào)試。51單片機(jī)的最小系統(tǒng)包括單片機(jī)本身、晶體振蕩電路、復(fù)位電路和電源電路。只有這部分電路連接正確,才能保證單片機(jī)最小系統(tǒng)的正常工作。當(dāng)涉及到系統(tǒng)時(shí),應(yīng)注意以下幾點(diǎn)。本設(shè)計(jì)的STC89C52單片機(jī)采用5V直流電壓供電,電壓不能過高或過低,且必須保證電壓的紋波噪聲。在范圍內(nèi)(一般不高于100mv),否則單片機(jī)在運(yùn)行時(shí)容易跑死,甚至無法運(yùn)行;其次,單片機(jī)的晶振電路需要確定晶振的取值和合理的啟動電容。晶體振蕩器相當(dāng)于單片機(jī)的心臟。由此可見,沒有晶體振蕩器的單片機(jī)的最小系統(tǒng)是根本無法運(yùn)行的。本設(shè)計(jì)中需要單片機(jī)的UART串口通信接口,因此我們使用11.0592MHz的晶體振蕩器來方便程序中波特率的匹配。當(dāng)然,也可以使用其他的晶體值,但是最好在程序中使用它。匹配晶體振蕩器的波特率值,否則UART接口通信不正常。振蕩電容是為了使晶體振蕩器更容易啟動,提高單片機(jī)系統(tǒng)的穩(wěn)定性和抗干擾能力。本設(shè)計(jì)選用22pF電容值。第三,復(fù)位電路采用高電平復(fù)位。電容器的價(jià)值應(yīng)在這里注明。一般情況下,我們使用約1uF的電容器。過高或過低都可能導(dǎo)致正常復(fù)位。經(jīng)過實(shí)際測試,單片機(jī)的最小系統(tǒng)可以正常工作。然后焊接LCD1602屏幕顯示電路,這顯示是一個(gè)并行端口通信方法,為了拯救單片機(jī)銷,在這個(gè)畢業(yè)設(shè)計(jì)使用PCF8574TIO串口擴(kuò)展芯片模塊并行端口設(shè)計(jì),只需要SCL和SDA兩個(gè)I2C接口就可以連接到單片機(jī)同時(shí)進(jìn)行通信。I2C數(shù)據(jù)引腳連接到單片機(jī)的P2.0和P2.1。PCF8574TIO擴(kuò)展芯片模塊是一個(gè)準(zhǔn)雙向I/O口,可以直接輸出高電平驅(qū)動LCD1602A拉出輸出口,不需要使用上拉電阻即可確保數(shù)據(jù)能夠正確通信。然后,傳感器部分需要焊接。本設(shè)計(jì)需要對可燃?xì)怏w濃度和溫度傳感器進(jìn)行測量。可燃?xì)怏w濃度傳感器的特點(diǎn)是利用模擬電壓信號輸出,傳感器本身可根據(jù)環(huán)境量的變化輸出相應(yīng)的電壓信號。MCU只需根據(jù)電壓值計(jì)算出相應(yīng)的電流環(huán)境量即可。然而,STC89C52沒有內(nèi)置的模擬數(shù)字轉(zhuǎn)換功能。因此,本設(shè)計(jì)采用LM393雙通道比較器。當(dāng)傳感器檢測到外部可燃?xì)怏w濃度超過設(shè)定時(shí)。當(dāng)該值固定時(shí),比較器的輸出引腳輸出低電平。當(dāng)MCU檢測到比較器輸出低時(shí),MCU進(jìn)入報(bào)警模式。實(shí)際測試輸出正常后,以后只能使用單片機(jī)程序;對于DS18B20溫度這部分傳感器連接起來比較簡單。它是通過單總線和單片機(jī)進(jìn)行通信的。需要注意的是DS18B20的數(shù)據(jù)引腳需要使用上拉電阻進(jìn)行拉高。我們一般用10K的電阻。因此,需要首先連接硬件,然后再使用程序?qū)ο到y(tǒng)進(jìn)行調(diào)試。接下來,需要對按鈕電路和LED顯示報(bào)警電路進(jìn)行焊接調(diào)試。這部分是通過直接控制單片機(jī)的引腳來操作的。電路接通后,用萬用表的開/關(guān)擋位對電路進(jìn)行測試。例如,按下按鈕看單片機(jī)的引腳是否拉低。如果是則電路正常。最后,需要硬件與程序的組合,所以只需要確保在焊接期間電路連接正確同時(shí)沒有虛焊。5.2調(diào)試軟件與過程本設(shè)計(jì)的調(diào)試軟件主要用于KEILC51,以及51開發(fā)板及其配套的下載燒錄軟件STC479。首先,我們先打開KEILC51軟件,然后選擇ATMEL,89C51并保存時(shí)創(chuàng)建一個(gè)新項(xiàng)目,創(chuàng)建一個(gè)新的文本框并編寫代碼,然后點(diǎn)擊保存并添加到組中。然后開始檢查是否有語法錯誤,檢查后確認(rèn)沒有錯誤,然后生成一個(gè)十六進(jìn)制文件可執(zhí)行的51單片機(jī)。然后使用51開發(fā)板匹配刻錄的CH340USB轉(zhuǎn)串口芯片,將十六進(jìn)制文件刻錄到微控制器中。編程成功后,可以在單片機(jī)上運(yùn)行測試程序,檢查所寫的功能是否實(shí)現(xiàn)。5.2.1顯示模塊測試首先,需要測試一下屏幕是否可以顯示。在測試過程中,不能在開始時(shí)顯示。所以通過改變程序來改變它的狀態(tài),但是在燒寫代碼之后,仍然不能正常顯示。最后,我選擇檢查硬件焊接是否有問題,最后發(fā)現(xiàn)當(dāng)1602液晶屏連接到單片機(jī)時(shí)。插入的引腳是相反的,所以代碼中傳輸?shù)臄?shù)據(jù)完全相反。對程序進(jìn)行修改后然后繼續(xù)測試,發(fā)現(xiàn)還是不能正常顯示,經(jīng)過仔細(xì)檢查,發(fā)現(xiàn)使用的PCF8574TIO擴(kuò)展芯片的I2C地址與PCF8574IO擴(kuò)展芯片不一樣,所以在I2C通信過程中不能正常使用。其次,可以顯示測試后,還需要測試顯示是否正常,需要顯示的內(nèi)容是否正確。在測試中,我發(fā)現(xiàn)屏幕總是出現(xiàn)有部分存在花屏現(xiàn)象,但是內(nèi)容是正確的。所以我改變了代碼的延時(shí)時(shí)間,改變了屏幕的延遲。改變之后,花屏的情況得到了完全的解決。5.2.2按鍵模塊測試然后要測量的是按鍵被按下后,STC89C52單片機(jī)是否能夠?qū)︽I值進(jìn)行讀取,同時(shí)傳輸?shù)揭壕э@示屏LCD1602中進(jìn)行顯示。然后通過查看顯示器是否對按鍵值進(jìn)行顯示來確定鍵盤是否工作。確定按鍵正常后,再添加本次畢業(yè)設(shè)計(jì)中需要單片機(jī)執(zhí)行按下鍵盤后運(yùn)行的程序功能,以及這些代碼是否可以正常使用。經(jīng)過最后的測試,我發(fā)現(xiàn)基本的功能是正常的,但是有時(shí)候按鈕不夠靈敏。之后在按鍵上增加了10K的上拉電阻來穩(wěn)定電壓,徹底解決了按鍵不敏感的問題。同時(shí)在程序中加入20Ms延時(shí),消除按鍵抖動問題。5.2.3復(fù)位模塊測試首先要確定測試復(fù)位按鈕可用,將代碼燒寫進(jìn)去之后,若出現(xiàn)顯示屏花屏現(xiàn)象時(shí),我們可以選擇按復(fù)位鍵必須回到初始狀態(tài),而不用像我之前一樣,斷電重啟才行。最后的測試結(jié)果正常。首先,確保硬件復(fù)位按鍵能夠正常使用。代碼燒入后,如果

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論