標(biāo)題: 自動(dòng)澆水論文 [打印本頁]
作者: li15616313970 時(shí)間: 2018-5-20 14:09
標(biāo)題: 自動(dòng)澆水論文
智能花盆自動(dòng)澆水系統(tǒng)的設(shè)計(jì)_畢業(yè)設(shè)計(jì)說明書
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì)
測控07級2班 指導(dǎo)老師:
摘 要:本次設(shè)計(jì)的盆花自動(dòng)澆水系統(tǒng)包括土壤溫濕度的檢測與控制和蓄水箱自動(dòng)上水及水位報(bào)警兩大部分。土壤溫濕度的檢測與控制部分又包括了土壤溫濕度的檢測和顯示、自動(dòng)澆水系統(tǒng)。土壤溫濕度的檢測和顯示以溫濕度傳感器SHT-11為感應(yīng)部件,將檢測到的土壤溫濕度值送入AT89C51單片機(jī),再由其輸出到LCD屏進(jìn)行顯示。自動(dòng)澆水系統(tǒng)設(shè)計(jì)為智能和手動(dòng)兩個(gè)部分:智能澆水部分是通過單片機(jī)程序設(shè)定澆水的上下限值與SHT-11送入單片機(jī)的土壤濕度值相比較,當(dāng)?shù)陀谙孪拗禃r(shí),單片機(jī)輸出一個(gè)信號控制電磁閥打開,開始澆水,高于上限值時(shí)再由單片機(jī)輸出一個(gè)信號控制電磁閥關(guān)閉,停止?jié)菜?手動(dòng)部分是由單片機(jī)從時(shí)鐘芯片DS1302讀入月份與每天的實(shí)時(shí)時(shí)刻,通過軟件程序設(shè)定定時(shí)澆水的時(shí)間與澆水的量。蓄水箱自動(dòng)上水及水位報(bào)警采用純硬件電路控制,實(shí)現(xiàn)水箱水位實(shí)時(shí)監(jiān)測、自動(dòng)上水以及水位上下限報(bào)警的功能。
關(guān)鍵詞:AT89C51單片機(jī) SHT-11溫濕度傳感器 LCD DS1302時(shí)鐘芯片 C51程序 數(shù)字電路
I
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
Design of potted flowers automatic watering system Abstract:The design of the automatic watering system includes soil pot humidity detection and display, automatic watering and storage box automatic water and water level alarm three parts. S- oil testing and display of temperature and humidity system takes Temperature and humidity sen- sor SHT - 11 as inductive components, it will detect the soil temperature and humidity value and input the value to the AT89C51 microcontroller,then the temperature and humidity value will be output to LCD screen displayed. Automatic watering system design for intelligence and manual two parts.Intelligent watering part through the microcontroller program setting the upper and lo- wer water attained,then comparing this upper and lower water attained with the vale that throug -hing SHT-11 inputting to the microcontroller. When below the limit SCM outputs a signal to o- pening the Electromagnetic valve ,and Start watering .if Above the upper limit value,the SCM will output another signal to Turnning off the Electromagnetic valve ,and Stop watering. Manual part read the time from the clock chip DS1302 by microcomputer. Through software program to setting the regular watering'time and Watering amount.Storage box Water level control system u- ses Pure hardware control. Realizing real-time monitoring water tank, Automatic water supply and Level alarming function.
Keywords: AT89C51 microcontroller; SHT - 11 temperature and humidity sensor; LCD; clock chip DS1302;C51 program; Digital circuit
II
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
目 錄
1、緒論 ..................................................................... 1 1.1 選題的目的和意義 .................................................... 1 1.2自動(dòng)澆花器的誕生背景及國內(nèi)外發(fā)展現(xiàn)狀 ................................. 1 1.3畢業(yè)設(shè)計(jì)所采用的研究方法和手段 ....................................... 2
2、AT89C51單片機(jī) ............................................................ 4 2.1 AT89C51單片機(jī)的基本組成 ............................................. 4 2.2 AT89C51主要特性 ..................................................... 5
............................................................. 5 2.3管腳說明
2.4 AT89C51單片機(jī)的存儲(chǔ)器 ............................................... 7
2.4.1 程序存儲(chǔ)器 .................................................... 7
2.4.2 數(shù)據(jù)存儲(chǔ)器 .................................................... 8 2.5 振蕩電路和時(shí)鐘 ...................................................... 9 2.6 AT89C51的中斷系統(tǒng) .................................................. 10
2.6.1 中斷系統(tǒng)結(jié)構(gòu)和中斷控制 ....................................... 10
2.6.2 中斷響應(yīng)過程 ................................................. 12
計(jì)數(shù)器 ...................................................... 12 2.7 定時(shí)器/
2.7.1定時(shí)器/計(jì)數(shù)器0和1簡介 ....................................... 12
2.7.2 與定時(shí)器/計(jì)數(shù)器0和1相關(guān)的特殊功能寄存器 .................... 13
3、溫濕度傳感器 ............................................................ 14 3.1 數(shù)字溫濕度傳感器SHT-11 ............................................. 15 3.2 SHT-11的傳感器輸出 ................................................. 16
3.2.1 濕度值輸出 ................................................... 17
3.2.2 溫度值輸出 ................................................... 17
3.2.3 露點(diǎn)計(jì)算 ..................................................... 18
3.2.4 非線性校正及溫度補(bǔ)償 ......................................... 18 3.3 SHT-11的特性 ....................................................... 19
3.3.1 SHT-11的特點(diǎn) ................................................. 19
3.3.2 SHT的詳細(xì)規(guī)格 ................................................ 19 3.4 SHT-11的引腳 ....................................................... 20
III
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
3.5 SHT-11的的內(nèi)部命令與接口時(shí)序 ....................................... 21
3.5.1 SHT-11的內(nèi)部命令 ............................................. 21
3.5.2 SHT-11的命令順序及命令時(shí)序 ................................... 21
5.3 SHT-11的狀態(tài)寄存器 ........................................... 22 3.
3.6 硬件接口 ........................................................... 23 3.7 恢復(fù)處理 ........................................................... 23 3.8 SHT-11的相關(guān)程序 ................................................... 24
4、DS1302時(shí)鐘芯片 .......................................................... 30 4.1 DS1302時(shí)鐘芯片的簡介 ............................................... 30 4.2 引腳 ............................................................... 30 4.3 命令字節(jié) ........................................................... 31 4.4 DS1302的相關(guān)程序 ................................................... 34
5、液晶顯示器LCD ........................................................... 38 5.1 液晶顯示器的分類 ................................................... 38 5.2 AMPIRE 128×64 ..................................................... 38
5.2.1 LCD 128×64引腳功能 .......................................... 39
5.2.2 KS0108控制器指令功能 ......................................... 40
5.2.3 應(yīng)用說明 ..................................................... 42
5.2.4 LCD相關(guān)程序 .................................................. 42
6、盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì) .................................................. 49 6.1 土壤溫濕度檢測與控制 ............................................... 49
6.1.1 硬件電路設(shè)計(jì) ................................................. 49
6.1.2 系統(tǒng)軟件設(shè)計(jì) ................................................. 53 6.2 蓄水箱自動(dòng)供水系統(tǒng) ................................................. 65
6.2.1基本的導(dǎo)電理論 ................................................ 66
6.2.2系統(tǒng)工作原理 .................................................. 67
6.2.3 系統(tǒng)硬件組成 ................................................. 66
6.2.4 系統(tǒng)電路連接 ................................................. 70
6.2.5 參數(shù)計(jì)算 ..................................................... 71
6.2.6 水箱水位控制系統(tǒng)檢測 ......................................... 71
IV
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
7、總結(jié) .................................................................... 73 8、致謝 .................................................................... 74 參考文獻(xiàn) ................................................................... 75
V
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
1、緒論
1.1 選題的目的和意義
隨著社會(huì)生活的進(jìn)步,人們的生活質(zhì)量越來越高。在家里養(yǎng)盆花可以陶冶情操、豐富生活。同時(shí),盆花通過光合作用可吸收二氧化碳,凈化室內(nèi)空氣,在有花木的地方空氣中陰離子聚積較多,所以空氣也特別清新,而且有許多花木還可吸收空氣中的有害氣體,因此,養(yǎng)盆花如今被許多的人所喜愛。
盆花澆水量是否能做到適時(shí)適量,是養(yǎng)花成敗的關(guān)鍵。但是,在生活中人們總是會(huì)有無暇顧及的時(shí)候,比如工作太忙或者出差、旅游等。花草生長問題80%以上是由花兒澆灌問題引起;好不容易種植幾個(gè)月的花草,因?yàn)闈菜患皶r(shí),長勢不好,用來美化家園的花草幾乎成了“雞肋”;不種植了吧,家中沒有綠色襯托感覺沒有生機(jī);保留吧,花草長得不夠旺盛,還影響家庭裝飾效果。雖然目前市面上有賣盆花自動(dòng)澆水器的,但價(jià)格十分的昂貴,并且大多只能設(shè)定一個(gè)定時(shí)澆水的時(shí)間,很難做到給盆花適時(shí)適量澆水。也有較經(jīng)濟(jì)的盆花缺水報(bào)警器,可以提醒人們及時(shí)的給盆花澆水。可是這種報(bào)警器只能報(bào)警,澆水還是需要人們親自動(dòng)手。當(dāng)家里無人時(shí),即使報(bào)警也無人澆水,就起不到應(yīng)有的作用了。因此,我想通過設(shè)計(jì)一種集盆花土壤濕度檢測,自動(dòng)澆水以及蓄水箱自動(dòng)供水于一體的盆花自動(dòng)澆水系統(tǒng)。讓盆花在人們無暇照顧時(shí)也能得到及時(shí)的澆灌。 1.2自動(dòng)澆花器的誕生背景及國內(nèi)外發(fā)展現(xiàn)狀
微噴系統(tǒng)是近幾年利用國內(nèi)外先進(jìn)技術(shù)組裝的新型灌溉設(shè)施,主要是利用水流通過低壓管道系統(tǒng)以一定速度從特制的噴頭噴出,在空氣中分散成細(xì)小的水滴,著落在花草植物、作物及周圍的地面上,從而達(dá)到及時(shí)補(bǔ)充水分的目的。該系統(tǒng)具有用水量少、沖擊力小的灌溉特性,適用于栽培密度大、植株柔軟細(xì)嫩的植物。自動(dòng)澆花器的誕生是隨著人們生活水平的提高和生活節(jié)奏的加快而誕生的一種懶人園藝用品。它把微噴的概念應(yīng)用于家庭盆花澆灌中,通過相應(yīng)的改進(jìn),達(dá)到合理給盆花自動(dòng)澆水的目的。
早在很多年前,國外就已經(jīng)開始普及,國內(nèi)使用的電子類自動(dòng)澆花器多數(shù)從國外進(jìn)口的,價(jià)格昂貴,但質(zhì)量比較可靠。不過這并不太適用于國內(nèi),目前國內(nèi)外比較流行的是玻璃制作的自動(dòng)澆花器。這種類型的澆花器多數(shù)在我國山西和浙江一帶加工生產(chǎn)的,價(jià)格比較低廉,實(shí)用性沒有電子類自動(dòng)澆花器好。隨著國內(nèi)居民消費(fèi)水平和生活質(zhì)量的提高,居家園藝市場異常火爆,但是由于生活節(jié)奏加快,種花容易養(yǎng)花難的問題暴露出
1
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
來,而養(yǎng)花最重要的問題就是澆水問題,研究表明花草80%以上的死亡由于澆水不及時(shí)引起,因此國內(nèi)商家已經(jīng)看到了這種需求潛力。目前這類小居家用品的廠家主要集中在廣東,上海,浙江一帶。現(xiàn)在市面上所出售的自動(dòng)澆花器主要有以下幾類:
? 電子類自動(dòng)澆花器
電子類自動(dòng)澆花器又叫時(shí)控噴淋裝置,系統(tǒng)構(gòu)成為:主機(jī)(或者控制器)、主管(可以是花園管也可以是4/7mm的微噴淋管)、分水接頭(3通、4通、5通、6通、分水器)、副管(3/5mm)噴淋管(霧化噴頭、旋轉(zhuǎn)噴頭、折射霧化噴頭等)。
電子類自動(dòng)澆花器根據(jù)電源的不同分為交流電自動(dòng)澆花器和電池自動(dòng)澆花器兩種。控制器的一般性能有:電磁閥控制;智能時(shí)控電路•微電腦芯片控制;適用電源為AC220V/50H;最適宜水壓0.3-0.6Mpa;待機(jī)功率(4VA,澆水時(shí),12VA);可控制連續(xù)Z
作業(yè)時(shí)間是1分鐘至168個(gè)小時(shí);可每天自動(dòng)完成十次以上澆水作業(yè),可每天、隔天、隔多天自動(dòng)循環(huán)進(jìn)行澆水,手動(dòng)自動(dòng)兩用;每天計(jì)時(shí)誤差小于正負(fù)3秒;電器適應(yīng)環(huán)境溫度為-10,50?;相對濕度,90%RH。
? 玻璃、陶瓷類自動(dòng)澆花器
玻璃、陶瓷類自動(dòng)澆花器又叫自動(dòng)滲水裝置,它由本身材質(zhì)的物理結(jié)構(gòu)構(gòu)成,根據(jù)器具的物理滲水原理完成自動(dòng)澆灌,當(dāng)自動(dòng)澆水器內(nèi)部存水,自身形成一定的壓力,當(dāng)遇到干燥的土壤,水就會(huì)自上而下的流出,當(dāng)土壤濕潤以后,會(huì)形成一個(gè)堵塞壓力,從而導(dǎo)致水流速度變慢或者停止。器具工藝不同,效果也不一樣,當(dāng)然也因土壤的疏松情況決定器具內(nèi)水流的速度。
當(dāng)前傳感器技術(shù)與單片機(jī)技術(shù)發(fā)展迅速,其應(yīng)用逐步由工業(yè)、軍事等領(lǐng)域向其他領(lǐng)域滲透,已經(jīng)和我們的日常生活息息相關(guān)。而且智能家居概念也越來越受人們的推崇,因此,微電腦控制的電子類自動(dòng)澆花系統(tǒng)有很好的發(fā)展前景。
1.3畢業(yè)設(shè)計(jì)所采用的研究方法和手段
本次畢業(yè)設(shè)計(jì)是設(shè)計(jì)一種單片機(jī)控制的自動(dòng)澆水系統(tǒng),實(shí)現(xiàn)室內(nèi)盆花澆水的自動(dòng)化系統(tǒng)。該系統(tǒng)可對土壤的溫濕度進(jìn)行監(jiān)控,并對作物進(jìn)行適時(shí)、適量的澆水。其核心是單片機(jī)和溫濕度傳感器以及澆水驅(qū)動(dòng)電路構(gòu)成的檢測控制部分。主要研究土壤濕度與澆水量之間的關(guān)系、澆灌控制技術(shù)及設(shè)備系統(tǒng)的硬件、軟件編程各個(gè)部分。檢測部分,單片機(jī)選用AT89C51單片機(jī),溫濕度傳感器選用SHT11溫濕度傳感器。SHT-11采用COMSens專利傳感器技術(shù)將溫度濕度傳感器、A/D轉(zhuǎn)換器、數(shù)字接口、校準(zhǔn)數(shù)據(jù)存儲(chǔ)器、標(biāo)準(zhǔn)I2C
2
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
總線等電路全部集成在一個(gè)芯片內(nèi)。軟件選用C51語言編程。土壤溫濕度傳感器可將檢測到的土壤溫濕度模擬量放大轉(zhuǎn)換成數(shù)字量通過單片機(jī)內(nèi)程序控制精確的將溫度與濕度分別顯示在LCD顯示屏上,同時(shí)通過單片機(jī)內(nèi)的中斷服務(wù)程序判斷是否要給盆花澆水,若需澆水,則單片機(jī)系統(tǒng)發(fā)出澆水信號,并經(jīng)放大驅(qū)動(dòng)設(shè)備,開啟電磁閥進(jìn)行澆水,若不需澆水,則進(jìn)行下一次循環(huán)檢測。在澆水系統(tǒng)中也同時(shí)設(shè)計(jì)一個(gè)手動(dòng)澆水部分,系統(tǒng)工作時(shí)通過設(shè)置鍵的按下與否來選擇澆水系統(tǒng)的工作方式。土壤澆水驅(qū)動(dòng)電路采用繼電器開關(guān)電路,蓄水箱水位報(bào)警以及自動(dòng)上水部分采用純硬件控制。
3
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
2、AT89C51單片機(jī)
AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 2.1 AT89C51單片機(jī)的基本組成
AT89C51由一個(gè)8位的微處理器,128KB片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM,21個(gè)特殊功能寄存器SFR,4KB片內(nèi)程序存儲(chǔ)器Flash ROM,64KB可尋址片內(nèi)外統(tǒng)一編址的ROM,64KB可尋址片外的RAM, 4個(gè)8位并行I/O接口(P0—P3),一個(gè)全雙工通用異步串行接口UART,兩個(gè)16位的定時(shí)器/計(jì)數(shù)器,具有位操作功能的布爾處理機(jī)及位尋址功能的五個(gè)中斷源、兩個(gè)優(yōu)先級的中斷控制系統(tǒng)以及片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路。其基本組成框圖如圖2-1所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B64.tmp.png
圖2-1 AT89C51的基本組成
4
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
2.2 AT89C51主要特性
AT89C51主要特性有:
?與MCS-51 兼容
?4K字節(jié)可編程閃爍存儲(chǔ)器
?壽命:1000寫/擦循環(huán)
?數(shù)據(jù)保留時(shí)間:10年
?全靜態(tài)工作:0Hz-24Hz
?三級程序存儲(chǔ)器鎖定
?128*8位內(nèi)部RAM
?32可編程I/O線
?兩個(gè)16位定時(shí)器/計(jì)數(shù)器
?5個(gè)中斷源
?可編程串行通道
?低功耗的閑置和掉電模式
?片內(nèi)振蕩器和時(shí)鐘電路
2.3管腳說明
AT89C51的引腳圖如圖2-2所示。各引腳的具體說明如下:
VCC:供電電壓。
GND:接地。
P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口 的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4
5
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此 作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口 當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八 位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫 時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址 信號和控制信號。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B84.tmp.png
圖2-2 AT89C51引腳圖
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電 流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入口。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如表2-1所示。同時(shí),P3口為閃爍編程和編程校驗(yàn)接收一些控制信號。
表2-1 P3口的特殊功能
引腳 名稱 功能說明 引腳 名稱 功能說明 P3.0 RXD 串行輸入口 P3.4 T0 記時(shí)器0外部輸入 P3.1 TXD 串行輸出口 P3.5 T1 記時(shí)器1外部輸入 P3.2 外部中斷0 P3.6 外部數(shù)據(jù)存儲(chǔ)器寫選通 INT0WR
P3.3 外部中斷1 P3.7 外部數(shù)據(jù)存儲(chǔ)器讀選通 INT1RD
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位
6
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
PSEN:外部程序存儲(chǔ)器的選通信號。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。
EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
2.4 AT89C51單片機(jī)的存儲(chǔ)器
在單片機(jī)中,存儲(chǔ)器分為程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM,并且兩個(gè)存儲(chǔ)器是獨(dú)立編址的。
AT89C51單片機(jī)芯片內(nèi)配置有8KB(0000H,1FFFH)的Flash程序存儲(chǔ)器和256字節(jié)(00H,FFH)的數(shù)據(jù)存儲(chǔ)器RAM,根據(jù)需要可外擴(kuò)到最大64KB的程序存儲(chǔ)器和64KB的數(shù)據(jù)存儲(chǔ)器,因此AT89C51的存儲(chǔ)器結(jié)構(gòu)可分為4部分:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器。如果以最小系統(tǒng)使用單片機(jī),即不擴(kuò)展,則AT89C51的存儲(chǔ)器結(jié)構(gòu)就較簡單:只有單片機(jī)自身提供的8KB Flash程序存儲(chǔ)器和256字節(jié)數(shù)據(jù)存儲(chǔ)器RAM。
圖2-3給出了AT89C51單片機(jī)的存儲(chǔ)器分布空間。左側(cè)線框中為單片機(jī)自身提供的8KB Flash程序存儲(chǔ)器和256字節(jié)數(shù)據(jù)存儲(chǔ)器RAM。右側(cè)為可擴(kuò)展的64KB的程序存儲(chǔ)器ROM和64KB的數(shù)據(jù)存儲(chǔ)器RAM。
2.4.1 程序存儲(chǔ)器
EAAT89C51單片機(jī)出廠時(shí)片內(nèi)已帶有8KB的Flash程序存儲(chǔ)器,使用時(shí),引腳要
7
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
按高電平(5V),這時(shí),復(fù)位后CPU從片內(nèi)ROM區(qū)的0000H單元開始讀取指令代碼,一直運(yùn)行到1FFFH單元,如果外部擴(kuò)展有程序存儲(chǔ)器ROM,則CPU會(huì)自動(dòng)轉(zhuǎn)移到片外ROM空間2000H,FFFFH讀取指令代碼。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B94.tmp.png
圖2-3 存儲(chǔ)器空間分布圖
2.4.2 數(shù)據(jù)存儲(chǔ)器
AT89C51單片機(jī)出廠時(shí)片內(nèi)已帶有256字節(jié)的數(shù)據(jù)存儲(chǔ)器RAM,如果不夠用,可以在片外擴(kuò)展,最多可擴(kuò)展64KB RAM。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B95.tmp.png
圖2-4 片內(nèi)數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)
8
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
單片機(jī)自帶的數(shù)據(jù)存儲(chǔ)器RAM結(jié)構(gòu)如圖2-4所示,此256字節(jié)單元(00H,FFH)的低128字節(jié)(00H,7FH)單元為用戶使用區(qū),高128字節(jié)(80H,FFH)單元為特殊功能寄存器SFR區(qū)。
片內(nèi)數(shù)據(jù)存儲(chǔ)器的00H,7FH單元又劃分為3塊:00H,1FH塊是工作寄存器所用;20H,2FH塊是位尋址功能的單元區(qū);30H,3FH是普通RAM區(qū)。工作寄存器又分為4組,在當(dāng)前的運(yùn)行程序中只有一組是被激活的,誰被激活有程序狀態(tài)寄存器PSW的RS1,RS0兩位決定。
2.5 振蕩電路和時(shí)鐘
在AT89C51芯片內(nèi)部,有一個(gè)振蕩電路和時(shí)鐘發(fā)生器,引腳XTAL1和XTAL2之間接入晶體振蕩器和電容后構(gòu)成內(nèi)部時(shí)鐘方式。也可以使用外部振蕩器,由外部振蕩器產(chǎn)生的信號直接加載到振蕩器的輸入端,作為CPU的時(shí)鐘源,稱為外部時(shí)鐘方式。采用外部時(shí)鐘方式時(shí),外部振蕩器的輸出信號接至XTAL1,XTAL2懸空。兩種方式的電路連接如圖2-5所示。大多數(shù)的單片機(jī)采用內(nèi)部時(shí)鐘方式,本次設(shè)計(jì)亦然。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7B96.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BA7.tmp.png
(a)使用片內(nèi)振蕩器接法 (b)使用片外振蕩器接法
圖2-5 AT89C51振蕩器的連接方式
在AT89C51單片機(jī)內(nèi)部,引腳XTAL2和引腳XTAL1連接著一個(gè)高增益反相放大器,XTAL1引腳是反相放大器的輸入端,XTAL2引腳是反相放大器的輸出端。
f芯片內(nèi)部的時(shí)鐘發(fā)生器是一個(gè)二分頻觸發(fā)器,振蕩器的輸出為其輸入,輸出為osc
f兩相的時(shí)鐘信號(狀態(tài)時(shí)鐘信號),頻率為振蕩器輸出信號頻率的1/2。狀態(tài)時(shí)鐘osc
9
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
經(jīng)三分頻后為低字節(jié)地址鎖存信號ALE,頻率為振蕩器輸出信號頻率的1/6,經(jīng)六fosc分頻后為機(jī)器周期信號,頻率為/12。、一般取20,30pF的陶瓷電容器。 fCCosc12
2.6 AT89C51的中斷系統(tǒng)
為了提高系統(tǒng)的工作效率,AT89C51單片機(jī)設(shè)置了中斷系統(tǒng),采用中斷方式與外設(shè)進(jìn)行數(shù)據(jù)傳送。所謂“中斷”,是指單片機(jī)在執(zhí)行某一段程序的過程中,由于某種原因(如異常情況或特殊請求),單片機(jī)暫時(shí)中止正在執(zhí)行的程序,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,再返回到被打斷的程序處,繼續(xù)執(zhí)行原程序的過程。 2.6.1 中斷系統(tǒng)結(jié)構(gòu)和中斷控制
AT89C51有六個(gè)固定的可屏蔽中斷源,分別是三個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器溢出中斷TF0、
INT0INT1TF1和TF2,兩個(gè)外部中斷(P3.2)和(P3.3),一個(gè)片內(nèi)串行口中斷TI或RI。6個(gè)中斷源有兩級中斷優(yōu)先級,可形成中斷嵌套。它們在程序存儲(chǔ)器中各有固定的中斷入口地址,由此進(jìn)入相應(yīng)的中斷服務(wù)程序。
引起6個(gè)中斷源的符號、名稱及產(chǎn)生的條件如下:
INT0:外部中斷0,由P3.2端口線引入,低電平或下降沿引起;
INT1:外部中斷1,由P3.3端口線引入,低電平或下降沿引起;
T0:定時(shí)器/計(jì)數(shù)器0中斷,由T0記滿回零引起;
T1:定時(shí)器/計(jì)數(shù)器1中斷,由T1記滿回零引起;
TI/RI:串行口I/O中斷,串行端口完成一幀字符發(fā)送/接收后引起中斷;
T2:定時(shí)器/計(jì)數(shù)器2中斷,由T2記滿回零引起。
在本次設(shè)計(jì)中采用了定時(shí)器/計(jì)數(shù)器0中斷,它的中斷控制寄存器包括定時(shí)器/計(jì)數(shù)器0、1控制寄存器TCON和中斷允許控制寄存器IE。
? 定時(shí)器控制寄存器TCON
TCON是定時(shí)器/計(jì)數(shù)器和外部中斷兩者合用的一個(gè)可位尋址的特殊功能寄存器,它的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
各控制位定義如下:
10
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
TF1:定時(shí)器/計(jì)數(shù)器1溢出中斷請求標(biāo)志位。當(dāng)定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)產(chǎn)生溢出時(shí),由內(nèi)部硬件置位TF1,向CPU響應(yīng)中斷并轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時(shí),由硬件內(nèi)部自動(dòng)TF1清0。
TR1:定時(shí)器/計(jì)數(shù)器1啟動(dòng)/停止位。由軟件置位/復(fù)位控制定時(shí)器/計(jì)數(shù)器1的啟動(dòng)或停止計(jì)數(shù)。
TF0:定時(shí)器/計(jì)數(shù)器0溢出中斷請求標(biāo)志位。當(dāng)定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)產(chǎn)生溢出時(shí),由內(nèi)部硬件置位TF0,向CPU響應(yīng)中斷并轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時(shí),由硬件內(nèi)部自動(dòng)TF1清0。
TR0:定時(shí)器/計(jì)數(shù)器0啟動(dòng)/停止位。由軟件置位/復(fù)位控制定時(shí)器/計(jì)數(shù)器0的啟動(dòng)或停止計(jì)數(shù)。
IE1:外部中斷請求標(biāo)志位。當(dāng)CPU檢測到INT0低電平或下降沿且IT1=1時(shí),由內(nèi)部硬件置位IE1標(biāo)志位(IE1=1)向CPU請求中斷,當(dāng)CPU響應(yīng)中斷并轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時(shí),由硬件內(nèi)部將IE1清0。
IE0:外部中斷請求標(biāo)志位。當(dāng)CPU檢測到INT0低電平或下降沿且IT0=1時(shí),由內(nèi)部硬件置位IE0標(biāo)志位(IE0=1)向CPU請求中斷,當(dāng)CPU響應(yīng)中斷并轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時(shí),由硬件內(nèi)部將IE0清0。
IT1:用軟件置位/復(fù)位IT1來選擇外部中斷INT1是下降沿觸發(fā)還是電平觸發(fā)中斷請求。當(dāng)IT1置1時(shí),則外部中斷INT1為下降沿觸發(fā)中斷請求,即INT1端口由前一個(gè)機(jī)器周期的高電平跳變?yōu)橄乱粋(gè)機(jī)器周期的低電平,則觸發(fā)中斷請求;當(dāng)IT1復(fù)位清0,則INT1的低電平觸發(fā)中斷請求。
IT0:由軟件置位/復(fù)位IT0來選擇外部中斷INT0是下降沿觸發(fā)還是低電平觸發(fā)中斷請求,其控制原理同IT1。
? 中斷允許控制寄存器
中斷允許控制寄存器IE的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
EA ET2 ES ET1 EX1 ET0 EX0
各控制位定義如下:
EA:中斷總控制為。EA=1,CPU開中斷,它是CPU是否響應(yīng)中斷的前提,在此前提下,如果某中斷源的中斷允許位置1,才能響應(yīng)該中斷源的中斷請求。如果EA=0,無論哪個(gè)中斷源有請求,CPU都不予回應(yīng)。
11
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
ET2:定時(shí)器/計(jì)數(shù)器T2中斷控制位,ET2=1,允許T2計(jì)數(shù)溢出中斷;ET2=0,禁止T2中斷。
ES:串行口中斷控制位,ES=1,允許串行口發(fā)送/接收中斷;ES=0禁止串行口中斷。
ET1:定時(shí)器/計(jì)數(shù)器T1中斷控制位,ET1=1,允許T1計(jì)數(shù)溢出中斷;ET1=0,禁止T1中斷。
EX1:外部中斷1控制位,EX1=1,允許中斷;EX1=0,禁止外部中斷1中斷。
ET0:定時(shí)器/計(jì)數(shù)器T0中斷控制位,ET0=1,允許T0計(jì)數(shù)溢出中斷;ET0=0,禁止T0中斷。
[1]EX0:外部中斷0控制位,EX0=1,允許中斷;EX0=0,禁止外部中斷0中斷。 2.6.2 中斷響應(yīng)過程
CPU中斷處理從響應(yīng)中斷、控制程序轉(zhuǎn)向?qū)?yīng)的中斷矢量地址入口處執(zhí)行中斷服務(wù)程序,到執(zhí)行返回(RETI)指令為止。中斷響應(yīng)可分為以下幾個(gè)步驟:
? 保護(hù)斷點(diǎn),即保存下一個(gè)將要執(zhí)行的指令的地址,把這個(gè)地址送入堆棧。
? 尋找中斷入口,根據(jù)6個(gè)不同的中斷源所產(chǎn)生的中斷,中斷系統(tǒng)必須能夠正確地識別中斷源,查找6個(gè)不同的入口地址。以上工作是由單片機(jī)自動(dòng)完成的,與編程者無關(guān)。在6個(gè)入口地址處存放有中斷處理程序。
?執(zhí)行中斷處理程序。
[2]?中斷返回:執(zhí)行完中斷指令后,從中斷處返回到主程序,繼續(xù)執(zhí)行。 2.7 定時(shí)器/計(jì)數(shù)器
AT89C51單片機(jī)內(nèi)部設(shè)有兩個(gè)16位可編程定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1。除此之外還有一個(gè)可編程定時(shí)器/計(jì)數(shù)器2。
2.7.1定時(shí)器/計(jì)數(shù)器0和1簡介
定時(shí)器/計(jì)數(shù)器0和1內(nèi)部有一個(gè)計(jì)數(shù)寄存器(和),它實(shí)際上是一個(gè)累THxTLx
加寄存器進(jìn)行加1計(jì)數(shù)。定時(shí)器和計(jì)數(shù)器共用這個(gè)寄存器,但定時(shí)器/計(jì)數(shù)器同一時(shí)刻只能工作在其中一種方式下,不可能既工作在定時(shí)器方式,同時(shí)又工作在計(jì)數(shù)器方式。這兩個(gè)工作方式的根本區(qū)別是在于計(jì)數(shù)脈沖的來源不同。工作在定時(shí)器方式時(shí),對振蕩源12分頻的脈沖計(jì)數(shù),即每過一個(gè)機(jī)器周期(1個(gè)機(jī)器周期在時(shí)間上和12個(gè)振蕩周期
12
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
的時(shí)間相等),計(jì)數(shù)寄存器中的值就加1。工作在計(jì)數(shù)器方式時(shí),計(jì)數(shù)脈沖不是來自內(nèi)部的機(jī)器周期,而是來自外部輸入。對定時(shí)器/計(jì)數(shù)器0、定時(shí)器/計(jì)數(shù)器1,計(jì)數(shù)脈沖分別來自T0、T1引腳。當(dāng)這些引腳上輸入的信號產(chǎn)生高電平至低電平的負(fù)跳變時(shí),計(jì)數(shù)寄存器的值就加1。單片機(jī)每個(gè)機(jī)器周期都要對對外部輸入進(jìn)行采樣,如果在第一個(gè)周期采得的外部信號為高電平,在下一個(gè)周期采得的信號為低電平,則在再下一個(gè)機(jī)器
[1]周期,即第三個(gè)機(jī)器周期計(jì)數(shù)寄存器的值才增加1。
2.7.2 與定時(shí)器/計(jì)數(shù)器0和1相關(guān)的特殊功能寄存器
? 計(jì)數(shù)寄存器TH0、TL0和TH1、TL1
計(jì)數(shù)寄存器是16位的,再啟動(dòng)定時(shí)器時(shí)需要對它設(shè)定初始值。是計(jì)數(shù)寄存器THx的高8位,是計(jì)數(shù)寄存器的低8位。TH0、TL0對應(yīng)T/C0,TH1、TL1對應(yīng)T/C1。 TLx
? 定時(shí)器/計(jì)數(shù)器控制寄存器TCON
定時(shí)器/計(jì)數(shù)器控制寄存器TCON的格式如下:
TF1 TR1 TF0 TR1 IE1 IT1 IE0 IT0
TF1為T/C1的溢出標(biāo)志,溢出時(shí)由硬件置1,進(jìn)入中斷后又由硬件自動(dòng)清0。
TR1為T/C1的啟動(dòng)和停止位,由軟件控制。置1時(shí)啟動(dòng)T/C1;清0時(shí)停止T/C1。
TF0和TR0的功能和使用方法以TF1、TR1類似,只是它們針對的是T/C0。
? 定時(shí)器/計(jì)數(shù)器方式控制寄存器TMOD
定時(shí)器/計(jì)數(shù)器方式控制寄存器TMOD的格式如下所示。它的控制位都是由軟件控制的,其中高4位是針對T/C1的,低4位是針對T/C0的,其功能和使用方法相似。
GATE M1 M0 GATE M1 M0 C/TT/C
現(xiàn)在以T/C0來說明各控制位的使用方法:GATE是一個(gè)選通位,當(dāng)GATE位置1時(shí),
INT0T/C0受到雙重控制,只有為高電平且TR0位置1是T/C0才開始工作,當(dāng)GATE位
C/T清0時(shí),T/C0僅受到TR0的控制。用來選擇工作在定時(shí)器方式還是計(jì)數(shù)器方式。當(dāng)
13
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
該位置1時(shí)工作在計(jì)數(shù)器方式,清0時(shí)工作在定時(shí)器方式。M1和M0聯(lián)合起來用于選擇操作模式,一共有四種操作模式,如表2-2所示。
表2-2 操作模式
M1 M0 操作模式 計(jì)數(shù)器配置
0 0 模式0 13位計(jì)數(shù)器
1 0 模式2 自動(dòng)重轉(zhuǎn)載的8位計(jì)數(shù)器
1 0 模式2 自動(dòng)重轉(zhuǎn)載的8位計(jì)數(shù)器
1 1 模式3 T0分為兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)
14
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
3、溫濕度傳感器
傳統(tǒng)的模擬式濕度傳感器需設(shè)計(jì)信號調(diào)理電路并要經(jīng)過復(fù)雜的校準(zhǔn)、標(biāo)定過程,測量精度難以得到保證,且在線性度、重復(fù)性、互換性、一致性等方面往往不盡人意。為解決這些問題,瑞士Sensirion 公司推出了新一代基于CMOSensTM技術(shù)的數(shù)字式溫濕度傳感器。它很好地解決了溫濕度傳感器存在的上述問題,實(shí)現(xiàn)了數(shù)字式輸出、免調(diào)試、免標(biāo)定、
[3]免外圍電路及全互換功能。
3.1 數(shù)字溫濕度傳感器SHT-11
數(shù)字溫濕度傳感器SHT—11采用COMSens專利傳感器技術(shù)將溫度濕度傳感器、A/D
2轉(zhuǎn)換器、數(shù)字接口、校準(zhǔn)數(shù)據(jù)存儲(chǔ)器、標(biāo)準(zhǔn)IC總線等電路全部集成在一個(gè)芯片內(nèi)(其
[4]內(nèi)部結(jié)構(gòu)如圖3-1所示)。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BB8.tmp.png
圖3-1 數(shù)字溫濕度傳感器SHT—11的內(nèi)部結(jié)構(gòu)圖
由它的內(nèi)部結(jié)構(gòu)可看出SHT-11具有不同保護(hù)的“微型結(jié)構(gòu)”檢測電極系統(tǒng)與聚合物覆蓋層組成了傳感器芯片的電容,這樣除保持了電容式濕敏器件的原有特性外還可抵御來自其它方面的影響。將溫度傳感器與濕度傳感器結(jié)合在一起構(gòu)成了一個(gè)單一的個(gè)體,這就使得測量精度提高并且可以精確得出露點(diǎn),而不會(huì)產(chǎn)生由于溫度與濕度傳感器之間隨溫度梯度變化而引起的誤差。而且將傳感器元件、信號放大器、模/ 數(shù)轉(zhuǎn)換器、OTP 校
2準(zhǔn)數(shù)據(jù)存儲(chǔ)器、IC 工業(yè)標(biāo)準(zhǔn)串行總線等,電路功能部件全部采用CMOS 技術(shù)與溫濕度傳感器一起放置在一個(gè)芯片內(nèi)。這不僅使信號強(qiáng)度增加,更重要的是長期穩(wěn)定性也得到增強(qiáng),這對傳感器系統(tǒng)是極為重要的。同時(shí),模/ 數(shù)轉(zhuǎn)換也在一個(gè)芯片內(nèi)同時(shí)完成,這可使信號對噪聲不敏感,尤其重要的是,在傳感器芯片數(shù)據(jù)存儲(chǔ)器內(nèi)裝載的針對每一只傳感
15
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
器的校準(zhǔn)數(shù)據(jù)保證了每一只傳感器都有相同的功能,可以實(shí)現(xiàn)100%的互換。此外,。該傳
2感器還具有IC 二線串行總線接口,這可使傳感器方便的與任何類型的微處理器、微控制器接口相連,為溫濕度的微機(jī)化測試帶來極大的方便,這不僅能減少溫濕度測試系統(tǒng)的開發(fā)時(shí)間,還可節(jié)約數(shù)字化接口的軟硬件成本。
該傳感器還有反應(yīng)迅速、高精度、低功耗等優(yōu)點(diǎn)。
3.2 SHT-11的傳感器輸出
[4]SHT-11的相對濕度絕對精度、溫度精度和25?露點(diǎn)精度如圖3-2(a),(c)所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BB9.tmp.png
(a)濕度絕對精度
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BBA.tmp.png
(b)溫度精度
16
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BBB.tmp.png
(C)25?露點(diǎn)精度
圖3-2 相對濕度、溫度和露點(diǎn)的精度曲線 3.2.1 濕度值輸出
SHT-11可通過I2C 總線直接輸出數(shù)字量濕度值,其相對濕度輸出特性曲線如圖3-2
所示。從中可以看出,SHT11 的輸出特性呈一定的非線性,為了補(bǔ)償濕度傳感器的非線性
以獲取準(zhǔn)確數(shù)據(jù),可按式(3-1)修正濕度值:
2,,RHlinear= ,, 3,1c,cSO,cSO12RH3RH式中,SORH 表示傳感器相對濕度測量值,系數(shù)取值分別如下:
,612位時(shí):; c,,4,c,0.0405,c,,2.8,10123
,48位時(shí): 。 c,,4,c,0.648,c,,7.2,10123
3.2.2 溫度值輸出
溫度傳感器的線性非常好,可用下列公式(3-2)將溫度數(shù)字輸出轉(zhuǎn)換成實(shí)際SHT-11
溫度值T :
,,3,2T,d,dSO 12T
SO式中,表示傳感器溫度測量值。當(dāng)電源電壓為5V,溫度傳感器的分辨率為14位時(shí),T
d,,40d,0.01d,,40d,0.04,;當(dāng)溫度傳感器的分辨率為12位時(shí),,。 1212
17
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCB.tmp.png
圖3-3 相對濕度輸出特性曲線
3.2.3 露點(diǎn)計(jì)算
空氣的露點(diǎn)值可根據(jù)相對濕度和溫度值由下面公式計(jì)算:
,,,,,,,,,,3,3lgEW,0.66077,7.5T/237.3,T,lgRH,2
,,,,,,,,,,,,3,4D,0.66077,lgEW,237.3/lgEW,8.16077P
,,EW式中,——飽和水蒸氣壓強(qiáng)(mmHg)
3.2.4 非線性校正及溫度補(bǔ)償
式(3-1)為相對濕度的非線性補(bǔ)償計(jì)算公式,對于單片機(jī)系統(tǒng)而言,計(jì)算量大而過復(fù)雜,下面給出簡化的計(jì)算方法。
(1)線性 當(dāng)系統(tǒng)對濕度測量精度要求不高時(shí),可采用以下的線性計(jì)算公式。
,,,,3,5RHsimple,c,c,SO 12RH
c,c,0.5式中,。 12
(2)2×線性 當(dāng)系統(tǒng)對濕度測量精度要求較高時(shí),可采用以下的2×線性計(jì)算公式,即用最小的計(jì)算復(fù)雜性來提高精確度。
,,,,,,3,6RHreal,a,SO,b,256 式中,為8位濕度傳感器輸出濕度值。 SO
b,512b,512當(dāng)時(shí),,;當(dāng)時(shí),,。 0,SO,107a,143108,SO,255a,143
(3)溫度補(bǔ)償 上述濕度計(jì)算公式是按環(huán)境溫度為25?進(jìn)行計(jì)算的,而實(shí)際的測量
,,3,5溫度值則在一定的范圍內(nèi)變化,所以應(yīng)考慮濕度傳感器的溫度系數(shù),可按式對環(huán)境
18
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
溫度進(jìn)行補(bǔ)償。
,,,,,,,,,,RHture,T,25t,tSO,RHlinear3,712RH
當(dāng)為12位時(shí),,;當(dāng)為8位時(shí),,。 SOt,0.01t,0.00008SOt,0.01t,0.00128RH12RH12
3.3 SHT-11的特性
3.3.1 SHT-11的特點(diǎn)
SHT-11傳感器的特點(diǎn)如下:
1)相對濕度和溫度一體測量;
2)精確露點(diǎn)測量;
3)全量程標(biāo)定,無需重新標(biāo)定即可互換使用; 4)超快響應(yīng)時(shí)間;
5)兩線制數(shù)字接口(最簡單的系統(tǒng)集成,較低的價(jià)格);
6)超小尺寸(7.5×5×2.5mm);
7)高可靠性(工業(yè)CMOS工業(yè));
8)優(yōu)化的長期穩(wěn)定性;
9)可完全浸沒水中;
10)基于請求式測量,因此低能耗; 11)具有濕度傳感器元件的自檢測能力; 12)傳感器元件加熱應(yīng)用,亦可獲得極高的精度和穩(wěn)定性。
3.3.2 SHT的詳細(xì)規(guī)格
1.相對濕度傳感器(RH)的性能參數(shù)如下: 范圍:0—100%RH;
精度:?3%RH(20—80%RH);
響應(yīng)時(shí)間:?4s;
復(fù)現(xiàn)性:?0.1%RH;
分辨率:0.03%RH;
工作溫度:,40?—,120?。
2.溫度傳感器(T)的性能參數(shù)如下:
19
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
范圍:,40?—,120?;
精度:?0.5?(在25?時(shí)),?0.9?(在0—40?時(shí));
響應(yīng)時(shí)間:?20s;
復(fù)現(xiàn)性:?0.1?;
分辨率:0.01?。
3.電器數(shù)據(jù)
能耗:典型 30uW(@5V,12-bit,測量周期2秒)
典型 1uW(@2.4V,8-bit,測量周期2分);
供電范圍:2.4V—5.5V;
檢測電流:0.5mA;
待機(jī)電流:0.3uV。
3.4 SHT-11的引腳
SHT-11的引腳圖如圖3-4所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCC.tmp.png
圖3-4 SHT-11的引腳圖
引腳簡介
引腳1—GND接地端;SHT-11的供電電壓為0.4,5.5V,傳感器上電后要等待11ms
以越過“休眠”狀態(tài)。在此期間無需發(fā)送任何指令,電源引腳(VDD,GND)之間可增加
一個(gè)100uF的電容,用以去耦濾波。
引腳2—DATA雙向串行數(shù)據(jù)線;SHT-11的串行接口,在傳感器的讀取及電源損耗方
面都做了優(yōu)化處理。DATA三態(tài)門用于數(shù)據(jù)的讀取。
20
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
引腳3—SCK串行時(shí)鐘輸入;用于微處理器與SHT-11之間的通訊同步。由于接口包含了完全靜態(tài)邏輯,因而不存在最小SCK頻率。
引腳4—VDD電源端,0.4—5.5V電源
引腳5—8—NC空管腳
3.5 SHT-11的的內(nèi)部命令與接口時(shí)序
3.5.1 SHT-11的內(nèi)部命令
SHT-11 傳感器共有5 條用戶命令,具體命令格式見表3-1。在程序編程時(shí)根據(jù)命令編號來設(shè)定SHT-11的工作狀態(tài)。例如:0x03設(shè)置SHT-11為溫度測量,0x05是設(shè)置SHT-11
[5]為濕度測量。
表3-1 SHT-11傳感器命令列表
命令 編號 說明
測量溫度 00011 溫度測量
測量濕度 00101 濕度測量
讀寄存器 00111 “讀”狀態(tài)寄存器
寫寄存器 00110 “寫”狀態(tài)寄存器
重啟芯片,清除狀態(tài)記錄器的錯(cuò)誤
軟啟動(dòng) 11110
記錄11 毫秒后進(jìn)入下一個(gè)命令 3.5.2 SHT-11的命令順序及命令時(shí)序
1) 傳輸開始
初始化傳輸時(shí),應(yīng)發(fā)出“傳輸開始”命令,具體為SCK是高電平時(shí),DATA 高電平變?yōu)榈碗娖?并在下一個(gè)SCK為高時(shí)將DATA 升高。接著傳輸開始下一個(gè)命令,包含3個(gè)地址位(目前只支持“000”) 和5 個(gè)命令位,通過DATA 腳的ack 位處于低電位表示SHT11正確收到命令。
2) 連接復(fù)位順序
如果與SHT11傳感器的通訊中斷,下列信號順序會(huì)使串口復(fù)位:當(dāng)使DATA線處于高電
21
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
平時(shí),觸發(fā)SCK9 次以上(含9 次) ,并發(fā)一個(gè)前述的“傳輸開始”命令。
3) 溫濕度測量時(shí)序
當(dāng)發(fā)出了溫(濕) 度測量命令后,控制器就要等到測量完成后才開始動(dòng)作。使用8/ 12/ 14 位的分辨率測量分別需要大約11/ 55/ 210 ms。為表明測量完成,SHT11會(huì)使DATA為低電平,此時(shí)控制器必須重新啟動(dòng)SCK,然后SHT11傳送兩字節(jié)測量數(shù)據(jù)與1字節(jié)CRC校驗(yàn)和到控制器,控制器必須通過使DATA為低來確認(rèn)每一字節(jié),通訊在確認(rèn)CRC數(shù)據(jù)位后停止。如果沒有用CRC28校驗(yàn)和,則控制器就會(huì)在測量數(shù)據(jù)LSB后,保持ack為高時(shí)停止通訊,SHT11在測量和通訊完成之后會(huì)自動(dòng)返回睡眠模式。需要注意的是,為使SHT11溫升高低于0.1?,則此時(shí)工作頻率不能大15%(如:12 位精確度時(shí),每秒最多進(jìn)行3 次測量)。測量溫度和測量濕度命令所對應(yīng)的時(shí)序如圖3-4所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCD.tmp.png
圖3-4 測量溫濕度時(shí)序圖
4) 加熱控制
將傳感器芯片中的加熱開關(guān)接通,傳感器溫度大約增加5 ?,加熱用途如下:其一,通過對啟動(dòng)加熱器前后的溫、濕度進(jìn)行比較,可以正確地區(qū)別傳感器的功能;其二,在相對濕度較高的環(huán)境下,傳感器可通過加熱來避免冷凝。
5) 低電壓檢測
SHT11的工作極限功能可以檢測VDD電壓是否低于2.45V,準(zhǔn)確度為?0.1V。
3.4.3 SHT-11的狀態(tài)寄存器
SHT-11的狀態(tài)寄存器的類型及其說明見表3-2。
表3-2 SHT-11狀態(tài)寄存器及說明
位 類型 說明 缺省 說明
7 保留 0
6 讀 工檢限 X
5 保留 0
4 保留 0
22
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
續(xù)表
位 類型 說明 缺省 說明
3 只用于試驗(yàn),不可以使用 0
2 讀/寫 加熱 0 關(guān)
1 讀/寫 不從OTP重下載 0 重下載
‘1’—8位相對濕度,12位溫度分辨
0 讀/寫 率;‘0’—12位相對濕度,14位溫 0 12位相對濕度,14溫度
分辨率
3.6 硬件接口
SHT-11與單片機(jī)接口構(gòu)成的溫濕度測量電路,如圖3-5所示 。因SHT-11內(nèi)部集成
[6]了A/D轉(zhuǎn)換器、數(shù)字接口等,在與單片機(jī)連接時(shí)就不需要再外接轉(zhuǎn)換部件。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BCE.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BDF.tmp.png
圖3-5 SHT-11與單片機(jī)接口 圖3.2 DS1302與單片機(jī)連接
3.7 恢復(fù)處理
置于極限工作條件下或化學(xué)蒸汽中的傳感器,經(jīng)過在80,90?(176,194F)和,5,RH的濕度條件下保持24小時(shí)(烘干),隨后在20,30?(70,90F)和,74,RH的濕度條
[7]件下保持48小時(shí)以上(重新水和)的處理后可使其恢復(fù)到剛校準(zhǔn)時(shí)的狀態(tài)。
通過上面的論述可見SHT-11數(shù)字式溫濕度傳感器完全符合對土壤溫濕度檢測的要求。
23
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
3.8 SHT-11的相關(guān)程序
? SHT11端口定義
sbit SHT11_DATA=P2^6; sbit SHT11_SCK=P2^5; uchar flag_tempeture=0; //顯示溫度位置的標(biāo)志 uchar flag_humidity=0; //顯示濕度位置的標(biāo)志 //uchar dat;
uint i,temp1,temp2,dat=0,count;
float tempeture1;
float RHline,RHtrue; void delay(uint m) {
while(m--);
}
? SHT11內(nèi)部延時(shí)
void Delay()
{
;
;
}
? SHT11檢測等待延時(shí):11ms/55ms/210ms 分別對應(yīng)8位/12位/14位 測量結(jié)果,
對應(yīng)的形參為N 則延時(shí)Nms
void Delay_Ms(uint ms) {
uint i,j;
for(i=ms;i>0;i--)
for(j=112;j>0;j--); }
? SHT11啟動(dòng)時(shí)序
void SHT11_Start()
24
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
{
SHT11_SCK=1;
SHT11_DATA=1;
Delay();
SHT11_DATA=0;
Delay();
SHT11_SCK=0;
Delay();
SHT11_SCK=1;
Delay();
SHT11_DATA=1; }
? 向SHT11發(fā)送8bite數(shù)據(jù)
void SHT11_Sendbyte(uchar dat)
{
uchar i;
SHT11_SCK=0;
Delay();
for(i=0;i<8;i++)
{
if(dat&0x80)
{
SHT11_DATA=1;
Delay();
}
else
{
SHT11_DATA=0;
Delay();
}
25
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
dat=dat<<1;
SHT11_SCK=1;
Delay();
SHT11_SCK=0;
}
}
? 檢測SHT11的響應(yīng)信號(在第九個(gè)時(shí)鐘周期)
void SHT11_Answer()
{
SHT11_SCK=1;
Delay();
while(SHT11_DATA==1);
SHT11_SCK=0;
SHT11_DATA=1;
}
? 檢測SHT11溫濕度檢測是否完畢
void SHT11_Test_Finish()
{
while(SHT11_DATA==1);
}
? “寫”程序:向SHT11的狀態(tài)寄存器設(shè)置功能,command為REG_WRITE 0x06寫
寄存器,dat為設(shè)置SHT11的功能,可以設(shè)置檢測的數(shù)據(jù)位數(shù)
void SHT11_Write_Register(uchar command ,uchar dat)
{
SHT11_Start();
SHT11_Sendbyte(command);
SHT11_Answer();
SHT11_Sendbyte(dat);
SHT11_Answer();
}
26
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
? “讀”程序:ommand為REG_READ 0x07//讀寄存器,返回值為狀態(tài)寄存器的值。位6顯示當(dāng)前檢測完一次數(shù)據(jù)后電源供電情況:當(dāng)位6為0時(shí)表明VDD>2.47V 當(dāng)位6為1時(shí)表明VDD<2.47V即電量不足。位0表明當(dāng)前的測量分辨率:當(dāng)位0為1時(shí)表明測
濕度 12位溫度,當(dāng)位0為0時(shí)表明測量精度:12位濕度 14位溫度 ,量精度:8位/
默認(rèn)為0
uchar SHT11_Read_Register(uchar command)
{
uchar dat;
SHT11_Start();
SHT11_Sendbyte(command);
SHT11_Answer();
dat=SHT11_Receivebyte();
SHT11_End();
return(dat);
}
? 設(shè)置SHT11檢測功能,并返回相應(yīng)的檢測結(jié)果:command形參用于設(shè)定溫度檢測還是濕度檢測,time形參用于設(shè)定檢測過程中的等待時(shí)間,以確定檢測結(jié)果的位數(shù)11ms/55ms/210ms 分別對應(yīng)8位/12位/14位
uint SHT11_Measure(uchar command,uchar time)
{
uint dat=0;
uchar data_high,data_low;
SHT11_Start();
SHT11_Sendbyte(command);
SHT11_Answer();
Delay_Ms(time);
SHT11_Test_Finish();
data_high=SHT11_Receivebyte();
MCU_Answer();
data_low=SHT11_Receivebyte();
27
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
SHT11_End();
dat=(dat|data_high);
dat=(dat<<8)|data_low;
return(dat);
}
? 將檢測到的數(shù)據(jù)轉(zhuǎn)化為相應(yīng)的溫度數(shù)據(jù):溫度轉(zhuǎn)換公式--T=d1+d2*Sot,公式中
的參數(shù)d1=-40,d2=0.01適用于14位測量精度
float SHT11_Convert_Tempeture14bit(uint dat)
{
float tempeture1;
tempeture1=-40+0.01*dat;
if(tempeture1>100.0)
{
flag_tempeture=1;
}
else if(tempeture1<0.0)
{
flag_tempeture=1;
}
else
{
flag_tempeture=0;
}
return(tempeture1);
}
? 將檢測到的數(shù)據(jù)轉(zhuǎn)化為相應(yīng)的濕度數(shù)據(jù):相對濕度轉(zhuǎn)換公式
RHline=C1+C2*SOrh+C3*SOrh*SOrh,
RHtrue=(tempeture-25)*(t1+t2*SOrh)+RHline
式中參數(shù)C1=-4,C2=0,0405,C3=-0.0000028,t1=0.01,t2=0.00008;適用于12位測
量精度
28
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
float SHT11_Convert_Humidity12bit(uint dat,float temp)
{
// float RHline,RHtrue;
RHline=-4+0.0405*dat-0.0000028*dat*dat;
RHtrue=(temp-25)*(0.01+0.00008*dat)+RHline;
if(RHtrue<10.0)
{
flag_humidity=1;
}
else
{
flag_humidity=0;
}
return(RHtrue);
}
29
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
4、DS1302時(shí)鐘芯片
DS1302是Dallas公司推出的高性能低功耗涓流充電時(shí)鐘芯片。可通過簡單的串行接口與單片機(jī)進(jìn)行通信,光感應(yīng)用于智能儀器、單片機(jī)系統(tǒng)和家用時(shí)鐘電路等領(lǐng)域。 4.1 DS1302時(shí)鐘芯片的簡介
DS1302涓流充電計(jì)時(shí)芯片包含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它通過一
[8]個(gè)簡單的串行接口與微處理器進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷提供秒,分鐘,小時(shí),周,日期,月份和年的有關(guān)信息。對于少于31天的月份,每月月底的日期是自動(dòng)調(diào)整的,包括對瑞年進(jìn)行更正,時(shí)鐘運(yùn)行可采用24小時(shí)制或帶AM/PM指示的12小時(shí)制。
RST同步串行通信簡化了DS1302與微處理的接口。與時(shí)鐘/RAM通信只需三根線:、I/O(數(shù)據(jù)線)及SCLK(串行時(shí)鐘)。時(shí)鐘/RAM數(shù)據(jù)的讀/寫以每次一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的多字節(jié)模式傳輸。DS1302設(shè)計(jì)為低功耗工作,保持?jǐn)?shù)據(jù)和時(shí)鐘信息的功耗小于uF。 1
4.2 引腳
DS1302的引腳(引腳圖如圖4-1所示)及功能簡介如下:
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BE0.tmp.png
圖4-1 DS1302引腳圖
第1、2腳:Vcc1、Vcc2電源。
RST第3腳:復(fù)位輸入端。
30
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
第4腳:串行時(shí)鐘輸入端。
第5腳:數(shù)據(jù)輸入/輸出端。
第6、7腳:X1、X2是32.768kHz晶振輸入/輸出端。
4.3 命令字節(jié)
表4-1所示為命令字節(jié)格式。命令字節(jié)啟動(dòng)每個(gè)字節(jié)的數(shù)據(jù)傳輸。該MSB(第7位)必須為邏輯1.如果是0,寫入DS1302操作將被禁用。第6位是邏輯1時(shí)指定RAM數(shù)據(jù)。第1至第5位規(guī)定特定寄存器作為輸入還是輸出。LSB(第0位)如果是邏輯0,指定一個(gè)寫操作(輸入);如果是邏輯1,執(zhí)行一個(gè)讀操作。命令字節(jié)總是從LSB(第0位)輸入。
表4-1 DS1302命令字節(jié)
7 6 5 4 3 2 1 0
RAM RD
1 A4 A3 A2 A1 A0
SCLK W
RST(1)及時(shí)鐘控制
RSTRSTRST驅(qū)動(dòng)輸入高電平可啟動(dòng)所有的數(shù)據(jù)傳輸。輸入起到兩種功能:第一,
RST啟動(dòng)控制邏輯,允許地址/字節(jié)序列訪問移位寄存器。第二,信號提供了一種終止單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?
一個(gè)時(shí)鐘周期是一個(gè)上升沿序列,緊跟著下降沿。對于數(shù)據(jù)輸入,在時(shí)鐘周期的上
RST升沿時(shí)間,數(shù)據(jù)必須正確;在時(shí)鐘周期的下降沿,數(shù)據(jù)位輸出。如果輸入低電平所
RST有數(shù)據(jù)傳輸中止。I/O引腳變成高阻狀態(tài)。數(shù)據(jù)的傳輸如圖4-2所示。在上電時(shí),
RST必須是邏輯0,直到Vcc>2.0V.此外,當(dāng)被驅(qū)動(dòng)到邏輯1狀態(tài)時(shí),SCLK必須為邏輯0。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BE1.tmp.png
a)單字節(jié)傳送
31
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BF2.tmp.png
b) 多字節(jié)傳送
圖4-2 數(shù)據(jù)傳送時(shí)序
(2)數(shù)據(jù)輸入
繼輸入寫命令字節(jié)的8個(gè)SCLK周期后,在接下來的8個(gè)SCLK周期的上升沿輸入數(shù)據(jù)字節(jié)。如果有額外的SCLK周期,將被忽略。數(shù)據(jù)輸入從位0開始。
(3)數(shù)據(jù)輸出
繼輸入寫命令的8個(gè)SCLK周期后,在接下來的8個(gè)SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。請注意,將被傳輸?shù)牡谝粋(gè)數(shù)據(jù)位出現(xiàn)在命令字節(jié)最后一位被寫入后的第一個(gè)下降
RST沿。只要維持高電平,如有附加的SCLK的周期,將重新轉(zhuǎn)發(fā)數(shù)據(jù)字節(jié)。此操作允許連續(xù)多字節(jié)模式讀取能力。此外,I/O引腳在每個(gè)SCLK的上升沿都是三態(tài)的。數(shù)據(jù)輸出開始于第0位。
(4)多字節(jié)模式
時(shí)鐘/日歷或由十進(jìn)制存儲(chǔ)單元31(地址/命令1至5=邏輯1)尋址的RAM寄存器可以為多字節(jié)模式。如上所述,第6位指定時(shí)鐘或RAM和第0位指定讀或?qū)憽T谌諝v/時(shí)鐘寄存器的地址9至31或RAM寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)模式中,讀或?qū)戦_始于地址0的第0位。
當(dāng)在多字節(jié)模式下寫時(shí)鐘寄存器時(shí),必須按數(shù)據(jù)傳輸?shù)拇涡驅(qū)懭胧装藗(gè)寄存器。然而,當(dāng)在多字節(jié)模式寫入RAM時(shí),為了數(shù)據(jù)的傳輸,沒有必要寫入所有的31個(gè)字節(jié)。每個(gè)被寫入的字節(jié)都將被傳輸?shù)絉AM,無論31個(gè)字節(jié)是否都被寫入。
(5)DS1302內(nèi)部寄存器
DS1302內(nèi)部寄存器地址及數(shù)據(jù)分配情況如表4-2所示。
1)時(shí)鐘/日歷:時(shí)鐘/日歷包含在7個(gè)寫/讀寄存器中。數(shù)據(jù)以BCD碼形式包含在時(shí)鐘/日歷寄存器中。
2)時(shí)鐘暫停標(biāo)志:秒寄存器的第7位定義為時(shí)鐘暫停標(biāo)志。當(dāng)此位置1時(shí),時(shí)鐘振蕩器停止,DS1302進(jìn)入低功耗備用模式,電源消耗小于100nA。當(dāng)此位置0時(shí),時(shí)鐘將啟動(dòng)。初始上電狀態(tài)未定義。
3)AM-PM/12-24模式:DS1302能運(yùn)行于12小時(shí)制或24小時(shí)制模式下。小時(shí)寄存器的第7位被定義為12或24小時(shí)模式選擇位。當(dāng)其處于高電平時(shí),選擇12小時(shí)模式。
32
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
在12小時(shí)模式下,第5位是AM/PM位,其為邏輯高電平表示PM。在24小時(shí)模式下,第5位是第二個(gè)10小時(shí)位元(20-23)小時(shí)。當(dāng)12/24位被改變時(shí),小時(shí)數(shù)據(jù)一定要被重新初始化。
表4-2 DS1302的日歷、時(shí)鐘寄存器及控制字
寄存器名 命令字格式 位 內(nèi) 容
取值范圍
寫操作 讀操作 7 6 5 4 3 2 1 0
秒寄存器 80H 81H 00-59 CH 10SEC SEC
分寄存器 82H 83H 00-59 0 10MIN MIN
01-12 12/ 10
小時(shí)寄存器 84H 85H 0 HR HR
00-23 24 A/P
01-28/
日期寄存器 86H 87H 0 0 10DATE DATE
29/30/31
月份寄存器 88H 89H 01-12 0 0 0 10M MONTH
星期寄存器 8AH 8BH 01-07 0 0 0 0 0 DAY
年份寄存器 8CH 8DH 00-99 10YEAR YEAR
寫保護(hù)寄存器 8EH 8FH — WP 0
涓流充電寄存器 90H 91H — TCS DS RS
時(shí)鐘多字節(jié)寄存器 BEH BFH — —
RAM多字節(jié)寄存器 FEH FFH — —
4)寫保護(hù)位:控制寄存器的第7位是寫保護(hù)位。首7位(第0至第6位)必須為0, 讀取時(shí)始終讀0。對時(shí)鐘或RAM進(jìn)行任何操作前,第7位必須為0。當(dāng)寫保護(hù)位為高電 平時(shí),該位阻止對任何其他寄存器的寫操作。初始的上電狀態(tài)沒有定義。因此,在寫入 該器件之前,應(yīng)清除WP位。
5)涓流充電寄存器:該寄存器控制DS1302的涓流特性。涓流充電選擇(TCS)位(第 4至第7位)控制涓流充電器的選擇。為了阻止意外使能,只有1010模式使能涓流充電 器。所有其他模式都禁用涓流充電器。DS1302上電時(shí),涓流充電器被禁用。DS為二極 管選擇位,RS為電阻選擇位。
6)時(shí)鐘/日歷多字節(jié)模式:該時(shí)鐘/日歷命令字節(jié)指定多字節(jié)觸發(fā)模式操作。在此
33
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
模式下,首8個(gè)時(shí)鐘/日歷寄存器可以從地址0的第0位開始被連續(xù)地讀取或?qū)懭搿.?dāng) 指定寫時(shí)鐘/日歷多字節(jié)模式時(shí),如果寫保護(hù)位被設(shè)置為高電平,將沒有數(shù)據(jù)傳送到8 個(gè)時(shí)鐘/日歷寄存器(包括控制寄存器)的任意一個(gè)。在多字節(jié)模式下,涓流充電器不 可用。
7)RAM:靜態(tài)RAM是RAM地址空間中連續(xù)編址的31×8字節(jié)。
8)RAM多字節(jié)模式:RAM命令字節(jié)指定多字節(jié)模式操作。在此模式下,31個(gè)RAM寄存器從地址0的第0位開始被連續(xù)讀取或?qū)懭搿?
(6)晶振的選擇
32.768kHz的晶振可通過引腳2和3(X1、X2)直接連接至DS1302。所選定的晶振應(yīng)該加一個(gè)6pF的負(fù)載電容。
(7)電源控制
Vcc1在單電源與電池供電的系統(tǒng)中提供低電源的電池備份。Vcc2在雙電源系統(tǒng)中提供主電源,此時(shí)Vcc1連接到備份電源,以便在沒有主電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。
DS1302由Vcc1 或Vcc2兩者中較大者供電。它與單片機(jī)連接后,單片機(jī)便可讀出
[9]其實(shí)時(shí)時(shí)間。連接示意圖如圖4-3所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7BF3.tmp.png
圖4-3 DS1302與AT89C51連接圖
4.4 DS1302的相關(guān)程序
DS1302的初始化、寫入數(shù)據(jù)及讀出數(shù)據(jù)的程序如下:
? DS1302的頭文件程序
sbit T_CLK=P1^5;
sbit T_IO =P1^6;
sbit T_RST=P1^7;
34
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
? DS1302讀寫程序:d 為寫入的數(shù)據(jù),無返回值 void RTInputByte(unsigned char d) {
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
{
T_IO = ACC0; //相當(dāng)于匯編中的 RRC
T_CLK = 1;
T_CLK = 0;
ACC = ACC >> 1;
}
}
? 從DS1302讀取1Byte數(shù)據(jù) (內(nèi)部函數(shù)):ACC為返回值 unsigned char RTOutputByte(void) {
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相當(dāng)于匯編中的 RRC
ACC7 = T_IO;
T_CLK = 1;
T_CLK = 0;
}
return(ACC);
}
? 往DS1302寫入數(shù)據(jù):ucAddr為 DS1302地址, ucData為 要寫的數(shù)據(jù),無返回
值void Write1302(unsigned char ucAddr, unsigned char ucDa)
35
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); // 地址,命令
RTInputByte(ucDa); // 寫1Byte數(shù)據(jù)
T_CLK = 1;
T_RST = 0;
}
? 讀取DS1302某地址的數(shù)據(jù):ucAddr為DS1302地址,ucData為讀取的數(shù)據(jù),即
返回值
unsigned char Read1302(unsigned char ucAddr)
{
unsigned char ucData;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); // 地址,命令
ucData = RTOutputByte(); // 讀1Byte數(shù)據(jù)
T_CLK = 1;
T_RST = 0;
return(ucData);
}
? 設(shè)置初始時(shí)間
void Set1302(unsigned char *pClock)
{
unsigned char i;
unsigned char ucAddr = 0x80;
Write1302(0x8e,0x00); // 控制命令,WP=0,寫操作
for(i =7; i>0; i--)
36
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
{
Write1302(ucAddr,*pClock); // 秒 分 時(shí) 日 月 星期年
pClock++;
ucAddr +=2;
}
Write1302(0x8e,0x80); // 控制命令,WP=1,寫保護(hù) }
37
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
5、液晶顯示器LCD
液晶顯示器是一種低功耗液晶顯示器件。工作電流小,適合于儀表和低功耗系統(tǒng)。常用的有筆畫型液晶顯示器、點(diǎn)陣字符型液晶顯示器和圖形點(diǎn)陣式液晶顯示器。LCD液晶顯示器的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,。有電就顯示黑色,這樣就顯示出圖形。液晶顯示器適應(yīng)于大規(guī)模電路直接驅(qū)動(dòng),易于實(shí)現(xiàn)全彩色顯示的特點(diǎn)。目前被廣泛應(yīng)用于計(jì)算機(jī),數(shù)字?jǐn)z像機(jī)等眾多領(lǐng)域。
5.1 液晶顯示器的分類
[1]液晶顯示器按顯示圖案的不同可分筆段型LCD、字符型LCD和點(diǎn)陣圖型LCD三種。
(1) 筆段型
筆段型是以長條狀作為基本單位顯示。該類型主要用于數(shù)字顯示,也可用于顯示西文字符或某些字符。這種段型顯示通常有6段、7段、8段、9段、14段和16段等,在形狀上與數(shù)碼管類似,總是圍繞數(shù)字“8”的結(jié)構(gòu)變化。其中以7段顯示器常用,常用于數(shù)字儀表、電子儀器中。
2) 字符型 (
字符型液晶顯示器是專門用來顯示英文和其他拉丁文字母、數(shù)字、符號等點(diǎn)陣型液晶顯示模塊。它一般由若干個(gè)5×8或5×11點(diǎn)陣組成,每個(gè)點(diǎn)陣顯示一個(gè)字符。這類模塊一般應(yīng)用于數(shù)字尋呼機(jī)、數(shù)字儀表等電子設(shè)備中。
(3) 點(diǎn)陣圖形型
點(diǎn)陣圖形型是在一平板上排列多行多列的矩陣式的晶格點(diǎn),點(diǎn)的大小可根據(jù)顯示清晰度來設(shè)計(jì),可顯示數(shù)字、字母、漢字、圖像,甚至動(dòng)畫。這液晶顯示器廣泛應(yīng)用于手機(jī)、筆記本電腦等需要顯示大量信息的設(shè)備中。
5.2 AMPIRE 128×64
帶中文字庫的128×64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。可以顯示8×4行16×16點(diǎn)陣的漢字. 也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn)。由該模
38
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯
示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。 在本次設(shè)計(jì)中要求顯示溫度值,濕度值的同時(shí)顯示起表明作用的“溫度”與“濕度”
兩組漢字。因此選用點(diǎn)陣圖形型的AMPIRE 128×64。它的基本特性如下: • 低電源電壓(VDD:+3.0--+5.5V);
• 顯示分辨率:128×64點(diǎn);
• 內(nèi)置漢字字庫,提供8192個(gè)16×16點(diǎn)陣漢字(簡繁體可選); • 內(nèi)置 128個(gè)16×8點(diǎn)陣字符;
• 2MHZ時(shí)鐘頻率;
• 顯示方式:STN、半透、正顯;
• 驅(qū)動(dòng)方式:1/32DUTY,1/5BIAS;
• 視角方向:6點(diǎn);
• 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10; • 通訊方式:串行、并口可選;
• 內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負(fù)壓;
• 無需片選信號,簡化軟件設(shè)計(jì);
• 工作溫度: 0? - +55? ,存儲(chǔ)溫度: -20? - +60?。 5.2.1 LCD 128×64引腳功能
AMPIRE 128×64內(nèi)置KS0108型圖形液晶模塊驅(qū)動(dòng),它的引腳功能表如表5-1所示。 邏輯工作電壓:4.5V,5.5V;
電源地(GND):0V;
工作溫度:0,60?(常溫)/-20,70?(寬溫)。
表5-1 LCD 128×64引腳功能表
引腳號 引腳名稱 電平 引腳功能描述 1 CS1/CS2 H/L 片選信號,芯片1/芯片2控制液晶左半屏/右半屏 2 GND 0V 電源地 3 V +5V 電源正 CC
4 V0 — 對比度(亮度)調(diào)整
39
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
續(xù)表
引腳號 引腳名稱 電平 引腳功能描述
RS=“H”,表示DB7,DB0為顯示數(shù)據(jù)
5 RS H/L
RS=“L”,表示DB7,DB0為顯示指令數(shù)據(jù)
R/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7,DB0
6 R/W H/L
R/W=“L”,E=“L”, DB7,DB0的數(shù)據(jù)被寫到IR或DR
7 E H/L 使能信號
8 DB0,DB7 H/L 三態(tài)數(shù)據(jù)線
9 H/L 復(fù)位端,低電平有效 RST
10 VOUT — LCD驅(qū)動(dòng)電壓輸出端 5.2.2 KS0108控制器指令功能
KS0108控制器指令功能如表4-2所示。具體分析如下:
? 讀狀態(tài)字(read status)格式:
BUSY 0 ON/OFF RESET O 0 0 0
BUSY=1:表示KS0108正在處理計(jì)算機(jī)發(fā)來的指令或數(shù)據(jù)。此時(shí)接口電路被封鎖,不能接受除狀態(tài)字以外的任何操作。BUSY=0表示KS0108接口控制電路已處于“準(zhǔn)備好”狀態(tài),等待計(jì)算機(jī)的訪問。
ON/OFF:表示當(dāng)前的顯示狀態(tài)。ON/OFF=1表示關(guān)顯示狀態(tài);ON/OFF=0表示開顯示狀態(tài)。
RESSET:表示當(dāng)前KS1008的工作狀態(tài),即反映RET端得電平狀態(tài)。當(dāng)RST為低電平狀態(tài)時(shí),KS0108處于復(fù)位工作狀態(tài),RESET=1;當(dāng)RST為高電平狀態(tài)時(shí),KS0108為正常工作狀態(tài),RESET=0。
在占領(lǐng)設(shè)置和數(shù)據(jù)讀寫時(shí)要注意狀態(tài)字中的BUSY標(biāo)志。只有在BUSSY=0時(shí),計(jì)算機(jī)對KS0108的操作才有效。因此計(jì)算機(jī)在每次對KS0108操作之前,都要讀出狀態(tài)字判斷BUSY是否為“0”。若不為“0”,則計(jì)算機(jī)需要等待,直至BUSY=0為止。
? 顯示開關(guān)(display on/off)格式:
0 0 1 1 1 1 1 D
40
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
該指令設(shè)置顯示開關(guān)/觸發(fā)器的狀態(tài),由此控制顯示數(shù)據(jù)鎖存器的工作方式,從而控制顯示狀態(tài)。
D位為顯示開/關(guān)的控制位。當(dāng)D=1為顯示設(shè)置,顯示數(shù)據(jù)鎖存器正常工作,顯示屏上呈現(xiàn)所需的效果。此時(shí)在狀態(tài)字中ON/OFF=0。當(dāng)D=0為關(guān)顯示設(shè)置,顯示數(shù)據(jù)鎖存器被清0,顯示屏呈不顯示狀態(tài),但顯示存儲(chǔ)器并沒有被破壞,在狀態(tài)組中ON/OFF=1。
? 顯示起始行設(shè)置(display start line)格式:
1 1 L5 L4 L3 L2 L1 L0
該指令設(shè)置了顯示起始行寄存器的內(nèi)容。KS0108有64行顯示的管理能力,該指令中L5,L0為顯示起始行的地址,取值在0,3FH(1,64)范圍內(nèi),它規(guī)定了顯示屏上最頂一行所對的顯示存儲(chǔ)器的行地址。如果定時(shí)間間隔地,等間距地修改(如加一或減一)顯示起始行寄存器的內(nèi)容,則顯示屏將呈現(xiàn)顯示內(nèi)容向上或向下平滑滾動(dòng)的顯示效果。
? 頁面地址設(shè)置(set page(X address))格式:
1 0 1 1 1 P2 P1 P0
該指令設(shè)置了頁面地址?X地址寄存器的內(nèi)容。KS0108將顯示存儲(chǔ)器分成了8頁,指令代碼中P2,P0就是要確定當(dāng)前所要的選擇的頁面地址,取值范圍為0,7H,代表第1,8頁。該指令規(guī)定了以后的讀/寫操作將在哪一個(gè)頁面上進(jìn)行。
? 列地址設(shè)置(set Y address)格式:
0 1 C5 C4 C3 C2 C1 C0
該指令設(shè)置了Y地址計(jì)數(shù)器的內(nèi)容,C5,C0=0,3FH(1,64)代表某一頁面上的某一單元地址,隨后的一次讀或?qū)憯?shù)據(jù)將在這個(gè)單元上進(jìn)行。Y地址計(jì)數(shù)器具有自動(dòng)加一功能,在每一次讀/寫數(shù)據(jù)后它將自動(dòng)加一,所以在連續(xù)進(jìn)行讀/寫數(shù)據(jù)時(shí),Y地址計(jì)數(shù)器不必每次都設(shè)置一次。
頁面地址的設(shè)置和列地址的設(shè)置將顯示存儲(chǔ)器單元唯一確定下來,為后來的顯示數(shù)據(jù)的讀/寫作了地址的選通。
? 寫顯示數(shù)據(jù)(write display data)該操作將8位數(shù)據(jù)寫入先前已經(jīng)確定的顯示存儲(chǔ)器的單元內(nèi),操作完成后列地址計(jì)數(shù)器自動(dòng)加一。
? 讀顯示數(shù)據(jù)(read display data)該操作將KS0108接口部的輸出寄存器內(nèi)容讀出,然后列地址自動(dòng)加一。
41
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
5.2.3 應(yīng)用說明
用帶中文字庫的128×64顯示模塊時(shí)應(yīng)注意以下幾點(diǎn):
? 欲在某一個(gè)位置顯示中文字符時(shí),應(yīng)先設(shè)定顯示字符位置,即先設(shè)定顯示地址,再寫入中文字符編碼。
? 顯示ASCII字符過程與顯示中文字符過程相同。不過在顯示連續(xù)字符時(shí),只須設(shè)定一次顯示地址,由模塊自動(dòng)對地址加1指向下一個(gè)字符位置,否則,顯示的字符中將會(huì)有一個(gè)空ASCII字符位置。
? 當(dāng)字符編碼為2字節(jié)時(shí),應(yīng)先寫入高位字節(jié),再寫入低位字節(jié)。
? 模塊在接收指令前,向處理器必須先確認(rèn)模塊內(nèi)部處于非忙狀態(tài),即讀取BF標(biāo)志時(shí)BF需為“0”,方可接受新的指令。如果在送出一個(gè)指令前不檢查BF標(biāo)志,則在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長的時(shí)間,即等待前一個(gè)指令確定執(zhí)行完成。指令執(zhí)行的時(shí)間請參考指令表中的指令執(zhí)行時(shí)間說明。?“RE”為基本指令集與擴(kuò)充指令集的選擇控制位。當(dāng)變更“RE”后,以后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位,否則使用相同指令集時(shí),無需每次均重設(shè)“RE”位。 5.2.4 LCD相關(guān)程序
? 字庫1
uchar code hzk[4][32]=
{
/*-- 文字: 濕 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x10,0x60,0x02,0xCC,0x00,0x00,0x3E,0x2A,0xAA,0x2A,0xAA,0x2A,0x3E,0x00,0x0
0,0x00,
0x08,0x08,0xFE,0x01,0x40,0x42,0x4C,0x40,0x7F,0x40,0x7F,0x48,0x44,0x42,0x40,0x0
0,
/*-- 文字: 度 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0
x00,
0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x
00,
42
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
/*-- 文字: 溫 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,
0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,
/*-- 文字: 度 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,
0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,
};
? 字庫2
uchar code num[10][16]=
{
/*-- 文字: 0 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*-- 文字: 3 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-- 文字: 4 --*/
43
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x0
0,
/*-- 文字: 5 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x0
0,
/*-- 文字: 6 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x0
0,
/*-- 文字: 7 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0
0,
/*-- 文字: 8 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x0
0,
/*-- 文字: 9 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x0
0,
};
? 檢查是否忙
void checkstate()
{
uchar dat;
RS=0;
RW=1;
do{
DATA=0x00;
EN=1;
44
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
_nop_();
dat=DATA;
EN=0;
dat=0x80&dat;
}while(!(dat==0x00));
}
? 寫命令
sendcommand(uchar com) {
checkstate();
RS=0;
RW=0;
DATA=com;
EN=1;
_nop_();
_nop_();
EN=0;
}
? 設(shè)置頁(X)地址
void setline(uchar page) {
page=0xb8|page;
sendcommand(page); }
? 設(shè)定顯示開始行
void setstartline(uchar startline)
{
startline=0xc0|startline;
sendcommand(startline); }
? 設(shè)定列(Y)地址
void setcolumn(uchar column) {
45
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
column=column&0x3f;
column=0x40|column;
sendcommand(column);
}
? 開關(guān)顯示
void setonoff(uchar onoff) {
onoff=0x3e|onoff; //onoff=0or1;
sendcommand(onoff);
}
? 寫顯示數(shù)據(jù)
void writebyte(uchar dat) {
checkstate();
RS=1;
RW=0;
DATA=dat;
EN=1;
_nop_();
_nop_();
EN=0;
}
? 選擇屏幕
void selectscreen(uchar screen) {
switch(screen)
{
case 0:cs1=0;_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;
case 1:cs1=0;_nop_();_nop_();_nop_();cs2=1;_nop_();_nop_();_nop_();break;
case 2:cs1=1;_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;
}
}
? 清屏
void clearscreen(uchar screen)
46
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
{
uchar i,j;
selectscreen(screen);
for(i=0;i<8;i++)
{
setline(i);
setcolumn(0);
for(j=0;j<64;j++)
{
writebyte(0x00);
}
}
}
? 初始化
void initlcd()
{
checkstate();
selectscreen(0);
setonoff(0);
selectscreen(0);
setonoff(1);
selectscreen(0);
clearscreen(0);
setstartline(0); }
? 顯示全角漢字
void display(uchar x,uchar y,uchar j) //在(x,y)位置顯示第J個(gè)字
{
uint i;
setline(x);
setcolumn(y);
for(i=0;i<16;i++)
{
47
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
writebyte(hzk[j]);
}
setline(x+1);
setcolumn(y);
for(i=0;i<16;i++)
{
writebyte(hzk[j][i+16]);
}
}
? 顯示數(shù)字
void displaynum(uchar x,uchar y,uchar j) //在(x,y)位置顯示第J個(gè)字
{
uint i;
setline(x);
setcolumn(y);
for(i=0;i<8;i++)
{
writebyte(num[j]);
}
setline(x+1);
setcolumn(y);
for(i=0;i<8;i++)
{
writebyte(num[j][i+8]);
}
}
48
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
6、盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì)
該系統(tǒng)包括土壤溫濕度檢測與控制系統(tǒng)和蓄水箱自動(dòng)上水系統(tǒng)兩個(gè)系統(tǒng)。 6.1 土壤溫濕度檢測與控制
土壤溫濕度檢測與控制系統(tǒng)以單片機(jī)AT89C51為控制核心,通過軟件設(shè)置達(dá)到具體動(dòng)作實(shí)現(xiàn)。土壤的溫濕度是由SHT-11數(shù)字溫濕度傳感器檢測并送入單片機(jī),通過單片機(jī)的I/O口把檢測到的土壤溫濕度值用LCD顯示出來。同時(shí),如果系統(tǒng)在智能澆水設(shè)置情況下,則該值與設(shè)定的澆水上下限值相比較,若低于下限值,則單片機(jī)發(fā)出一個(gè)控制信號控制電磁閥打開,開始澆水。若高于上限值時(shí),單片機(jī)再發(fā)出一個(gè)控制信號控制電磁閥關(guān)閉,停止?jié)菜H艄到y(tǒng)設(shè)置在手動(dòng)澆水情況下,則按照設(shè)定好的定時(shí)澆水時(shí)間以及澆水的量進(jìn)行澆水,SHT-11把檢測到的土壤溫濕度值顯示在LCD上,以達(dá)到對土壤溫濕度實(shí)時(shí)監(jiān)測的目的。具體系統(tǒng)設(shè)計(jì)框圖如圖6-1所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C03.tmp.png
圖6-1 自動(dòng)澆水系統(tǒng)設(shè)計(jì)框圖
6.1.1 硬件電路設(shè)計(jì)
土壤溫濕度檢測與控制系統(tǒng)由AT89C51單片機(jī)、SHT-11數(shù)字溫濕度傳感器、LCD顯示屏、輸入按鍵、二極管、三極管與電磁閥等組成。
在第三章中已經(jīng)介紹過數(shù)字溫濕度傳感器SHT—11采用COMSens專利傳感器技術(shù)將
2溫度濕度傳感器、A/D轉(zhuǎn)換器、數(shù)字接口、校準(zhǔn)數(shù)據(jù)存儲(chǔ)器、標(biāo)準(zhǔn)IC總線等電路全部
49
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
集成在一個(gè)芯片內(nèi),因此在與單片機(jī)連接時(shí)不需要模/數(shù)轉(zhuǎn)換器,只需要將DATA與SCK兩個(gè)引腳連接到單片機(jī)的I/O口上即可。
對于LCD顯示屏將DB0,DB7通過排阻RESPACK8連接到單片機(jī)的P0.0,P0.7上,E、R/W、RS與P2.0、P2.1、P2.2,片選CS1、CS2與P2.3、P2.4連接。
(1) 鍵盤
在單片機(jī)控制系統(tǒng)中可以通過鍵盤輸入數(shù)據(jù)或命令。鍵盤是由一組常開的按鍵組成,每個(gè)按鍵都被賦予一個(gè)代碼,稱為鍵碼。鍵碼分為編碼鍵盤和非編碼鍵盤。編碼鍵盤是通過一個(gè)編碼電路識別閉合鍵的鍵碼,非編碼鍵盤是通過軟件來識別鍵碼。由于非編碼鍵盤的硬件電路簡單,用戶可以方便的改變鍵的數(shù)量,因此在單片機(jī)系統(tǒng)中應(yīng)用廣泛。
非編碼鍵盤可以分為獨(dú)立式鍵盤和行列式鍵盤兩種結(jié)構(gòu)形式。行列式鍵盤是將I/O線的一部分作為行線,另一部分作為列線,按鍵設(shè)置在行線和列線的交叉點(diǎn)上,這種結(jié)構(gòu)形式的鍵盤適用于鍵數(shù)較多的場合,但硬件電路結(jié)構(gòu)較復(fù)雜。獨(dú)立式非編碼鍵盤中每一按鍵都獨(dú)立地占用一條數(shù)據(jù)線,當(dāng)一按鍵閉合時(shí),相應(yīng)的I/O線變?yōu)榈碗娖健H鐖D6-2所示為處于常開狀態(tài)的獨(dú)立式鍵盤,當(dāng)按鍵閉合時(shí)I/O線為低電平,當(dāng)按鍵為常態(tài)時(shí)I/O線為高電平。由于機(jī)械觸點(diǎn)的彈性作用,觸點(diǎn)在閉合和彈開瞬間的電接觸情況不穩(wěn)定,造成電壓信號的抖動(dòng),如圖6-3所示。鍵的抖動(dòng)時(shí)間一般為5,10ms。為了避免一次閉合引起的CPU多次處理,就要采用措施消除抖動(dòng)。去抖動(dòng)的方法有硬件去抖和軟件去抖兩種方法。硬件去抖一般采用雙穩(wěn)態(tài)去抖電路(如圖6-4所示)。軟件消抖方法是在CPU檢測到有鍵按下是,延時(shí)10,20ms,再次檢測該鍵電平是否仍保持閉合狀態(tài),如果保持閉合狀態(tài),則確認(rèn)有鍵按下,否則從頭檢測。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C14.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C15.tmp.png
圖6-2 按鍵輸入電路 圖6-3 電壓抖動(dòng)
50
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C25.tmp.png
圖6-4 單穩(wěn)態(tài)去抖電路
在本次設(shè)計(jì)中用到的鍵數(shù)較少,為了簡化硬件電路,選用獨(dú)立式非編碼鍵盤,并采用軟件消抖的方法來消除按鍵抖動(dòng)。
(2) 電磁閥
電磁閥(solenoid valve)使用電磁鐵操縱閥芯移動(dòng)的閥,用在工業(yè)控制系統(tǒng)中調(diào)整介子的方向、流向、速度和其他的參數(shù)。電磁閥是用電磁效應(yīng)進(jìn)行控制的,主要的控制方式由繼電器控制。這樣,電磁閥可以配合不同的電路來實(shí)現(xiàn)預(yù)期的控制。控制的精度和靈活性都能夠保證。它的工作原理是:電磁閥里有密閉的腔,在不同的位置開有通孔,每個(gè)通孔都可以通向介質(zhì)流通的通道,腔中間是閥,兩面是兩塊電磁鐵,哪面的磁鐵線圈通電閥體就會(huì)被吸到哪邊,通過控制閥體的移動(dòng)來擋住或漏出不同的介質(zhì)流通通道。
電磁閥從原理上分為三大類:
)直動(dòng)式電磁閥 1
直動(dòng)式電磁閥在通電時(shí),電磁線圈產(chǎn)生電磁力把關(guān)閉件從閥座上提起,閥門打開;斷電時(shí),電磁力消失,彈簧把關(guān)閉件壓在閥座上,閥門關(guān)閉。它的特點(diǎn)是在真空、負(fù)壓、零壓是能正常工作,通徑一般不超過25mm。
2)先導(dǎo)式電磁閥
先導(dǎo)式電磁閥在通電時(shí),電磁力把先導(dǎo)孔打開,上腔室壓力迅速下降,在關(guān)閉件周
51
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
圍形成上低下高的壓差,流體壓力推動(dòng)關(guān)閉件向上移動(dòng),閥門打開;斷電時(shí),彈簧力把先導(dǎo)孔關(guān)閉,入口壓力通過旁通孔迅速在腔室關(guān)閉件周圍形成下地上高的壓差,流體壓力推動(dòng)關(guān)閉件向下移動(dòng),關(guān)閉閥門。它的特點(diǎn)是流體壓力范圍上限較高,可任意安裝(需定制)但必須滿足流體壓差條件。
3)分布直動(dòng)式電磁閥
分布直動(dòng)式電磁閥是一種直動(dòng)和先導(dǎo)式相結(jié)合的原理結(jié)構(gòu),當(dāng)入口與出口沒有壓差時(shí),通電后,電磁力直接把先導(dǎo)小閥和主閥關(guān)閉件依次向上提起,閥門打開。當(dāng)入口與出口達(dá)到啟動(dòng)壓差時(shí),通電后,電磁力先導(dǎo)小閥,主閥下腔壓力上升,上腔壓力下降,從而利用壓差把主閥向上推開;斷電時(shí),先導(dǎo)閥利用彈簧力或介質(zhì)壓力推動(dòng)關(guān)閉件向下移動(dòng),使閥門關(guān)閉。它的特點(diǎn)是在零壓差、真空或高壓時(shí)亦能動(dòng)作,只是功率較大,要求必須水平安裝。
本次設(shè)計(jì)的是盆花的自動(dòng)澆水系統(tǒng),根據(jù)盆花每次的需水量并不大,通徑選取20mm左右就能滿足要求,而且澆水的時(shí)間遠(yuǎn)比不交水的時(shí)間長,所以應(yīng)選用常閉型,即通電打開,斷電關(guān)閉。綜上所述,在本次設(shè)計(jì)中采用常閉型的直動(dòng)式電磁閥,不僅控制電路簡單而且經(jīng)濟(jì)適用。
(4) 電路連接
5所示。具體的土壤溫濕度檢測控制系統(tǒng)硬件電路連接如圖6-
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C26.tmp.png
(a)土壤溫濕度檢測顯示電路
52
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C27.tmp.png
(b) 澆水驅(qū)動(dòng)電路
圖6-5 土壤溫濕度檢測控制電路
在澆水控制電路中,當(dāng)P1.0口輸出高電平時(shí),三極管的發(fā)射結(jié)正偏,集電結(jié)反偏,處于放大狀態(tài)。由單片機(jī)輸出的電壓經(jīng)三極管放大后驅(qū)動(dòng)電磁閥動(dòng)作。在電路中二極管作保護(hù),用以防止過電壓。
6.1.2 系統(tǒng)軟件設(shè)計(jì)
土壤溫濕度檢測與控制系統(tǒng)有自動(dòng)和手動(dòng)兩種澆水方法。通過設(shè)置鍵來選擇澆水方式,若設(shè)置鍵按下則為手動(dòng)澆水方式,否則為智能澆水方式。手動(dòng)澆水時(shí),由單片機(jī)向時(shí)鐘芯片DS1302讀取實(shí)時(shí)時(shí)間,若與設(shè)定的定時(shí)澆水的時(shí)間相符,則單片機(jī)執(zhí)行定時(shí)器/計(jì)數(shù)器0中斷程序,完成定量澆水。智能澆水時(shí),傳感器起感應(yīng)作用,當(dāng)傳感器把感應(yīng)到的土壤溫濕度信號傳給單片機(jī),由控制程序判斷是否需要進(jìn)行澆水,若需要澆水,單片機(jī)輸出高電平打開電磁閥,給植物澆水。當(dāng)澆了足量的水,傳感器感應(yīng)到后,把信號傳給單片機(jī)判斷,單片機(jī)再發(fā)出信號讓電磁閥閉合。由此,實(shí)現(xiàn)了智能澆水,澆水的上下限由程序編程時(shí)設(shè)定。
土壤溫濕度的檢測后在LCD液晶屏上顯示由定時(shí)器/計(jì)數(shù)器1中斷實(shí)現(xiàn)。
在本次設(shè)計(jì)中定時(shí)器/計(jì)數(shù)器0、1均工作在計(jì)數(shù)器方式的模式1。為方便時(shí)間計(jì)算設(shè)定中斷一次為50ms,這樣計(jì)數(shù)20次就是一秒。可以以此類推計(jì)算出所要設(shè)定的時(shí)間。
53
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
計(jì)數(shù)初值為;。 ,,,,TH,65536,50000/256,61TL,65536,50000%256,176XX
主程序和智能澆水與手動(dòng)澆水子程序如下:
main()
{
int i,j;
if (button==0) //檢測P3^0口按鍵是否按下
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(button==0)
{
hand_out();
else(button==1)
auto();
}
}
}
(1) 智能澆水子程序
對于一般花卉來講,四季的供水量是:每年開春后氣溫逐漸升高,花卉進(jìn)入生長旺期,澆水量是逐漸加多。早春澆水宜在午前進(jìn)行。夏季氣溫高,花卉生長旺盛,蒸騰作用強(qiáng),澆水量應(yīng)充足。夏季澆水宜在晨、夕進(jìn)行。立秋后氣溫漸低,花卉生長緩慢,適當(dāng)少澆水。冬季氣溫低,許多花卉進(jìn)入休眠或半休眠期,要控制澆水,盆土不太干就不要澆水,以免因澆水過多而爛根、落葉,影響明年生長開花。冬季澆水宜在午后1,2時(shí)進(jìn)行。
void auto()
{
dat=SHT11_Measure(TEM_TEST,210);//14位
tempeture1=SHT11_Convert_Tempeture14bit(dat);
dat=SHT11_Measure(HUM_TEST,55);//12位
RHtrue=SHT11_Convert_Humidity12bit(dat,tempeture1);
temp1=tempeture1;
54
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
temp2=RHtrue;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
selectscreen(2);
display(0,0,2);
display(0,16,3);
display(2,0,0);
display(2,16,1);
while(1)
{
temp1=tempeture1;
temp2=RHtrue;
displaynum(0,40,temp1%10);
displaynum(0,32,temp1/10);
displaynum(2,40,temp2%10);
displaynum(2,32,temp2/10);
if(temp2<=60)
{
b=1;
P10=b;
}
else if(temp2>=95)
55
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
{
b=0;
P10=b;
}
}
}
void time1() interrupt 1 {
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
if(count==20) //1s檢測一次
{
count=0;
dat=SHT11_Measure(TEM_TEST,210);//14位
tempeture1=SHT11_Convert_Tempeture14bit(dat);
dat=SHT11_Measure(HUM_TEST,55);//12位
RHtrue=SHT11_Convert_Humidity12bit(dat,tempeture1);
}
}
) 手動(dòng)澆水子程序 (2
在于單片機(jī)中,定時(shí)中斷0的優(yōu)先級高于定時(shí)中斷1的優(yōu)先級。當(dāng)這兩個(gè)中斷同時(shí)
發(fā)出中斷請求時(shí),單片機(jī)先響應(yīng)定時(shí)中斷0,當(dāng)ET0=0后再開始執(zhí)行定時(shí)中斷1服務(wù)子
程序。手動(dòng)澆水就是由這兩個(gè)中斷程序嵌套完成的。 void hand_out(void)
{
int n;
void WATER1(void);
56
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
void WATER2(void);
void WATER3(void);
void WATER4(void);
dat=SHT11_Measure(TEM_TEST,210);//14位
tempeture1=SHT11_Convert_Tempeture14bit(dat);
dat=SHT11_Measure(HUM_TEST,55);//12位
RHtrue=SHT11_Convert_Humidity12bit(dat,tempeture1);
temp1=tempeture1;
temp2=RHtrue;
TMOD=0x01;
TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;
ET1=1;
TR1=1;
selectscreen(2);
display(0,0,2);
display(0,16,3);
display(2,0,0);
display(2,16,1);
while(1)
{
temp1=tempeture1;
temp2=RHtrue;
displaynum(0,40,temp1%10);
displaynum(0,32,temp1/10);
displaynum(2,40,temp2%10);
57
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
displaynum(2,32,temp2/10);
n=read(0x89); //讀取DS1302的月份數(shù)據(jù)
if(3<=n<=5)
WATER1();
else if(6<=n<=8)
WATER2();
else if(9<=n<=11)
WATER3();
else if(n==1||n==2||n==12)
WATER4();
}
}
}
void WATER1(void)
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //讀取DS1302小時(shí)數(shù)據(jù)
m=read(0x83); //讀取DS1302分鐘數(shù)據(jù)
s=read(0x85); //讀取DS1302秒數(shù)據(jù)
if (c==8&&m==0&&s==0)
{
b=1;
P10=b;
icount=0; //T/C0溢出初始值
TMOD=0x01;
TH0=(65536-50000)/256; //T/C0裝載計(jì)數(shù)初值
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
58
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==12000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
else if (c==11&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==18000)
{
icount=0;
59
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
b=0;
P10=b;
ET0=0;
}
}
}
}
void WATER2(void)
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //讀取DS1302小時(shí)數(shù)據(jù)
m=read(0x83); //讀取DS1302分鐘數(shù)據(jù)
s=read(0x85); //讀取DS1302秒數(shù)據(jù)
if (c==8&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==12000)
{
icount=0;
60
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
b=0;
P10=b;
ET0=0;
}
}
}
else if (c==18&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==24000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
}
void WATER3(void)
61
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //讀取DS1302小時(shí)數(shù)據(jù)
m=read(0x83); //讀取DS1302分鐘數(shù)據(jù)
s=read(0x85); //讀取DS1302秒數(shù)據(jù)
if (c==8&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
=1; ET0
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==3000)
{
icount=0;
b=0;
P10=b;
Et0=0;
}
}
}
if (c==11&&m==0&&s==0)
{
62
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==6000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
}
void WATER4(void)
{
int h,m,s,c;
unsigned icount;
h=read(0x85); //讀取DS1302小時(shí)數(shù)據(jù)
m=read(0x83); //讀取DS1302分鐘數(shù)據(jù)
s=read(0x85); //讀取DS1302秒數(shù)據(jù)
if (c==13&&m==0&&s==0)
{
63
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==6000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
else if (c==15&&m==0&&s==0)
{
b=1;
P10=b;
icount=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
64
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
TR0=1;
While(1)
Void timeo(void) interrupter0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
icount++;
if (icount==12000)
{
icount=0;
b=0;
P10=b;
ET0=0;
}
}
}
}
6.2 蓄水箱自動(dòng)供水系統(tǒng)
蓄水箱自動(dòng)供水系統(tǒng)的控制對象為水泵,容器為蓄水箱。水位高度正常情況下控制在C、D之間,如圖6-6a所示;當(dāng)水位低于C點(diǎn)時(shí),水泵開始進(jìn)水,如圖6-6b所示;當(dāng)水位高于D點(diǎn)時(shí),水泵停止進(jìn)水,如圖6-6c所示;當(dāng)水位低于C點(diǎn)并達(dá)到B點(diǎn)時(shí)就報(bào)警,采取手動(dòng)啟動(dòng)水泵,如圖6-6d所示;當(dāng)水位高于D點(diǎn)并達(dá)到E點(diǎn)時(shí)上限報(bào)警,采取強(qiáng)制停止水泵進(jìn)水,如圖6-6e所示。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C38.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C39.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C3A.tmp.png
(a) (b) (c)
65
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C3B.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C3C.tmp.png
(d) (e)
圖6-6 設(shè)計(jì)分析示意圖
6.2.1基本的導(dǎo)電理論
電子流動(dòng)的方式可運(yùn)用于液體上。液體流過管道與電子流過一個(gè)電阻類似(如圖6-7所示)。引起電流流動(dòng)的力被稱為電動(dòng)勢EMF。電池、發(fā)動(dòng)機(jī)或電站可提供電動(dòng)勢。電池有正負(fù)極,如果在兩極之間連接導(dǎo)線則有電流流動(dòng)。水系統(tǒng)的泵作為壓力源類似于電池。在電動(dòng)勢(EMP)源的兩極測量電動(dòng)勢差為電壓,電壓高(壓力)則電流(流量)大。上水系統(tǒng)中管道和閥門產(chǎn)生的阻力類似于電流流過電路的電阻。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C4D.tmp.pngfile:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C4E.tmp.png
電壓(V)=泵壓(m揚(yáng)程)
電流(A)=流率(L/s)
電阻(Ω)=閥門流阻(kPa)
圖6-7 水循環(huán)和電路的類比
66
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
6.2.2系統(tǒng)工作原理
在本次設(shè)計(jì)中采用純硬件控制電路,利用555定時(shí)器的定時(shí)與驅(qū)動(dòng)功能制作一個(gè)性能可靠、成本低的蓄水箱自動(dòng)供水系統(tǒng)。該系統(tǒng)主要分為模擬檢測和邏輯判斷兩大塊,如圖6-8所示。模擬檢測實(shí)際上測量的是B、C、D、E四個(gè)探頭相對于A點(diǎn)(即地)電位的到底,在水箱里的四個(gè)探頭B、C、D、E各點(diǎn)和A點(diǎn)之間實(shí)際上就相當(dāng)于一個(gè)可變的電阻。當(dāng)電阻值發(fā)生變化時(shí),各點(diǎn)的位值不同,再通過邏輯判斷及可以得到不同的輸出,以達(dá)到操作控制不同的動(dòng)作。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C4F.tmp.png
圖6-8 系統(tǒng)框圖
6.2.3 系統(tǒng)硬件組成
該系統(tǒng)由導(dǎo)電率探頭,555定時(shí)器、蜂鳴器、放大器和與非門電路等組成。
(1)導(dǎo)電率探頭
對于一個(gè)盛水的開式水箱,一個(gè)探頭(金屬棒)懸吊在水箱上(如圖6-9所示),如果加載電壓而且電路上串聯(lián)電流表,可以看到:探頭浸入水中,電路有電流通過;探頭脫離水面,電流消失。
這是導(dǎo)電率探頭的基本原理,當(dāng)水位接觸了探頭尖部,就通過相連的控制器觸發(fā)一個(gè)動(dòng)作。如啟動(dòng)或停止水泵,打開或關(guān)閉閥門,觸發(fā)報(bào)警警鈴與打開或關(guān)閉繼電器等。但是一個(gè)探頭僅能提供一個(gè)單一的作用點(diǎn),因此,為了在預(yù)設(shè)的水位開關(guān)水閥和發(fā)出報(bào)警信號等就需要選擇多個(gè)長短不一的導(dǎo)電率探頭組合在一起。不過這一點(diǎn)對于導(dǎo)電率探頭是相當(dāng)易于實(shí)現(xiàn)的,因?yàn)槠湓诎惭b時(shí)可截?cái)嗟叫枰拈L度。
67
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C50.tmp.png
圖6-9 單導(dǎo)電探頭工作原理
(2)555定時(shí)器
555定時(shí)器是一種模擬和數(shù)字功能相結(jié)合的中規(guī)模集成器件,電源電壓范圍寬,可在4.5V,16V工作。它的成本低,性能可靠,只需要外接幾個(gè)電阻、電容就可以實(shí)現(xiàn)多
[16]謝振蕩器、單穩(wěn)態(tài)觸發(fā)器及施密特觸發(fā)器等脈沖產(chǎn)生與變換電路。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C60.tmp.png
圖6-10 555定時(shí)器的內(nèi)部電路框圖
555定時(shí)器的內(nèi)部電路框圖如圖6-10所示。它內(nèi)部包含兩個(gè)電壓比較器、三個(gè)等值串聯(lián)電阻、一個(gè)RS觸發(fā)器、一個(gè)放電管T及功率輸出級,并提供兩個(gè)基準(zhǔn)電壓VCC/3和2VCC/3。其引腳排列如圖6-11所示,各引腳功能如下:
引腳1—外接電源負(fù)端VSS或接地,一般情況下接地;
引腳2—低觸發(fā)端;
68
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C71.tmp.png
圖6-11 555定時(shí)器引腳圖
引腳3—輸出端V;
引腳4—直接清零端。當(dāng)該端接低電平,則時(shí)基電路不工作,此時(shí)不論、TH處于何電平,時(shí)基電路輸出為“0”,該端不用時(shí)應(yīng)接高電平。
引腳5—VC為控制電壓端。若此端外接電壓,則可改變內(nèi)部兩個(gè)比較器的基準(zhǔn)電壓,當(dāng)此端不用時(shí),應(yīng)將該端串入一只0.01uF電容接地,以防引入干擾;
引腳6—TH高觸發(fā)端;
引腳7—放電端。該端與放電管集電極相連;
引腳8—外接電源VCC,一般用5V。
555 定時(shí)器的功能主要由兩個(gè)比較器決定。兩個(gè)比較器的輸出電壓控制 RS 觸發(fā)器和放電管的狀態(tài)。在電源與地之間加上電壓,當(dāng)5腳懸空時(shí),則電壓比較器 C1的同相輸入端的電壓為 2VCC/3,C2的反相輸入端的電壓為VCC/3。若觸發(fā)輸入端TR的電壓小于VCC/3,則比較器C2的輸出為 0,可使 RS 觸發(fā)器置1,使輸出端 OUT=1。如果閾值輸入端 TH的電壓大于2VCC/3,同時(shí)TR端的電壓大于VCC/3,則C1的輸出為0,C2的輸出為1,可將RS觸發(fā)器置0,使輸出為0電平。根據(jù)555定時(shí)器的控制功能,可以制成各種不同的脈沖信號與處理電路,例如:施密特觸發(fā)器、單穩(wěn)態(tài)觸發(fā)器、自激多諧振蕩器等。其控制功能說明見表6-1。
69
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
表6-1 555定時(shí)器控制功能表
輸入 輸出
TH TR R V DdOis
× × L L 導(dǎo)通
,2V/3 ,V/3 H H 截止 CCCC
,2V/3 ,V/3 H 不變 不變 CCCC
,2V/3 × H L 導(dǎo)通 CC
(3)蜂鳴報(bào)警器
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,它主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。
電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性的振動(dòng)發(fā)聲。
壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成,當(dāng)接通電源后(1.5,15V 直流工作電壓),多諧振蕩器起振,輸出1.5,2.5KHZ的音頻信號,阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。
本次系統(tǒng)設(shè)計(jì)中采用的是電磁式蜂鳴器。蜂鳴片與555定時(shí)器通過一個(gè)三極管連接,通過555定時(shí)器的控制功能,使三極管周期性的導(dǎo)通從而使蜂鳴器振動(dòng)發(fā)聲。
6.2.4 系統(tǒng)電路連接
蓄水箱供水系統(tǒng)的硬件連接圖如圖6-12所示,包括水位監(jiān)測電路,誤動(dòng)作判斷電路,水位控制電路,電機(jī)開啟或關(guān)閉和報(bào)警電路。
從圖中可以看出,水位正常情況下應(yīng)該保持在C、D范圍之間,此時(shí),B、C、D、E 4個(gè)探頭的邏輯電平為0011,水箱水位處于保持狀態(tài);當(dāng)水位低于C點(diǎn),處于B、C之間時(shí),B、C、D、E 4個(gè)探頭的邏輯電平為0111,水箱水位處于進(jìn)水狀態(tài);當(dāng)水位高于D點(diǎn),處于D、E之間時(shí),B、C、D、E 4個(gè)探頭的邏輯電平為0001,
70
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
水箱水位處于停進(jìn)狀態(tài);當(dāng)水位低于B點(diǎn)或高于E點(diǎn),B、C、D、E 4 個(gè)探頭的邏輯電平為1111或0000時(shí),表明控制水位變化的電路出現(xiàn)了故障,水箱水位報(bào)警電路開始工作,產(chǎn)生下限報(bào)警或上限報(bào)警,即低報(bào)或高報(bào),此時(shí),需要人工手動(dòng)關(guān)閉報(bào)警設(shè)備并啟動(dòng)或閉合控制電機(jī)。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C72.tmp.png
圖6-12 蓄水箱供水系統(tǒng)的硬件連接圖
6.2.5 參數(shù)計(jì)算
水位指示燈部分令流過三極管T1、T2、T3、T4集電極的電流I為10mA,由: C
,,I,V,1.5/R,10mA, CCCC
RI,I/,,10mA/100,0.1mAR,V/I,10得=350Ω;取β=100,則因此KΩ。CBCBCCB
R但是在實(shí)際調(diào)試中,電阻值過小,所以選擇=15KΩ。 B
6.2.6 水箱水位控制系統(tǒng)檢測
水箱水位控制系統(tǒng)的測試,圖6-13是水箱水位控制系統(tǒng)的外觀正視圖,由電源指示燈、報(bào)警確認(rèn)燈、水位指示燈及報(bào)經(jīng)確認(rèn)開關(guān)組成。接通電源時(shí),電源指示燈亮,當(dāng)水箱中水深處于不同位置時(shí),水位指示燈B、C、D、E狀態(tài)不同,各狀態(tài)如下:
71
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
(1)當(dāng)水位處于B點(diǎn)之下,指示燈B、C、D、E全亮,報(bào)警電路開始報(bào)警,即下限 報(bào)警;
(2)當(dāng)水位處于B、C之間,指示燈B滅,C、D、E亮,水泵開始進(jìn)水;
(3)當(dāng)水位處于C、D之間,指示燈B、C滅,D、E亮,保持狀態(tài),即保持進(jìn)水;
(4)當(dāng)水位處于D、E之間,指示燈B、C、D滅,E亮,停進(jìn)狀態(tài),即水泵不工作;
(5)當(dāng)水位處于E點(diǎn)之上,指示燈B、C、D、E全滅,水泵不工作,報(bào)警電路開始 溢出報(bào)警,集上限報(bào)警。
報(bào)警電路可以手動(dòng)關(guān)閉,只要按下報(bào)經(jīng)確認(rèn)開關(guān),就可以解除報(bào)警的蜂鳴聲。此時(shí),報(bào)經(jīng)確認(rèn)燈亮起。處理完故障時(shí),必須關(guān)閉報(bào)警確認(rèn)燈,報(bào)警電路復(fù)位,恢復(fù)其檢測故障的功能。經(jīng)過檢測,水箱水位控制器符合設(shè)計(jì)的預(yù)定要求。
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C73.tmp.png
圖6-13 水箱水位控制系統(tǒng)的外觀正視圖
此方案采用純硬件電路設(shè)計(jì),避免了軟件程序設(shè)計(jì)中的不穩(wěn)定因素,提高了實(shí)際運(yùn)用中的可靠性。
72
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
7、總結(jié)
本次設(shè)計(jì)的盆花自動(dòng)澆水系統(tǒng)以電子類的自動(dòng)澆花器的工作原理為參考,運(yùn)用現(xiàn)代傳感器技術(shù)及單片機(jī)控制技術(shù)構(gòu)成一個(gè)土壤溫濕度采集與控制系統(tǒng)。再用數(shù)字電路控制自動(dòng)給水系統(tǒng)及時(shí)的給澆水系統(tǒng)供水。整個(gè)盆花自動(dòng)澆水系統(tǒng)包括土壤溫濕度的檢測和顯示、自動(dòng)澆水和蓄水箱自動(dòng)上水及水位報(bào)警三個(gè)部分。土壤溫濕度的檢測和顯示以溫濕度傳感器SHT-11為感應(yīng)部件,將檢測到的土壤溫濕度值送入AT89C51單片機(jī),再由單片機(jī)的I/O口輸出到LCD液晶顯示屏進(jìn)行顯。同時(shí)此濕度值也是是否給盆花澆水的參考值。自動(dòng)澆水部分與土壤溫濕度的檢測和顯示部分共同構(gòu)成土壤溫濕度的檢測與控制系統(tǒng)。它設(shè)計(jì)為智能和手動(dòng)兩個(gè)部分:智能澆水部分是通過單片機(jī)程序設(shè)定澆水的上下限值并與SHT-11送入單片機(jī)的土壤濕度值相比較,當(dāng)傳感器檢測到的濕度值低于設(shè)定的下限值時(shí),單片機(jī)輸出一個(gè)信號控制電磁閥打開,開始澆水,高于設(shè)定的上限值時(shí)再由單片機(jī)輸出一個(gè)信號控制電磁閥關(guān)閉,停止?jié)菜?手動(dòng)部分是由單片機(jī)從時(shí)鐘芯片DS1302讀入月份與每天的實(shí)時(shí)時(shí)刻,通過軟件程序設(shè)定定時(shí)澆水的時(shí)間與澆水的量。蓄水箱自動(dòng)上水及水位報(bào)警采用純硬件電路控制,實(shí)現(xiàn)水箱水位實(shí)時(shí)監(jiān)測、自動(dòng)上水以及水位上下限報(bào)警的功能。
通過本次畢業(yè)設(shè)計(jì),讓我進(jìn)一步了解了微電腦控制的智能系統(tǒng)。也使我真正接觸到了檢測控制系統(tǒng)的設(shè)計(jì),雖然是一個(gè)人們?nèi)粘I钪械男∠到y(tǒng),但也讓我明白了很多設(shè)計(jì)上應(yīng)該注意的問題。比如實(shí)用性、經(jīng)濟(jì)性以及安裝條件等。
73
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
8、致謝
經(jīng)過近三個(gè)月的時(shí)間,本次畢業(yè)設(shè)計(jì)已接近尾聲。在這個(gè)過程中我遇到了許多的困難,有專業(yè)知識的不連貫,也有硬件選擇時(shí)的實(shí)踐經(jīng)驗(yàn)不足等。不過,在老師和同學(xué)的幫助下,這些問題都得到了很好的解決。在這里,我要感謝指導(dǎo)老師趙彥如副教授在我做畢業(yè)設(shè)計(jì)的每個(gè)階段,從查閱資料到設(shè)計(jì)草案的確定和修改,中期檢查,后期詳細(xì)設(shè)計(jì)等整個(gè)過程中所給予我悉心指導(dǎo)。感謝測控教研室的每一位老師對我的幫助。同時(shí)也要感謝我的同學(xué)將收集到的有關(guān)盆花自動(dòng)澆水系統(tǒng)的資料給我,讓我的設(shè)計(jì)有了更多的參考。
74
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
參考文獻(xiàn)
[1] 李泉溪.單片機(jī)原理與應(yīng)用實(shí)例仿真[M].北京:北京航空航天大學(xué)出版社,2009.8. [2] 曾光宇等.現(xiàn)代傳感器技術(shù)與應(yīng)用基礎(chǔ)[M].北京:北京理工大學(xué)出版社,2006.3. [3] 李敏,孟臣.數(shù)字式溫/濕度傳感器及其應(yīng)用技術(shù)[J].電子元器件應(yīng)用,2004,(11). [4] 楊永杰,馮軍.數(shù)字式溫濕度傳感器SHT11在塵埃檢測儀中的應(yīng)用[J].電子工程師,2005,(08). [5] 孫榮高,孫德超.數(shù)字溫濕度數(shù)據(jù)記錄儀的設(shè)計(jì)[J].現(xiàn)代電技術(shù),2005,(7). [6] 黃鴻,吳石增.傳感器及其應(yīng)用技術(shù)[M].北京:北京理工大學(xué)出版社,2008.7. [7] 劉燦軍.實(shí)用傳感器[M].北京:國防工業(yè)出版社,2004.6.
[8] 王煜東.傳感器應(yīng)用電路400例[M].北京:中國電力出版社,2008.
[9] 孫惠芹.單片機(jī)項(xiàng)目設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2009.6. [10]賈宗璞,許合利.C語言程序設(shè)計(jì)[M].徐州:中國礦業(yè)大學(xué)出版社,20007.1. [11]唐文彥.傳感器[M].北京:機(jī)械工業(yè)出版社,2006.7.
[12]宗光華,李大寨.多單片機(jī)系統(tǒng)應(yīng)用技術(shù)[M].北京:國防工業(yè)出版社,2003.10. [13]王芳琴.單片機(jī)控制的節(jié)水灌溉系統(tǒng)的研究[J].華中農(nóng)業(yè)大學(xué).
單片機(jī)原理及實(shí)驗(yàn)/實(shí)訓(xùn)[M].西安:西安電子科技大學(xué)出版社,2009. [14]趙振德.
[15]頂軻軻.自動(dòng)測量技術(shù)[M].北京:中國電力出版社,2004.
[16]艾永樂,付子儀.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:中國電力出版社,2008. [17]孫榮高,呂昂.微控制器溫室環(huán)境溫濕度程序控制系統(tǒng)的研究與設(shè)計(jì)[J].微計(jì)算機(jī)信息,2005,(10).
序號 名稱 規(guī)格型號 單位 數(shù)量 備注 一 制冷系統(tǒng) 1 壓縮機(jī)組 4AV10 臺 4 2 冷凝器 LN-70 臺 1 3 貯氨器 ZA-1.5 臺 1 4 桶泵組合 ZWB-1.5 臺 1 5 氨液分離器 AF-65 臺 1 6 集油器 JY-219 臺 1 7 空氣分離器 KF-32 臺 1 8 緊急泄氨器 JX-108 臺 1 9 冷風(fēng)機(jī) KLL-250 臺 8 10 冷風(fēng)機(jī) KLD-150 臺 4 11 冷風(fēng)機(jī) KLD-100 臺 2 12 閥門 套 86 13 電磁閥 套 6
75
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
14 管道及支架 噸 18.6 3 15 管道及設(shè)備保溫 m22 16 管道保溫包扎 鍍鋅板 噸 1.6 17 附件 套 1 二 氣調(diào)系統(tǒng) 1 中空纖維制氮機(jī) CA-30B 臺 1 2 二氧化碳洗滌器 GA-15 臺 1 3 氣動(dòng)電磁閥 D100 臺 14 4 電腦控制系統(tǒng) CNJK-406 臺 1 5 信號轉(zhuǎn)換器 8線 臺 1 6 果心溫度探頭 臺 7 37 庫氣平衡袋 5 m 個(gè) 7 8 庫氣安全閥 液封式 個(gè) 7 9 小活塞空壓機(jī) 0.05/7 臺 1 10 PVC管 套 1 11 附件 套 1 三 水冷系統(tǒng) 1 冷卻塔 DBNL-100 臺 2 3
2 水泵 SBL80-160I 臺 2 3 水泵 SBL50-160I 臺 2 4 閥門 套 30 5 管道及支架 噸 2.8 6 附件 套 1 四 電儀控系統(tǒng) 1 電器控制柜 套 1 2 照明系統(tǒng) 套 1 3 電線電纜 套 1 4 橋架管線 套 1 5 附件 套 1
76
河南理工大學(xué) 2011畢業(yè)設(shè)計(jì)說明書
file:///C:\Users\abc\AppData\Local\Temp\ksohtml\wps7C84.tmp.png
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |