找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 15846|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

基于PROTEUS的SHT11單片機溫濕度測量系統(tǒng)設(shè)計論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:161768 發(fā)表于 2017-7-30 03:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
摘要
溫度和濕度是兩個最基本的環(huán)境參數(shù),與人們的生活息息相關(guān)。在工農(nóng)業(yè)生產(chǎn)、氣象、環(huán)保、國防、科研等部門,經(jīng)常需要對環(huán)境溫度和濕度進行測量和控制。準確測量溫濕度在生物制藥、食品加工、造紙等行業(yè)更是至關(guān)重要。因此研究溫濕度的測量和控制方法具有重要的意義。
本設(shè)計實現(xiàn)的是單片機溫濕度測量和控制系統(tǒng),通過LCD顯示所測量的溫濕度。系統(tǒng)采用集溫濕度傳感器與A/D轉(zhuǎn)換器于一體的SHT11芯片,通過單片機進行處理顯示,其它模塊包括了實時時鐘/日期產(chǎn)生電路和超限報警處理電路,對測量的值進行實時顯示和報警處理。文章介紹了基于ATMEL公司的AT89C51系列單片機的溫濕度實時測量與控制系統(tǒng)和顯示系統(tǒng)的設(shè)計,包括介紹了硬件結(jié)構(gòu)原理,并分析了相應(yīng)的軟件的設(shè)計及其要點,包括軟件設(shè)計流程及其程序的實現(xiàn)。系統(tǒng)結(jié)構(gòu)簡單、實用,提高了測量精度和效率。
目  錄
摘  要
ABSTRACT
第1章 緒 論
1.1 研究的目的及意義
1.2 國內(nèi)外研究情況
1.3 系統(tǒng)內(nèi)容的設(shè)計
1.3.1 系統(tǒng)的主要性能指標
1.3.2 主要工作任務(wù)
1.4 方案論證
第2章 工具簡介
2.1 C語言
2.1.1 C語言的優(yōu)點
2.1.2 C語言的缺點
2.2 Proteus簡介
2.3 Keil C51編譯器簡介
2.3.1 8051開發(fā)工具
2.3.2              uVision2集成開發(fā)環(huán)境
第3章 硬件設(shè)計
3.1 芯片介紹
3.1.1 單片機——AT89C51
3.1.2 LCD顯示——LCD1604
3.1.3 DS1302原理及應(yīng)用
3.1.4溫濕度傳感器SHT11
3.2 模塊功能介紹
3.2.1 復(fù)位電路部分
3.2.2 DS1302時鐘電路模塊
3.2.3 SHT11傳感器模塊
3.2.4 顯示電路模塊              20
3.2.5 超限處理電路模塊
3.3 整體電路圖
第4章 軟件設(shè)計              22
4.1 程序框圖
4.1.1 主程序框圖
4.1.2 溫濕度采集及處理框圖
4.1.3 LCD顯示框圖
4.2 主函數(shù)解析
第5章 仿真與調(diào)試
結(jié)  論
致  謝
參考文獻
附錄A 系統(tǒng)源程序
附錄B 系統(tǒng)原理圖              55

第1章 緒 論
1.1 研究的目的及意義
溫度和濕度與人們的生活息息相關(guān)。在工農(nóng)業(yè)生產(chǎn)、氣象、環(huán)保、國防、科研等部門,經(jīng)常需要對環(huán)境溫度與濕度進行測量及控制。準確測量溫濕度在生物制藥、食品加工、造紙等行業(yè)都是至關(guān)重要的。傳統(tǒng)的溫度計是用水銀柱來顯示的,它的精確度不高,不易讀數(shù)。而采用單片機對溫濕度進行控制,不僅具有控制方便、簡單和靈活等優(yōu)點,而且可以大幅度提高溫濕度控制的技術(shù)指標。用LCD來顯示溫濕度的數(shù)字看起來更加直觀。
采用SHT11數(shù)字溫濕度傳感器作為檢測元件,能夠同時測試溫度和濕度。SHT11傳感器可以直接讀出被測的溫濕度值。同時單片機可以把測量出的數(shù)據(jù)通過串口傳到計算機上,來完成工業(yè)中的自動控制,給工業(yè)生產(chǎn)帶來了極大的便利。用單片機控制的溫濕度計不僅硬件電路簡單,而且測量精度比較高。用液晶顯示測量值看起來比較美觀。
無論在日常生活中還是在工業(yè)、農(nóng)業(yè)方面都離不開對周圍環(huán)境進行溫濕度的測量。因此,研究溫濕度的測量具有非常重要的意義。

1.2 國內(nèi)外研究情況
測量溫濕度的關(guān)鍵是溫濕度傳感器。過去測量溫度與濕度是分開的。隨著技術(shù)的進步和人們生活的需要出現(xiàn)了溫濕度共測的傳感器。溫度傳感器的發(fā)展經(jīng)歷了3個階段:傳統(tǒng)的分立式溫度傳感器、模擬集成溫度傳感器、智能集成溫度傳感器。目前,國際上新型溫度傳感器正從模擬式向數(shù)字式、從集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。溫度傳感器也是經(jīng)歷了這樣一個階段逐漸走向數(shù)字智能化。
現(xiàn)今國內(nèi)外用的最多的溫濕度傳感器是SHTXX系列。SHT11溫濕度傳感器應(yīng)用于專利的工業(yè)COMS過程微加工技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電容式聚合體測濕元件和一個能隙式測溫元件,并與一個14位的A/D轉(zhuǎn)換器以及串行接口電路在同一芯片上實現(xiàn)無縫鏈接,從而具有超快響應(yīng),抗干擾能力強,性價比極高等優(yōu)點。
采用SHT11數(shù)字溫濕度傳感器與單片機AT89C51相連比較容易,而且電路比較簡單,軟件設(shè)計也比較簡單。所以,本設(shè)計以SHT11數(shù)字溫濕度傳感器為例,介紹基于SHT11數(shù)字溫濕度傳感器的設(shè)計,該設(shè)計適用于人們的日常生活及工農(nóng)業(yè)生產(chǎn)中用于溫濕度的測量。


