基于C51單片機(jī)的智能照明控制系統(tǒng)_第1頁(yè)
基于C51單片機(jī)的智能照明控制系統(tǒng)_第2頁(yè)
基于C51單片機(jī)的智能照明控制系統(tǒng)_第3頁(yè)
基于C51單片機(jī)的智能照明控制系統(tǒng)_第4頁(yè)
基于C51單片機(jī)的智能照明控制系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

題目基于C51單片機(jī)的智能照明控制系統(tǒng)目錄第一章緒論 頁(yè)第一章緒論1.1選題背景隨著當(dāng)今社會(huì)的迅速發(fā)展,電子行業(yè)水漲船高,而智能、節(jié)能、健康等也成為了電子大家庭中的亮點(diǎn)。在信息時(shí)代的巨大發(fā)展下,人們可以足不出行的進(jìn)行交友、購(gòu)物、運(yùn)動(dòng),在家中可以完成人們所需要的全部操作,那么一個(gè)舒適的家庭環(huán)境必不可少。在這種情況下,智能家居得到人們的大力支持,也成為人們關(guān)注的幾大重點(diǎn)之一。因此,在現(xiàn)有的好壞之上,再通過(guò)人們對(duì)智能家居系統(tǒng)的使用與建議,反饋出現(xiàn)有的智能家居的不足之處進(jìn)行研究。進(jìn)一步優(yōu)化智能家居系統(tǒng)技術(shù)對(duì)人們的生活環(huán)境、環(huán)保等具有很大的意義。本論文主要由生活舒適、健康環(huán)保、操作簡(jiǎn)單易上手、照明質(zhì)量、照明系統(tǒng)的控制方式等方面進(jìn)行研究,通過(guò)這幾個(gè)方面達(dá)到在市場(chǎng)上占據(jù)的各種優(yōu)勢(shì)。同時(shí)在進(jìn)行智能照明系統(tǒng)的研究時(shí),需要考慮多個(gè)方面,以節(jié)約、環(huán)保、健康為前提進(jìn)行研究。本論文分析了照明系統(tǒng)的原理和功能,并進(jìn)行了少量改進(jìn),使人們更容易的使用本系統(tǒng)。在本論文中,介紹了該智能照明系統(tǒng)的功能、原理圖、硬件及電路圖。在系統(tǒng)硬件設(shè)計(jì)中,電源電壓為5V直流供電,通過(guò)環(huán)境光亮強(qiáng)度、或人為影響去觸發(fā)照明;并加入了室內(nèi)溫度檢測(cè)系統(tǒng)進(jìn)行適時(shí)地室內(nèi)溫度監(jiān)控并反饋;同時(shí)并加入程序下載端口,為后期的的維護(hù)提供方便的操作。1.2主要研究?jī)?nèi)容本論文以研究燈光控制為主題,并在其中加入了溫度檢測(cè)與人數(shù)計(jì)數(shù)功能講解了本設(shè)計(jì)的硬件選擇方案,并對(duì)各種方案做出了功能介紹;在論文第二章中,分析了對(duì)本設(shè)計(jì)硬件采用方案,并主要對(duì)紅外對(duì)管的工作原理,如何通過(guò)LM339運(yùn)算放電器芯片對(duì)信號(hào)的采集與處理以及LCD1602顯示屏的字符顯示。并研究了如何實(shí)現(xiàn)燈光的自動(dòng)打開(kāi)與關(guān)閉。圖1智能照明系統(tǒng)總體框圖第二章系統(tǒng)方案選擇本系統(tǒng)以智能、控制、節(jié)約為目,主要功能為:(1)通過(guò)LCD1602顯示當(dāng)前的時(shí)間,星期,年月日,室內(nèi)的人數(shù)與溫度;(2)通過(guò)設(shè)置按鍵給單片機(jī)發(fā)出高低變化的電平信號(hào),使LCD1602模塊做出判斷并改變顯示屏的字符;(3)針對(duì)室內(nèi)燈光設(shè)置——手動(dòng)/自動(dòng)模式,體現(xiàn)智能;(4)光敏傳感器檢測(cè)白天燈熄滅,晚上燈光打開(kāi);溫度傳感器監(jiān)視環(huán)境溫度并顯示,紅外對(duì)管傳感器為計(jì)數(shù)人數(shù),進(jìn)加一出則減一。本設(shè)計(jì)包括七個(gè)部分,分別是STC89C52控制芯片、LCD1602液晶顯示、LM339算放大器、DS18B20溫度傳感器模塊、光敏傳感器模塊、紅外對(duì)管傳感器模塊、DS1302時(shí)鐘芯片和觸點(diǎn)按鍵開(kāi)關(guān)。2.1單片機(jī)的選擇2.1.1STM32單片機(jī)STM32系列的控制芯片其功能強(qiáng)大,使用簡(jiǎn)單,而且兼容性也好。但是由于學(xué)校課程中,沒(méi)有STM32課程,自學(xué)難度比較大,所以本設(shè)計(jì)放棄了選擇該款芯片。2.1.2STC89C52單片機(jī)STC89C52控制芯片也是以C語(yǔ)言來(lái)操控單片機(jī)的外圍電路,使之工作,STC89C52控制芯片操作簡(jiǎn)單,編程簡(jiǎn)單,由于在大學(xué)學(xué)習(xí)了有關(guān)STC89C52單片機(jī)的知識(shí),而且在大學(xué)同學(xué)中,該款芯片被廣泛的流行,成本低等優(yōu)點(diǎn)本同學(xué)們所喜愛(ài)。由此,在此次畢業(yè)設(shè)計(jì)中選擇STC89C52控制芯片,價(jià)格實(shí)惠,編程簡(jiǎn)單,支持在線(xiàn)下載調(diào)試程序。2.2液晶顯示屏2.2.1LCD1602液晶LCD1602是一種液晶顯示的顯示器,02代表1602液可以顯示兩行字符,16表示每一行可以顯示16個(gè)字符,該液晶顯示器一共有32個(gè)點(diǎn)陣字符位。LCD1602液晶模塊的工作電壓在3.3~5(V),其對(duì)比度的設(shè)置可以通過(guò)程序?qū)崿F(xiàn),在液晶顯示器的電路中加一個(gè)可調(diào)電阻,通過(guò)可調(diào)電阻調(diào)節(jié)液晶顯示器的背光面亮度。它內(nèi)置了多種命令,很多功能都是可以通過(guò)程序代碼來(lái)控制的,而且模塊的內(nèi)部還具有80字節(jié)的RAM內(nèi)存,具有16*02字符顯示矩陣可以定義5*7個(gè)字符。2.2.2LCD12864液晶LCD12864顯示屏,從字面含義就可以得知,字符“128”指每行最多能夠有128個(gè)字符,“64”代表整個(gè)屏幕上最多可以顯示64行,因此,該屏幕最多一共可以有8192個(gè)字符,該液晶顯示器具有并行接口方式和串行接口方式,并行接口方式有4位或者8位并行,串行接口方式有2線(xiàn)或3線(xiàn),可以顯示中文和圖形;LCD12864液晶顯示器的優(yōu)點(diǎn)很多:第一、低電壓、低功耗;第二、程序簡(jiǎn)介;第三、價(jià)格低,性?xún)r(jià)比高;第四、電路結(jié)構(gòu)簡(jiǎn)單。LCD12864液晶顯示模塊的顯示功能特別的強(qiáng)大,它不但可以顯示LCD1602能夠顯示的內(nèi)容,還可以顯示8192個(gè)漢字。LCD12864的額定工作電壓范圍在3.3V-5.5V之間。LCD12864傳感器電路中,可以通過(guò)可變電阻調(diào)節(jié)其顯示屏幕的亮度從而達(dá)到護(hù)眼節(jié)能,在模塊的內(nèi)部同樣也有很多的程序命令,通過(guò)這些命令,我們可以設(shè)置光標(biāo)的閃爍以及文字顯示的順序,而該顯示屏最大的一個(gè)亮點(diǎn)就是通過(guò)程序處理,還可以顯示出圖形。綜上所述LCD1602液晶顯示屏體積小,占地面積不大,且比LCD12864液晶顯示屏便宜,因此在本次畢業(yè)設(shè)計(jì)中我選擇的是LCD1602液晶顯示屏。2.3按鍵的選擇2.3.1四腳按鍵四腳按鍵就是將按鍵的正極和負(fù)極2條線(xiàn)接到電路上,是2個(gè)分開(kāi)的單相開(kāi)關(guān),四腳按鍵的原理是用一個(gè)按鈕控制2個(gè)電路,其內(nèi)部有2個(gè)開(kāi)關(guān)。圖2是按鍵工作的時(shí)序圖:檢測(cè)到低電平后,延時(shí),跳過(guò)前沿抖動(dòng)區(qū),然后檢測(cè)是否為低電平,如果有低電平,說(shuō)明按鍵已經(jīng)按下,按鍵松開(kāi)時(shí),編寫(xiě)程序時(shí)候需要延時(shí),跳過(guò)后沿抖動(dòng)區(qū)。圖2按鍵工作時(shí)序圖2.3.2電容式觸摸按鍵電容式觸摸按鍵是人體感應(yīng)按鍵,相當(dāng)于內(nèi)部擁有一個(gè)電容開(kāi)關(guān),當(dāng)我們的手指放在電容按鍵上的時(shí)候,按鍵按下,電路中有電流通過(guò),電路導(dǎo)通。當(dāng)手指松離開(kāi)觸摸開(kāi)關(guān)時(shí),電路相當(dāng)于開(kāi)路,此時(shí)該電路沒(méi)有電流流過(guò),當(dāng)前不工作。在本次設(shè)計(jì)中選擇TTP229LSF觸摸芯片控制的電容式觸摸按鍵,其控制原理很簡(jiǎn)單,主要是利用電容感應(yīng)原理。此芯片控制的觸摸按鍵效果這么穩(wěn)定是因?yàn)槠鋬?nèi)部有穩(wěn)壓電路。所以本設(shè)計(jì)選擇四角按鍵開(kāi)關(guān),四腳按鍵開(kāi)關(guān)應(yīng)用廣,電路連接也很簡(jiǎn)單,成本實(shí)惠,操作簡(jiǎn)單。2.4紅外對(duì)管傳感器紅外對(duì)管傳感器由一個(gè)紅外線(xiàn)發(fā)射二極管和一個(gè)光敏接收二極管所構(gòu)成,光敏接受二極管也稱(chēng)之為紅外線(xiàn)接受二極管。圖3紅外對(duì)管硬件電路紅外線(xiàn)接收管紅外對(duì)管傳感器的工作原理與光敏二極管差不多,可見(jiàn)光都不會(huì)干擾到元件的正常工作,工作靈敏。光敏接收管光敏接收管內(nèi)部結(jié)構(gòu)有一個(gè)PN結(jié),單向?qū)щ姷囊残信cNPN型三極管或PNP型三極管相似,所以,在電路中,工作原理與NPN型三極管或PNP型三極管一樣。當(dāng)在夜晚沒(méi)有光照的時(shí)候,此時(shí)通過(guò)光敏二極管本身的電流可以忽略不計(jì),此時(shí)光敏管不導(dǎo)通。當(dāng)白天有光照的時(shí)候,流過(guò)光敏二極管的電路增加,此時(shí)的電流隨光照的強(qiáng)度變化而做出相應(yīng)的改變。2.5LM339電壓比較器 LM339芯片有四個(gè)獨(dú)立的電壓比較器,同一般的比較器而言,工作原理相似。輸出端口到輸入端口處理不當(dāng),很容易有寄生電容的產(chǎn)生,從而導(dǎo)致此處發(fā)生電路耦合。而且在電源端加旁路電容接地并不能完全的消除這個(gè)問(wèn)題,所以,在PCB的電路設(shè)計(jì)上,合理的電路設(shè)計(jì),能夠使信號(hào)完整的進(jìn)行傳送。圖4LM339雙運(yùn)算放大器芯片圖特點(diǎn):消耗電流?。篒cc=1.3mA; 輸入失調(diào)電壓?。篤IO=±2mV; 工模輸入電壓范圍:Vic=0~Vcc-1.5V; 輸出與TTL、DTL、MOS、COMS等兼容。2.6溫度傳感器的選擇2.6.1PT100溫度傳感器pt100傳感器的核心原件由鉑熱電阻構(gòu)成,鉑熱電阻的電阻值會(huì)隨溫度的影響而做出變化。工作原理:當(dāng)PT100傳感器在0度的環(huán)境中,傳感器在此刻的環(huán)境下的電阻值為100歐姆,而且傳感器的電阻值會(huì)受環(huán)境的溫度影響而變化,環(huán)境溫度與傳感器的電阻值變化曲線(xiàn)類(lèi)似于一條拋物線(xiàn)。2.6.2DS18B20溫度傳感器DS18B20的工作原理方式為串口通信。在工作工程中為讀、寫(xiě)程序以及溫度之間的轉(zhuǎn)換可以直接從串口數(shù)據(jù)線(xiàn)快速而有效的獲得有用的信息。而且每個(gè)DS18B20傳感器都有一個(gè)獨(dú)特的序列號(hào),這使得DS18B20模塊可以應(yīng)用在不同的場(chǎng)合。綜上所述,DS18B20溫度傳感器在應(yīng)用過(guò)車(chē)行中無(wú)需其他元件,電路操作簡(jiǎn)單,程序?qū)崿F(xiàn)簡(jiǎn)潔迅速,運(yùn)行速度更快。2.7DS1302時(shí)鐘芯片關(guān)于實(shí)時(shí)的時(shí)間控制顯示,本設(shè)計(jì)還加入了對(duì)時(shí)間、日期進(jìn)行的處理;而且具有閏年之分,閏年采取補(bǔ)償其他不變的功能。DS1302時(shí)鐘芯片,額定電壓為2.0~5.5(V)。圖5DS1302芯片從DS1302時(shí)鐘芯片的引腳看出,該芯片有兩個(gè)供電的端口。在主電源不供電的時(shí)候,后備電源也可以對(duì)芯片供電,實(shí)現(xiàn)不斷電工作。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。第三章系統(tǒng)硬件設(shè)計(jì)本系統(tǒng)以智能、控制、節(jié)約為目的照明系統(tǒng),本設(shè)計(jì)功能為:通過(guò)LCD1602顯示當(dāng)前的時(shí)間,星期,年月日,室內(nèi)的人數(shù)與溫度;通過(guò)設(shè)置按鍵的觸發(fā)給單片機(jī)發(fā)送信號(hào)傳給LCD1602模塊修改LCD1602中的字幕;針對(duì)室內(nèi)燈光設(shè)置——手動(dòng)/自動(dòng)模式,體現(xiàn)智能;光敏傳感器檢測(cè)白天燈熄滅,晚上燈光打開(kāi);溫度傳感器監(jiān)視環(huán)境溫度并顯示,紅外對(duì)管傳感器為計(jì)數(shù)人數(shù),進(jìn)加一出則減一。本設(shè)計(jì)包括七個(gè)部分,分別是STC89C52控制芯片、LCD1602液晶顯示器、LM339算放大器、DS18B20溫度傳模塊、光敏傳感器模塊、紅外對(duì)管傳感器模塊、DS1302時(shí)鐘芯片和觸點(diǎn)按鍵開(kāi)關(guān)。3.1單片機(jī)最小系統(tǒng)電路STC89C52控制芯片單片機(jī)最小系統(tǒng)由晶振和復(fù)位電路組成。3.1.1STC89C52單片機(jī)STC89C52控制芯片有4組輸入輸出IO斷口,每一個(gè)端口可自定義為輸入/輸出端口;額定電壓范圍在5.5V到3.3V之間,所以該單片機(jī)對(duì)電源電壓的要求不是很高。圖6STC89C52單片機(jī)3.1.2復(fù)位電路復(fù)位電路主要由一個(gè)電解電容和一個(gè)電阻構(gòu)成,再與STC89C52控制芯片的第9腳相連接(復(fù)位腳RST)。圖7復(fù)位電路3.1.3晶振電路晶振電路的作用主要是給控制芯片提供一個(gè)穩(wěn)定可持續(xù)的時(shí)鐘周期,使單片機(jī)有秩序的處理外圍電路送進(jìn)來(lái)的各種信號(hào),并對(duì)外圍電路有條理的發(fā)送命令指令。圖8晶振電路3.2LM339電路LM339運(yùn)算放大芯片的內(nèi)部不電路由四個(gè)獨(dú)立的電壓比較數(shù)字電路組成。圖9LM339電路電壓比較器的原理:當(dāng)芯片的V+端口輸出的電壓大于V-端口輸出的電壓時(shí),輸出端口就會(huì)輸出高電平,反之輸出端口就會(huì)輸出低電平。3.3光電傳感器LIGHT1為光敏傳感器,當(dāng)有可見(jiàn)光射入的時(shí)候,光敏傳感器的電阻阻值小,所以,在電路中該電阻上消耗的電壓隨之變小,因此傳感器4端口輸出的電壓會(huì)比芯片5端口輸出的電壓小,在這種情況下,比較器2端口輸出的電壓則為高電平;當(dāng)沒(méi)有可見(jiàn)光照射的時(shí)候,光敏傳感器的電阻阻值大,在電路中光敏電阻分得到的電壓高,工作電壓是大于2.5V的,所以輸出端口輸出的是低電平。單片機(jī)通過(guò)比較器輸出端口傳送過(guò)來(lái)的電平變化,判斷白天與夜晚,做出是否打開(kāi)或關(guān)閉燈光。3.4紅外對(duì)管傳感器在本設(shè)計(jì)中用到了兩組紅外對(duì)管傳感器,在發(fā)射二極管串聯(lián)一個(gè)電阻,是為了電源開(kāi)啟瞬間,電流過(guò)大而起到一個(gè)保護(hù)作用。紅外對(duì)管電路中,還用了兩個(gè)電阻提高電路的電壓,使總電路的電壓得到提高從而正常工作。當(dāng)有外物遮擋時(shí),發(fā)射二極管發(fā)射出的紅外光通過(guò)遮擋物反射給紅外接收二極管,紅外接收二極管導(dǎo)通,電壓小于輸入端口輸出的電壓,電壓比較器的輸出端口輸出低電壓,LED燈導(dǎo)通發(fā)光;所以,單片機(jī)通過(guò)比較器輸出端口傳送過(guò)來(lái)的電平變化,判斷物體經(jīng)過(guò)。3.5DS18B20溫度傳感器在實(shí)現(xiàn)溫度檢測(cè)中,我可以用簡(jiǎn)單的程序使單片機(jī)計(jì)算DS18B20傳感器送來(lái)的數(shù)據(jù),直接送給LCD1602顯示屏中進(jìn)行顯示。R23作用為提高電路的點(diǎn)位,增強(qiáng)芯片在工作時(shí)不受干擾的能力。而且DS18B20不需要其它的外電電路就能直接正常運(yùn)行工作,讀取的數(shù)據(jù)通過(guò)2腳輸出發(fā)送給單片機(jī)控制芯片進(jìn)行數(shù)據(jù)處理。3.6DS1302時(shí)鐘電路圖10DS1302電路U1為DS1302芯片,在整個(gè)電路中題單片機(jī)控制芯片提供一個(gè)標(biāo)準(zhǔn)的時(shí)鐘信號(hào),通過(guò)芯片本身的五腳、六腳和七腳與控制芯片進(jìn)行連接,通過(guò)控制芯片中的程序讀出時(shí)鐘芯片發(fā)出的信息進(jìn)行處理。原件J1是電池,防止斷電之后時(shí)鐘芯片可以繼續(xù)工作計(jì)時(shí),因?yàn)槿绻麜r(shí)鐘芯片停止,那么下一次電路工作時(shí),時(shí)鐘芯片給電路提供的時(shí)序就會(huì)停止在上一次斷電的時(shí)間,從而導(dǎo)致時(shí)間與日常的時(shí)間不同,不能達(dá)到效果。電路中增加三個(gè)電阻的目的是提高時(shí)鐘芯片在工作時(shí)的抗干擾能力。Y1是32.768MHz的晶振,為時(shí)鐘芯片提供正當(dāng)信號(hào)給時(shí)鐘芯片,時(shí)鐘芯片有時(shí)序的工作。3.7LCD1602液晶電路圖11LCD1602液晶電路LCD1602液晶顯示器處理單片機(jī)傳送過(guò)來(lái)的信號(hào),并對(duì)該信號(hào)進(jìn)行處理,之后顯示處理過(guò)后的數(shù)據(jù)如:當(dāng)前時(shí)間、室內(nèi)溫度和室內(nèi)人數(shù)等。LCD1602顯示屏也不需要過(guò)多的外圍元件驅(qū)動(dòng),R1可調(diào)電阻在這里是調(diào)節(jié)顯示屏亮度。3.8按鍵電路圖12按鍵電路在整個(gè)設(shè)計(jì)的電路中,觸點(diǎn)按鍵電路最為簡(jiǎn)單,只要一端接單片機(jī),一端接地或者接電源,在沒(méi)有按下觸點(diǎn)按鈕的時(shí)候,單片機(jī)連接按鍵的IO口懸空沒(méi)有任何信號(hào)輸入;但是,當(dāng)按下觸點(diǎn)按鍵之后,單片機(jī)連接按鍵的IO口通過(guò)按鍵與電源或者地線(xiàn)相連接,此時(shí),單片機(jī)就有高電平或者低電平輸出,像這樣,通過(guò)判斷是否有高低信號(hào)變化去影響控制芯片處理程序。3.9電源電路圖13電源電路電路供電電路,本設(shè)計(jì)是提供5V供電,電路中的POWER的硬件為DC直流插座,DC轉(zhuǎn)USB線(xiàn)為電路提供電源;J3是電路的總開(kāi)關(guān),控制電路的導(dǎo)通與截止;電容C6、C7防止無(wú)用信號(hào)從前端電路進(jìn)入后端電路,濾除在工作過(guò)程中對(duì)各個(gè)芯片持續(xù)影響的干擾信號(hào),防止無(wú)用的信號(hào)影響周?chē)娐?,從而為影響信?hào)的完整性。第四章系統(tǒng)軟件設(shè)計(jì)4.1系統(tǒng)總體流程圖該系統(tǒng)流程圖是完整電路的功能實(shí)現(xiàn)順序。首打開(kāi)電源,先對(duì)各個(gè)模塊初始化,之后向DS1302讀取數(shù)據(jù)并顯示時(shí)間等。在按下設(shè)置按鍵時(shí),可以對(duì)顯示時(shí)間進(jìn)行設(shè)置與對(duì)定時(shí)時(shí)間的更改;溫度傳感器讀取數(shù)據(jù)送給顯示屏顯示。自動(dòng)模式:定時(shí)時(shí)間與光敏電阻一起,對(duì)自動(dòng)模式的控制,當(dāng)在定時(shí)時(shí)間內(nèi)并系統(tǒng)檢測(cè)到環(huán)境光亮度地,此時(shí)讀取當(dāng)前計(jì)數(shù)值,根據(jù)人數(shù)開(kāi)燈(10打開(kāi)一個(gè)燈,20人打開(kāi)兩個(gè)燈),為此達(dá)到智能節(jié)能的效果。其他都不會(huì)觸發(fā)自動(dòng)模式。手動(dòng)模式:在切換在手動(dòng)模式時(shí),可以通過(guò)按鍵開(kāi)燈與關(guān)燈。開(kāi)始開(kāi)始器件和端口初始化更新時(shí)間數(shù)據(jù)擇鍵按下?根據(jù)人數(shù)開(kāi)燈回復(fù)數(shù)據(jù)設(shè)置時(shí)間YYNN向DS1302發(fā)送請(qǐng)求設(shè)實(shí)時(shí)時(shí)間?Y到達(dá)設(shè)定時(shí)間Y關(guān)燈N設(shè)定時(shí)?YN自動(dòng)模式?手動(dòng)模式燈亮自動(dòng)模式燈亮N設(shè)置定時(shí)光線(xiàn)處于暗弱統(tǒng)計(jì)有人YY開(kāi)關(guān)按下?關(guān)燈開(kāi)燈NY圖14總設(shè)計(jì)流程圖4.2系統(tǒng)子程序流程圖該子程序流程圖是紅外對(duì)管工作流程圖。在電路中,使用了兩組紅外對(duì)管,這里命名為“紅1”與“紅2”。當(dāng)人體先經(jīng)過(guò)“紅1”再經(jīng)過(guò)“紅2”時(shí)(電路中有LED指示燈,觸發(fā)之后對(duì)應(yīng)的LED燈會(huì)亮,“紅1”與“紅2”不能同時(shí)觸發(fā)),從外入內(nèi),計(jì)數(shù)加一。否則,當(dāng)在觸發(fā)“紅2”之前沒(méi)有觸發(fā)“紅1”,計(jì)數(shù)不動(dòng)作。當(dāng)當(dāng)人體先經(jīng)過(guò)“紅2”再經(jīng)過(guò)“紅1”時(shí),從內(nèi)出外,計(jì)數(shù)減一。否則,當(dāng)在觸發(fā)“紅1”之前沒(méi)有觸發(fā)“紅2”,計(jì)數(shù)不動(dòng)作。開(kāi)始開(kāi)始程序掃描YN“紅2”檢測(cè)到有人“紅1”已經(jīng)檢測(cè)過(guò)從外入內(nèi),人數(shù)加一“紅2”標(biāo)志位置位YN“紅1”檢測(cè)到有人“紅2”已經(jīng)檢測(cè)過(guò)從內(nèi)出外,人數(shù)減一“紅1”標(biāo)志位置位標(biāo)志位清除圖15紅外對(duì)管傳感器模塊工作流程圖4.3液晶顯示控制流程圖此流程圖為液晶顯示的情況。打開(kāi)電路,需要先對(duì)LCD1602顯示屏進(jìn)行初始化,接受單片機(jī)為L(zhǎng)CD1602提供的初始值并顯示,之后等待單片機(jī)信號(hào)并作出字符的改變。在液晶顯示屏中,單片機(jī)把需要顯示的信號(hào)發(fā)送給顯示屏顯示液晶初始化液晶初始化啟動(dòng)檢測(cè)啟動(dòng)檢測(cè)NNYY顯示人數(shù)與顯示人數(shù)與溫度獲取信息值獲取信息值顯示顯示顯示顯示顯示顯示顯示顯示圖16液晶顯示模塊流程圖第五章總結(jié)通過(guò)做本設(shè)計(jì),我學(xué)會(huì)了很多。不僅加固了我學(xué)習(xí)的專(zhuān)業(yè)知識(shí),包括stc12c5a60s2單片機(jī)的基本結(jié)構(gòu)和引腳功能,還對(duì)該單片機(jī)的內(nèi)部參數(shù)也有了一定的了解,功能也很強(qiáng)大。在本次項(xiàng)目設(shè)計(jì)中還學(xué)到了C語(yǔ)言編程方面的知識(shí),用C語(yǔ)言寫(xiě)程序,包括LCD1602的程序、按鍵控制程序和定時(shí)器程序、藍(lán)牙模塊編程等等,編程用的是keil軟件。結(jié)論:本次通過(guò)畢業(yè)設(shè)計(jì)的機(jī)會(huì),設(shè)計(jì)的智能照明系統(tǒng)是以當(dāng)前社會(huì)的實(shí)用性前提而做出的。本設(shè)計(jì)的內(nèi)容里包括了以STC89C52智能芯片為核心的基礎(chǔ)下,通過(guò)電子硬件與軟件程序相結(jié)合下,模擬當(dāng)前先進(jìn)的智能照明系統(tǒng)技術(shù),設(shè)計(jì)出的智能照明系統(tǒng)。本設(shè)計(jì)的主要功能為:1、通過(guò)STC單片機(jī)使LCD1602上顯示當(dāng)前的時(shí)間,星期,年月日,室內(nèi)的人數(shù)與溫度;2、通過(guò)設(shè)置按鍵給單片機(jī)發(fā)出信號(hào)調(diào)整LCD1602顯示屏的字幕;3、針對(duì)室內(nèi)燈光設(shè)置——手動(dòng)/自動(dòng)模式,體現(xiàn)智能;4、光敏傳感器檢測(cè)白天燈熄滅,晚上燈光打開(kāi);溫度傳感器監(jiān)視環(huán)境溫度并顯示,紅外對(duì)管傳感器為計(jì)數(shù)人數(shù),進(jìn)加一出則減一。本設(shè)計(jì)以智能與節(jié)約位前提,設(shè)計(jì)出更為實(shí)用的照明系統(tǒng),優(yōu)化了以前設(shè)計(jì)不足的地方。而本設(shè)計(jì)——智能照明系統(tǒng)如果稍加改進(jìn),相信還可以讓廣大的人們所接受和喜愛(ài)。該設(shè)計(jì)只是簡(jiǎn)單的室內(nèi)照明控制,并加入溫度檢測(cè)從而可以知道室內(nèi)溫度。不足地方如下:(1)在整個(gè)電路的設(shè)計(jì)處理中,沒(méi)有考慮多個(gè)一起通過(guò)紅外傳感器,這個(gè)會(huì)出現(xiàn)重疊,紅外對(duì)管傳感器還是只認(rèn)定一個(gè)人。如需解決,可能需要增加紅外對(duì)管傳感器,而且程序也可能需要改進(jìn);(2)在硬件電路上可以加入蜂鳴器,可以通過(guò)程序?qū)崿F(xiàn)定時(shí)提醒與整點(diǎn)提示等。致謝參考文獻(xiàn)[1]靳達(dá).單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2003.93—97.[2]華成英、童詩(shī)白.模擬電子技術(shù)基礎(chǔ)[M].高等教育出版社2001年.[3]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1999.12.[4]張達(dá)敏.教室照明智能控制器[J].貴州工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2003.32(1):75—78.[5]李瀚蓀.電路分析基礎(chǔ).(第三版)[M].北京:高等教育出版社.1999.[6]H.M.Deitel等著邱仲潘等譯.C++大學(xué)教程[M].北京:電子工業(yè)出版社,2009.2.附錄一原理圖圖17總電路原理圖附錄二PCB圖18總電路PCB圖附錄三實(shí)物圖圖19畢業(yè)設(shè)計(jì)實(shí)物圖附錄四系統(tǒng)程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintuchartime_data[7];ucharcodewrite_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//數(shù)據(jù)的地址ucharcoderead_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};ucharcodetable1[]="C:00|2000/00/00";ucharcodetable2[]="T:00|00:00:000";ucharcodetable3[]=""; //清屏內(nèi)容ucharcodetable4[]="SetRealTime";ucharcodetable5[]="SetOpenTime";ucharcodetable6[]="StartTime:";ucharcodetable7[]="00:00:00";ucharcodetable8[]="EndTime:";ucharcodetable9[]="Date:2000/00/00";ucharcodetable0[]="Time:00:00:000";bitAdjust; //調(diào)節(jié)標(biāo)志位,=1表示進(jìn)入調(diào)節(jié)模式,=0是正常模式bitAuto_flg; //自動(dòng)模式標(biāo)志位,=1表示手動(dòng)模式,=0是自動(dòng)模式sbitrs=P1^0; //LCD1602sbitrw=P1^1; //LCD1602sbite=P1^2; //LCD1602sbitsck=P2^5; //時(shí)鐘端口sbitio=P2^6; //時(shí)鐘端口sbitrst=P2^7; //時(shí)鐘端口sbitSELT=P1^6; //選擇鍵sbitENTER=P1^7; //確認(rèn)鍵sbitUP=P3^0; //加鍵sbitDOWN=P3^1; //減鍵sbitMODE=P3^2; //切換按鍵接口sbitSWITCH=P3^3; //手動(dòng)開(kāi)關(guān)sbitAUTO_LED=P1^3; //自動(dòng)模式燈接口sbitHAND_LED=P1^4; //手動(dòng)燈接口sbitLAMP1=P3^4; //燈接口sbitLAMP2=P3^5; //燈接口sbitLAMP3=P3^6; //燈接口sbitLAMP4=P3^7; //燈接口sbitLIGHT1=P2^0; //光線(xiàn)檢測(cè)端口sbitIN1=P2^2;sbitOUT1=P2^1;sbitDQ=P1^5; //溫度數(shù)據(jù)口ucharSelect_num; //選擇按鍵按下次數(shù)ucharEnter_num; //確認(rèn)按鍵按下次數(shù)ucharSwitch_num; //手動(dòng)開(kāi)關(guān)按鍵按下次數(shù)floatYear,Month,Day,Hour,Minute,Second; //時(shí)間設(shè)置值ucharWeek; floatHour_H,Minute_H,Second_H; //設(shè)置開(kāi)始時(shí)間floatHour_L,Minute_L,Second_L; //設(shè)置結(jié)束時(shí)間intValue1; //人數(shù)ucharIN1_flag=0;ucharOUT1_flag=0;uintCount;//T0定時(shí)器中斷計(jì)數(shù)次數(shù)ucharMiao;inttemperature; //全局變量溫度voidread_rtc();/********************************LCD1602顯示*******************************/voiddelay1(uintz) //延時(shí)函數(shù){ uintx,y; for(x=z;x>0;x--) for(y=10;y>0;y--);}voidwrite_com(ucharcom) //寫(xiě)指令函數(shù){ rw=0; delay1(5); rs=0; delay1(5); e=1; delay1(5); P0=com; delay1(5); e=0; delay1(5); }voidwrite_date(uchardate) //寫(xiě)數(shù)據(jù)函數(shù){ rw=0; delay1(5); rs=1; delay1(5); e=1; delay1(5); P0=date; delay1(5); e=0; delay1(5); }voidinit() //初始化函數(shù){ ucharnum; Year=17; Month=1; Day=1; Hour=15; Minute=30; Second=50; Week=1; Hour_H=22; Minute_H=0; Second_H=0; Hour_L=18; Minute_L=0; Second_L=0; e=0; //時(shí)序表e初始為0 write_com(0x38); //設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口 write_com(0x0c); //設(shè)置光標(biāo) write_com(0x06); //光標(biāo)自動(dòng)加1,光標(biāo)輸入方式 write_com(0x01); //清屏 write_com(0x80); //設(shè)置初始顯示位置 for(num=0;num<16;num++) { write_date(table1[num]); delay1(5); } write_com(0x80+0x40); for(num=0;num<16;num++) { write_date(table2[num]); delay1(5); } }voidSetTime_dispaly(ucharadd,uchardat) //第一個(gè):參數(shù)的地址,第二個(gè):參數(shù)的內(nèi)容{ ucharshi,ge; shi=dat/10; //把十位提取出來(lái) ge=dat%10; //把個(gè)位提取出來(lái) write_com(add); //要寫(xiě)的地址 write_date(0x30+shi); //十位的內(nèi)容1602字符庫(kù) write_date(0x30+ge); //個(gè)位的內(nèi)容1602字符庫(kù)}voidWeek_dispaly(ucharadd,uchardat) //第一個(gè):參數(shù)的地址,第二個(gè):參數(shù)的內(nèi)容{ write_com(add); //要寫(xiě)的地址 write_date(0x30+dat); //十位的內(nèi)容1602字符庫(kù)}voidDate_dispaly(ucharadd,uchardat) //第一個(gè):參數(shù)的地址,第二個(gè):參數(shù)的內(nèi)容{ ucharshi,ge; shi=dat/16; //把十位提取出來(lái) ge=dat%16; //把個(gè)位提取出來(lái) write_com(add+3); //要寫(xiě)的地址 write_date(0x30+shi); //十位的內(nèi)容1602字符庫(kù) write_date(0x30+ge); //個(gè)位的內(nèi)容1602字符庫(kù) }voidLCD_Clean(uchari) //液晶屏清除顯示{ ucharnum; if(i==1) { write_com(0x80); //設(shè)置初始顯示位置 for(num=0;num<16;num++) //顯示第一行內(nèi)容 { write_date(table3[num]); delay1(1); } } if(i==2) { write_com(0x80+0x40); for(num=0;num<16;num++) //顯示第二行內(nèi)容 { write_date(table3[num]); delay1(1); } }}voidLCD_Display_String(unsignedcharline,unsignedchar*string){ //液晶屏顯示內(nèi)容,把要顯示的內(nèi)容寫(xiě)到對(duì)應(yīng)的位置 unsignedchari; unsignedcharaddress=0; if(line==1) { address=0x80; //0X80是第1行的第1個(gè)位置,0x81第2位 } elseif(line==2) { address=0x80+0x40; //0X80+0x40是第2行的第1個(gè)位置,0X80+0x40+1是第2行第2位 } for(i=0;i<16;i++) { write_com(address); write_date(string[i]); address++; }}/**********************************DS1302時(shí)鐘***************************************/voidTime_Display(void){ read_rtc(); Date_dispaly(0x80+0x40+9,time_data[6]);//顯示秒 Date_dispaly(0x80+0x40+6,time_data[5]); //顯示分 Date_dispaly(0x80+0x40+3,time_data[4]); //顯示時(shí) Date_dispaly(0x80+11,time_data[3]); //顯示日 Date_dispaly(0x80+8,time_data[2]); //顯示月 Week_dispaly(0x80+0x40+15,time_data[1]);//顯示周 Date_dispaly(0x80+5,time_data[0]); //顯示年 // Year/10*16+Year%10 Hour=time_data[4]/16*10+time_data[4]%16;; Minute=time_data[5]/16*10+time_data[5]%16;; Second=time_data[6]/16*10+time_data[6]%16;;}voidwrite_ds1302_byte(uchardat){ uchari; for(i=0;i<8;i++) { sck=0; io=dat&0x01; //準(zhǔn)備數(shù)據(jù),從最低位開(kāi)始 dat=dat>>1; sck=1; }}voidwrite_ds1302(ucharadd,uchardat){ rst=0; _nop_(); //CPU原地踏步 sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); //傳地址 write_ds1302_byte(dat); //傳數(shù)據(jù) rst=0; //不受其他影響 _nop_(); io=1; //釋放 sck=1;}ucharread_ds1302(ucharadd){ uchari,value; rst=0; _nop_();//CPU原地踏步 sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); for(i=0;i<8;i++) { value=value>>1; sck=0; if(io) value=value|0x80; sck=1; } rst=0; _nop_(); sck=0; _nop_(); sck=1; io=1; returnvalue;}voidset_rtc() //設(shè)置時(shí)間{ uchari,j; for(i=0;i<7;i++) //轉(zhuǎn)換BCD碼 { j=time_data[i]/10; time_data[i]=time_data[i]%10; time_data[i]=time_data[i]+j*16; } write_ds1302(0x8e,0x00); //去除寫(xiě)保護(hù) for(i=0;i<7;i++) { write_ds1302(write_add[i],time_data[i]); } write_ds1302(0x8e,0x80);//加寫(xiě)保護(hù)}voidread_rtc(){ uchari; for(i=0;i<7;i++) { time_data[i]=read_ds1302(read_add[i]); //最終讀出來(lái)的數(shù)16進(jìn)制 }}/*******************************************************************************************************/voidCount_Value(void){ SetTime_dispaly(0x80+3,Value1); if(IN1==0) { delay1(1); if(IN1==0) { while(!IN1); if(OUT1_flag==0) { IN1_flag=1; TR0=1; //開(kāi)啟定時(shí)器防止誤觸發(fā) } if(OUT1_flag==1) { Value1++; //人數(shù)增加 if(Value1>=99) //如果人數(shù)計(jì)數(shù)到99,變?yōu)樽畲?9 Value1=99; OUT1_flag=0; //清零 IN1_flag=0; TR0=0; //關(guān)閉定時(shí)器 Count=0; Miao=0; } } } if(OUT1==0) { delay1(1); if(OUT1==0) { while(!OUT1); if(IN1_flag==0) { OUT1_flag=1; TR0=1; //開(kāi)啟定時(shí)器防止誤觸發(fā) } if(IN1_flag==1) { Value1--; //人數(shù)減少 if(Value1<0) //如果人數(shù)計(jì)數(shù)小于0,變?yōu)樽钚? Value1=0; IN1_flag=0; //清零 OUT1_flag=0; TR0=0; //關(guān)閉定時(shí)器 Count=0; Miao=0; } } }}/*******************************溫度******************************//*voiddelay(uinty) //DS18B20延時(shí)函數(shù)(仿真用){ while(y--);}*/voiddelay(uintz) //DS18B20延時(shí)函數(shù)(實(shí)物用){ uintx,y; for(x=z;x>0;x--) for(y=1;y>0;y--);}voidwrite_byte(uintdat) //寫(xiě)一個(gè)字節(jié){ uchari; for(i=0;i<8;i++) //循環(huán)八次 共有八位 { DQ=0; //寫(xiě)零 DQ=dat&0x01;//向總線(xiàn)寫(xiě)位數(shù)據(jù),從最低位寫(xiě)起 delay(4); DQ=1; //寫(xiě)一 dat>>=1; //下次寫(xiě)作準(zhǔn)備,移位數(shù)據(jù) } delay(4);} ucharread_byte(void) //讀一個(gè)字節(jié),返回值{ uchari; uintvalue; for(i=0;i<8;i++) //循環(huán)八次 共有八位 { DQ=0; value>>=1; DQ=1; //釋放總線(xiàn) if(DQ) value|=0x80; //DQ=1,value取1 delay(4); } returnvalue;}voidds18b20_init() //初始化函數(shù){ uintn; DQ=1; delay(8); DQ=0; delay(80); //低電平480——960us DQ=1; //總線(xiàn)釋放 delay(8); //等待50——100us n=DQ; //讀取復(fù)位狀態(tài) delay(4);}intreadtemperature() //讀整數(shù)部分{ inta,b; //高八位,低八位 ds18b20_init(); write_byte(0xcc); //跳過(guò)rom匹配,跳過(guò)讀序列號(hào)的操作,可節(jié)省操作時(shí)間 write_byte(0x44); //啟動(dòng)溫度檢測(cè) delay(300); //測(cè)溫度 ds18b20_init(); //開(kāi)始操作前需要復(fù)位 write_byte(0xcc); //跳過(guò)rom匹配 write_byte(0xbe);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論