智能家居系統(tǒng)畢業(yè)設計.doc
《智能家居系統(tǒng)畢業(yè)設計.doc》由會員分享,可在線閱讀,更多相關(guān)《智能家居系統(tǒng)畢業(yè)設計.doc(48頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、智能家居控制系統(tǒng)(軟件)設計摘 要 本文通過對現(xiàn)有的家居智能控制系統(tǒng)功能以及實際情況分析,設計了一種安全、實用、方便的智能家居控制系統(tǒng)。本文首先闡述了智能家居控制系統(tǒng)的研究狀況和發(fā)展現(xiàn)狀,以及一般家居控制系統(tǒng)所要檢測的物理量。根據(jù)家居控制系統(tǒng)常用的檢測信號類型,選取了紅外信號、溫度信號、光線強度信號和密碼輸入等作為本設計的檢測依據(jù)。本設計選取紅外信號、溫度信號和光線強度信號作為監(jiān)測信號。密碼驗證是否通過作為整個電路是否工作的依據(jù)。當密碼驗證通過之后,整個系統(tǒng)同時監(jiān)測紅外信號、溫度信號和光線強度信號,紅外信號達到閾值則開始報警。溫度信號實時顯示。光線強度信號控制步進電機的動作。關(guān)鍵字:智能控制;
2、光強度;紅外;溫度;步進電機Intelligent home control system (software) designAbstract Smart home control systems also emerged. This paper designs a practical and convenient smart home control system based on the existing smart home control system and the actual situation.This paper describes the intelligent home
3、control system research and development, as well as detected physical signals of the home control system. This design chooses the infrared signal, the temperature signal, the light intensity signal and the password input signals as the detection signal types.The design selected infrared signal, the
4、temperature signal and the light intensity signal as the monitoring signals. Password authentication is as the basis situation if the circuit works. When password authentication is passed, the entire system monitors the infrared signal, the temperature signal and the light intensity signal. The syst
5、em alarms when the infrared signal reaches the threshold. Temperature signal real-time displays on the LCD1602. Light intensity signal controls the stepper motor movements.Keywords: intelligent control; light intensity; infrared technology; temperature control; stepper motor II 目 錄1 緒 論11.1 課題背景及研究意
6、義11.2 智能家居控制系統(tǒng)的發(fā)展概況21.3 本設計研究的主要內(nèi)容22 智能家居控制系統(tǒng)的總體介紹32.1 整體系統(tǒng)的原理32.2 系統(tǒng)各個模塊介紹32.2.1 系統(tǒng)中ADC0832的介紹32.2.2 電機驅(qū)動電路介紹42.2.3 矩陣鍵盤電路介紹42.2.4 聲光報警電路介紹53 智能家居控制系統(tǒng)的軟件設計63.1 系統(tǒng)功能結(jié)構(gòu)圖63.2 軟件設計主程序63.3 軟件系統(tǒng)構(gòu)成83.4 顯示子程序83.5 溫度數(shù)據(jù)讀取程序93.6 中斷程序113.7 光線檢測與步進電機控制子程序113.8 報警條件子程序124 智能家居控制系統(tǒng)軟件調(diào)試環(huán)境與分析結(jié)果144.1 開發(fā)環(huán)境簡介144.1.1 編
7、程軟件介紹144.1.2 程序的工程建立144.2 程序的調(diào)試154.2.1 主程序的調(diào)試154.3 調(diào)試結(jié)果展示165 結(jié)論及展望18附錄一 程序清單19附錄二 實物圖43參考文獻44致 謝45IIII1 緒 論1.1 課題背景及研究意義 在信息化技術(shù)日益發(fā)展的21世紀的世紀,各種電子和互聯(lián)網(wǎng)新技術(shù)是了人類文明的取得巨大進步主要途徑。而智能化家居控制系統(tǒng)的出現(xiàn)使得人們可以通過手機或者互聯(lián)網(wǎng)互聯(lián)網(wǎng)絡在任何時候、任何地方遠程的對家中的任何電器(空調(diào)、加熱器、電飯煲、燈光、音響、DVD影碟機)進行控制;也可以在下班途中,讓熱水器提前燒好熱水、預先將家中的空調(diào)機打開、讓電飯煲煮好香噴噴的米飯而這一切
8、都僅僅只需要輕輕的點幾下鼠標鍵盤,或者打一個簡單的電話就能夠?qū)崿F(xiàn)。此外,還有些家庭可以通過智能家居系統(tǒng)對家里的東西具有遠程監(jiān)聽、多途徑報警、數(shù)字留言等多種便捷功能。現(xiàn)今追求舒適、時尚和便捷的家居生活是社會進步的日趨表現(xiàn),因為系統(tǒng)可以能夠在不改變家中任何家電的情況下,遠程的控制家中的電器、燈光、電源及家里環(huán)境,使人們可以方便的快捷的生活。現(xiàn)今我們常用的密碼鎖是一種利用輸入密碼的正確與否判斷與他相聯(lián)系的機械開關(guān)的閉合的電子產(chǎn)品。由于他的嚴密性和可靠性,使它的種類很多。有基于芯片的性價 比較高的產(chǎn)品,也有簡易方便的電子產(chǎn)品。通過密碼鎖的加入可以防止一些設備被非法開啟。提供安全性。 隨著社會信息化技術(shù)
9、的不斷更新,紅外傳感技術(shù)也隨之前進。目前已在多個領(lǐng)域發(fā)揮它巨大的作用。紅外不是可見光,具有良好的隱蔽性,白天和夜里都能用,而且抗干擾能力強,我們利用紅外線的特性來制作功能性器件,所以主要被用來制作防盜報警系統(tǒng)。我們?yōu)榱朔乐股鐣先找娣簽E的偷盜現(xiàn)象,常將紅外技術(shù)運用各大商場、博物館及有關(guān)嚴密的場所。而本設計綜合研究了現(xiàn)有的光電防盜報警裝置的優(yōu)缺點,本身具有實用性強、安裝操作簡易,價格低廉,誤報率低等特點,并且在其原有基礎上進行設計的。設計通過查找資料,采用紅外對沖管的無線發(fā)射與接收來控制是否進入報警模式,通過紅外線判讀信號,通過電路傳輸給并由89C52單片機進行處理,所以報警電路是否進行觸發(fā)將由
10、單片機根據(jù)檢測模塊輸入的信號來決定。 現(xiàn)代家居生活是追求舒適、方便的自動化的生活。而自動窗簾可是我們的生活發(fā)生實質(zhì)性變化,利用全自動窗簾的感應基礎是根據(jù)日照光線和溫度來控制的,設計時可以預先設定的光線強度和溫度,用來自動開啟窗簾和關(guān)閉窗簾; 溫度是人們?nèi)粘I钪薪?jīng)常遇到的一個基礎變量,現(xiàn)今市場上能測量溫度值的傳感器有很多種,很多控制系統(tǒng)對溫度的測量也是的功能之一。而本設計中運用的是經(jīng)典的溫度傳感器DS18B20來檢測溫度。1.2 智能家居控制系統(tǒng)的發(fā)展概況 我國的智能家居技術(shù)共歷經(jīng)了概念、研發(fā)、實驗、推廣以及普及四個大階段,大概時間是從2000年的概念年到2007年普及年之間的7年左右的時間。
11、由于硬件和軟件間的協(xié)調(diào)有很大的困難,所以我們中國在推行智能化家居的難度更加之大。這些問題在國外往往需要更長的時間來完成。而自2003年開始的實驗,一些國外的成熟的智能家居計算開始流向中國,這就給我的研發(fā)及實驗帶來了非常之大的幫助,極大地縮短了時間,是我們在追趕國外的步伐更加迅速。在隨后的兩年里,我國的智能家居技術(shù)與歐美國家相比差距并不大,只是國外的相關(guān)技術(shù)的種類非常多,這是我們國家所不能比的。例如:微軟公司開發(fā)的“夢幻之家”IBM公司開發(fā)的“家庭主任”等均以完善而且成熟的技術(shù)強占了大部分家居市場。自2008年奧運會開始,我國的智能化家居技術(shù)已經(jīng)在整個家具市場上占有很大的比重,而國外的智能化技術(shù)
12、由于不適應中國認得生活方式所以占到的比例反而小了許多。相比較而言,智能化家居更能體現(xiàn)出科技的力量在我們生活中的重要性。很難再預測在2016年的時候,全球化的智能家居技術(shù)將達到怎樣的地步,但是可以清楚家居智能化正在走進千家萬戶。1.3 本設計研究的主要內(nèi)容 本設計的內(nèi)容主要是基于89C51單片機的智能家居控制系統(tǒng),利用單片機獲取各個傳感器的數(shù)據(jù)并處理,從而執(zhí)行相應的控制與有關(guān)功能。設計中采用模塊化設計原則,利用多種集成傳感器芯片,將硬件模塊和軟件系統(tǒng)相組合,初步設計了一個簡易的智能控制系統(tǒng),并可以完成簡單的防盜報警、溫度顯示、自動控制等功能。根據(jù)設計原則,設計中選用性能價格比較高的單片機STC8
13、9C52。溫度數(shù)據(jù)的采集系統(tǒng),本設計中選用DS18B20這一典型的溫度傳感器。而對于距離的感應,設計方案選用了紅外傳感器。本文通過對光線的檢測是采用光敏電阻與模數(shù)轉(zhuǎn)換ADC0832相結(jié)合的方案。之外還可以對步進電機進行控制。為了滿足密碼功能,用液晶屏LCD1602和矩陣鍵盤來完成密碼驗證功能。當密碼輸入錯誤或是紅外的遮擋時間大于閾值時,啟動報警電路來報警。本文個章節(jié)安排如下: 第一章緒論,主要分析課題提出的背景意義,及智能家居系統(tǒng)的發(fā)展概況。 第二章是本文對系統(tǒng)硬件部分的簡單介紹。 第三章家居智能控制系統(tǒng)的軟件部分的設計,對系統(tǒng)主程序與子程序的流程圖的設計 進行分析論述。第四章是調(diào)試部分,介紹
14、編程環(huán)境與分析軟件可能出現(xiàn)的問題,進一步提高軟件的操作行。第五章是結(jié)論部分,總結(jié)了本設計的成果意義,并對本課題的相關(guān)展望。2 智能家居控制系統(tǒng)的總體介紹2.1 整體系統(tǒng)的原理 一個完美的家居控制系統(tǒng)可以提供一個家用電器的控制,照明控制,窗簾控制,電話遠程控制,室內(nèi)和室外的遠程控制,防盜報警,并為你的各種編程時間控制功能和方法。本系統(tǒng)設計充分利用了已軟件代替有關(guān)硬件進行設計的原理。在設計中為了簡化處理,對于家居系統(tǒng)中幾個關(guān)鍵的量進行處理。家居室內(nèi)溫度和光線強度是舒適度的一個重要指標,本系統(tǒng)中對溫度進行實時檢測和顯示,對光線值實時檢測并通過步進電機來控制窗簾自動調(diào)整室內(nèi)的光線強度。除了溫度和光線強
15、度的檢測為,本系統(tǒng)還可以滿足簡易的防盜防盜功能。通過密碼驗證避免非法啟用設備,通過紅外檢測可以避免人員非法進入。整個系統(tǒng)的總體原理框圖如圖2-1所示。 圖2-1 智能控制系統(tǒng)總體原理框圖2.2 系統(tǒng)各個模塊介紹 2.2.1 系統(tǒng)中ADC0832的介紹經(jīng)過ADC0832模數(shù)轉(zhuǎn)換之后,單片機讀的數(shù)據(jù)就是光敏電阻上的分壓值。單片機對讀到的數(shù)據(jù)判斷就可以知道當前光線強度的情況了從而提高轉(zhuǎn)換的寬度。因為ADC0832有兩個通道,本設計中只需要對分壓值進行判斷,所以選用其中一路就可以了。有關(guān)資料表明,選用CH0通道,將CH1通道懸空,作為單通道模擬信號輸入時ADC0832的輸入電壓是05V且8位分辨率時的
16、電壓精度為19.53mV。而如果是由IN+與IN-輸入的輸入時,可以將電壓值設定在某一個較大范圍之內(nèi),使其上下浮動。但值得注意的是,在進行IN+與IN-的輸入時,如果IN+的電壓小于IN-的電壓則轉(zhuǎn)換后的數(shù)據(jù)結(jié)果始終是00H。從圖上可以看出,光敏電阻R9與電阻R8構(gòu)成分壓電路。光線強度會改變R9的阻值,當R9的阻值發(fā)生變化之后,R9上的電壓值隨之改變,而模數(shù)轉(zhuǎn)換器ADC0832的2管腳CH0上的電壓值也跟著改變。光敏電阻控制電路部分的原理圖如圖2-2。 圖2-2 光敏電阻控制電路原理圖 2.2.2 電機驅(qū)動電路介紹由于驅(qū)動步進電機需要較大的功率,所以單片機輸出接口需要通過ULN2003放大再連
17、接到相應的電機接口用于帶動電機的轉(zhuǎn)動。步進電機的電路圖如圖2-3所示。圖2-3中,J2是步進電機的接口。R4R7是串聯(lián)限流電阻。圖2-3 步進電機驅(qū)動電路圖 2.2.3 矩陣鍵盤電路介紹在本設計中,當處于密碼處于輸入狀態(tài)時,通過鍵盤輸入密碼,可以通過LCD顯示輸入時的密碼狀態(tài)。在正常工作狀態(tài)下,LCD顯示實時的溫度值和紅外值。矩陣鍵盤及顯示電路如圖2-4所示。圖2-4 矩陣鍵盤及顯示電路 2.2.4 聲光報警電路介紹當達到報警條件時,要有報警信號發(fā)出。這種報警信號通常有三類:閃光報警,鳴音報警和語音報警。本設計的報警電路包括燈光報警和蜂鳴器報警兩種方式。實現(xiàn)聲光報警電路比較簡單,如圖2-5所示
18、。 圖2-5 聲光報警電路3 智能家居控制系統(tǒng)的軟件設計3.1 系統(tǒng)功能結(jié)構(gòu)圖家居智能控制系統(tǒng)的軟件設計分為2個工作狀態(tài):等待密碼輸入狀態(tài)和正常工作狀態(tài)。在等待密碼輸入狀態(tài)下,電路等待矩陣鍵盤的數(shù)據(jù)輸入。當輸入的數(shù)據(jù)和定義的密碼一致時,系統(tǒng)進入到正常工作狀態(tài)。如果輸入的數(shù)據(jù)和密碼不一致,則提示密碼錯誤并報警1秒,然后轉(zhuǎn)入等待密碼輸入狀態(tài)。直到密碼輸入正確為止。 在正常工作狀態(tài)下,系統(tǒng)實時檢測溫度值、光線值、矩陣鍵盤值和紅外值。將檢測的值顯示到液晶屏上。如果光線值發(fā)生改變則相應轉(zhuǎn)動電機,模擬自動窗簾。整個系統(tǒng)的功能結(jié)構(gòu)框圖如圖3-1所示。等待密碼輸入狀態(tài) 正 常 工 作 狀 態(tài)矩陣鍵盤溫度傳感器
19、光敏電阻紅外傳感器步進電機LED顯示 圖3-1系統(tǒng)功能結(jié)構(gòu)圖3.2 軟件設計主程序 系統(tǒng)的程序燒錄到STC89C52內(nèi)部的FLASH內(nèi)存中,有主程序、溫度讀取程序、中斷延時程序、紅外遮擋時間判定程序、光線強度判定程序、由光線強度值控制電機程序、鍵盤輸入、LCD顯示程序和報警子程序等組成。為了方便編程,使程序完成后條理清晰,就必須對數(shù)據(jù)存儲器的存儲空間進行規(guī)劃。STC89C52提供用戶的RAM有256字節(jié)。 主程序的功能是完成開機界面和對單片機所進行的初始化,初始化就是設置各個變量的初始值、進行相關(guān)的中斷設置等。各部分的地址分配如下:LCD1602的數(shù)據(jù)端口:P0口;LCD1602的控制端口:P
20、2.5P2.7;DS18B20溫度傳感器接口:P1.0;矩陣鍵盤接口:P1.1P1.7;紅外接口:P3.2;報警器接口:P3.3;步進電機接口:P3.4P3.7。主程序的流程圖如圖3-2所示。初始化設置定時器0打開定時器中斷讀取密碼值讀取溫度值報警顯示密碼錯誤顯示溫度值讀取光線強度主程序密碼是否正確紅外值是否大于閥值YNYN圖3-2 主程序流程圖3.3 軟件系統(tǒng)構(gòu)成本系統(tǒng)的軟件部分主要包含五個文件即CLOCK.H文件、LCD1602.H文件、DS18B20.H文件、MOTOR.H文件、ULTRASONIC.H文件和MAIN.C文件。由于項目文件并不太大,所以用五個頭文件的形式將一些必要的時鐘設
21、置、宏定義和一些簡單的驅(qū)動程序包含在主函數(shù)中,這樣,既可以實現(xiàn)程序設計的模塊化,又不影響程序編譯的效率。其中MAIN.C文件主要完成系統(tǒng)初始化以及紅外檢測、模數(shù)轉(zhuǎn)換功能,同時,它還包含了單片機應用中最重要的定時器設置、定時器中斷、端口中斷等內(nèi)容。3.4 顯示子程序 LCD1602典型應用和本設計一致,可以參看原理圖。其基本操作時序如下: 讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0D7=狀態(tài)字 寫指令:輸入:RS=L, RW=L,D0D7=指令,E=高脈沖 輸出:無 讀數(shù)據(jù):輸入:RS=H, RW=H, E=H 輸出:DOD7=數(shù)據(jù) 寫數(shù)據(jù):輸入:RS=H, RW=L,D0D7=數(shù)據(jù),
22、E=高脈沖 輸出:無顯示子程序負責狀態(tài)的顯示,在輸入密碼狀態(tài)負責提示語的顯示,和輸入密碼過程的顯示,當密碼輸入完畢之后將密碼判斷的結(jié)果顯示出來。在系統(tǒng)進入正常工作狀態(tài)后,顯示當前的溫度值和紅外值。(1)LCD1602的讀操作時序如圖3-5所示。圖3-3 1602讀操作時序(2) LCD1602的寫操作時序如圖3-6所示 圖3-4 1602寫操作時序 3.5 溫度數(shù)據(jù)讀取程序 溫度檢測模塊本設計選用了DS18B20元件。DS18B20元件是由DALLAS設計生產(chǎn)的一款單總線方式訪問的數(shù)字溫度計。該元件具有體積小,外圍電路簡單等特點。因此本設計選擇該元件為基礎組建一個溫度檢測系統(tǒng)。由于該元件遵循單
23、總線協(xié)議,即只要使用一個引腳就可以進行數(shù)據(jù)的傳輸,所以它對讀/寫操作的時序要求比較嚴格。在進行此操作時為保證數(shù)據(jù)的可靠性,需要關(guān)閉總中斷。此外該元件上電后默認精度為9位,在寫完讀取溫度指令后,會在該器件內(nèi)部的兩個8位的RAM中獲取有效數(shù)據(jù)。其中前8位用來表示測得數(shù)據(jù)的正負,即為數(shù)據(jù)的符號位,后面的8位用于表示數(shù)據(jù)值。由于測量精度為9位,所以當測得溫度為正數(shù)時,實際溫度值為數(shù)據(jù)值乘以0.5。當測得值為負數(shù)時,實際溫度應為數(shù)據(jù)值的補碼乘以0.5。例如,對應于-25的數(shù)據(jù)格式為: MSB LSB1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 (符號位“-”) (溫度值“ ”) 110
24、01110的補碼00110010,即,被測溫度值為: T=-(125 +124 +12)0.5=-25 表3-1 9位DS18B20溫度與數(shù)據(jù)的對應關(guān)系溫度/二進制數(shù)據(jù)輸出十六進制數(shù)據(jù)輸出+12500000000 1111101000FAH+2500000000 001100100032H+0.500000000 000000010001H-0.511111111 11111111FFFFH-2511111111 11001110FFCEH-5511111111 10010010FF92H當系統(tǒng)處于正常工作狀態(tài)時,要循環(huán)的對溫度數(shù)據(jù)采集、顯示和判定。對溫度值的讀取由DS18B20來完成。DS1
25、8B20是一線式的器件,數(shù)據(jù)的讀寫都通過一個數(shù)據(jù)端口來完成。所以對DS18B20的控制時序就要求比較高。讀取和寫入數(shù)據(jù)的過程中無法被中斷,所以在DS18B20的讀寫的情況下關(guān)閉中斷。 DS18B20的控制是典型的控制類程序。共享4個函數(shù)來完成。初始化、讀數(shù)據(jù)、寫數(shù)據(jù)和得到溫度4個函數(shù)。DS18B20控制程序的流程圖如圖3-7所示。初始化ds18b20寫溫度轉(zhuǎn)換命令等待溫度轉(zhuǎn)換命令讀取溫度值溫度程序結(jié)束圖3-5 DS18B20流程圖3.6 中斷程序在DS18B20的程序中,當啟動DS18B20溫度轉(zhuǎn)換之后,需要等待750ms以上,才能從DS18B20端口上讀到當前的溫度值。而紅外的數(shù)據(jù)什么時候到
26、來是不確定的,為了平衡二者的關(guān)系。使用定時器中斷,來產(chǎn)生5ms的中斷。沒當中斷到來讀取紅外的端口,當紅外有輸出時,打開內(nèi)部計數(shù)器來記錄紅外被遮擋的時間。通過定時器中斷不僅滿足的DS18B20的讀取問題,也兼顧了紅外數(shù)據(jù)的讀取和顯示的問題。定時器中斷流程圖如圖3-9所示。進入中斷、定時存數(shù)據(jù)保護現(xiàn)場取數(shù)據(jù)指向下一地址請標志位開始退出現(xiàn)場結(jié)束圖3-6 定時器中斷子程序流程圖3.7 光線檢測與步進電機控制子程序根據(jù)本設計的模擬量轉(zhuǎn)換要求,系統(tǒng)采用的ADC083是8位分辨率的A/D轉(zhuǎn)換芯片,其最高分辨可達256級,轉(zhuǎn)換時間僅為32S,轉(zhuǎn)換速度快且穩(wěn)定性能強,完全可以達到要求。因其內(nèi)部參考電壓的復用與電
27、源的輸入,使得芯片的模擬電壓輸入保持在05V之間,達到穩(wěn)定的工作狀態(tài)。芯片還具有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗,能夠有效地減少數(shù)據(jù)誤差。選用獨立的芯片使能輸入,通過數(shù)據(jù)輸入,我們可以很容易地實現(xiàn)信道選擇功能。光線檢測主要是通過ADC0832來完成的。通過讀取ADC0832的值,并與上一個讀取的值相比較,來判斷光線是變暗了還是變亮了。根據(jù)本次讀取的值和上次讀取的值取差值,用差值來控制電機的正反轉(zhuǎn)以及電機的轉(zhuǎn)動幅度。光線檢測與步進電機控制子程序的流程圖如圖3-10所示。初始化DS18B20開始讀取模數(shù)轉(zhuǎn)換值 保存檢測值,計算初始值或上一值的差值取反轉(zhuǎn)程序及轉(zhuǎn)動幅度 判斷差值的大小取正轉(zhuǎn)程序及轉(zhuǎn)動幅度結(jié)束
28、小于0大于0等于0圖3-7 光線檢測與步進電機控制程序流程圖3.8 報警條件子程序報警條件說明 :(1)密碼輸入:當密碼輸入錯誤時報警,密碼輸入正確則進行下一步操作;(2)紅外傳感器:紅外被遮擋5秒以上為達到報警條件,以下為未達到報警條件。因為所要監(jiān)測的傳感器主要是溫度傳感器和紅外傳感器,任何一個傳感器如果達到報警條件,都可以發(fā)出報警信號。在硬件設計方面已經(jīng)對每個傳感器的報警條件進行了設置。程序流程圖如圖3-11所示。 讀取密碼值初始化進入報警狀態(tài)讀取紅外值判斷密碼是否正確紅外值是否達到閥值報警是否解除開始結(jié)束YNNY 圖3-8 報警條件子程序流程圖434 智能家居控制系統(tǒng)軟件調(diào)試環(huán)境與分析結(jié)
29、果本次系統(tǒng)調(diào)試,是以硬件模塊為準,先模塊后整合的方式進行的。當然,單片機的基本時鐘和引腳設置必不可少。在系統(tǒng)聯(lián)調(diào)時,出現(xiàn)了許多實際問題?,F(xiàn)將主要方面闡述如下。4.1 開發(fā)環(huán)境簡介 4.1.1 編程軟件介紹 在本設計中,由于用的是C語言編程,所以我選用的軟件開發(fā)環(huán)境是美國Keil SOFTWARE公司出品的51系列兼容單片機。KEIL VISION可以方便的使用并且利用其強大的仿真功能進行軟硬件的調(diào)試工作。目前最新版的KEIL系統(tǒng)提供了包括于C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的一整套完善的開發(fā)方案,并可以通過一個集成開發(fā)環(huán)境(UVISION)將這些部分嚴密的組合在一
30、起共同工作。WIN98、NT、WIN2000、WINXP等操作系統(tǒng)都可以有效的運行KEIL軟件進行編程。 實際使用KEIL 51時,干集成環(huán)境既可用于C語言開發(fā)也可用于匯編語言開發(fā)。它內(nèi)部集成了文件編輯、項目管理、編譯鏈接和仿真調(diào)試等多種功能。用戶可以在這里用文件編輯器編寫自己的程序,用多種方法來調(diào)試和修改程序。編譯程序也能幫助用戶檢查錯誤,提示用戶修改錯誤,直至程序無誤。 為了使軟件編程環(huán)境更加靈活多樣,所以在2009年2月發(fā)布了引入靈活的窗口管理系統(tǒng)的UVISION4編程環(huán)境,能夠使用更多的監(jiān)視器,視覺上可以對窗口位置的任何地方進行完全控制是本次軟件更新的最大亮點,并且充分利用屏幕空間和更
31、有效地組織多個窗口是新的用戶界面顯著地特點,它為我們提供一個整潔的、高效的環(huán)境來開發(fā)應用程序以提高工作效果。 4.1.2 程序的工程建立 (1)先建立一個名為“hyx”的空文件夾,把工程文件放到里面,防止和其它文件相混。開始工作并啟動KEIL UVISION4軟件。 (2)點擊“PROJECT-NEW UVISION PROJECT”新建一個系統(tǒng)工程。 (3)在彈出的對話框中,選擇剛剛建立的“HYX”的文件夾,保存該項目的名稱,不需要填寫,默認的工程后綴與UVISION3及UVISION2版本不同了,為UVPORJ。(4)彈出一個對話框后,就可以根據(jù)設計中所需要的單片機??梢栽谡业讲⑦x中“HY
32、X”下的AT89C52,用于開始編譯程序。 (5)編程完畢之后,開始建立一個源程序文本: (6)找一個空白的文檔開始寫入源程序。 (7)輸入源程序文件名名稱,因為是C語言,則是“HYX.C”然后保存。 (8)在項目設置中,可以編譯、鏈接,選擇菜單項目建立目標,連接到單一的工程項目,生成代碼。如下圖3-3所示:圖4-1 基于Keil的編程說明圖4.2 程序的調(diào)試在對工程成功的進行匯編、連接后,要進入軟件調(diào)試狀態(tài),只要選擇菜單中的DEBUGSTART/STOP DEBUG SESSION即可,并建立了一個仿真CPU用來模擬執(zhí)行該程序。 4.2.1 主程序的調(diào)試 因為本設計中采用的模塊較多所以系統(tǒng)采
33、用了實時多任務系統(tǒng),實行逐個分任務進行調(diào)試。當逐個子程序調(diào)試好以后,再觀察各個任務同時運行時操作系統(tǒng)中有沒有錯誤。等調(diào)試全部完成后,為了調(diào)試效果應反復運行多次,其中如發(fā)現(xiàn)錯誤時部分程序作了適當修正后系統(tǒng)才能夠正常運行。利用單步運行的的性質(zhì),可以對一些多次循環(huán)重復的程序進行檢查。而這樣的調(diào)試可以選用KEIL VISION開發(fā)環(huán)境來進行調(diào)試,既方便又快捷。從中找到程序出錯的環(huán)節(jié)及故障點進行修改,直到程序完全正常。如下圖3-4所示: 圖4-2 Keil程序的調(diào)試 4.2.2 軟件抗干擾措施當單片機受到干擾,不再按照一定的規(guī)律執(zhí)行,被改變了的程序指針(PC)的值后,使程序而跑飛到其它非程序區(qū),此后它不
34、僅執(zhí)行了一系列毫無意義的指令,而且還可能破壞數(shù)據(jù)存儲器的內(nèi)容,造成難以預料的后果。激活看門狗的程序其工作指令如下程序: SFR WDTRST = 0XA6 _NOP_(); WDTRST = 0X1E ;先送1E WDTRST = 0XE1 ;后送E14.3 調(diào)試結(jié)果展示設計中的要求基本完成,如下圖4-1和4-2所示:(1) 開機畫面,需輸入正確密碼(2) 密碼正確后,會顯示當前室內(nèi)溫度 (3)紅外,光敏,步進電機都能實現(xiàn)且運行良好圖4-3 開機畫面圖4-4 溫度及其他顯示畫面5 結(jié)論及展望 智能家居控制系統(tǒng)的核心任務是數(shù)據(jù)的采集、運算和處理,對于實際物理量的采集必須要有傳感器。傳感器是一種檢
35、測裝置,它能夠直接將物理量轉(zhuǎn)換為電信號的量,現(xiàn)今的傳感器還能直接將物理量轉(zhuǎn)換為單片機可以接收的數(shù)字量。傳感器的工作指標與運行性能是能否圓滿完成檢測和控制的重要環(huán)節(jié),如果沒有對原始物理量精確可靠的反應,那么就無法進行最佳檢測和控制。 本設計的控制系統(tǒng)是基于STC89C52單片機為核心,進行必要的計算技術(shù),以軟件代替很多傳統(tǒng)的控制系統(tǒng)的硬件,多種功能完美的將多種系統(tǒng)功能集于一身。用本文設計的智能家居控制系統(tǒng)具有如下特點: (1)通過矩陣鍵盤輸入密碼,當密碼正確電路進入正常工作狀態(tài)。 (2)系統(tǒng)實時監(jiān)測紅外傳感器的值,可以對非法進入的情況進行報警。 (3)實時采集溫度值,將室內(nèi)的溫度值實時的顯示出來
36、。 (4)實時采集光線強度值,通過光線強度值來控制窗簾的開合,來保持室內(nèi)光線的穩(wěn)定。 (5)單片機及接口電路的設計使I/O接口線利用率高。電路簡單、成本降低、外接器件少、性能可靠。 展望,家居環(huán)境的實際情況比較復雜,需要測量的參數(shù)一般都比較多,本設計主要采集了溫度參數(shù),紅外參數(shù)以及光線強度參數(shù)等。溫度是家庭室內(nèi)舒適度的一個重要參數(shù)。為了防止人員的非法進入紅外參數(shù)也是一個比較重要的參數(shù),為了能夠控制室內(nèi)的光線強度,對光線強度的檢測和對窗簾電機的控制也是必不可少的。為了提高一些設備使用的安全性,進行簡單的密碼認證也是很必要的。本課題所設計的智能家居控制系統(tǒng)可以用來檢測非法進入、溫度值、光線強度以及
37、密碼認證。 本設計也有許多不足之處,最明顯的是所涉及的家居家電太少,以及智能化的操作行不高,如果有可能我會在原方案上加入以下的系統(tǒng): (1)在原模塊上加上萬年歷以及煙霧報警系統(tǒng)。 (2)在原來的設計上加入遠程控制系統(tǒng)(GSM),是整個設計更加體現(xiàn)智能化家具的價值。 現(xiàn)在基于各種因素限制,所以本系統(tǒng)設計只能做到這樣。附錄一 程序清單#include#include #include #definetime_length10000/us#defineinf_length5/s#definetemp_max40/度#defineL1602_DBP0sbit L1602_RS=P27;sbit L16
38、02_RW=P26; sbit L1602_E=P25;sbit ds18b20_bit = P10;sbit Inf_bit= P32;sbit KEY_LA=P11;sbit KEY_LB=P12; sbit KEY_LC=P13;sbit KEY_LD=P14;sbit KEY_L1=P15; sbit KEY_L2=P16;sbit KEY_L3=P17;sbit ADC0832_CS=P20;sbit ADC0832_CLK=P21;sbit ADC0832_DI=P23; sbit ADC0832_DO=P22;sbit SETP_1=P34;sbit SETP_2=P35;sbi
39、t SETP_3=P36; sbit SETP_4=P37;sbit Beep_bit=P33;unsignedcharbdatastatus;sbitnormal_work= status0;sbitflag_alarm= status1;sbitflag_1820= status2;sbitflag_inf= status3;unsigned char code time_num_h = (unsigned char)(65536-time_length)/256);unsigned char code time_num_l = (unsigned char)(65536-time_len
40、gth)%256);unsigned char code ticks_second = (unsigned char)(1000000/time_length);unsignedchartemperature=30;unsignedcharseconds=0;unsignedcharadc_value=0;unsignedcharworkstate = 0;unsigned char psd6;staticcode unsigned charDPY_TAB16 = 0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,0X77,0X7c,0X39,
41、0X5e,0X79,0X71,;static code unsigned char MOTOR_STEP8 = 0 x80,0 xc0,0 x40,0 x60,0 x20,0 x30,0 x10,0 x90;unsigned char lcd_data16=KEY: *;/*延時函數(shù) */voiddelayms(unsigned char ms)unsigned chari,j;while(ms-)for(i=0;i3;i+)for(j=0;j107;j+);/*延時函數(shù) */voiddelay100us(unsignedcharcnt)unsignedchari,j;for(i=0;icnt
42、;i+)for(j=0;j22;j+)_nop_();/*延時函數(shù) */voiddelay10us(void)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*按鍵狀態(tài)判定函數(shù) */unsigned charkey_station(void)unsigned chari,key;KEY_LA=0;KEY_LB=0;KEY_LC=0;KEY_LD=0;i=P1;i&=0 xE0;if(i = 0 xE0)key=0;elsedelayms(10);i=P1;i&=0 xE0;if(i = 0 xE0)key=0;elseKEY_LA=0;KEY_
43、LB=1;KEY_LC=1;KEY_LD=1;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x31;if(i & 0 x40)key = 0 x32;if(i & 0 x20)key = 0 x33;KEY_LA=1;KEY_LB=0;KEY_LC=1;KEY_LD=1;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x34;if(i & 0 x40)key = 0 x35;if(i & 0 x20)key = 0 x36;KEY_LA=1;KEY_LB=1;KEY_LC=0;KEY_LD=1;i=P1;i&=0 xE0;i=i;i
44、f(i & 0 x80)key = 0 x37;if(i & 0 x40)key = 0 x38;if(i & 0 x20)key = 0 x39;KEY_LA=1;KEY_LB=1;KEY_LC=1;KEY_LD=0;i=P1;i&=0 xE0;i=i;if(i & 0 x80)key = 0 x08;if(i & 0 x40)key = 0 x30;if(i & 0 x20)key = 0 x0D;KEY_LA=0;KEY_LB=0;KEY_LC=0;KEY_LD=0;while(1)i=P1;i&=0 xE0;if(i = 0 xE0)delayms(10);i=P1;i&=0 xE0;
45、if(i = 0 xE0)break;KEY_LA=1;KEY_LB=1;KEY_LC=1;KEY_LD=1;returnkey;/* DS18B20 程序 *voidInit_DS18B20(void)unsignedchari;ds18b20_bit=1;_nop_();ds18b20_bit=0;delay100us(5);ds18b20_bit=1;delay10us();delay10us();delay10us();delay10us();delay10us();delay10us();if(ds18b20_bit=0)for(i=0;i250;i+)if(ds18b20_bit
46、= 1)delay100us(3);flag_1820= 1;elseflag_1820=0; /*讀18B20函數(shù) */unsignedcharread_18b20(void)unsignedchari;unsigned charc;for(i=0;i=1; if(ds18b20_bit = 1) c |= 0 x80; else c &= 0 x7f; delay10us();delay10us();delay10us();delay10us();delay10us();ds18b20_bit = 1;returnc;/*寫18B20函數(shù) */voidwrite_18b20(unsigne
47、d char cnt)unsignedchari;for(i=0;i=1;/*得到溫度值函數(shù) */unsigned intget_number_18b20(void)unsigned char temp=0;unsignedchar h,l;Init_DS18B20();if(flag_1820 = 1)EA=0;write_18b20(0 xcc);write_18b20(0 x44);EA=1;delayms(200);delayms(200);delayms(200);delayms(200); Init_DS18B20();EA=0;write_18b20(0 xcc);write_1
48、8b20(0 xbe);l = read_18b20();h = read_18b20();EA=1;temp = h;temp = temp 4;temp += l;if(h & 0 xf0) !=0)temp -= 1;temp = temp;temp |= 0 x80;returntemp;/* DS18B20 程序 */* LCD1602 程序 *staticunsigned char L1602_read_status() unsigned char s;L1602_RW=1; L1602_RS=0;L1602_E=0; L1602_DB=0 xff;_nop_();_nop_();
49、L1602_E=1;_nop_();_nop_();s=L1602_DB;L1602_RW=1;_nop_();return(s);void L1602_write_command( unsigned char com )unsigned char i;do i=L1602_read_status(); i&=0 x80; delayms(2);while(i!=0); L1602_DB=com;L1602_RW=0;/L1602_RS=0;L1602_E=1;/ _nop_();_nop_();L1602_E=0;/ _nop_();_nop_();L1602_RW=1; void L160
50、2_write_data( unsigned char dat ) unsigned char i;do i=L1602_read_status(); i=i&0 x80; delayms( 2);while(i!=0); L1602_DB=dat;L1602_RW=0;L1602_RS=1;L1602_E=1;_nop_();_nop_();L1602_E=0;_nop_();_nop_();L1602_RW=1;void L1602_init( void ) L1602_write_command(0 x38);L1602_write_command(0 x0C);L1602_write_
51、command(0 x06);L1602_write_command(0 x01);delayms(2); voidLCD_display_char(unsigned char x , unsigned char y , unsigned char dat)unsigned char add;if(x=1)add=0 x80+y;elseadd=0 xc0+y;L1602_write_command(add);L1602_write_data(dat);voidLCD_display_str(unsigned char x)unsigned char i;if(x = 0 x01)L1602_
52、write_command(0 x80);elseL1602_write_command(0 xc0);for(i=0;i16;i+)if(lcd_datai = 0)break;L1602_write_data(lcd_datai);voidLCD_clear(void)unsigned char i;L1602_write_command(0 x80);for(i=0;i16;i+)L1602_write_data(0 x20);L1602_write_command(0 xc0);for(i=0;i16;i+)L1602_write_data(0 x20);voidpsd_clear(void)psd0=0;psd1=0;psd2=0;psd3=0;psd4=0;psd5=0;/*
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。