1.3 系統(tǒng)內(nèi)容的設(shè)計
1.3.1 系統(tǒng)的主要性能指標
根據(jù)生活和一般工業(yè)環(huán)境,設(shè)計本產(chǎn)品的主要技術(shù)指標為:
·測溫范圍:20—+80℃;濕度測量范圍為30—90%Rh
·溫度測量精度:±0.5oC
·濕度測量誤差:≤4%Rh                           
·可設(shè)置上、下限報警值,當濕度溫度超限時,發(fā)出報警信號
·電源工作范圍:DC4.5~5.5V
1.3.2 主要工作任務(wù)
根據(jù)本畢業(yè)設(shè)計實際的任務(wù)要求,選擇合適的溫濕度傳感器,完成溫濕度的測量,并設(shè)計顯示電路模塊、時鐘電路模塊、超限處理模塊、復(fù)位電路模塊的程序。系統(tǒng)開始工作后,根據(jù)初始條件讀取濕度值和溫度值,測量數(shù)據(jù)經(jīng)處理后,將其與設(shè)定的溫濕度值比較,如果發(fā)現(xiàn)當前的溫濕度超限,則發(fā)出報警信號,未超限時,系統(tǒng)顯示正常的濕溫度度值。

1.4 方案論證
方案一:采用單總線的DS18B20的溫度傳感器和HS110X相對濕度傳感器組成測量和控制系統(tǒng)。
方案二:采用集溫濕度傳感器和A/D轉(zhuǎn)換器于一體的SHT11芯片構(gòu)成溫濕度的測量和控制系統(tǒng)。
由于傳統(tǒng)的模擬式溫濕度傳感器一般不僅要設(shè)計信號調(diào)理電路,還要進行復(fù)雜的校準和標定過程,其測量精度難以保證,并且使用分立的溫度傳感器和濕度傳感器測量電路比較麻煩。而SHT11是具有二線串行接口的單片全校準數(shù)字式新型相對濕度和溫度傳感器,集溫濕度傳感器和A/D轉(zhuǎn)換器于一體,可用來測量相對濕度、溫度和露點等參數(shù),具有數(shù)字式輸出、免調(diào)試、免標定、免外圍電路及全互換的特點,使用起來比較方便,且電路簡單。該傳感器將CMOS芯片技術(shù)與傳感器技術(shù)融合,為開發(fā)高集成度、高精度、高可靠性的溫濕度測控系統(tǒng)提供了解決方案。因此本設(shè)計采用方案二。
本設(shè)計核心部件為AT89C51,信號采集及處理部分由SHT11構(gòu)成,進入單片機經(jīng)處理后通過LCD1604顯示溫濕度,信號顯示采用的液晶屏為5×7點陣,一行可顯示16字,四行。其他組成部分為實時時鐘發(fā)生電路,產(chǎn)生與現(xiàn)在相同的時間和具體日期,通過LCD1604液晶模塊顯示。
在軟件設(shè)計部分有對測量的溫濕度進行上下值的設(shè)定,當測量超過限定值時,通過超限報警處理電路對其進行處理,分別顯示不同的二極管燈亮,蜂鳴器產(chǎn)生長鳴。
硬件中包括一個開關(guān),為復(fù)位開關(guān)。開機后,所有器件初始化,DS1302產(chǎn)生實時時間和日期,溫濕度傳感器SHT11開始進行溫濕度測量和計算,最后通過兩個LCD液晶顯示器顯示結(jié)果。在測量結(jié)果中有超過設(shè)定的溫濕度上下限的,通過超限模塊做出反應(yīng)。
電路主要包括了AT89C51控制模塊、SHT11溫濕度測量模塊、DS1302時間模塊、LCD顯示模塊、超限處理模塊。其他是一些附件,比如復(fù)位、晶振電路。

   

圖1.1 整體電路框圖

第2章 工具簡介
系統(tǒng)單片機代碼采用C語言編寫,并用Keil軟件檢查程序有無錯誤,在Proteus仿真軟件上進行仿真。
2.1 C語言
2.1.1 C語言的優(yōu)點
C語言的運算符豐富,它包括的范圍相當廣泛,使得C語言的運算類型極其豐富,并且表達方式的類型多樣化,能夠?qū)崿F(xiàn)在高級語言中不能實現(xiàn)的運算,它有32個關(guān)鍵字,9種控制語句。和匯編語言一樣,它能夠?qū)ξ�,字�?jié)和地址進行操作;數(shù)據(jù)類型很豐富,能實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型,同時還加入了指針的概念,使得效率更高,同時支持圖形編輯,以及多種顯示器等;它所應(yīng)用的結(jié)構(gòu)式語言,這種方式會讓程序有層次,一目了然,同時語法顯示不嚴格,設(shè)計自由度高;C語言提供給用戶的方式是一函數(shù)的形式,它們可以方便調(diào)用,使得程序完全結(jié)構(gòu)化;地址的訪問上,能夠訪問物理地址,對硬件進行直接操作;適用范圍廣,能夠適用于多種操作,例如:DOS、UNIX等,同時適用于多種機型。
2.1.2 C語言的缺點
它的缺點主要是數(shù)據(jù)封裝的安全性不高,因此這一點也成為了C語言和C++的最大的區(qū)別,另一方面由于語法以及變量的類型沒有嚴格限制,也造成了較低的安全性,再者從應(yīng)用角度來說,它比較其他的高級語言來說較為難以掌握。

2.2 Proteus簡介
Proteus軟件是來自英國Labcenter electronics公司的EDA工具軟件,Proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它EDA工具一樣的原理布圖、PCB自動或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動的,針對微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實現(xiàn)軟件源碼級的實時調(diào)試,如有顯示及輸出,還能看到運行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等。
Proteus組合了高級原理布圖、混合模式SPICE仿真,PCB設(shè)計以及自動布線來實現(xiàn)一個完整的電子設(shè)計系統(tǒng)。此系統(tǒng)受益于15年來的持續(xù)開發(fā),被《電子世界》在其對PCB設(shè)計系統(tǒng)的比較文章中評為最好產(chǎn)品—“The Route to PCB CAD”。Proteus 產(chǎn)品系列也包含了革命性的VSM技術(shù),用戶可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真。用戶甚至可以實時采用諸如LED/LCD、鍵盤、
RS232終端等動態(tài)外設(shè)模型來對設(shè)計進行交互仿真。
其功能模塊:一個易用而又功能強大的ISIS原理布圖工具;PROSPICE混合模型SPICE仿真; ARES PCB設(shè)計。
PROSPICE 仿真器的一個擴展PROTEUS VSM:便于包括所有相關(guān)的器件的基于微處理器設(shè)計的協(xié)同仿真。此外,還可以結(jié)合微控制器軟件使用動態(tài)的鍵盤,開
關(guān),按鈕,LEDs甚至LCD顯示CPU模型。
· 支持許多通用的微控制器,如PIC,AVR,HC11以及8051. 最新支持ARM
· 交互的裝置模型包括:LED和LCD顯示,RS232終端,通用鍵盤,I2C,SPI器件
· 強大的調(diào)試工具,包括寄存器和存儲器,斷點和單步模式
· IAR C-SPY 和Keil uVision2等開發(fā)工具的源層調(diào)試
· 應(yīng)用特殊模型的DLL界面-提供有關(guān)元件庫的全部文件
最新版支持非常豐富仿真元件共7000多種,還有很多第三方模型。如MMC卡,以太網(wǎng)卡,ATA硬盤,麥克風,等等。
2.3 Keil C51編譯器簡介
2.3.1 8051開發(fā)工具
KEIL C51標準C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強,使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含:編譯器,匯編器,實時操作系統(tǒng),項目管理器,調(diào)試器。uVision2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。
  • uVision2集成開發(fā)環(huán)境
① 項目管理
工程(project)是由源文件、開發(fā)工具選項以及編程說明三部分組成的。一個單一的uVision2工程能夠產(chǎn)生一個或多個目標程序。產(chǎn)生目標程序的源文件構(gòu)成“組”。開發(fā)工具選項可以對應(yīng)目標,組或單個文件。
uVision2包含一個器件數(shù)據(jù)庫(device database),可以自動設(shè)置匯編器、編譯器、連接定位器及調(diào)試器選項,來滿足用戶充分利用特定微控制器的要求。此數(shù)據(jù)庫包含:片上存儲器和外圍設(shè)備的信息,擴展數(shù)據(jù)指針(extra data pointer)或者加速器(math accelerator)的特性。
uVision2可以為片外存儲器產(chǎn)生必要的連接選項:確定起始地址和規(guī)模。
② 編輯器和調(diào)試器
uVision2編輯器包含了所有用戶熟悉的特性。彩色語法顯像和文件辯識都對C源代碼進行和優(yōu)化�?梢栽诰庉嬈鲀�(nèi)調(diào)試程序,它能提供一種自然的調(diào)試環(huán)境,使得可以更快速地檢查和修改程序。
③ C51編譯器
KEIL C51編譯器在遵循ANSI標準的同時,為8051微控制器系列特別設(shè)計。語言上的擴展能讓用戶使用應(yīng)用中的所有資源。
  • 存儲器和特殊功能寄存器的存取
C51編譯器可以實現(xiàn)對8051系列所有資源的操作。SFR的存取由sfr和sbit兩個關(guān)鍵字來提供。變量可旋轉(zhuǎn)到任一個地址空間。用關(guān)鍵字-at-還能把變量放入固定的存儲器存儲模式(大,中,�。Q定了變量的存儲類型。連接定位器支持的代碼區(qū)可達32個,這就允許用戶在原有64K ROM的8015基礎(chǔ)上擴展程序。在V2的編譯器和許多高性能仿真器中,可以支持應(yīng)用程序的調(diào)試。
2)中斷功能
C51允許用戶使用C語言編寫中斷服務(wù)程序,快速進、出代碼和寄存器區(qū)的轉(zhuǎn)換功能使C語言中斷功能更加高效。可再入功能是用關(guān)鍵字來定義的。多任務(wù),中斷或非中斷的代碼要求必須具備可再入功能。
3)靈活的指針
C51提供了靈活高效的指針。
通用指針用3個字節(jié)來存儲存儲器類型及目標地址,可以在8051的任意存儲區(qū)內(nèi)存取任何變量。
特殊指針在聲明的同時已指定了存儲器類型,指向某一特定的存儲區(qū)域。由
于地址的存儲只需1-2字節(jié),因此,指針存取非常迅速。
第3章 硬件設(shè)計
3.1 芯片介紹
3.1.1 單片機——AT89C51
AT89C51是一種帶4k字節(jié)可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。89C2051是一種帶2K字節(jié)可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡版本。89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
① 主要特性:
·與MCS-51 兼容
·4K字節(jié)可編程閃爍存儲器
·壽命:1000寫/擦循環(huán)
·數(shù)據(jù)保留時間:10年
·全靜態(tài)工作:0Hz-24Hz
·三級程序存儲器鎖定
·128*8位內(nèi)部RAM
·32可編程I/O線
·兩個16位定時器/計數(shù)器
·5個中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時鐘電路

② 管腳說明:
VCC:供電電壓
GND:接地
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時,P0 口作為原碼輸入口,當FLASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接
收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH
編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作
為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,
當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示:
表3.1.1 P3口管腳備選功能
P3.0 RXD
串行輸入口
P3.4 T0
計時器0外部輸入
P3.1 TXD
串行輸出口
P3.5 T1
計時器1外部輸入
P3.2 /INT0
外部中斷0
P3.6 /WR
外部數(shù)據(jù)存儲器寫選通
P3.3 /INT1
外部中斷1
P3.7 /RD
外部數(shù)據(jù)存儲器讀選通
P3口同時為閃爍編程和編程校驗接收一些控制信號。
RST:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。
ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的
低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不
變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外
部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,
將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE
只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果
微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信
號將不出現(xiàn)。
/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),
不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當
/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于
施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
③ 振蕩器特性:
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2
應(yīng)不接。輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的
脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
④ 芯片擦除:
整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器、串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。
⑤ 結(jié)構(gòu)特點:
· 8位CPU;
· 片內(nèi)振蕩器和時鐘電路;
· 32根I/O線;
· 布爾處理器;
· 外部存貯器尋址范圍ROM、RAM64K;
· 2個16位的定時器/計數(shù)器;
· 5個中斷源,兩個中斷優(yōu)先級;
· 全雙工串行口;
3.1.2 LCD顯示——LCD1604
① LCD1604原理
1604采用標準的16腳接口,其中:
1腳:VSS為地電源
2腳:VDD接5V正電源
3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。
6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令
7~14腳:D0~D7為8位雙向數(shù)據(jù)線
15~16腳:空腳
1604液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.1.2所示,

