基于at89c51單片機(jī)溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)及基于at89s51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第1頁(yè)
基于at89c51單片機(jī)溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)及基于at89s51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第2頁(yè)
基于at89c51單片機(jī)溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)及基于at89s51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第3頁(yè)
基于at89c51單片機(jī)溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)及基于at89s51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第4頁(yè)
基于at89c51單片機(jī)溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)及基于at89s51單片機(jī)的數(shù)字電壓表設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于AT89C51單片機(jī)溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)1引言1.1選題背景20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快[1]。目前,單片機(jī)正朝著高性能和多品種方向發(fā)展趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面發(fā)展。下面是單片機(jī)的主要發(fā)展趨勢(shì)[2]。單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法[3]。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過(guò)軟件方法來(lái)實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命[4]。單片機(jī)模塊中最常見之一的是傳感器,溫濕度顯示報(bào)警系統(tǒng)是一種基于單片機(jī)的用數(shù)字電路技術(shù)實(shí)現(xiàn)溫濕度控制的裝置,在實(shí)踐社會(huì)生產(chǎn)當(dāng)中擁有廣泛的應(yīng)用。1.2目的和意義隨著社會(huì)的發(fā)展,人們對(duì)時(shí)間和環(huán)境中的溫度及濕度的要求越來(lái)越高,尤其在日常的生活中和人們的生活和健康有著緊密的聯(lián)系,特別是當(dāng)人們乘坐公共交通工具時(shí),溫濕度以及實(shí)時(shí)時(shí)間和人們的出行都有著密切的聯(lián)系。溫濕度控制在日常生活中使用比較普遍,如各種儀器控制箱、溫室或生產(chǎn)車間的溫度濕度控制、空調(diào)列車車廂空氣環(huán)境的控制等[5]。常見的低端產(chǎn)品多采用機(jī)械指針式或水銀柱式溫濕度計(jì),體積小、質(zhì)量輕、價(jià)格低、安裝簡(jiǎn)便。但是,此類產(chǎn)品測(cè)量精度低,沒(méi)有LED顯示屏,不能向智能化方向發(fā)展,不利于進(jìn)行功能擴(kuò)展,如不能自動(dòng)報(bào)警[6]。目前,雖然在工業(yè)生產(chǎn)中和科研實(shí)驗(yàn)中通過(guò)對(duì)溫濕度測(cè)量來(lái)進(jìn)行自動(dòng)控制的設(shè)備越來(lái)越普及,應(yīng)用場(chǎng)合也越來(lái)越多。但是,隨之而來(lái)的問(wèn)題是如何能夠測(cè)得精確的溫濕度以保證自動(dòng)控制設(shè)備能夠正確地發(fā)出控制指令來(lái)控制生產(chǎn)過(guò)程。另一方面,如果溫度或者濕度過(guò)高過(guò)低可能會(huì)對(duì)一些設(shè)備中的一些半導(dǎo)體元器件造成損壞[7]。因此,對(duì)于自動(dòng)溫濕度報(bào)警的需求也在逐漸增加。本文基于以上方面的考慮,研究并設(shè)計(jì)了一種基于單片機(jī)的自動(dòng)溫濕度顯示與報(bào)警系統(tǒng)。一般溫濕度控制系統(tǒng)中的溫濕度測(cè)量均采用熱敏電阻與濕敏電容,這種傳統(tǒng)的模擬式溫濕度傳感器一般都需要設(shè)計(jì)信號(hào)調(diào)理電路并經(jīng)過(guò)復(fù)雜的校準(zhǔn)和標(biāo)定過(guò)程,因此測(cè)量精度難以保證,且在線性度、重復(fù)性、互換性等方面也存在一定問(wèn)題[8]。這種傳感器只適合那些測(cè)量點(diǎn)數(shù)較少,對(duì)精度要求不高的場(chǎng)合。因此設(shè)計(jì)出一款基于單片機(jī)的精度高、穩(wěn)定性好、成本低的溫濕度顯示報(bào)警系統(tǒng)具有重要實(shí)際意義。1.3技術(shù)要求和設(shè)計(jì)范圍現(xiàn)代社會(huì)越來(lái)越多的實(shí)驗(yàn)都要求在嚴(yán)格的環(huán)境條件下完成,而溫度和濕度是實(shí)驗(yàn)室最基本的環(huán)境條件,也是對(duì)實(shí)驗(yàn)影響較大的因素。一般溫濕度控制系統(tǒng)中的溫濕度測(cè)量均采用熱敏電阻與濕敏電容[9],這種傳統(tǒng)的模擬式溫濕度傳感器一般都需要設(shè)計(jì)信號(hào)調(diào)理電路并經(jīng)過(guò)復(fù)雜的校準(zhǔn)和標(biāo)定過(guò)程,因此測(cè)量精度難以保證,且在線性度、重復(fù)性、互換性等方面也存在一定問(wèn)題。這種傳感器只適合那些測(cè)量點(diǎn)數(shù)較少,對(duì)精度要求不高的場(chǎng)合。因此設(shè)計(jì)出一款精度高、穩(wěn)定性好、成本低的溫濕度檢測(cè)控制系統(tǒng)將具有一定的市場(chǎng)。本系統(tǒng)采用具有高精度[10]、防干擾等優(yōu)點(diǎn)的數(shù)字式傳感器SHT11,不需要外部元件,可適配各種單片機(jī)。這為開發(fā)新一代的溫濕度測(cè)控系統(tǒng)提供了有利條件,同時(shí)也有助于將溫濕度測(cè)控技術(shù)提高到新的水平。1.4發(fā)展現(xiàn)狀單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SOC三大階段[11]。(1)SCM即單片微型計(jì)算機(jī)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)?!皠?chuàng)新模式”獲得成功,奠定了SCM與通用計(jì)算機(jī)完全不同的發(fā)展道路。(2)MCU即微控制器階段[12],主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對(duì)象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對(duì)象的智能化控制能力。(3)單片機(jī)是嵌入式系統(tǒng)的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素[13],就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機(jī)的發(fā)展自然形成了SOC化趨勢(shì)。隨著微電子技術(shù)、IC設(shè)計(jì)、EDA工具的發(fā)展[14],基于SOC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)會(huì)有較大的發(fā)展。智能溫度傳感器在20世紀(jì)90年代中期問(wèn)世。它是微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)測(cè)試技術(shù)的結(jié)晶。目前,國(guó)際上已開發(fā)出多種智能溫度傳感器系列產(chǎn)品。智能溫度傳感器內(nèi)部包含溫度傳感器、A/D傳感器[15]、信號(hào)處理器、存儲(chǔ)器和接口電路。有的產(chǎn)品還帶多路選擇器、中央控制器、隨機(jī)存取存儲(chǔ)和只讀存儲(chǔ)器。智能溫度傳感器能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器,并且可通過(guò)軟件來(lái)實(shí)現(xiàn)測(cè)試功能,溫度計(jì)也越來(lái)越智能化。跟電子溫度計(jì)一樣濕度計(jì)隨著濕度傳感器的發(fā)展趨于成熟。隨著智能檢測(cè)系統(tǒng)的飛速發(fā)展,基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)將多傳感器系統(tǒng)結(jié)合在一起。如何把多傳感器集中于一個(gè)檢測(cè)控制系統(tǒng),綜合利用來(lái)自多傳感器的信息,獲得對(duì)被測(cè)對(duì)象的可靠了解和解釋,以利于系統(tǒng)做出正確的響應(yīng)、決策和控制以及報(bào)警,是智能檢測(cè)控制統(tǒng)中需要解決的重要問(wèn)題。2方案論證2.1方案設(shè)計(jì)思路溫濕度報(bào)警系統(tǒng)的設(shè)計(jì)以單片機(jī)AT89C51為核心,通過(guò)控制單片機(jī)的P1口的一些端口來(lái)調(diào)節(jié)當(dāng)前溫濕度的顯示,完成了溫濕度的顯示報(bào)警功能,在程序中設(shè)置溫濕度范圍后,達(dá)到指定范圍后讓LED燈的閃亮來(lái)實(shí)現(xiàn)溫濕度控制的效果,讓LED1602液晶屏接到單片機(jī)的串口上,賦值來(lái)控制1602的顯示。因此,整個(gè)方案設(shè)計(jì)包含四個(gè)部分,即:?jiǎn)纹瑱C(jī)最小系統(tǒng)部分、顯示部分、溫濕度數(shù)據(jù)采集部分、報(bào)警部分。2.2方案選擇方案:?jiǎn)纹瑱C(jī)編程,用單片機(jī)設(shè)計(jì)電路,充分利用好AT89C51單片機(jī)的I/O口,使用軟硬件結(jié)合的方式,具體的基本框圖如圖[16]1所示:?jiǎn)纹瑱C(jī)單片機(jī)AT89S51溫濕度傳感器被測(cè)對(duì)象顯示部分報(bào)警部分圖1單片機(jī)設(shè)計(jì)電路的基本框圖方案選擇:從上述原理圖看來(lái),這種設(shè)計(jì)方案電路結(jié)構(gòu)簡(jiǎn)單,條理清晰,調(diào)試也相對(duì)方便,易于實(shí)現(xiàn)。2.3設(shè)計(jì)流程對(duì)于溫濕度顯示報(bào)警系統(tǒng)的設(shè)計(jì),先用PROTEUS做電路仿真,再在KEIL軟件中編寫程序生成源代碼,最后將PROTEUS和KEIL連接起來(lái)進(jìn)行在線仿真。設(shè)計(jì)流程如圖[17]2所示。ProteusProteus電路設(shè)計(jì)源程序設(shè)計(jì)生成目標(biāo)代碼基于proteus仿真 圖2系統(tǒng)設(shè)計(jì)流程圖2.4軟件環(huán)境2.4.1PROTEUS軟件本設(shè)計(jì)主要用Proteus7.5電子設(shè)計(jì)軟件進(jìn)行電子線路的設(shè)計(jì)和仿真。Proteus軟件的功能很強(qiáng)大,它不僅可以在線仿真模擬電子,數(shù)字電子和單片機(jī),還可以將設(shè)計(jì)直接轉(zhuǎn)換成PCB版圖[18],因此,受到眾多電子工程師的喜愛。電路原理圖的設(shè)計(jì)是仿真中的第一步,也是非常重要的一步。電路原理圖設(shè)計(jì)得好壞將直接影響到后面的工作。首先,原理圖的正確性是最基本的要求,因?yàn)樵谝粋€(gè)錯(cuò)誤的基礎(chǔ)上所進(jìn)行的工作是沒(méi)有意義的;其次,原理圖應(yīng)該布局合理,這樣不僅可以盡量避免出錯(cuò),也便于讀圖、便于查找和糾正錯(cuò)誤;最后,在滿足正確性和布局合理的前提下應(yīng)力求原理圖的美觀。電路原理圖的設(shè)計(jì)過(guò)程可分為以下幾個(gè)步驟:(1)置電路圖紙參數(shù)及相關(guān)信息根據(jù)電路圖的復(fù)雜程度設(shè)置圖紙的格式、尺寸、方向等參數(shù)以及與設(shè)計(jì)有關(guān)的信息,為以后的設(shè)計(jì)工作建立一個(gè)合適的工作平面。(2)裝入所需要的元件將所需的元件裝入設(shè)計(jì)系統(tǒng)中,以便從中查找和選定所需的元器件。(3)設(shè)置元件將選定的元件放置到已建立好的工作平面上,并對(duì)元件在工作平面上的位置進(jìn)行調(diào)整,對(duì)元件的序號(hào)、參數(shù)、顯示狀態(tài)等進(jìn)行定義和設(shè)置,以便為下一步的仿真工作打好基礎(chǔ)。(4)連線電路圖利用Proteus所提供的各種工具、命令進(jìn)行畫圖工作,將事先放置好的元器件用具有電氣意義的導(dǎo)線、網(wǎng)絡(luò)標(biāo)號(hào)等連接起來(lái),布線結(jié)束后,一張完整的電路原理圖基本完成。(5)調(diào)整、檢查和修改利用Proteus所提供的各種工具對(duì)前面所繪制的原理圖做進(jìn)一步的調(diào)整和修改。(6)補(bǔ)充完善對(duì)原理圖做一些相應(yīng)的說(shuō)明、標(biāo)注和修飾,增加可讀性和可觀性。(7)仿真這部分工作主要是對(duì)設(shè)計(jì)完成的原理圖結(jié)合KEIL在線仿真,調(diào)試并修改程序。2.4.2KeilC51軟件KeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開發(fā),體會(huì)更加深刻。KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種Keil軟件圖標(biāo)是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過(guò)匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛好者來(lái)說(shuō)是十分必要的,如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的不二之選(目前在國(guó)內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。下面詳細(xì)介紹KeilC51開發(fā)系統(tǒng)各部分功能和使用。(1)KeilC51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu):C51工具包的整體結(jié)構(gòu),其中uVision與Ishell分別是C51forWindows和forDos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。(2)使用獨(dú)立的Keil仿真器時(shí),注意事項(xiàng):仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。仿真器上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng)。仿真芯片的31腳(/EA)已接至高電平,所以仿真時(shí)只能使用片內(nèi)ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴(kuò)展有外部ROM(其CPU的/EA引腳接至低電平)的目標(biāo)系統(tǒng)中使用。3過(guò)程論述3.1AT89C51單片機(jī)最小系統(tǒng)3.1.1AT89C51單片機(jī)最小系統(tǒng)原理圖最小系統(tǒng)包括晶體振蕩電路、復(fù)位開關(guān)和電源部分[19]。下面圖3為AT89C51單片機(jī)的最小系統(tǒng)電路圖。圖3單片機(jī)最小系統(tǒng)電路圖3.1.2電源引腳Vcc40電源端GND20接地端工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V,引腳功能一樣。3.1.3外接晶體引腳XTAL119XTAL218圖4晶振連接的內(nèi)部、外部方式圖晶振連接的內(nèi)部、外部方式如上圖4所示。XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對(duì)外接電容的值雖然沒(méi)有嚴(yán)格的要求,但電容的大小會(huì)影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為22μF。在焊接刷電路板時(shí),晶體振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。3.1.4復(fù)位RST9在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腿時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0-P3口均置1引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的00H處開始運(yùn)行程序。復(fù)位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過(guò)一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來(lái)抑制噪聲,它的輸出在每個(gè)機(jī)器周期的S5P2,由復(fù)位電路采樣一次。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復(fù)位電路。當(dāng)時(shí)鐘頻率選用6MHz時(shí),C取22μF,Rs約為200Ω,Rk約為1K。復(fù)位操作不會(huì)對(duì)內(nèi)部RAM有所影響。常用的復(fù)位電路如下圖6所示:圖5常用復(fù)位電路圖3.1.5輸入輸出引腳(1)P0端口[P0.0-P0.7]P0是一個(gè)8位漏極開路型雙向I/O端口,端口置1(對(duì)端口寫1)時(shí)作高阻抗輸入端。作為輸出口時(shí)能驅(qū)動(dòng)8個(gè)TTL。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收指令字節(jié);校驗(yàn)程序時(shí)輸出指令字節(jié),要求外接上拉電阻。在訪問(wèn)外部程序和外部數(shù)據(jù)存儲(chǔ)器時(shí),P0口是分時(shí)轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問(wèn)期間內(nèi)部的上拉電阻起作用。(2)P1端口[P1.0-P1.7]P1是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動(dòng)4個(gè)TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收低8位地址信息。(3)P2端口[P2.0-P2.7]P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動(dòng)4個(gè)TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收高8位地址和控制信息。在訪問(wèn)外部程序和16位外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址。而在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)其引腳上的內(nèi)容在此期間不會(huì)改變。(4)P3端口[P3.0-P3.7]P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時(shí)可驅(qū)動(dòng)4個(gè)TTL。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接控制信息。除此之外P3端口還用于一些專門功能,具體如下表1。表1P3端口引腳兼用功能表P3引腳兼用功能P3.0串行通訊輸入(RXD)P3.1串行通訊輸出(TXD)P3.2外部中斷0(INT0)P3.3外部中斷1(INT1)P3.4定時(shí)器0輸入(T0)P3.5定時(shí)器1輸入(T1)P3.6外部數(shù)據(jù)存儲(chǔ)器寫選通WRP3.7外部數(shù)據(jù)存儲(chǔ)器寫選通RD3.2LCD1602顯示系統(tǒng)3.2.1LCD1602顯示系統(tǒng)液晶顯示器普遍地用于直觀地顯示數(shù)字系統(tǒng)或字符的運(yùn)行狀態(tài)和工作數(shù)據(jù),按照材料及產(chǎn)品工藝[20],單片機(jī)應(yīng)用系統(tǒng)中常用的顯示器有:發(fā)光二極管LED顯示器、液晶LCD顯示器、CRT顯示器等。LCD顯示器是現(xiàn)在最常用的顯示器之一,其仿真電路圖如下所示。圖6LED1602顯示器的符號(hào)3.2.2液晶顯示器簡(jiǎn)介(1)在日常生活中,我們對(duì)液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過(guò)器件,如在計(jì)算器、萬(wàn)用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號(hào)和圖形。在單片機(jī)的人機(jī)交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡(jiǎn)單,在前面章節(jié)已經(jīng)介紹過(guò),在此不作介紹,本章重點(diǎn)介紹字符型液晶顯示器的應(yīng)用。在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器有以下幾個(gè)優(yōu)點(diǎn):顯示質(zhì)量高——由于液晶顯示器每一個(gè)點(diǎn)在收到信號(hào)后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會(huì)閃爍。數(shù)字式接口——液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡(jiǎn)單可靠,操作更加方便。體積小、重量輕——液晶顯示器通過(guò)顯示屏上的電極控制液晶分子狀態(tài)來(lái)達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。功耗低——相對(duì)而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC上,因而耗電量比其它顯示器要少得多。(2)液晶顯示原理:液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng)域。(3)液晶顯示器的分類:液晶顯示的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點(diǎn)陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動(dòng)方式來(lái)分,可以分為靜態(tài)驅(qū)動(dòng)(Static)、單純矩陣驅(qū)動(dòng)(SimpleMatrix)和主動(dòng)矩陣驅(qū)動(dòng)(ActiveMatrix)三種。(4)一般1602字符型液晶顯示器實(shí)物如圖所示[21]:圖7型液晶顯示器實(shí)物圖3.2.3LCD1602引腳功能說(shuō)明1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口,編號(hào)符號(hào)引腳說(shuō)明如下所示:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。3.2.4LCD1602的指令說(shuō)明及時(shí)序1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2所示。表21602液晶模塊內(nèi)部的控制器的11條控制指令序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容基本操作時(shí)序表與讀寫操作時(shí)序如表3和圖8,9所示。表3基本操作時(shí)序表讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0—D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0—D7=指令碼,E=高脈沖輸出無(wú)讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0—D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖輸出無(wú)圖8讀操作時(shí)序圖9寫操作時(shí)序3.2.5程序流程圖(詳細(xì)程序見附錄)顯示第二顯示第二行內(nèi)容開始LCD初始化設(shè)第一行顯示位置設(shè)第二行顯示位置延時(shí)顯示第一行內(nèi)容 圖10程序流程圖3.3SHT10傳感器3.3.1溫濕度傳感器電路圖圖11溫濕度傳感器電路圖3.3.2產(chǎn)品簡(jiǎn)介SHT10屬于Sensirion溫濕度傳感器家族中的貼片封裝系列[22]。傳感器將傳感元件和信號(hào)處理電路集成在一塊微型電路板上,輸出完全標(biāo)定的數(shù)字信號(hào)。傳感器包括一個(gè)電容性聚合體測(cè)濕敏感元件、一個(gè)用能隙材料制成的測(cè)溫元件,并在同一芯片上,與14位的A/D轉(zhuǎn)換器以及串行接口電路實(shí)現(xiàn)無(wú)縫連接。因此,該產(chǎn)品具有品質(zhì)卓越、響應(yīng)迅速、抗干擾能力強(qiáng)、性價(jià)比高等優(yōu)點(diǎn)。傳感器芯片此說(shuō)明書適用于SHT1x-V4。SHT1x-V4是第四代硅傳感芯片,除了濕度、溫度敏感元件以外,還包括一個(gè)放大器,A/D轉(zhuǎn)換器,OTP內(nèi)存和數(shù)字接口。材質(zhì)傳感器的核心為CMOS芯片,外圍材料頂層采用環(huán)氧LCP,底層為FR4。傳感器符合ROHS和WEEE標(biāo)準(zhǔn),因此不含Pb,Cd,Hg,Cr(6+),PBB,PBDE。3.3.3SHT10引腳圖12SHT10引腳圖(1)電源引腳VDD、GNDSHT10的供電電壓范圍為2.4-5.5V,建議供電電壓為3.3V。在電源引腳(VDD,GND)之間須加一個(gè)100nF的電容,用以去耦濾波。SHT10的串行接口,在傳感器信號(hào)的讀取及電源損耗方面,都做了優(yōu)化處理;傳感器不能按照I2C協(xié)議編址,但是,如果I2C總線上沒(méi)有掛接別的元件,傳感器可以連接到I2C總線上,但單片機(jī)必須按照傳感器的協(xié)議工作。(2)串行時(shí)鐘輸入SCKSCK用于微處理器與SHT10之間的通訊同步。由于接口包含了完全靜態(tài)邏輯,因而不存在最小SCK頻率。(3)串行數(shù)據(jù)DATADATA引腳為三態(tài)結(jié)構(gòu),用于讀取傳感器數(shù)據(jù).當(dāng)向傳感器發(fā)送命令時(shí),DATA在SCK上升沿有效且在SCK高電平時(shí)必須保持穩(wěn)定。DATA在SCK下降沿之后改變。為確保通訊安全,DATA的有效時(shí)間在SCK上升沿之前和下降沿之后應(yīng)該分別延長(zhǎng)至TSUandTHO–參見圖11。當(dāng)從傳感器讀取數(shù)據(jù)時(shí),DATATV在SCK變低以后有效,且維持到下一個(gè)SCK的下降沿。為避免信號(hào)沖突,微處理器應(yīng)驅(qū)動(dòng)DATA在低電平。需要一個(gè)外部的上拉電阻(例如:10kΩ)將信號(hào)提拉至高電平。上拉電阻通常已包含在微處理器的I/O電路中加重的DATA線由傳感器控制,普通的DATA線由單片機(jī)控制.有效時(shí)間依據(jù)SCK的時(shí)序.圖13時(shí)序圖圖14啟動(dòng)傳輸時(shí)序圖后續(xù)命令包含三個(gè)地址位(目前只支持000”),和五個(gè)命令位。SHT1x會(huì)以下述方式表示已正確地接收到指令:在第8個(gè)SCK時(shí)鐘的下降沿之后,將DATA下拉為低電平(ACK位)。在第9個(gè)SCK時(shí)鐘的下降沿之后,釋放DATA(恢復(fù)高電平)。3.3.4傳感器的通訊(1)啟動(dòng)傳感器首先,選擇供電電壓后將傳感器通電,上電速率不能低于1V/ms。通傳感器需要11ms進(jìn)入休眠狀態(tài),在此之前不允許對(duì)傳感器發(fā)送任何命令。(2)發(fā)送命令用一組“啟動(dòng)傳輸”時(shí)序,來(lái)完成數(shù)據(jù)傳輸?shù)某跏蓟?。它包括:?dāng)SCK時(shí)鐘高電平時(shí)DATA翻轉(zhuǎn)為低電平,緊接著SCK變?yōu)榈碗娖?,隨后是在SCK時(shí)鐘高電平時(shí)DATA翻轉(zhuǎn)為高電平。參見圖12。"啟動(dòng)傳輸"時(shí)序后續(xù)命令包含三個(gè)地址位(目前只支持000”),和五個(gè)命令位。SHT1x會(huì)以下述方式表示已正確地接收到指令:在第8個(gè)SCK時(shí)鐘的下降沿之后,將DATA下拉為低電平(ACK位)。在第9個(gè)SCK時(shí)鐘的下降沿之后,釋放DATA(恢復(fù)高電平)。命令代碼預(yù)留0000x溫度測(cè)量00011濕度測(cè)量00101讀狀態(tài)寄存器00111寫狀態(tài)寄存器00110預(yù)留0101x-1110x軟復(fù)位,接口復(fù)位,狀態(tài)寄存器復(fù)位即恢復(fù)為默認(rèn)狀態(tài).在要發(fā)送下一個(gè)命令前,至少等待11ms.(3)溫濕度測(cè)量[23]發(fā)布一組測(cè)量命令(‘00000101’表示相對(duì)濕度RH,‘00000011’表示溫度T)后,控制器要等待測(cè)量結(jié)束。這個(gè)過(guò)程需要大約20/80/320ms,分別對(duì)應(yīng)8/12/14bit測(cè)量。確切的時(shí)間隨內(nèi)部晶振速度,最多可能有-30%的變化。SHT1x通過(guò)下拉DATA至低電平并進(jìn)入空閑模式,表示測(cè)量的結(jié)束??刂破髟谠俅斡|發(fā)SCK時(shí)鐘前,必須等待這個(gè)“數(shù)據(jù)備妥”信號(hào)來(lái)讀出數(shù)據(jù)。檢測(cè)數(shù)據(jù)可以先被存儲(chǔ),這樣控制器可以繼續(xù)執(zhí)行其它任務(wù)在需要時(shí)再讀出數(shù)據(jù)。接著傳輸2個(gè)字節(jié)的測(cè)量數(shù)據(jù)和1個(gè)字節(jié)的CRC奇偶校驗(yàn)(可選擇讀?。?。uC需要通過(guò)下拉DATA為低電平,以確認(rèn)每個(gè)字節(jié)。所有的數(shù)據(jù)從MSB開始,右值有效(例如:對(duì)于12bit數(shù)據(jù),從第5個(gè)SCK時(shí)鐘起算作MSB;而對(duì)于8bit數(shù)據(jù),首字節(jié)則無(wú)意義)。在收到CRC的確認(rèn)位之后,表明通訊結(jié)束。如果不使用CRC-8校驗(yàn),控制器可以在測(cè)量值LSB后,通過(guò)保在測(cè)量和通訊結(jié)束后,SHT1x自動(dòng)轉(zhuǎn)休眠模式。(4)通訊復(fù)位時(shí)序如果與SHT1x通訊中斷,可通過(guò)下列信號(hào)時(shí)序復(fù)位:當(dāng)DATA保持高電平時(shí),觸發(fā)SCK時(shí)鐘9次或更多,參閱圖13。接著發(fā)送一個(gè)“傳輸啟動(dòng)”時(shí)序。這些時(shí)序只復(fù)位串口,狀態(tài)寄存器內(nèi)容仍然保留。圖15復(fù)位時(shí)序(5)CRC-8Checksum計(jì)算數(shù)據(jù)傳輸?shù)目煽啃杂蒀RC-8的校驗(yàn)來(lái)保證.它確??梢詸z測(cè)并去除所有錯(cuò)誤數(shù)據(jù)。狀態(tài)寄存器SHT1x的某些高級(jí)功能可以通過(guò)給狀態(tài)寄存器發(fā)送指令來(lái)實(shí)現(xiàn),如選擇測(cè)量分辨率,電量不足提醒或啟動(dòng)加熱功能等。在讀狀態(tài)寄存器或?qū)憼顟B(tài)寄存器之后,8位狀態(tài)寄存器的內(nèi)容將被讀出或?qū)懭?,如圖所示。圖168位狀態(tài)寄存器的內(nèi)容3.3.5信號(hào)轉(zhuǎn)換(1)相對(duì)濕度濕度的非線性補(bǔ)償請(qǐng)參閱下圖,為獲得精確的測(cè)量數(shù)據(jù),建議用以下公式進(jìn)行信號(hào)轉(zhuǎn)換。linear12RH3RHRH=c+c?SO+c?SO(%RH)圖17從SORH到相對(duì)濕度的轉(zhuǎn)化(2)濕度信號(hào)的溫度補(bǔ)償由于實(shí)際溫度與測(cè)試參考溫度25℃(~77℉)的顯著不同,濕度信號(hào)需要溫度補(bǔ)償。溫度校正粗略對(duì)應(yīng)于0.12%RH/℃@50%RH。trueC12RHlinearRH=T?25?t+t?SO+RH°溫度由能隙材料PTAT(正比于絕對(duì)溫度)研發(fā)的溫度傳感器具有極好的線性??捎萌缦鹿綄?shù)字輸出(SOT)轉(zhuǎn)換為溫度值,溫度轉(zhuǎn)換系數(shù)如下圖所示。12TT=d+d?SO圖18溫度轉(zhuǎn)換系數(shù)1(3)露點(diǎn)SHT1x并不直接進(jìn)行露點(diǎn)測(cè)量,,但露點(diǎn)可以通過(guò)溫度和濕度讀數(shù)計(jì)算得到.。由于溫度和濕度在同一塊集成電路上測(cè)量,SHT1x可測(cè)量露點(diǎn)。露點(diǎn)的計(jì)算方法很多,絕大多數(shù)都很復(fù)雜。對(duì)于-40–50°C溫度范圍的測(cè)量,通過(guò)下面的的公式可得到較好的精度,參數(shù)見下圖所示。圖19露點(diǎn)(Td)計(jì)算參數(shù)3.3.6環(huán)境穩(wěn)定性如果傳感器用于裝備或機(jī)械中,要確保用于測(cè)量的傳感器與用于參考的傳感器感知的是同一條件的溫度和濕度。如果傳感器被放置于裝備中,反應(yīng)時(shí)間會(huì)延長(zhǎng),因此在程序設(shè)計(jì)中要保證預(yù)留足夠的測(cè)量時(shí)間。傳感器在其它測(cè)試條件下的性能,我們不予保證,尤其是在用戶需要的特定場(chǎng)合。報(bào)警輸出是否異常?報(bào)警輸出是否異常?是溫濕度判斷開始溫濕度采集溫濕度轉(zhuǎn)換數(shù)據(jù)處理否 圖20傳感器原理流程圖3.4報(bào)警系統(tǒng)3.4.1報(bào)警電路圖當(dāng)啟動(dòng)仿真程序時(shí),用手調(diào)節(jié)傳感器上的按鍵時(shí),可以調(diào)節(jié)溫度與濕度的數(shù)據(jù)轉(zhuǎn)換和相應(yīng)的溫濕度顯示數(shù)據(jù)的遞增或遞減。(詳細(xì)編寫程序見附錄)圖21報(bào)警電路圖4仿真與調(diào)試4.1實(shí)驗(yàn)?zāi)康呐c原理在此介紹一下我設(shè)計(jì)溫濕度控制系統(tǒng)的工作原理:論文目標(biāo):溫度范圍18-27度,濕度40%-70%。超范圍報(bào)警具體要求:(1)傳感器采用SHT10集成傳感器(2)LED溫濕度顯示,精確到一位小數(shù)(3)超范圍發(fā)光二極管報(bào)警第一步:實(shí)現(xiàn)將sht10中的數(shù)據(jù)讀入到單片機(jī)中然后顯示到1602上第二步:調(diào)節(jié)sht10上的數(shù)據(jù)為n,若n在溫度18-27范圍內(nèi)則正常顯示到1602上,若超出范圍則報(bào)警,二極管點(diǎn)亮(紅);同理,若n在濕度40%-70%范圍內(nèi)則正常顯示到1602上,若超出范圍則報(bào)警,二極管點(diǎn)亮(綠).4.2仿真原理圖用PROTUES軟件,根據(jù)要求畫出溫濕度顯示報(bào)警系統(tǒng)的的原理圖如下圖圖22溫濕度顯示報(bào)警系統(tǒng)的的原理圖4.3系統(tǒng)仿真以及顯示結(jié)果用protues和keil軟件聯(lián)調(diào),運(yùn)行期間仿真軟件調(diào)試程序結(jié)果如圖23所示,當(dāng)調(diào)節(jié)傳感器使?jié)穸仍?7%時(shí),1602顯示濕度為91.88%,中間產(chǎn)生了部分誤差,在誤差允許范圍之內(nèi),濕度超出設(shè)置范圍,紅燈亮,開始報(bào)警,運(yùn)行結(jié)果如圖24,25,26所示;當(dāng)調(diào)節(jié)傳感器使溫度在29度時(shí),1602顯示溫度為28.84度,中間產(chǎn)生了部分誤差,在誤差允許范圍之內(nèi),溫度超出設(shè)置范圍,綠燈亮,開始報(bào)警,運(yùn)行結(jié)果如圖24,25,26所示;圖23仿真運(yùn)行結(jié)果圖圖24SHT10運(yùn)行結(jié)果圖圖25報(bào)警運(yùn)行結(jié)果圖圖26LCD1602運(yùn)行結(jié)果圖4.4結(jié)果分析及測(cè)試總結(jié)采用PROTEUS進(jìn)行單片機(jī)仿真,可以大大縮短單片機(jī)的開發(fā)周期。它不僅能仿真單片機(jī)CPU的工作情況,也能仿真單片機(jī)外圍電路或沒(méi)有單片機(jī)參與的其它電路的工作情況。本系統(tǒng)很好的完成了本次畢業(yè)設(shè)計(jì)的各項(xiàng)任務(wù)和要求,通過(guò)溫濕度顯示報(bào)警系統(tǒng)程序,成功的完成了溫濕度采集功能、顯示功能、報(bào)警功能。通過(guò)控制P1.0、P1.1、P1.2來(lái)調(diào)節(jié)當(dāng)前溫濕度數(shù)據(jù)的顯示,很好的完成了顯示功能。設(shè)置溫濕報(bào)警范圍后,LED燈也能很好的體現(xiàn)報(bào)警的效果,在超出設(shè)置的正常顯示范圍后,LED燈亮,很好的體現(xiàn)了報(bào)警功能。連接電路圖后,通過(guò)編譯程序來(lái)控制液晶顯示屏的顯示,通過(guò)仿真結(jié)果也很好的體現(xiàn)了其顯示功能。5結(jié)束語(yǔ)本文的溫濕度顯示報(bào)警系統(tǒng)設(shè)計(jì)是以單片機(jī)(AT89C51)為核心,SHT10溫濕度感應(yīng)器等部分組成。具體介紹KeilC51軟件調(diào)試程序和Proteus的ISIS軟件進(jìn)行單片機(jī)系統(tǒng)的設(shè)計(jì)與仿真。在這次設(shè)計(jì)中,我完成了核心控制部分、顯示部分、報(bào)警部分等基本功能。通過(guò)這次設(shè)計(jì)單片機(jī)有了一個(gè)更深的認(rèn)識(shí),對(duì)于LCD1602以及SHT10的使用過(guò)程有了一定的掌握,同時(shí)對(duì)KeilC51軟件和Proteus軟件有了更熟練的操作。本文設(shè)計(jì)到的內(nèi)容還不是很完善,我會(huì)在以后的學(xué)習(xí)和工作中會(huì)做進(jìn)一步的學(xué)習(xí)和探索,以取得更大的進(jìn)步。但是通過(guò)這次畢業(yè)設(shè)計(jì),我也學(xué)到了很多東西,感覺(jué)自己應(yīng)用基礎(chǔ)知識(shí)及專業(yè)知識(shí)解決問(wèn)題的能力有了很大的提高??傊?,這次畢業(yè)設(shè)計(jì)收獲還是蠻大的。參考文獻(xiàn)[1]李洪超.基于AT89C51的溫度控制系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息(嵌入式與SOC),2010.8,26(12-2):87~88[2]周樂(lè)安.基于MSP430單片機(jī)溫濕度控制器[J].四川兵工時(shí)報(bào),2008.8,29(2):113~114[3]楊學(xué)存,侯媛彬.基于MSP430單片機(jī)溫濕度控制器的實(shí)現(xiàn)[J].煤礦機(jī)械,2005.6,(9),64~65[4]鐘曉偉,宋蟄存.基于單片機(jī)的實(shí)驗(yàn)室溫濕度控制系統(tǒng)設(shè)計(jì)[J].林業(yè)機(jī)械與木工設(shè)備2010.8,38(1):39~42[5]劉攀,俞杰,張海明.基于單片機(jī)的溫度測(cè)控系統(tǒng)[J].蘭州交通大學(xué)學(xué)報(bào)(自然科學(xué)版),2005.9,24(6):103~106[6]朱魏峰.基于單片機(jī)的溫度監(jiān)控系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2011.6,24(10):91~92[7]張為.基于單片機(jī)的溫濕度測(cè)量系統(tǒng)設(shè)[J].陰山學(xué)刊,2010.6,24(3):26~29[8]張妮,段文強(qiáng),邵婷婷.基于單片機(jī)的溫濕度監(jiān)控系統(tǒng)設(shè)計(jì)[J].延安大學(xué)學(xué)(自然科學(xué)版),2010.5,29(2):50~52[9]劉翔.基于單片機(jī)的自動(dòng)溫度測(cè)量報(bào)警系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011.8,19(1):125~127[10]章昕,黃秋,湯彬,方方.智能溫度報(bào)警系統(tǒng)的研制[J].自動(dòng)化技術(shù)與應(yīng)用,2009.4,28(7):103~105[11]鄭冬強(qiáng),萬(wàn)琰,張平川.基于uC/OS-II的溫濕度測(cè)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息(嵌入式與SOC),2009.5,25(1-2):68~69[12]方言,王曉明.一種智能溫濕度控制器的設(shè)計(jì)[J].智能儀器儀表,2006(10):66~67[13]余澤輝,伍建軍,陳潔.基于單片機(jī)的數(shù)字溫度計(jì)的研究與設(shè)計(jì)[J].黑龍江工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2007.6,(12):15~16[14]羅興垅,黃隆盛.基于AT89C51控制的0.01℃數(shù)顯溫度計(jì)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006.3,22(5):70~72[15]閆懷兵,李維寧.如何選用濕度傳感器產(chǎn)品[J].制造業(yè)自動(dòng)化,1999.5,(5):10~15[16]嚴(yán)懷龍.基于單片機(jī)的數(shù)據(jù)采集系統(tǒng)[J].廣西輕工業(yè),2006.8,(6):34~35[17]江太輝,鄧展威.DS18B20數(shù)字式溫度傳感器的特性與應(yīng)用[J].電子技術(shù),2003.7,(12):56~58[18]張娟,陳杰,蔡振江.基于多傳感器數(shù)據(jù)融合的溫室溫度采集[J].微計(jì)算機(jī)信息2007.2,27(1-1):153~154[19]顧啟民,呂庭.單片機(jī)系統(tǒng)中復(fù)位電路可靠性設(shè)計(jì)[J].電子測(cè)量技術(shù),2001.7,(3):25~26[20]何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京,北京航空航天出版社,l990[21]張立科.單片機(jī)通信技術(shù)與工程實(shí)踐[M].北京:人民郵電出版社,2005:109~111[22]李光弟,朱秀月,王秀山.單片機(jī)基礎(chǔ)[M].(修訂本).北京:北京航空航天大學(xué)出版社,2001[23]丁明亮,唐前輝.51單片機(jī)應(yīng)用設(shè)計(jì)與仿真[M].北京:北京航空航天大學(xué)出版社,2009基于51單片機(jī)的數(shù)字電壓表設(shè)計(jì)PAGEviii附錄:/*************端口定義********************P1.0SCK(SHT10) P1.1DATA(SHT10) P0DB0~DB7(LCD1602)P2.0RS(LCD1602)P2.1RW(LCD1602)P2.2E(LCD1602)*****************************************/#include<reg52.h>#include<intrins.h>#include<stdio.h>#include<string.h>#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedint#defineTEMPUP28//溫度上限#defineTEMPDOWN17 //溫度下限#defineHUMDOWN70 //濕度上限#defineHUMUP40 //濕度下限sbitLcdRs=P2^0;//1602液晶端口定義sbitLcdRw=P2^1;sbitLcdEn=P2^2;sbitled1=P3^0;//報(bào)警燈端口定義sbitled2=P3^4;sbitACC0=ACC^0;sbitACC7=ACC^7;bitstart;ucharstr[7];//向LCD寫入命令或數(shù)據(jù)************************************************************#defineLCD_COMMAND 0//Command#defineLCD_DATA 1//Data#defineLCD_CLEAR_SCREEN 0x01//清屏#defineLCD_HOMING 0x02//光標(biāo)返回原點(diǎn)//設(shè)置顯示模式************************************************************#defineLCD_SHOW 0x04//顯示開#defineLCD_HIDE 0x00//顯示關(guān) #defineLCD_CURSOR 0x02 //顯示光標(biāo)#defineLCD_NO_CURSOR 0x00//無(wú)光標(biāo) #defineLCD_FLASH 0x01//光標(biāo)閃動(dòng)#defineLCD_NO_FLASH 0x00//光標(biāo)不閃動(dòng)//設(shè)置輸入模式************************************************************#defineLCD_AC_UP 0x02#defineLCD_AC_DOWN 0x00//default#defineLCD_MOVE 0x01//畫面可平移#defineLCD_NO_MOVE 0x00//defaultunsignedcharLCD_Wait(void);voidLCD_Write(bitstyle,unsignedcharinput);/***********1602液晶顯示部分子程序****************/voiddelay(uintz) //延時(shí)函數(shù){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidLCD_Write(bitstyle,unsignedcharinput) { LcdRs=style; P0=input; delay(5); LcdEn=1; delay(5); LcdEn=0; }voidLCD_SetDisplay(unsignedcharDisplayMode) //設(shè)置輸出{ LCD_Write(LCD_COMMAND,0x08|DisplayMode); }voidLCD_SetInput(unsignedcharInputMode) //設(shè)置輸入{ LCD_Write(LCD_COMMAND,0x04|InputMode);}voidLCD_Initial() //初始化LCD函數(shù){ LcdEn=0; LCD_Write(LCD_COMMAND,0x38);//8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//開啟顯示,無(wú)光標(biāo) LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC遞增,畫面不動(dòng)}voidGotoXY(unsignedcharx,unsignedchary)//液晶字符輸入的位置{ if(y==0) LCD_Write(LCD_COMMAND,0x80|x); if(y==1) LCD_Write(LCD_COMMAND,0x80|(x-0x40));}voidPrint(unsignedchar*str) //將字符輸出到液晶顯示{ while(*str!='\0') { LCD_Write(LCD_DATA,*str); str++; }}voidzhuanhuan(floata)//浮點(diǎn)數(shù)轉(zhuǎn)換成字符串函數(shù){ memset(str,0,sizeof(str)); sprintf(str,"%f",a);}voidwelcome() //初始界面函數(shù){ LCD_Initial(); GotoXY(0,0); Print("Welcome!"); GotoXY(0,1); Print("Codeofsht10"); delay(200);}voiddelay_n10us(uintn)//延時(shí)n個(gè)10us@12M晶振{uinti;for(i=n;i>0;i--){ _nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); }}/*********************第一部分LCD1602設(shè)置END****************************************//*********************第二部分SHT10設(shè)置START**************************************/sbitSCK=P1^0;//定義通訊時(shí)鐘端口sbitDATA=P1^1;//定義通訊數(shù)據(jù)端口typedefunion{unsignedinti;//定義了兩個(gè)共用體floatf;}value;enum{TEMP,HUMI};//TEMP=0,HUMI=1#definenoACK0//用于判斷是否結(jié)束通訊#defineACK1//結(jié)束數(shù)據(jù)傳輸//adrcommandr/w#defineSTATUS_REG_W0x06//00000110#defineSTATUS_REG_R0x07//00000111#defineMEASURE_TEMP0x03//00000011#defineMEASURE_HUMI0x05//00000101#defineRESET0x1e//00011110/****************定義函數(shù)****************/voids_transstart(void);//啟動(dòng)傳輸函數(shù)voids_connectionreset(void);//連接復(fù)位函數(shù)chars_write_byte(unsignedcharvalue);//SHT10寫函數(shù)chars_read_byte(unsignedcharack);//SHT10讀函數(shù)chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);//測(cè)量溫濕度函數(shù)voidcalc_dht90(float*p_humidity,float*p_temperature);//溫濕度補(bǔ)償voids_transstart(void)//啟動(dòng)傳輸函數(shù)//generatesatransmissionstart//_____________//DATA:|_______|//______//SCK:___||___||______{DATA=1;SCK=0;//Initialstate_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;}voids_connectionreset(void)//連接復(fù)位函數(shù)//communicationreset:DATA-line=1andatleast9SCKcyclesfollowedbytransstart//_____________________________________________________________//DATA:|_______|//_______________//SCK:__||__||__||__||__||__||__||__||__||______||___||______{unsignedchari;DATA=1;SCK=0;//Initialstatefor(i=0;i<9;i++)//9SCKcycles{SCK=1;SCK=0;}s_transstart();//transmissionstart}chars_write_byte(unsignedcharvalue) //SHT10寫字節(jié)函數(shù)////writesabyteontheSensibusandcheckstheacknowledge{unsignedchari,error=0;for(i=0x80;i>0;i/=2)//shiftbitformasking{if(i&value)DATA=1;//maskingvaluewithi,writetoSENSI-BUSelseDATA=0;SCK=1;//clkforSENSI-BUS_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=0;}DATA=1;//releaseDATA-lineSCK=1;//clk#9forackerror=DATA;//checkack(DATAwillbepulleddownbyDHT90),DATA在第9個(gè)上升沿將被DHT90自動(dòng)下拉為低電平。_nop_();_nop_();_nop_();SCK=0;DATA=1;//releaseDATA-linereturnerror;//error=1incaseofnoacknowledge//返回:0成功,1失敗}/*****SHT10讀函數(shù)readsabyteformtheSensibusandgivesanacknowledgeincaseof"ack=1"****/chars_read_byte(unsignedcharack){unsignedchari,val=0;DATA=1;//releaseDATA-linefor(i=0x80;i>0;i/=2)//shiftbitformasking{SCK=1;//clkforSENSI-BUSif(DATA)val=(val|i);//readbit _nop_();_nop_();_nop_();//pulswithapprox.3usSCK=0;}if(ack==1)DATA=0;//incaseof"ack==1"pulldownDATA-LineelseDATA=1;//如果是校驗(yàn)(ack==0),讀取完后結(jié)束通訊_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=1;//clk#9forack_nop_();_nop_();_nop_();//pulswithapprox.3usSCK=0;_nop_();_nop_();_nop_();//pulswithapprox.3usDATA=1;//releaseDATA-linereturnval;}/*測(cè)量溫濕度函數(shù)makesameasurement(humidity/temperature)withchecksum*/chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode){unsignederror=0;unsignedinti;s_transstart();//transmissionstartswitch(mode){//sendcommandtosensorcaseTEMP:error+=s_write_byte(MEASURE_TEMP);break;caseHUMI:error+=s_write_byte(MEASURE_HUMI);break;default:break;}for(i=0;i<65535;i++)if(DATA==0)break;//waituntilsensorhasfinishedthemeasurementif(DATA)error+=1;//ortimeout(~2sec.)isreached*(p_value)=s_read_byte(ACK);//readthefirstbyte(MSB)*(p_value+1)=s_read_byte(ACK);//readthesecondbyte(LSB)*p_checksum=s_read_byte(noACK);//readchecksumreturnerror;}voidcalc_sht90(float*p_humidity,float*p_temperature)//溫濕度補(bǔ)償函數(shù)//calculatestemperature[C]andhumidity[%RH]//input:humi[Ticks](12bit)//temp[Ticks](14bit)//output:humi[%RH]//temp[C]{constfloatC1=-4.0;//for12BitconstfloatC2=+0.0405;//for12BitconstfloatC3=-0.0000028;//for12BitconstfloatT1=+0.01;//for14Bit@5VconstfloatT2=+0.00008;//for14Bit@5Vfloatrh=*p_humidity;//rh:Humidity[Ticks]12Bitfloatt=*p_temperature;//t:Temperature[Ticks]14Bitfloatrh_lin;//rh_lin:Humiditylinearfloatrh_true;//rh_true:Temperaturecompensatedhumidityfloatt_C;//t_C:Temperature[C]t_C=t*0.01-40;//calc.temperaturefromticksto[C]rh_lin=C3*rh*rh+C2*rh+C1;//calc.humidityfromticksto[%RH]rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;//calc.temperaturecompensatedhumidity[%RH]if(rh_true>100)rh_true=100;//cutifthevalueisoutsideofif(rh_true<0.1)rh_true=0.1;//thephysicalpossiblerange*p_temperature=t_C;//returntemperature[C]*p_humidity=rh_true;//returnhumidity[%RH]}/**************第二部分SHT10設(shè)置END*****************************//***************************主函************************************/voidmain(void){ valuehumi_val,temp_val;unsignedcharerror,checksum,i; LcdRw=0; led1=0; led2=0; start=0;s_connectionreset();welcome();//顯示歡迎畫面delay(2000); LCD_Initial();while(1){error=0;error+=s_measure((unsignedchar*)&humi_val.i,&checksum,HUMI);error+=s_measure((unsignedchar*)&temp_val.i,&checksum,TEMP);if(error!=0) s_connectionreset();//incaseofanerror:connectionresetelse{ humi_val.f=(float)humi_val.i;//convertsintegertofloattemp_val.f=(float)temp_val.i;//convertsintegertofloatcalc_sht90(&humi_val.f,&temp_val.f);//計(jì)算濕度與溫度 GotoXY(0,0);// Print("Tep:"); GotoXY(0,1); Print("Hum:"); zhuanhuan(temp_val.f);//轉(zhuǎn)換溫度為uchar方便液晶顯示 GotoXY(5,0); str[5]=0xDF;//℃的符號(hào) str[6]=0x43; str[7]='\0'; Print(str); if(temp_val.f>TEMPUP-1||temp_val.f<TEMPDOWN-1)led1=1;elseled1=0; zhuanhuan(humi_val.f);//轉(zhuǎn)換濕度為uchar方便液晶顯示 GotoXY(5,1); str[5]='%';//%的符號(hào) str[6]='\0';//字符串結(jié)束標(biāo)志 Print(str); if(humi_val.f>HUMUP-1||humi_val.f<HUMDOWN-1)led2=1;elseled2=0;} delay_n10us(80000);//延時(shí)約0.8s}}蘇州市職業(yè)大學(xué)畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì)題目基于AT89S51單片機(jī)的數(shù)字電壓表設(shè)計(jì)學(xué)院電子信息工程學(xué)院專業(yè)班級(jí)姓名學(xué)號(hào)指導(dǎo)教師摘要數(shù)字電壓表簡(jiǎn)稱DVM,它是采用數(shù)字化測(cè)量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。數(shù)字電壓表自從一九五二年問(wèn)世以來(lái),隨著電子技術(shù)的飛躍發(fā)展,特別是目前,作為測(cè)量?jī)x表、模擬指示儀表的數(shù)字化以及自動(dòng)測(cè)量的系統(tǒng),而得到了很大的發(fā)展。數(shù)字電壓表是從電位差計(jì)的自動(dòng)化這種想法研制出來(lái)的,因此即便是最初的數(shù)字電壓表,其精度也要比模擬式儀表高,而其成本比電位差計(jì)也高。以后,DVM的發(fā)展就著眼在高精度和低成本兩個(gè)方面。單片機(jī)可單獨(dú)地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機(jī)最大的特征。本電路主要采用AT89S51芯片和ADC0809芯片來(lái)完成一個(gè)簡(jiǎn)易的數(shù)字電壓表,能夠?qū)斎氲?~5V的模擬直流電壓進(jìn)行測(cè)量,并通過(guò)一個(gè)4位一體的7段LED數(shù)碼管進(jìn)行顯示。該電壓表的測(cè)量電路主要由三個(gè)模塊組成:A/D轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示控制模塊。A/D轉(zhuǎn)換主要由芯片ADC0809來(lái)完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量再傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片AT89S51來(lái)完成,其負(fù)責(zé)把ADC0809傳送來(lái)的數(shù)字量經(jīng)一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進(jìn)行顯示;另外它還控制著ADC0809芯片的工作。關(guān)鍵詞:?jiǎn)纹瑱C(jī)數(shù)字電壓表AT89S51A/D轉(zhuǎn)換ADC0809AbstractDigitalvoltagemeterDVM,Itistheuseofdigitalmeasurementtechnology,Thecontinuousanalog(DCinputvoltage)intodiscontinuous,discretedigitalformandtodisplay.Since1952sincetheadventofdigitalvoltagemeter,Withtherapiddevelopmentofelectronictechnology,Atpresent,especially,Asthedigitalmeasuringinstrument,analoggaugesandautomaticmeasurementsystem,achievedgreatdevelopment.Digitalvoltagemeterisdevelopedfromthepotentialdifferencethatautomationmeter,Thereforeeventhefirstdigitalvoltagemeter,Itsaccuracyiscomparedtotheanalogmeterhigh,thecostishigherthanpotentialdifferencemeter.ThedevelopmentofD

溫馨提示

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

評(píng)論

0/150

提交評(píng)論