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