表3.1.2 1604液晶指令表
指   令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清顯示
0
0
0
0
0
0
0
0
0
1
光標返回
0
0
0
0
0
0
0
0
1
*
置輸入模式
0
0
0
0
0
0
0
1
I/D
S
顯示開/關(guān)控制
0
0
0
0
0
0
1
D
C
B
光標或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
置功能
0
0
0
0
1
DL
N
F
*
*
置字符發(fā)生存儲器地址
0
0
0
1
字符發(fā)生存儲器地址(AGG)
置數(shù)據(jù)存儲器地址
0
0
1
顯示數(shù)據(jù)存儲器地址(ADD)
讀忙標志或地址
0
1
BF
計數(shù)器地址(AC)
寫數(shù)到CGRAM或DDRAM
1
0
要寫的數(shù)
從CGRAM或DDRAM讀數(shù)
1
1
讀出的數(shù)據(jù)
它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H,光標復(fù)位到地址00H位置
指令2:光標復(fù)位,光標返回到地址00H
指令3:光標和顯示模式設(shè)置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效
指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光
標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍
指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標
指令6:功能設(shè)置命令 DL:低電平時為4位總線,高電平時為8位總線 N:
低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符
指令7:字符發(fā)生器RAM地址設(shè)置
指令8:DDRAM地址設(shè)置
指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊
不能接收命令或者數(shù)據(jù),如果為低電平表示不忙
指令10:寫數(shù)據(jù)
指令11:讀數(shù)據(jù)
② LCD1604初始化
延時15mS寫指令38H(不檢測忙信號)、延時5mS寫指令38H(不檢測忙信號)、延時5mS寫指令38H(不檢測忙信號);以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號。
寫指令38H:顯示模式設(shè)置
寫指令08H:顯示關(guān)閉
寫指令01H:顯示清屏
寫指令06H:顯示光標移動設(shè)置
寫指令0CH:顯示開及光標設(shè)置
3.1.3 DS1302原理及應(yīng)用
DS1302是DALLAS公司推出的涓流充電時鐘芯片,內(nèi)含有一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM,通過簡單的串行接口與單片機進行通信。實時時鐘/日歷電路提供秒分時日、日期月年的信息。每月的天數(shù)和閏年的天數(shù)可自動調(diào)整,時鐘操作可通過AM/PM指示決定采用24或12小時格式。DS1302與單片機之間能簡單地采用同步串行的方式進行通信僅需用到三個口線:RES復(fù)位、I/O數(shù)據(jù)線、 SCLK串行時鐘。時鐘/RAM的讀/寫數(shù)據(jù)以一個字節(jié)或多達31個字節(jié)的字符組方式通信,DS1302工作時功耗很低,保持數(shù)據(jù)和時鐘信息時功率小于1mW。
DS1302是由DS1202改進而來,增加了以下的特性:雙電源管腳用于主電源和備份電源供應(yīng);Vcc1為可編程涓流充電電源;附加七個字節(jié)存儲器;它廣泛應(yīng)用于電話傳真便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。下面將主要的性能指標作一綜合:
· 實時時鐘具有能計算2100年之前的秒分時日日期星期月年的能力還有閏年調(diào)整的能力
·31×8位暫存數(shù)據(jù)存儲RAM
·串行I/O口方式使得管腳數(shù)量最少
·寬范圍工作電壓2.0-5.5V
·工作電流2.0V時,小于300nA
·讀/寫時鐘或RAM數(shù)據(jù)時有兩種傳送方式單字節(jié)傳送和多字節(jié)傳送字符組方式
·8腳DIP封裝或可選的8腳SOIC封裝根據(jù)表面裝配
·簡單3線接口
·與TTL兼容(Vcc=5V)
·可選工業(yè)級溫度范圍-40~+85
·與DS1202兼容
·在DS1202基礎(chǔ)上增加的特性
--對Vcc1有可選的涓流充電能力
--雙電源管用于主電源和備份電源供應(yīng)
--備份電源管腳可由電池或大容量電容輸入
--附加的7 字節(jié)暫存存儲器
① DS1302的基本組成和工作原理
DS1302的管腳排列(圖3.1.1)及描述如下:
1)管腳描述:
X1、X2:32.768KHz晶振管腳
GND:地
RST:復(fù)位腳
I/O:數(shù)據(jù)輸入/輸出引腳
SCLK:串行時鐘
Vcc1、Vcc2:電源供電管腳

圖3.1.1 DS1302引腳圖

2) DS1302內(nèi)部寄存器
CH: 時鐘停止位           寄存器2 的第7 位12/24 小時標志
CH=0 振蕩器工作允許      bit7=1,12 小時模式
CH=1 振蕩器停止          bit7=0,24 小時模式
WP: 寫保護位             寄存器2 的第5 位:AM/PM 定義
WP=0 寄存器數(shù)據(jù)能夠?qū)懭?nbsp; AP=1 下午模式
WP=1 寄存器數(shù)據(jù)不能寫入  AP=0 上午模式
TCS: 涓流充電選擇        DS: 二極管選擇位
TCS=1010 使能涓流充電    DS=01 選擇一個二極管
TCS=其它 禁止涓流充電    DS=10 選擇兩個二極管
DS=00 或11, 即使TCS=1010, 充電功能也被禁止
② DS1302與微控制器的接口軟件及功能應(yīng)用舉例
下面首先給出基本的接口軟件然后舉例說明各種功能的應(yīng)用
1) 寫保護寄存器操作
當寫保護寄存器的最高位為0時,允許數(shù)據(jù)寫入寄存器寫保護,寄存器可以
通過命令字節(jié)8E、8F來規(guī)定禁止寫入/讀出寫保護位不能在多字節(jié)傳送模式下寫
入。
Write_Enable:
MOV Command,#8Eh;命令字節(jié)為8E
MOV ByteCnt,#1;單字節(jié)傳送模式
MOV R0,#XmtDat;數(shù)據(jù)地址覆給R0
MOV XmtDat,#00h;數(shù)據(jù)內(nèi)容為0 寫入允許
ACALL Send_Byte;調(diào)用寫入數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
當寫保護寄存器的最高位為1時禁止數(shù)據(jù)寫入寄存器
Write_Disable:
MOV Command,#8Eh;命令字節(jié)為8E
MOV ByteCnt,#1;單字節(jié)傳送模式
MOV R0,#XmtDat;數(shù)據(jù)地址覆給R0
MOV XmtDat,#80h;數(shù)據(jù)內(nèi)容為80h 禁止寫入
ACALL Send_Byte;調(diào)用寫入數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
2) 時鐘停止位操作
當把秒寄存器的第7位時鐘停止位設(shè)置為0時起動時鐘開始。
Osc_Enable:
MOV Command,#80h;命令字節(jié)為80
MOV ByteCnt,#1;單字節(jié)傳送模式
MOV R0,#XmtDat;數(shù)據(jù)地址覆給R0
MOV XmtDat,#00h;數(shù)據(jù)內(nèi)容為0 振蕩器工作允許
ACALL Send_Byte;調(diào)用寫入數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
當把秒寄存器的第7位時鐘停止位設(shè)置為1時,時鐘振蕩器停止HT1380進入低功耗方式。
Osc_Disable:
MOV Command,#80h;命令字節(jié)為80
MOV ByteCnt,#1;單字節(jié)傳送模式
MOV R0,#XmtDat;數(shù)據(jù)地址覆給R0
MOV XmtDat,#80h;數(shù)據(jù)內(nèi)容為80h 振蕩器停止
ACALL Send_Byte;調(diào)用寫入數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
3) 多字節(jié)傳送方式
當命令字節(jié)為BE或BF時,DS1302工作在多字節(jié)傳送模式,8個時鐘/日歷寄存器從寄存器0地址開始連續(xù)讀寫從0位開始的數(shù)據(jù)。當命令字節(jié)為FE或FF時,DS1302工作在多字節(jié)RAM傳送模式,31個RAM寄存器從0地址開始連續(xù)讀寫從0位開始的數(shù)據(jù)。例如寫入00年6月21日星期三13時59分59秒程序,設(shè)置如下:
Write_Multiplebyte:
MOV Command,#0Beh;命令字節(jié)為BEh
MOV ByteCnt,#8;多字節(jié)寫入模式此模塊為8 個
MOV R0,#XmtDat;數(shù)據(jù)地址覆給R0
MOV XmtDat,#59h;秒單元內(nèi)容為59h
MOV XmtDat+1,#59h;分單元內(nèi)容為59h
MOV XmtDat+2,#13h;時單元內(nèi)容為13h
MOV XmtDat+3,#21h;日期單元內(nèi)容為21h
MOV XmtDat+4,#06h;月單元內(nèi)容為06h
MOV XmtDat+5,#03h;星期單元內(nèi)容為03h
MOV XmtDat+6,#0;年單元內(nèi)容為00h
MOV XmtDat+7,#0;寫保護單元內(nèi)容為00h
ACALL Send_Byte;調(diào)用寫入數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
讀出寄存器0-7的內(nèi)容程序設(shè)置如下:
Read_Multiplebyte;
MOV Command,#0BFh;命令字節(jié)為BFh
MOV ByteCnt,#8;多字節(jié)讀出模式此模塊為8 個
MOV R1,#RcvDat;數(shù)據(jù)地址覆給R1
ACALL Receive_Byte;調(diào)用讀出數(shù)據(jù)子程序
RET返回調(diào)用本子程序處
以上程序調(diào)用了基本數(shù)據(jù)接收(Receive_Byte)模塊及一些內(nèi)存單元定義,
其源程序清單在附錄中給出下面的程序亦使用了這個模塊。
4) 單字節(jié)傳送方式
    例如寫入8時12小時模式程序設(shè)置如下:
Write_Singlebyte:
MOV Command,#84h;命令字節(jié)為84h
MOV ByteCnt,#1;單字節(jié)傳送模式
MOV R0,#XmtDat;數(shù)據(jù)地址覆給R0
MOV XmtDat,#88h;數(shù)據(jù)內(nèi)容為88h
ACALL Send_Byte;調(diào)用寫入數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
    上面所列出的程序模塊Write_Enable、 Write_Disable 、Osc_Enable 、
Osc_Disable與單字節(jié)寫入模塊Write_Singlebyte的程序架構(gòu)完全相同,僅只是幾個入口參數(shù)不同。此介紹是為了強調(diào)功能使用的不同才將其分為不同模塊,另外,與涓流充電相關(guān)的設(shè)定也是單字節(jié)操作方式,這里就不再單獨列出,用戶在使用中可靈活簡略。下面模塊舉例說明如何單字節(jié)讀出小時單元的內(nèi)容:
    Read_Singlebyte:                  
MOV Command,#85h; 命令字節(jié)為85h
MOV ByteCnt,#1;單字節(jié)傳送模式
MOV R1,#RcvDat;數(shù)據(jù)地址覆給R1
ACALL Receive_Byte;調(diào)用讀出數(shù)據(jù)子程序
RET 返回調(diào)用本子程序處
3.1.4溫濕度傳感器SHT11
① SHT11簡介
SHT11 是瑞士Scnsirion 公司推出的一款數(shù)字溫濕度傳感器芯片。它集溫度傳感器和濕度傳感器于一體,因此采用SHT11 進行溫濕度實時監(jiān)測的系統(tǒng)具有精度高、成本低、體積小、接口簡單等優(yōu)點;另外SHT11 芯片內(nèi)部集成了14位A/D 轉(zhuǎn)換器,且采用數(shù)字信號輸出,因此抗干擾能力也比同類芯片高。該芯片在溫濕度監(jiān)測、自動控制等領(lǐng)域均已得到廣泛應(yīng)用。其主要特點如下:
·高度集成,將溫度感測、濕度感測、信號變換、A/D 轉(zhuǎn)換和加熱器等功能集成到一個芯片上;
·提供二線數(shù)字串行接口SCK和DATA,接口簡單,支持CRC 傳輸校驗,傳輸可靠性高;
·測量精度可編程調(diào)節(jié),內(nèi)置A/D 轉(zhuǎn)換器(分辨率為8~12位,可以通過對芯片內(nèi)部寄存器編程選擇);
·測量精確度高,由于同時集成溫濕度傳感器,可以提供溫度補償?shù)臐穸葴y量值和高質(zhì)量的露點計算功能;
·封裝尺寸超小(7.62 mm×5.08mm×2.5 mm),測量和通信結(jié)束后,自動轉(zhuǎn)入低功耗模式;
·高可靠性,采用CMOSens工藝,測量時可將感測頭完全浸于水中。
② SHT11引腳功能
SHT11溫濕度傳感器采用SMD(LCC)表面貼片封裝形式,接口非常簡單,引腳
名稱及排列順序如圖3.1.2所示。

圖3.1.2 SHT11引腳圖

各引腳的功能如下:
·腳1和4--信號地和電源,其工作電壓范圍是2.4~5.5 V;
·腳2和腳3--二線串行數(shù)字接口,其中DA-TA為數(shù)據(jù)線,SCK為時鐘線;
·腳5~8--未連接。
③ SHT11的內(nèi)部結(jié)構(gòu)和工作原理
溫濕度傳感器SHT11將溫度感測、濕度感測、信號變換、A/D轉(zhuǎn)換和加熱器等功能集成到一個芯片上,其內(nèi)部結(jié)構(gòu)如圖3.1.3所示。該芯片包括一個電容性聚合體濕度敏感元件和一個用能隙材料制成的溫度敏感元件。這兩個敏感元件分別將濕度和溫度轉(zhuǎn)換成電信號,該電信號首先進入微弱信號放大器進行放大;然后進入一個14位的A/D 轉(zhuǎn)換器;最后經(jīng)過二線串行數(shù)字接口輸出數(shù)字信號。SHT11在出廠前,都會在恒濕或恒溫環(huán)境巾進行校準,校準系數(shù)存儲在校準寄存器中;在測量過程中,校準系數(shù)會自動校準來自傳感器的信號。此外,SHT11內(nèi)部還集成了一個加熱元件,加熱元件接通后可以將SHT11 的溫度升高5℃左右,同時功耗也會有所增加。此功能主要為了比較加熱前后的溫度和濕度值,可以綜合驗證兩個傳感器元件的性能。在高濕(>95%RH)環(huán)境中,加熱傳感器可預(yù)防傳感器結(jié)露,同時縮短響應(yīng)時間,提高精度。加熱后SHT11溫度升高、相對濕度降低,較加熱前,測量值會略有差異。            

              圖3.1.3 SHT內(nèi)部結(jié)構(gòu)

微處理器是通過二線串行數(shù)字接口與SHT11進行通信的。微處理器對SHT11的控制是通過5個5位命令代碼來實現(xiàn)的,命令代碼的含義如表3.1.3所列。
表3.1.3 SHT11控制命令代碼
命令代碼
含     義
00011
測量溫度
00101
測量濕度
00111
讀內(nèi)部狀態(tài)寄存器
00110
寫內(nèi)部狀態(tài)寄存器
11110
復(fù)位命令,使內(nèi)部寄存器恢復(fù)默認值。下一次命令前至少等待11ms
其他
保留

④ SHT11傳輸特性
1)濕度值輸出
SHT11可通過DATA數(shù)據(jù)總線直接輸出數(shù)字量濕度值。該濕度值稱為“相對濕度”,需要進行線性補償和溫度補償后才能得到較為準確的濕度值。由于相對濕度數(shù)字輸出特性呈一定的非線性,因此為了補償濕度傳感器的非線性,可按下式修正濕度值:= ××
式中:為經(jīng)過線性補償后的濕度值,為相對濕度測量值,C1、C2、C3 為線性補償系數(shù),取值如表3.1.4所列。
由于溫度對濕度的影響十分明顯,而實際溫度和測試參考溫度25℃有所不同,所以對線性補償后的濕度值進行溫度補償很有必要。補償公式如下:
= (T-25)×(×)+
式中:為經(jīng)過線性補償和溫度補償后的濕度值,為測試濕度值時的溫度(℃),為溫度補償系數(shù),取值如表3.1.5所列。
表3.1.4 濕度線性補償系數(shù)                    表3.1.5 濕度值溫度補償系數(shù)                           

C1
C2
C3
12位
-4
0.0405
-2.8×
8位
-4
0.648
-7.2×
2)溫度值輸出
12位
0.01
0.00008
8位
0.01
0.00128

由于SHT11是采用PTAT能隙材料制成的溫度敏感元件,因而具有很好的線性輸出。實際溫度值可由下式算得:     Temperature=d1+d2×SOT
式中:d1和d2為特定系數(shù),d1取值與SHT11工作電壓有關(guān),d2的取值則與SHT11內(nèi)部A/D轉(zhuǎn)換器采用的分辨率有關(guān),其對應(yīng)關(guān)系分別如表3.1.6和表3.1.7。
表3.1.6 d1與工作電壓的對應(yīng)關(guān)系            

5
-40.00
-40.00
4
-39.75
-39.50
3.5
-39.65
-39.35
3
-39.60
-39.28
2.5
-39.55
-39.23
表3.1.7 d2與分辨率的對應(yīng)關(guān)系
S0
14位
0.01
0.018
12位
0.04
0.072
3)露點計算
露點是一個特殊的溫度值,是空氣保持某一定濕度必須達到的最低溫度。當空氣的溫度低于露點時,空氣容納不了過多的水分,這些水分會變成霧、露水或霜。露點可以根據(jù)當前相對濕度值和溫度值計算得出,具體的計算公式如下:
LogEW=0.66077+7.5×T/(237.3+T)+log10()-2
Dp=((0.66077-logEW)×237.3)/(logEW-8.16077)
式中:T為當前溫度值,SORH為相對濕度值,Dp為露點。
3.2 模塊功能介紹
3.2.1 復(fù)位電路部分
這種復(fù)位電路的工作原理是:單片機的復(fù)位電路在剛接通電時,剛開始電容是沒有電的,電容內(nèi)的電阻很低,通電后,5V的電通過電阻給電容進行充電,電容兩端的電會由0V慢慢的升到4V左右(此時間很短一般小于0.3秒),RC構(gòu)成的微分電路在上電瞬間產(chǎn)生一個微分脈沖,其寬度大于兩個機器周期,89C51將復(fù)位。正因為這樣,復(fù)位腳的電由低電位升到高電位,引起了內(nèi)部電路的復(fù)位工作,RST端電壓慢慢下降,降到一定電壓值以后,即為低電平,單片機開始正常工作(這是單片機的上電復(fù)位,也叫初始化復(fù)位);當按下復(fù)位鍵時,電容兩
端放電,電容又回到0V了,于是又進行了一次復(fù)位工作(這是手動復(fù)位原理)。

圖3.2.1 手動復(fù)位及晶振電路
3.2.2 DS1302時鐘電路模塊
此模塊是系統(tǒng)時間的實時顯示而設(shè)計的,主要由芯片DS1302構(gòu)成,其中引腳RST、CLK、I/O分別接單片機P3.0、P3.1、P3.2口,屬于控制引腳。此模塊是產(chǎn)生實時的系統(tǒng)時間和日歷,能對某個確定環(huán)境的實時溫濕度控制起到一定的作用。芯片連接電路簡單,時間日期準確。

圖3.2.2 DS1302時鐘電路模塊
3.2.3 SHT11傳感器模塊
此模塊是整個電路設(shè)計的信號采集及初步處理的模塊,由溫濕度傳感器芯片SHT11構(gòu)成,主要的功能結(jié)構(gòu)在前面的芯片介紹中已有,這里不重新介紹。

圖3.2.3 SHT11傳感器模塊
3.2.4 顯示電路模塊
此模塊分為兩個顯示部分,一個部分是由LCD1604芯片組成的日期時間和實時溫濕度顯示的電路部分,另一部分是由LCD128×64液晶顯示模塊組成的電路部分。LCD1604是一個四行每行16字的液晶顯示屏,D0-D7接P0口,RS、RW、E 接P3.5、P3.6、P3.7起控制作用。LCD128×64組成部分是用來顯示“溫度和濕度的控制與測量”的,其作用是讓人了解此實驗的目的,作用不明顯,這里不做
重點介紹。

圖3.2.4 LCD1604(左)和LCD128×64(右)顯示及其連接電路

3.2.5 超限處理電路模塊
此部分電路是由5個發(fā)光二極管和一個蜂鳴報警器構(gòu)成,分別是D1、D2、D3、D4和D5,蜂鳴器接單片機的P1.0口,發(fā)光二極管與單片機的連接部分如圖3.2.5所示。D1、D2、D3、D4、D5分別代表著發(fā)光、降溫、加熱、干燥和加濕,一旦傳感器測定的溫濕度超過設(shè)定的限額,就會產(chǎn)生不同的發(fā)光反應(yīng),起警示作用,同時蜂鳴報警器連續(xù)發(fā)出“滴” 的聲音。

圖3.2.5 超限處理電路模塊

3.3 整體電路圖

圖3.3.1 整體電路圖

第4章 軟件設(shè)計
編程軟件采用的是Keil uvision3軟件,程序采用C語言編程。軟件部分在Keil上運行后,能正確顯示結(jié)果。具體模塊由一個C主函數(shù)文件和9個H文件構(gòu)成。
H文件如下所示:

reg51.h;(8051的相關(guān)參數(shù)初始化)
absacc.h;
intrins.h;(偽本征函數(shù))
math.h;(數(shù)學公式函數(shù))
12864.h;(128×64液晶顯示函數(shù))LCD1604.h;(1604液晶顯示函數(shù))
DS1302.h;(實時時間/日期產(chǎn)生函數(shù))
SHT11.h;(溫濕度采集計算函數(shù))
set_key.h;(限額報警函數(shù))


4.1 程序框圖
4.1.1 主程序框圖:

圖4.1.1 主程序框圖
4.1.2 溫濕度采集及處理框圖:

圖4.1.2 溫濕度采集及處理框圖

4.1.3 LCD顯示框圖:

圖4.1.3 LCD顯示框圖


4.2 主函數(shù)解析
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#include<math.h>
#include<12864.h>
#include<LCD1604.h>
#include<DS1302.h>
#include<SHT11.h>
#include<set_key.h>
void Delay1ms(unsigned int count)    //延時函數(shù)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
main()
{
SYSTEMTIME CurrentTime;  //定義時間日期結(jié)構(gòu)體
SHT_dat aa;         //定義溫濕度測量處理結(jié)構(gòu)體
Init_12864();     //12864的顯示*/
Initial_DS1302();   //DS1302初始化*/
LCD_Initial();     //LCD初始化
GotoXY(0,0);          //LCD顯示函數(shù)
Print("Date:");
GotoXY(16,0);
Print("Temper:");
GotoXY(0,1);
Print("Time:");
GotoXY(16,1);
Print("Humidi:");

while(1)
{
convert_SHT(&aa,TEMP);     //溫度轉(zhuǎn)換
  convert_SHT(&aa,HUMI);     //濕度轉(zhuǎn)換
  caculation_SHT(&aa);       //溫度和濕度的補償
  float_convert(&aa);        //將浮點數(shù)轉(zhuǎn)換成整型,各個位的數(shù)分別保存
  doing_temp(&aa);     //檢測溫度是否超限
  doing_humi(&aa);     //檢測濕度是否超限
  DS1302_GetTime(&CurrentTime);
  DateToStr(&CurrentTime);
  TimeToStr(&CurrentTime);
  GotoXY(5,0);      //第一行顯示日期
  Print(CurrentTime.DateString);
  GotoXY(23,0);      //第三行顯示溫度
  Print(aa.num_temp);
  GotoXY(28,0);
  Print("    ");
  GotoXY(5,1);      //第二行顯示時間
  Print(CurrentTime.TimeString);
  GotoXY(23,1);       //第四行顯示濕度
  Print(aa.num_humi);
GotoXY(28,1);
  Print("    ");
  Delay1ms(300);     //延時
  }
}


第5章 仿真與調(diào)試
整個軟件通過C語言編程,先在Keil C51集成開發(fā)環(huán)境下將編好的程序進行
編譯、調(diào)試,調(diào)試通過后會生成.HEX文件。具體過程如下:
新建一個項目文件,然后新建一個C語言程序,并把新建的C語言程序加
到項目中,然后編譯項目。
建立第一個C項目:
① 點擊 Project 菜單,選擇彈出的下拉式菜單中的 New Project,如圖。

圖5.1 新建項目文件
② 選擇所要的單片機,本設(shè)計選擇常用的 Ateml 公司的 AT89C51。
③ 在項目中創(chuàng)建新的程序文件。執(zhí)行File->New新建一個文件,然后在文件中進行程序的編寫。
④ 執(zhí)行File-->Save將編寫的程序進行保存。將第一個程序命名為main.c,將文件保存在項目所在的目錄中。選“Add File to Group ‘Source Group 1’”彈出文件窗口,選擇剛剛保存的文件,按 ADD 按鈕,關(guān)閉文件窗,程序文件已加到項目中了。這時在 Source Group1文件夾圖標左邊出現(xiàn)了一個小+號,說明
文件組中有了文件,點擊它可以展開查看。

圖5.2 添加文件
⑤ 文件加載到項目之后,開始進行編譯運行,生成.hex文件。編譯結(jié)果如下圖:

圖5.3 生成.hex文件
編譯顯示沒有錯誤,說明編譯順利通過,已經(jīng)生成了所需要的.hex文件。接下來在PROTEUS中進行仿真。打開已經(jīng)繪制好的仿真電路原理圖,選中單片機AT89C51,右鍵單擊AT89C51,出現(xiàn)相應(yīng)的對話框,找到編譯好的“*.HEX”文件,然后單擊“OK”就可以進行仿真。在下邊的圖形中,給出了不同的溫濕度的顯示值,實際溫濕度與理論溫濕度的差值在誤差允許范圍之內(nèi)(圖5.4,溫度和濕度分別為60℃和80﹪,顯示為60.03℃和82.37﹪;圖5.5,溫度和濕度分別為68℃和70﹪,顯示為68.06℃和74.35﹪;圖5.6,溫度和濕度分別為48℃和31﹪,顯示為48.65℃和32.66﹪),說明設(shè)計成功。仿真結(jié)果如圖所示。

圖5.4 溫濕度顯示一

圖5.5 溫濕度顯示二

圖5.6 整體顯示




單片機的應(yīng)用如今已經(jīng)在工業(yè)、電子等方方面面展示出了它的優(yōu)越性,利用單片機在設(shè)計電路逐漸成了趨勢,它與外圍的簡單電路再加上優(yōu)化程序就可以構(gòu)建任意的產(chǎn)品,使得本設(shè)計成為現(xiàn)實。隨著單片機的日益發(fā)展,它必將在未來顯示出更大的活力,為電子設(shè)計增加更多精彩。
本次設(shè)計是基于PROTEUS的數(shù)字溫濕度的設(shè)計,包括硬件電路和軟件兩部分。設(shè)計采用的是高效單片機作為核心,集溫度傳感器和濕度傳感器于一體的SHT11作為主要的采集與測量系統(tǒng),其中它自帶的A/D轉(zhuǎn)換器,使得溫濕度測量具有精度高、成本低、體積小、接口簡單等優(yōu)點,還具有良好抗干擾能力。加上優(yōu)化程序,使得本系統(tǒng)具有很高的實用性。由AT89C51單片機、晶振等組成的最小系統(tǒng),可以使整個系統(tǒng)正常穩(wěn)定的工作起來。由LCD為核心的顯示電路可以直觀的顯示測量結(jié)果。報警電路的設(shè)計采用了聲光并用的方式。為了實現(xiàn)系統(tǒng)的智能化,系統(tǒng)采用模塊設(shè)計,在軟件上設(shè)計了系統(tǒng)主程序,溫濕度采集和處理電路子程序,報警電路子程序,液晶顯示子程序,實時的時間日期子程序。
由于學習的知識有限,加上時間的倉促和經(jīng)驗的缺乏,本設(shè)計整體上的性能還不是十分完善,設(shè)計中存在一些需要改進和優(yōu)化的地方。測量精度有待進一步提高,軟件設(shè)計也存在不合理之處。但從設(shè)計過程中,學到了幾種芯片的使用,如:DS1302時鐘芯片,LCD1604,SHT11等。對于單片機也有了更進一步的認識,對用于單片機仿真的軟件操作能力也明顯提高,通過此設(shè)計,本人受益頗豐。





致  謝
經(jīng)過近兩個多月的努力,在陳英老師的悉心指導(dǎo)下我順利的完成了畢業(yè)設(shè)計。此次的畢業(yè)設(shè)計使我受益匪淺。做畢業(yè)設(shè)計不僅是對我所學知識的一次檢驗,更是對我能力的一個挑戰(zhàn)。從接觸到畢業(yè)設(shè)計題目的那一刻起,我就開始仔細認真的查找相關(guān)資料和文獻,我一直都在盡自己最大的努力去完成它。完成畢業(yè)設(shè)計后,我發(fā)現(xiàn)自己不僅拓寬了專業(yè)理論知識,而且專業(yè)外的知識也豐富了不少,實際動手能力更是提高了很多。
在做畢業(yè)設(shè)計的過程中,陳英老師不僅給我提了許多指導(dǎo)性的意見,還傾注了大量的心血。她兢兢業(yè)業(yè)的工作作風、科學嚴謹?shù)闹螌W態(tài)度和寬以待人、認真負責的優(yōu)秀品質(zhì)給我留下了非常深刻的印象。沒有陳英老師方向性的指導(dǎo)和幫助,我是不可能按時完成畢業(yè)設(shè)計的。感謝陳英老師在百忙之中給予我的精心指導(dǎo)和幫助。在做畢業(yè)設(shè)計的過程中,陳英老師幫助我解決了許多新的疑點和難點,使我順利的完成了畢業(yè)設(shè)計。除此之外從陳老師那里,我還學到了嚴謹?shù)墓ぷ鲬B(tài)度和科學的學習方法,也學會了如何做人的道理,所有這些對我今后的成長成才都將產(chǎn)生深遠的影響。在此,我要向我的導(dǎo)師陳英老師表示最衷心的感謝!另外,本設(shè)計也得到了其他老師、同學的支持和幫助,謹在此一并感謝!

1




河南城建學院本科畢業(yè)設(shè)計(論文)                                       參考文獻     
參考文獻
[1]劉文濤.單片機語言C51典型應(yīng)用設(shè)計[M].北京:人民郵電出版社,2001,12:25-29
[2]周靈彬.基于Proteus的電路與PCB設(shè)計[M].北京:電子工業(yè)出版社,2010.8
[3]張毅剛主編.單片機原理及應(yīng)用[M].北京:高等教育出版社,2009
[4]李光飛,樓然苗,胡佳文等.單片機課程設(shè)計實例指導(dǎo)[M].北京:北京航空航天大學出版社,2004,105-125
[5]凌玉華.單片機原理及應(yīng)用系統(tǒng)設(shè)計[M].長沙:中南大學出版社,2006,222-228
[6]錢顯毅.傳感器原理與應(yīng)用[M].東南大學出版社,2008.7
[7]馮建華,趙亮.單片機應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā)[M].北京:人民郵電出版社,  2004.11
[8]譚浩強.C程序設(shè)計[M]. 北京:清華大學出版社,2005.7
[9]常喜茂,孔英會,付小寧.C51基礎(chǔ)與應(yīng)用實例[M].北京:電子工業(yè)出版社 2009.
[10]孫余凱,吳鳴山,項綺明.傳感器應(yīng)用電路300例[M].北京:電子工業(yè)出版社,2008.3
[11]康華光,陳大欽.模擬電子電路[M].北京:高教育出版社,2004:335-336.
[12]趙茂泰.智能儀器原理及應(yīng)用[M].北京:電子工業(yè)出版社,2006:130-132.
[13]李光飛,樓然苗,胡佳文等.單片機課程設(shè)計實例指導(dǎo)[M].北京:北京航空航天大學出版社,2004,105-125
[14]佟玲,楊玉芬,張本華.智能溫濕度監(jiān)控系統(tǒng)的組成與發(fā)展[J].沈陽農(nóng)業(yè)大學工程學院學報.2006,23(4);25-30
[15]Pual Horowitz and Winfield.The Art of Electronics.2nd ed[M].Cambridge University Press,1999:1-1125.
[16]Allan R.Hambley.Electronics.2nd ed[M].Prentice Hall Inc.2000:1-461.
[17]hnson D E, Johnson J R. Moore H P.A handbook of active filters[M].New Jersry,1980:1-72.



  附錄B 系統(tǒng)原理圖     
附錄B 系統(tǒng)原理圖

完整論文下載(word格式 可編輯 帶全部源碼):
http://www.torrancerestoration.com/bbs/dpj-82614-1.html






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:599734 發(fā)表于 2019-9-9 11:30 | 只看該作者
實用好資料了。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表