《‌基于STC89C52單片機(jī)的智能路燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》14000字(論文)_第1頁(yè)
《‌基于STC89C52單片機(jī)的智能路燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》14000字(論文)_第2頁(yè)
《‌基于STC89C52單片機(jī)的智能路燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》14000字(論文)_第3頁(yè)
《‌基于STC89C52單片機(jī)的智能路燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》14000字(論文)_第4頁(yè)
《‌基于STC89C52單片機(jī)的智能路燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》14000字(論文)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1頁(yè)?基于STC89C52單片機(jī)的智能路燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘要目前,隨著世界不斷發(fā)展,電力資源被大量消耗,如何節(jié)能降耗成為我們的熱議課題。本系統(tǒng)以STC89C52為核心,利用BH1750FVI傳感器采集光照強(qiáng)度、HC-SR501紅外線技術(shù)對(duì)人和車輛進(jìn)行監(jiān)測(cè)、結(jié)合外部電路和接口設(shè)計(jì),控制路燈的亮度以及開(kāi)燈時(shí)間,LCD屏幕會(huì)實(shí)時(shí)顯示智能路燈系統(tǒng)的運(yùn)行狀態(tài),路燈只會(huì)在設(shè)定的時(shí)間段內(nèi)開(kāi)啟,達(dá)到節(jié)約能源的目的。經(jīng)系統(tǒng)測(cè)試結(jié)果證明,智能全自動(dòng)路燈控制系統(tǒng)基本實(shí)現(xiàn)了所需功能,且有一定的節(jié)能作用。此系統(tǒng)雖然設(shè)計(jì)較為簡(jiǎn)單,但是在日常生活中具有很大的實(shí)用價(jià)值。關(guān)鍵詞:智能控制;路燈;STC89C52單片機(jī);傳感器。目錄第一章緒論 頁(yè)第一章緒論1.1論文研究背景及意義目前,隨著科技的飛速發(fā)展,人們對(duì)生活質(zhì)量的要求越來(lái)越高,各種智能設(shè)備不斷涌現(xiàn),自動(dòng)化智能控制設(shè)備逐漸向人性化的方向發(fā)展。智能化產(chǎn)品可以更好地滿足人們的需求,是未來(lái)所有產(chǎn)品設(shè)計(jì)和制作的發(fā)展趨勢(shì)。路燈在人們的日常生活中起著舉足輕重的作用,但是目前,絕大多數(shù)的街邊路燈采用的依然是傳統(tǒng)路燈,由人工來(lái)控制,工人每天傍晚要去開(kāi)啟路燈,早晨要很早去關(guān)閉路燈,當(dāng)遭遇惡劣天氣、工人出門受阻時(shí),增加了非常大的工作量,這樣的情況極大地浪費(fèi)了人力資源。其次,由于每天后半夜街上的人和車輛其實(shí)都非常少,經(jīng)常存在無(wú)人無(wú)車的情況,但是路燈卻一直亮著,這對(duì)于電能的損耗是非常大的,這時(shí)我們可以采用紅外線技術(shù)檢測(cè)人和車輛的通過(guò)情況,當(dāng)有人和車輛通過(guò)時(shí)候,路燈才會(huì)亮起,這樣達(dá)到了減少電能損耗的目的。為了減少人力資源和電能的損耗,智能全自動(dòng)路燈控制系統(tǒng)的設(shè)計(jì)與使用顯得尤為重要。在這樣的背景下,本文設(shè)計(jì)了一個(gè)能夠滿足日常路燈的照射要求,同時(shí)還能夠減少能源損失的系統(tǒng)。本系統(tǒng)采用STC89C52單片機(jī)作為主要控制器,通過(guò)數(shù)字光照傳感器獲取環(huán)境光照強(qiáng)度,路燈可根據(jù)環(huán)境自動(dòng)調(diào)節(jié)路燈亮度;通過(guò)人體紅外傳感器檢測(cè)有人或者車輛的通行情況,在人或車輛通行時(shí),路燈會(huì)變亮。LCD屏幕還可以實(shí)時(shí)顯示系統(tǒng)運(yùn)行狀態(tài),且路燈只會(huì)在設(shè)定的時(shí)間段內(nèi)才會(huì)開(kāi)啟,以此達(dá)到節(jié)能降耗的目的。1.2發(fā)展歷史及研究現(xiàn)狀15世紀(jì),路燈首次出現(xiàn)在倫敦。到了16世紀(jì),路易十四下令照亮城市街道,于是巴黎街頭出現(xiàn)了很多路燈。最初的路燈都是用油燈和蠟燭照明,不過(guò)光線很微弱。后來(lái)使用了煤油,光線變亮了,但是效果依然不好,直到汽燈的出現(xiàn),迅速風(fēng)靡了歐洲。1843年,上海街頭的路燈首次亮相,雖然它是煤油點(diǎn)燃的,但還是吸引了很多人前去一睹風(fēng)采。后來(lái),上海租界的路燈被換成了煤氣燈,它的亮度是煤油燈的好幾倍,可以為晚上的行人提供照明。1879年,上海第一盞裝有內(nèi)燃機(jī)的中國(guó)電燈被點(diǎn)亮。那時(shí),每個(gè)電燈都要在每個(gè)燈桿上安裝一個(gè)閘刀開(kāi)關(guān),由工人每天進(jìn)行開(kāi)啟和關(guān)閉,后改用一個(gè)開(kāi)關(guān)控制多盞路燈。1906年,北京率先安裝了官辦的路燈,負(fù)責(zé)管理路燈的人被稱為稽查員。到了1911年,北京城內(nèi)七個(gè)地區(qū)的電燈總數(shù)已超過(guò)600個(gè)。1943年,電燈取代了北京城所有的燃油燈,從此煤油燈退出了歷史舞臺(tái)。北京在1960年安裝了23臺(tái)日光燈,這是我們首次嘗試使用新光源,使路燈的亮度有了很大的提升。90年代后,隨著科學(xué)的迅速發(fā)展,新類型的路燈陸續(xù)出現(xiàn)。進(jìn)入21世紀(jì)后,由于信息技術(shù)的飛速發(fā)展,市面上出現(xiàn)了很多智能路燈控制系統(tǒng)[1]的設(shè)計(jì),例如基于電力載波的智能路燈[2]、基于WSN的智能路燈[3]、基于ZigBee的無(wú)線智能路燈[4]等智能路燈設(shè)計(jì)[5]。根據(jù)現(xiàn)代城市的實(shí)際需求和能源短缺問(wèn)題,人們對(duì)智能路燈控制系統(tǒng)的要求越來(lái)越高。人們現(xiàn)在也越來(lái)越越重視全球的環(huán)境問(wèn)題,為了節(jié)約能源,新光源誕生了,路燈可以直接通過(guò)自然光源進(jìn)行發(fā)電,這樣大大節(jié)約了全球能源。近些年來(lái),我國(guó)對(duì)于智慧城市建設(shè)越來(lái)越重視,而智能路燈也將成為未來(lái)智慧城市建設(shè)的一項(xiàng)重要內(nèi)容,所以此設(shè)計(jì)具有很強(qiáng)的實(shí)用性、很大的市場(chǎng)價(jià)值,可廣泛應(yīng)用于生活中。相信在不久的將來(lái),路燈一定會(huì)更上一層樓。1.3本文的主要研究?jī)?nèi)容本文的研究?jī)?nèi)容是以STC89C52為核心,利用BH1750FVI傳感器采集光照強(qiáng)度,用HC-SR501紅外技術(shù)對(duì)行人和車輛進(jìn)行監(jiān)測(cè),實(shí)現(xiàn)一種能夠根據(jù)周圍環(huán)境變化燈光亮度,達(dá)到降低能耗的智能路燈控制系統(tǒng)。本文的主要研究?jī)?nèi)容如下:(1)第一章主要闡述了本文的研究背景和意義,以及路燈的發(fā)展歷史和研究現(xiàn)狀。針對(duì)實(shí)際生活需求和節(jié)能降耗的目的,設(shè)計(jì)一種實(shí)用又節(jié)能的智能全自動(dòng)路燈控制系統(tǒng)。(2)第二章是對(duì)智能路燈控制系統(tǒng)總體設(shè)計(jì)的要求,以及針對(duì)光照強(qiáng)度采集電路構(gòu)建、人或者車輛活動(dòng)軌跡采集、顯示器三個(gè)部分的方案進(jìn)行分析和選擇,根據(jù)系統(tǒng)所需功能選擇出最適合的方案。(3)第三章重點(diǎn)闡述了智能路燈控制系統(tǒng)的硬件實(shí)現(xiàn),分別從供電電路設(shè)計(jì)、光照強(qiáng)度采集、紅外人體檢測(cè)、控制系統(tǒng)以及燈光亮度控制五個(gè)模塊進(jìn)行介紹與分析,針對(duì)每個(gè)模塊所需的功能進(jìn)行設(shè)計(jì),使整個(gè)系統(tǒng)能夠更流暢地運(yùn)行。(4)第四章主要介紹了智能路燈控制系統(tǒng)的軟件設(shè)計(jì),首先介紹程序設(shè)計(jì)流程圖,其次對(duì)BH1750光照強(qiáng)度傳感器、使PWM波形的輸出的定時(shí)器、LCD12864、DS1302進(jìn)行編程設(shè)計(jì),在程序的作用下,能夠讓每個(gè)模塊實(shí)現(xiàn)自動(dòng)化,使系統(tǒng)更高效運(yùn)行。(5)第五章主要介紹了系統(tǒng)的調(diào)試與檢測(cè)。在硬件設(shè)計(jì)和軟件設(shè)計(jì)的總體設(shè)計(jì)正確的情況下,對(duì)系統(tǒng)進(jìn)行調(diào)試與檢測(cè),記錄下檢測(cè)的結(jié)果,并且分析結(jié)果,使得設(shè)計(jì)達(dá)到最終要求。

第二章系統(tǒng)的設(shè)計(jì)方案2.1系統(tǒng)設(shè)計(jì)需求該系統(tǒng)以STC89C52單片機(jī)為核心,利用BH1750FVI傳感器采集光照強(qiáng)度,HC-SR501監(jiān)測(cè)用戶行為,并結(jié)合外部電路和接口設(shè)計(jì),實(shí)現(xiàn)了對(duì)路燈控制系統(tǒng)的節(jié)能改造,設(shè)計(jì)要求如下:(1)路燈在設(shè)置期間不會(huì)點(diǎn)亮;(2)能夠調(diào)整路燈照明的亮度,以適應(yīng)周圍的光強(qiáng);(3)對(duì)系統(tǒng)的實(shí)時(shí)操作狀況進(jìn)行顯示;(4)降低了設(shè)計(jì)費(fèi)用,降低了能耗。整個(gè)系統(tǒng)主要由四大部分組成:光照強(qiáng)度采集,人或者車輛活動(dòng)軌跡采集,系統(tǒng)控制與邏輯處理,顯示模塊。2.2方案設(shè)計(jì)2.2.1光照強(qiáng)度采集電路構(gòu)建方案設(shè)計(jì)在系統(tǒng)設(shè)計(jì)和計(jì)劃前,光照強(qiáng)度采集電路主要分為兩個(gè)大方向:一是利用光敏電阻和光敏二極管等光電器件把光信號(hào)轉(zhuǎn)化為電信號(hào),然后用模數(shù)轉(zhuǎn)換芯片把電信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)輸出到控制系統(tǒng)中;二是采用數(shù)碼光照強(qiáng)度采集集成芯片,將光照強(qiáng)度的數(shù)據(jù)直接傳輸?shù)娇刂葡到y(tǒng)當(dāng)中。第一個(gè)方案有如下幾個(gè)困難:(1)在不同的光照條件下,光敏二極管的電流值會(huì)產(chǎn)生變化,從而導(dǎo)致兩端產(chǎn)生的電壓值不同。(2)構(gòu)造一個(gè)正確穩(wěn)定的電壓采樣電路。(3)本系統(tǒng)采用的STC89C52主控芯片沒(méi)有ADC轉(zhuǎn)換模塊,若采用此方案,還需另外選擇模數(shù)轉(zhuǎn)換器,將電壓值轉(zhuǎn)換為數(shù)字信號(hào)?;谝陨先齻€(gè)問(wèn)題的考慮,本系統(tǒng)最終選擇數(shù)字光照強(qiáng)度傳感器來(lái)采集光照強(qiáng)度。BH1750FVI是一款以光敏二極管、運(yùn)算放大器、ADC采集和晶振等組成的數(shù)字型光強(qiáng)度傳感器,光敏二極管利用光生伏特效應(yīng),將光照強(qiáng)度轉(zhuǎn)換為電信號(hào),經(jīng)運(yùn)算放大器放大,再經(jīng)ADC采集電壓,通過(guò)邏輯電路進(jìn)行變換[6]。BH1750FVI具有IIC協(xié)議,單片機(jī)可通過(guò)IIC通訊選擇BH1750FVI的工作方式,讀出16位的光照強(qiáng)度數(shù)據(jù)。經(jīng)過(guò)多種因素的綜合考慮,BH1750FVI光照強(qiáng)度傳感器滿足了本設(shè)計(jì)的需求。2.2.2人或者車輛活動(dòng)軌跡采集方案設(shè)計(jì)通常通過(guò)下列方法來(lái)獲取人或車輛的活動(dòng)軌跡:(1)當(dāng)人或交通工具經(jīng)過(guò)時(shí),由聲控開(kāi)關(guān)來(lái)進(jìn)行聲音的檢測(cè)。缺點(diǎn)是容易受到其他環(huán)境噪聲的干擾,從而導(dǎo)致系統(tǒng)判斷錯(cuò)誤,造成能源消耗。(2)利用單線感應(yīng)開(kāi)關(guān),如紅外線對(duì)管,激光傳感器等。裝在人或車輛所要經(jīng)過(guò)的路線,由此來(lái)判斷人或車輛是否進(jìn)入了該系統(tǒng)的工作區(qū)域。這種方法的最大缺陷在于安裝難度較大,需要在空曠地區(qū)或多條管道中間設(shè)置多組對(duì)管,同時(shí)由于紅外線對(duì)管的反饋信息不能準(zhǔn)確地判斷出人員和車輛是否在工作區(qū)域內(nèi),所以此方案難度較大。(3)采用人體紅外感應(yīng)傳感器,人體紅外感應(yīng)傳感器主要是通過(guò)人體的體溫或者汽車發(fā)動(dòng)機(jī)發(fā)來(lái)的紅外波來(lái)檢測(cè)人體的活動(dòng),人體紅外感應(yīng)傳感器可以在檢測(cè)范圍之內(nèi),感應(yīng)到人或者車輛的移動(dòng)。檢測(cè)到人或者車輛活動(dòng)會(huì)輸出高電平信號(hào),離開(kāi)檢測(cè)范圍就會(huì)輸出低電平信號(hào)。綜合上述因素的考慮,最后選擇了HC-SR501紅外感應(yīng)模塊來(lái)檢測(cè)人與車輛的活動(dòng)。HC-SR501是基于紅外技術(shù)的自動(dòng)化控制模塊,具有靈敏度高、可靠性強(qiáng)等特點(diǎn),采用低電壓工作模式[7]。在探測(cè)范圍內(nèi),檢測(cè)到人體活動(dòng)之后會(huì)輸出高電平,人或者車輛離開(kāi)之后,經(jīng)一段時(shí)間的延遲會(huì)輸出低電平,該模塊使用方法簡(jiǎn)單,符合本設(shè)計(jì)所需要求。2.2.3系統(tǒng)控制與邏輯處理方案設(shè)計(jì)控制與邏輯處理選用STC89S52芯片。STC89C52具有8KFlash,、512字節(jié)RAM、32位IO口、看門狗定時(shí)器、4KBEEPROM、3個(gè)16位定時(shí)計(jì)數(shù)器、4個(gè)外部中斷、全雙工串口。該芯片性能穩(wěn)定、價(jià)格便宜,符合本設(shè)計(jì)所需要求,所以選用STC89S52芯片使用。2.2.4顯示器方案設(shè)計(jì)顯示器是人類與機(jī)器互動(dòng)的一個(gè)重要部分,它已經(jīng)發(fā)展成為幾乎所有的電子產(chǎn)品中都不可缺少的一部分。當(dāng)前市場(chǎng)上所采用的顯示屏品種繁多,所涉及的技術(shù)種類也很多,常見(jiàn)的顯示器有如下幾種:(1)數(shù)碼管顯示屏。數(shù)碼管顯示屏具有結(jié)構(gòu)簡(jiǎn)單、易于驅(qū)動(dòng)、成本低廉等優(yōu)點(diǎn)。其不足之處在于,僅能顯示諸如數(shù)字字母之類的簡(jiǎn)單信息。(2)點(diǎn)陣顯示屏。點(diǎn)陣顯示屏是由LED燈構(gòu)成的,其工作原理和數(shù)碼管類似,能夠顯示較為復(fù)雜的漢字圖像。不足之處在于,其驅(qū)動(dòng)比較繁瑣,所顯示的內(nèi)容必須經(jīng)過(guò)專用軟件“取碼”,使之成為無(wú)灰度值的代表LED燈亮滅的二進(jìn)制值,其驅(qū)動(dòng)功率較大,能耗較高。(3)OLED與LCD顯示屏。LCD自身沒(méi)有發(fā)光的能力,只有背光模塊才能發(fā)光;而OLED不需要背光模塊就能自主發(fā)光,它就像一塊由無(wú)數(shù)個(gè)彩色小燈泡組成的顯示屏。OLED在視覺(jué)上給人帶來(lái)更強(qiáng)烈的色彩體驗(yàn),而LCD的顯示效果更接近于真實(shí)。LCD顯示屏采用的是無(wú)機(jī)材料,而OLED則是采用有機(jī)材料。這兩種顯示屏被廣泛應(yīng)用于移動(dòng)設(shè)備,如手機(jī)等,具有良好的顯示效果和高分辨率。不足之處在于其驅(qū)動(dòng)復(fù)雜,成本高,要求其驅(qū)動(dòng)設(shè)備具有比較高的工作頻率,以適應(yīng)屏幕的高刷新率和大量的數(shù)據(jù)并行處理。圖2-1顯示屏在分析了系統(tǒng)的需求之后,最終選擇采用LCD12864作為顯示模塊。LCD12864是一種具有128*64個(gè)顯示像素點(diǎn)的工業(yè)字符型液晶,它能夠顯示漢字和圖形,滿足了本系統(tǒng)的設(shè)計(jì)要求。

第三章 系統(tǒng)的硬件設(shè)計(jì)3.1供電電路設(shè)計(jì)供電電路為整個(gè)系統(tǒng)提供穩(wěn)定的5V直流電壓。本設(shè)計(jì)采用的是7805三端穩(wěn)壓芯片,該芯片的直流輸入電壓范圍為7V至35V,并且能達(dá)到1.5A的輸出電流,且其無(wú)需外接任何補(bǔ)償元件,內(nèi)部具有過(guò)流、過(guò)熱及調(diào)整管的保護(hù)電路,能有效地防止負(fù)載短路燒毀元件、結(jié)溫過(guò)熱燒毀器件,以及功耗過(guò)高燒毀輸出驅(qū)動(dòng)器晶體。選用此芯片滿足本系統(tǒng)的設(shè)計(jì)需求。下圖為供電電路設(shè)計(jì)原理圖:圖3-1供電電路3.2光照強(qiáng)度采集模塊BH1750主要采用光敏二極管、運(yùn)算放大器、ADC采集、晶振等器件構(gòu)成,PD二極管利用光生伏特效應(yīng)把輸入的光信號(hào)轉(zhuǎn)化為電信號(hào),由運(yùn)算放大電路進(jìn)行放大,用ADC采集電壓,再用邏輯電路轉(zhuǎn)換成16位二進(jìn)制數(shù),并把它存儲(chǔ)在寄存器中,BH1750引出了時(shí)鐘線和數(shù)據(jù)線,通過(guò)I2C協(xié)議實(shí)現(xiàn)了與BH1750模塊的通訊,也可以從BH1750寄存器中提取光照度數(shù)據(jù)[8]。下圖為BH1750內(nèi)部模塊圖以及引腳功能說(shuō)明:圖3-2BH1750引腳功能保障BH1750的正常運(yùn)行需要有一定的外圍電路,為了簡(jiǎn)化設(shè)計(jì)流程提高設(shè)計(jì)效率以及穩(wěn)定性,本系統(tǒng)選用了成品BH1750模塊,該模塊為BH1750提供了3.3V的工作電壓以及一些必須的外圍器件,該模塊內(nèi)部電路圖如下:圖3-3BH1750模塊電路圖BH1750芯片反饋回來(lái)的光照強(qiáng)度數(shù)值范圍在0-65536LUX之間,通過(guò)查閱相關(guān)資料可知室內(nèi)燈具的照明一般在100LUX以內(nèi)。所以在本系統(tǒng)的設(shè)計(jì)中,采用100LUX為閥值,當(dāng)環(huán)境亮度高于100LUX時(shí),關(guān)閉燈光,小于100LUX時(shí),開(kāi)啟燈光,燈光的亮度取決于環(huán)境亮度。環(huán)境亮度越小于100LUX,控制燈光亮度的PWM波占空比越高;越接近于100LUX,控制燈光亮度的PWM波占空比越低。3.3紅外人體檢測(cè)模塊HC-SR501是一個(gè)靈敏度高、可靠性強(qiáng)、擁用超低電壓工作模式的紅外線技術(shù)自動(dòng)控制模塊,適用于各種自動(dòng)傳感器應(yīng)用。HC-SR501感應(yīng)模塊采用雙元探頭,探頭的窗口是矩形的,在長(zhǎng)邊的兩端有雙元(A元B元),當(dāng)人體由左至右或由右至左移動(dòng)時(shí),紅外光譜到達(dá)雙元的時(shí)間和距離發(fā)生變化,其變化差值越大,感應(yīng)越靈敏,而當(dāng)人體從正面走向探頭或由上至下、由下至上的方向移動(dòng)時(shí),則無(wú)法檢測(cè)出紅外光譜距離的變化,因此感應(yīng)器無(wú)法工作;因此,在安裝感應(yīng)器時(shí),探頭雙元的方向應(yīng)盡可能與大多數(shù)人的活動(dòng)方向保持一致,以便探頭雙元能準(zhǔn)確檢測(cè)到人體通過(guò)。為了增加檢測(cè)角度的范圍,使用了圓形透鏡來(lái)檢測(cè)四個(gè)方向,其中左右方向的檢測(cè)范圍要比上下方向大,靈敏度高[9]。HC-SR501感應(yīng)模塊通過(guò)內(nèi)置的兩個(gè)電位器來(lái)調(diào)節(jié)感應(yīng)靈敏度和延時(shí)時(shí)間,靈敏度越高越容易感應(yīng)到紅外信號(hào),而延時(shí)時(shí)間則是指每次感應(yīng)到紅外信號(hào)后引腳輸出高電平的時(shí)間長(zhǎng)度。圖3-4HC-SR501模塊3.4控制系統(tǒng)模塊控制系統(tǒng)即為中央處理器,它可以根據(jù)傳感器采集到的光照信息來(lái)調(diào)節(jié)燈光的亮度,并根據(jù)紅外傳感器的反饋來(lái)調(diào)節(jié)燈光開(kāi)啟與關(guān)閉的時(shí)間。本系統(tǒng)以STC89C52單片機(jī)為核心,其具有8KFlash、512字節(jié)RAM、32位IO口、看門狗定時(shí)器、4KBEEPROM、三個(gè)16位定時(shí)計(jì)數(shù)器、四個(gè)外部中斷、全雙工串口。STC89C52是一個(gè)具有ROM/EPROM的單片機(jī),其結(jié)構(gòu)簡(jiǎn)單、可靠性高。當(dāng)使用STC89C52單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),該單片機(jī)只需要連接時(shí)鐘電路和復(fù)位電路。由于最小應(yīng)用系統(tǒng)集成度的有限,僅能作為小型控制單元使用。它的應(yīng)用特點(diǎn):(1)有許多I/O口線可供用戶使用。(2)內(nèi)存容量受限。(3)應(yīng)用系統(tǒng)開(kāi)發(fā)具有特殊性。盡管STC89C52有一個(gè)振蕩電路,但需要一個(gè)外部附加電路才能產(chǎn)生產(chǎn)生時(shí)鐘信號(hào)。STC89C52單片機(jī)有兩種不同的時(shí)鐘產(chǎn)生方式:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本系統(tǒng)采用了內(nèi)部時(shí)鐘方式,外部定時(shí)元件被連接到XTAL1和XTAL2引腳上,以引起內(nèi)部振蕩電路發(fā)生自激振蕩。本設(shè)計(jì)使用了最常見(jiàn)的內(nèi)部時(shí)鐘方式,即由外接晶體與電容構(gòu)成的并聯(lián)諧振回路。振蕩晶體的頻率范圍為1.2MHZ至12MHZ。電容的大小影響到振蕩頻率輸出的穩(wěn)定性和大小,以及振蕩電路起振速度,且CX1和CX2的取值范圍為20pF至100pF。因此在本設(shè)計(jì)中,振蕩晶體選擇12MHZ,電容選擇30pF。80C52是由一個(gè)外部復(fù)位電路進(jìn)行復(fù)位。復(fù)位引腳RST用斯密特觸發(fā)器來(lái)抑制噪音,在每個(gè)周期的S5P2,想要獲得內(nèi)部重置操作所必需的信號(hào),復(fù)位電路要對(duì)斯密特觸發(fā)器的輸出電平進(jìn)行一次采樣。一般的復(fù)位電路有兩種方法:上電的自動(dòng)復(fù)位和按鍵復(fù)位。最簡(jiǎn)單的上電自動(dòng)復(fù)位是通過(guò)給外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的。在Vcc升高時(shí)間小于1毫秒的情況下,自動(dòng)上電復(fù)位是可以實(shí)現(xiàn)的。除了上電復(fù)位以外,還需一個(gè)手動(dòng)復(fù)位按鈕。本設(shè)計(jì)中使用了一個(gè)手動(dòng)復(fù)位按鈕。手動(dòng)復(fù)位按鈕的復(fù)位方法有兩種:一種是電平法,一種是脈沖法。其中,電平復(fù)位是通過(guò)RST端經(jīng)電阻與電源Vcc連接實(shí)現(xiàn)的。圖3-5單片機(jī)最小系統(tǒng)3.5燈光亮度模塊一般的照明裝置,都是開(kāi)、關(guān)對(duì)應(yīng)亮、滅兩種狀態(tài),按照本系統(tǒng)的設(shè)計(jì)要求,照明燈必須根據(jù)周圍光線的強(qiáng)弱來(lái)調(diào)整燈光的亮度,因此必須要有從滅-半亮-全亮的過(guò)渡過(guò)程。目前,采用常規(guī)的鎢絲燈泡難以達(dá)到上述要求,而目前已經(jīng)興起的LED照明設(shè)備可以通過(guò)PWM技術(shù)來(lái)實(shí)現(xiàn)這個(gè)要求。PMW是一種脈寬調(diào)制技術(shù),具有周期性的脈沖方波,通過(guò)控制每個(gè)周期之中占空比的不同(即脈沖高電平時(shí)長(zhǎng)/周期)來(lái)進(jìn)行脈寬調(diào)制,或在輸出上對(duì)電壓的有效值進(jìn)行控制。對(duì)本系統(tǒng)而言,當(dāng)周圍的光線亮度較高,需要照明系統(tǒng)補(bǔ)充光線亮度的時(shí)候,就使周期時(shí)間t內(nèi)高電平的輸出時(shí)間短,可以采用t/10。在下一循環(huán)周期t中,周圍環(huán)境的亮度變得很低,要求照明系統(tǒng)增加光照強(qiáng)度,控制器就需在周期時(shí)間t中輸出高電平的時(shí)間長(zhǎng),可以采用t/2,甚至使高電平時(shí)間為t。從上面的說(shuō)明可以看出,LED在工作時(shí),其實(shí)是在不停地進(jìn)行亮-滅-亮-滅之間的轉(zhuǎn)換,但實(shí)際上,因?yàn)閠的數(shù)值很小,只有毫秒級(jí),所以人類的眼睛根本就看不到LED燈亮-滅-亮-滅的變化,只能看到亮度不同的LED燈的發(fā)光效果。

第四章系統(tǒng)的軟件設(shè)計(jì)開(kāi)始4.1程序設(shè)計(jì)流程圖開(kāi)始系統(tǒng)初始系統(tǒng)初始讀取D讀取DS1302時(shí)間數(shù)據(jù)讀取B讀取BH1750光照強(qiáng)度數(shù)否在設(shè)定開(kāi)關(guān)時(shí)間范圍內(nèi)?否在設(shè)定開(kāi)關(guān)時(shí)間范圍內(nèi)?是是否關(guān)閉定時(shí)器,關(guān)閉PWM輸出否關(guān)閉定時(shí)器,關(guān)閉PWM輸出HC-SR501檢測(cè)到紅外人或車輛信號(hào)?是是開(kāi)啟定時(shí)器,根據(jù)光照強(qiáng)度設(shè)定P開(kāi)啟定時(shí)器,根據(jù)光照強(qiáng)度設(shè)定PWM占空比值,輸出PMW控制波結(jié)束結(jié)束圖4-1程序設(shè)計(jì)流程圖4.2BH1750光照強(qiáng)度傳感器程序設(shè)計(jì)BH1750是一種采用兩線式串行總線接口的數(shù)字型光強(qiáng)度傳感器集成電路,與單片機(jī)傳遞數(shù)據(jù)是通過(guò)簡(jiǎn)化版的IIC協(xié)議來(lái)完成的,通過(guò)查閱BH1750的官方手冊(cè),要從BH1750讀取數(shù)據(jù)一般經(jīng)過(guò)一下三個(gè)步驟:(1)發(fā)送設(shè)備地址(寫)并等待ACK,發(fā)送高分辨率測(cè)量指令,等待ACK,停止時(shí)序。(2)等待傳感器第一次測(cè)量完成。(3)讀取測(cè)量結(jié)果。發(fā)送設(shè)備地址(讀),讀取高字節(jié)和低字節(jié)數(shù)據(jù),等待ACK,停止時(shí)序[10]。圖4-2BH1750測(cè)量流程時(shí)序從讀取回來(lái)的數(shù)據(jù)為16位二進(jìn)制數(shù)據(jù),還需要通過(guò)以下公式計(jì)算才能得到光照強(qiáng)度:光照強(qiáng)度(單位lx)=(HighByte+LowByte)/1.2*測(cè)量精度BH1750數(shù)據(jù)讀取協(xié)議:/**************************************起始信號(hào)**************************************/voidBH1750_Start(){SDA=1;//拉高數(shù)據(jù)線SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SDA=0;//產(chǎn)生下降沿Delay5us();//延時(shí)SCL=0;//拉低時(shí)鐘線}/**************************************停止信號(hào)**************************************/voidBH1750_Stop(){SDA=0;//拉低數(shù)據(jù)線SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SDA=1;//產(chǎn)生上升沿Delay5us();//延時(shí)}/**************************************發(fā)送應(yīng)答信號(hào)入口參數(shù):ack(0:ACK1:NAK)**************************************/voidBH1750_SendACK(bitack){SDA=ack;//寫應(yīng)答信號(hào)SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)}/**************************************接收應(yīng)答信號(hào)**************************************/bitBH1750_RecvACK(){SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)CY=SDA;//讀應(yīng)答信號(hào)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)returnCY;}/**************************************向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)**************************************/voidBH1750_SendByte(BYTEdat){BYTEi;for(i=0;i<8;i++)//8位計(jì)數(shù)器{dat<<=1;//移出數(shù)據(jù)的最高位SDA=CY;//送數(shù)據(jù)口SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)}BH1750_RecvACK();}/**************************************從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)**************************************/BYTEBH1750_RecvByte(){BYTEi;BYTEdat=0;SDA=1;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),for(i=0;i<8;i++)//8位計(jì)數(shù)器{dat<<=1;SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)dat|=SDA;//讀數(shù)據(jù)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)}returndat;}BH1750數(shù)據(jù)讀取流程://*********************************************************////連續(xù)讀出BH1750內(nèi)部數(shù)據(jù)////*********************************************************voidMultiple_read_BH1750(void){uchari; BH1750_Start();//起始信號(hào)BH1750_SendByte(SlaveAddress+1);//發(fā)送設(shè)備地址+讀信號(hào) for(i=0;i<3;i++)//連續(xù)讀取2個(gè)地址數(shù)據(jù),存儲(chǔ)中BUF{BUF[i]=BH1750_RecvByte();//BUF[0]存儲(chǔ)0x32地址中的數(shù)據(jù)if(i==3){BH1750_SendACK(1);//最后一個(gè)數(shù)據(jù)需要回NOACK}else{ BH1750_SendACK(0);//回應(yīng)ACK}}BH1750_Stop();//停止信號(hào)Delay5ms();}程序中的BH1750地址值是由BH1750的ADDRESS引腳決定的,如果ADDRESS引腳接地時(shí)地址為0x46,如果連接電源地址則為0xB8。4.3PWM脈寬調(diào)制波輸出PWM脈寬調(diào)制可以通過(guò)調(diào)節(jié)方波的占空比,在周期內(nèi)高電平時(shí)間,來(lái)控制輸出端電壓的有效值,由此可以控制照明燈的亮度。如下圖展示了不同占空比的PWM波形:圖4-3不同占空比的PWM波形STC89C52單片機(jī)的定時(shí)器不能直接輸出PWM波形,但是可以用定時(shí)器模擬輸出。定時(shí)器初始化: Init_BH1750();//初始化BH1750 TMOD=0x01;//定時(shí)器0工作方式1 TH0=(65536-100)/256;//(65536-1000)/256;定時(shí)器賦初始值 TL0=(65536-100)%256;//(65536-1000)%256; EA=1;//開(kāi)總中斷 ET0=1;//開(kāi)定時(shí)器0定時(shí)器中斷服務(wù)函數(shù):voidtim0()interrupt1{ TR0=0;//賦初值時(shí),關(guān)閉定時(shí)器 TH0=(65536-100)/256;//(65536-1000)/256;定時(shí)器賦初始值 TL0=(65536-100)%256;//(65536-1000)%256; TR0=1;//打開(kāi)定時(shí)器 time++; if(time>=100)// time=0; if(time<=zkb)//占空比%zkb,取值0%-100%,zkb代表高電平時(shí)間 PWM=1; elsePWM=0;}4.4LCD12864程序設(shè)計(jì)LCD12864B液晶顯示模塊具有顯示漢字和圖形的功能,內(nèi)置中文漢字8192個(gè)(16x16點(diǎn)陣)、字符128個(gè)(8x16點(diǎn)陣)和64x256點(diǎn)陣顯示RAM(GDRAM)。該模塊采用3.3V或者5V供電,內(nèi)置升壓電路無(wú)需負(fù)壓。顯示角度為30度到120度,支持8位并行或者3位串行通訊模式,內(nèi)置光標(biāo)顯示、畫面移位、自定義字符、睡眠模式等多種功能。LCD12864數(shù)據(jù)讀寫有并行串行兩種時(shí)序,本系統(tǒng)采用并行通訊模式,只討論LCD12864B并行模式下的讀寫操作。圖4-4LCD12864并行接線模式下通訊時(shí)序LCD12864程序設(shè)計(jì):/***********************以下LCD12864驅(qū)動(dòng)函數(shù)**************///*******************************************************///函數(shù)名稱:DelayMS()//函數(shù)功能:延時(shí)毫秒數(shù)(ValMS)//入口參數(shù):無(wú)//出口參數(shù):無(wú)/*******************************************************/voidDelayMS(uintValMS){ uintuiVal,ujVal; for(uiVal=0;uiVal<ValMS;uiVal++) for(ujVal=0;ujVal<121;ujVal++);}/*******************************************************///函數(shù)名稱hk_busy()//函數(shù)功能:檢測(cè)狀態(tài)標(biāo)志位(判斷是忙/閑)//入口參數(shù):無(wú)//出口參數(shù):無(wú)/*******************************************************/voidchk_busy(){ Lcd_Bus=0x00;LCD_RS=0;LCD_RW=1;LCD_E=1; DelayMS(1);while(Lcd_Bus&0x80); //若LCD忙,停止到這里,否則走起LCD_E=0; //之后將EN初始化為低電平}/*******************************************************///函數(shù)名稱rite_com()//函數(shù)功能:LCD寫指令//入口參數(shù):指令(cmdcode)//出口參數(shù):無(wú)/*******************************************************/voidwrite_com(unsignedcharcmdcode){ chk_busy(); //忙檢查 LCD_RS=0; LCD_RW=0; //RS=0,RW=0;表示MCU寫指令到暫存器IR LCD_E=1; Lcd_Bus=cmdcode; //Lcd_Bus=P0; LCD_E=0; //E由高到低變化配合W進(jìn)行寫指令或?qū)憯?shù)據(jù)}/*******************************************************///函數(shù)名稱rite_data()//函數(shù)功能:LCD寫數(shù)據(jù)//入口參數(shù):數(shù)據(jù)(Dispdata)//出口參數(shù):無(wú)/*******************************************************/voidwrite_data(unsignedcharDispdata){ chk_busy(); //忙檢查 LCD_RS=1; LCD_RW=0; //RS=1;RW=0;表示MCU寫數(shù)據(jù)到暫存器IR LCD_E=1; Lcd_Bus=Dispdata; //Lcd_Bus=P0; LCD_E=0; //E由高到低變化配合W進(jìn)行寫指令或?qū)憯?shù)據(jù)}/*******************************************************///函數(shù)名稱:lcm_init()//函數(shù)功能:LCD初始化//入口參數(shù):無(wú)//出口參數(shù):無(wú)/*******************************************************/voidlcm_init(){ LCD_PSB=1; LCD_RST=1; write_com(0x30);//選擇8bit數(shù)據(jù)流0X30=0011,0000 DelayMS(10); write_com(0x0C);//開(kāi)顯示(無(wú)游標(biāo),不反白) DelayMS(10); write_com(0x01);//清除顯示,并且設(shè)定地址指針為00H DelayMS(10);}//============================================================//寫數(shù)據(jù)或指令(被調(diào)用層)voidlcm_w_test(biti,unsignedcharword){ if(i==0)//根據(jù)i的狀態(tài)區(qū)分指令或數(shù)據(jù) { write_com(word);//寫數(shù)據(jù)或指令(0,指令) } else { write_data(word);//寫指令或數(shù)據(jù)(1,數(shù)據(jù)) }}////清屏函數(shù)voidlcm_clr(void){lcm_w_test(0,0x01);}//===========================================================//向LCM發(fā)送一個(gè)字符串,長(zhǎng)度64字符之內(nèi)(被調(diào)用層),voidlcm_w_word(unsignedchar*s){while(*s>0)//*s指針 { write_data(*s);//用指針顯示數(shù)據(jù)地址 s++;//自加顯示下一個(gè)數(shù)據(jù)地址}}voidwelcome(void)//初始化開(kāi)機(jī)顯示{lcm_w_test(0,0x81);//寫指令和地址lcm_w_word(d1);lcm_w_test(0,0x91);lcm_w_word(d2);//寫顯示數(shù)據(jù)lcm_w_test(0,0x8A);lcm_w_word(d3);lcm_w_test(0,0x9A);lcm_w_word(d4);}4.5DS1302程序設(shè)計(jì)DS1302是美國(guó)DALLAS公司開(kāi)發(fā)的一款低功耗的實(shí)時(shí)時(shí)鐘芯片,它可以實(shí)現(xiàn)微量的電流充電。它能夠?qū)崿F(xiàn)年、月、日、周、時(shí)、分、秒的計(jì)時(shí),其工作電壓的范圍為2.0V至5.5V。它通過(guò)三路接口實(shí)現(xiàn)與CPU的同步通訊,同時(shí)可以通過(guò)突發(fā)的方式同時(shí)傳輸多個(gè)時(shí)鐘信號(hào)和RAM的數(shù)據(jù)。DS1302中有31x8的RAM暫存器,可以臨時(shí)存儲(chǔ)數(shù)據(jù)。DS1302是DS1202的升級(jí)版,它與DS1202兼容,但是它增加了一個(gè)主電源/后備電源的雙電源引腳,并為后備電源提供了電流充電能力[11]。圖4-5DS1302的外部引腳分配DS1302總共有12個(gè)寄存器,其中7個(gè)與日歷和時(shí)鐘有關(guān),并以BCD編碼的形式存儲(chǔ)。此外,還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器、以及與RAM有關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可以一次性連續(xù)地讀取和寫入除了充電寄存器以外的全部寄存器。DS1302與RAM有關(guān)的暫存器有兩種類型:第一種是單一的RAM,總共31個(gè),每一個(gè)單元配置8比特的字節(jié),它的指令控制字是C0H到FDH,奇數(shù)表示讀取運(yùn)算,偶數(shù)字表示寫入運(yùn)算;另一種是一個(gè)突發(fā)方式的RAM,它可以一次讀取全部RAM中的31個(gè)字節(jié),命令控制字為FEH(寫入)和FFH(讀?。D4-6數(shù)據(jù)讀寫時(shí)序DS1302程序設(shè)計(jì):/*********************************************************//********************對(duì)1302的讀寫操作*********************//*********************************************************/voidxie1_1302(ucharx)//向1302寫一字節(jié){uchari;for(i=0;i<8;i++){sda=x&0x01;clk=1;clk=0;x>>=1;}}uchardu1_1302()//從1302讀一字節(jié){uchari,b,t;for(i=0;i<8;i++){b>>=1;t=sda;b|=t<<7;clk=1;clk=0;}returnb/16*10+b%16;}uchardu_1302(ucharaddr)//從1302指定地址讀數(shù)據(jù){uchardat;rst=0;clk=0;rst=1;xie1_1302(addr);dat=du1_1302();returndat;}voidxie_1302(ucharaddr,uchardat)//向1302指定地址寫數(shù)據(jù){clk=0;rst=1;xie1_1302(addr);xie1_1302(dat);clk=0;rst=0;}voidset_1302(){xie_1302(0x8e,0x00);//解除保護(hù)xie_1302(0x80,(tep[0]/10<<4)|(tep[0]%10));//設(shè)置初始時(shí)間秒xie_1302(0x82,(tep[1]/10<<4)|(tep[1]%10));//設(shè)置初始時(shí)間分xie_1302(0x84,(tep[2]/10<<4)|(tep[2]%10));//設(shè)置初始時(shí)間時(shí)xie_1302(0x86,(tep[3]/10<<4)|(tep[3]%10));//設(shè)置初始時(shí)間日//xie_1302(0x88,(tep[4]/10<<4)|(tep[4]%10));//設(shè)置初始時(shí)間月//xie_1302(0x8a,(tep[5]/10<<4)|(tep[5]%10));//設(shè)置初始時(shí)間周//xie_1302(0x8c,(tep[6]/10<<4)|(tep[6]%10));//設(shè)置初始時(shí)間年xie_1302(0x8e,0x80);//加保護(hù)}voiddushijian()//讀取當(dāng)前時(shí)間,包括秒{tep[0]=du_1302(0x81);//秒 tep[1]=du_1302(0x83);//分tep[2]=du_1302(0x85);//時(shí)//uchard2[]="10:27:00"; d2[2]=tep[2]/10+'0'; d2[3]=tep[2]%10+'0'; d2[5]=tep[1]/10+'0'; d2[6]=tep[1]%10+'0'; d2[8]=tep[0]/10+'0'; d2[9]=tep[0]%10+'0';}

第五章系統(tǒng)調(diào)試與檢測(cè)5.1系統(tǒng)功能性測(cè)試與分析整個(gè)設(shè)計(jì)的實(shí)物如圖5-1所示,當(dāng)本設(shè)計(jì)接入電源后,所有的模塊都能夠正常工作。供電電路模塊、光照強(qiáng)度采集模塊、紅外人體檢測(cè)模塊、控制系統(tǒng)模塊、燈光亮度模塊均處于正常狀態(tài),都能夠正常進(jìn)行工作。本次設(shè)計(jì)使用Proteus軟件繪制電路原理圖,設(shè)計(jì)完成后生成PCB板,接下來(lái)就是對(duì)硬件進(jìn)行焊接,整個(gè)過(guò)程都是由自己獨(dú)立完成的。圖5-1實(shí)物圖在本設(shè)計(jì)接入電源后,所有模塊均能正常工作,在下午18:00時(shí),路燈會(huì)亮起,且路燈會(huì)根據(jù)周圍環(huán)境的光照強(qiáng)度來(lái)調(diào)節(jié)亮度,當(dāng)傳感器感應(yīng)到有人或車輛通過(guò)時(shí),路燈也會(huì)變亮,路燈在早上7:00時(shí)會(huì)熄滅,也可通過(guò)手動(dòng)開(kāi)關(guān)使路燈變量??傮w來(lái)說(shuō),該設(shè)計(jì)能夠滿足所需要求,并且達(dá)到一個(gè)節(jié)能降耗的目的。5.2供電電路模塊測(cè)試本設(shè)計(jì)選取了L7805三端穩(wěn)壓芯片,它可以提供穩(wěn)定的5V直流電壓,直流輸入電壓范圍為7V至35V,輸出最大電流為1.5A,均滿足本系統(tǒng)要求,因本芯片內(nèi)部還有過(guò)流、過(guò)熱及調(diào)整管的保護(hù)電路,不會(huì)出現(xiàn)因元件溫度過(guò)高導(dǎo)致燒毀器件的情況,非常安全。5.3光照強(qiáng)度采集模塊測(cè)試采用BH1750芯片對(duì)光照強(qiáng)度進(jìn)行采集,該模塊的調(diào)試也很困難。其關(guān)鍵是讀出BH1750的光照強(qiáng)度數(shù)據(jù),并確定燈照亮度閥值。在最初的設(shè)計(jì)中,因?yàn)锽H1750的特殊性,無(wú)法用軟件仿真調(diào)試程序,所以用了一個(gè)臨時(shí)的顯示電路來(lái)顯示BH1750反饋回來(lái)的光照值,但是因?yàn)樵O(shè)備的限制,無(wú)法確定BH1750的數(shù)據(jù)是否成功被單片機(jī)讀取。之后又采用了設(shè)置閥值的方法:讀取的亮度值高于設(shè)定值,打開(kāi)指示燈,否則就會(huì)關(guān)掉,以判定讀取數(shù)據(jù)是否成功。但從初始的閥值取值10000到1000,LED都無(wú)法被點(diǎn)亮。在經(jīng)過(guò)了一番周折之后,才考慮到實(shí)際環(huán)境中光照強(qiáng)度的范圍,根據(jù)相關(guān)資料的數(shù)據(jù),確定室內(nèi)的光照強(qiáng)度的流明值大概在幾十到一百多之間。最后,將閥值設(shè)置在低于100流明時(shí)點(diǎn)亮了LED,BH1750的數(shù)據(jù)終于被讀取。5.4紅外人體檢測(cè)模塊測(cè)試HC-SR501是以紅外線技術(shù)為基礎(chǔ)的自動(dòng)控制模塊,該模塊有兩個(gè)電位器:調(diào)節(jié)延時(shí)電位器和調(diào)節(jié)靈敏度電位器。調(diào)節(jié)延時(shí)電位器,其順時(shí)針旋轉(zhuǎn)延時(shí)加長(zhǎng),逆時(shí)針旋轉(zhuǎn)則延時(shí)減短;調(diào)節(jié)靈敏度電位器,其順時(shí)針旋轉(zhuǎn)靈敏度變高,逆時(shí)針旋轉(zhuǎn)則靈敏度變低。該模塊造價(jià)便宜,功耗較低,但是容易受到熱源和光源的干擾,當(dāng)室溫接近于人體溫度時(shí),該模塊可能會(huì)短暫失靈,不能夠非常精確的檢測(cè)是否有人的存在。經(jīng)過(guò)多次測(cè)試,證明了該模塊在絕大多數(shù)時(shí)候,可以正常工作,基本滿足了本設(shè)計(jì)的要求。5.5控制系統(tǒng)模塊測(cè)試控制系統(tǒng)中的STC89C52單片機(jī)作為本次設(shè)計(jì)的中央處理器,是整個(gè)系統(tǒng)的大腦,它要確保系統(tǒng)能正常運(yùn)作。STC89C52的外部附加電路使用最常見(jiàn)的內(nèi)部時(shí)鐘方式——外接晶體和電容構(gòu)成的并聯(lián)諧振回路。振蕩晶體的頻率范圍為1.2MHZ至12MHZ。由于電容的大小對(duì)振蕩頻率輸出的穩(wěn)定性、大小、振蕩電路的起振速度都有一定的影響,且CX1和CX2的取值范圍為20pF至100pF,因此在本設(shè)計(jì)中,振蕩晶體的選取為12MHZ,電容為30pF。經(jīng)多次試驗(yàn),該單片機(jī)具有穩(wěn)定、可靠的特點(diǎn),可以正常投入使用。5.6燈光亮度模塊測(cè)試照明裝置通常只有兩種模式:開(kāi)和關(guān)。但是,根據(jù)本系統(tǒng)的設(shè)計(jì)要求,我們需要照明亮度根據(jù)環(huán)境光照強(qiáng)度來(lái)變化,因此我們需要的照明設(shè)備能達(dá)到一個(gè)滅-半亮-全亮的過(guò)程,為了達(dá)到這個(gè)變化過(guò)程,采用了PWM技術(shù)的控制。PWM技術(shù)實(shí)質(zhì)上是一種脈寬調(diào)制技術(shù),其最大的困難就是確定PWM占空比值。一開(kāi)始采取了一種分段查表的方法:將占空比分劃分成十個(gè)等級(jí),在0-100流明的光照強(qiáng)度中,每10流明對(duì)應(yīng)一個(gè)占空比。在實(shí)際測(cè)試中,LED的亮度跳段明暗對(duì)比還是比較明顯的,后經(jīng)不斷調(diào)試和完善,最終將PWM占空比和流明之間的關(guān)系轉(zhuǎn)化為一個(gè)簡(jiǎn)單的公式,可以控制LED亮度。最終,在照明亮度變化方面,滿足了設(shè)計(jì)的要求,并通過(guò)了測(cè)試。

結(jié)束語(yǔ)這一次的設(shè)計(jì),從方案的確定、硬件的選擇、器件的選購(gòu)、原理圖的繪制、實(shí)物的焊接、軟件的編寫等每一個(gè)環(huán)節(jié)都給我留下了很深的印象。在這次的設(shè)計(jì)和制作中,我學(xué)習(xí)到了很多關(guān)于傳感器的知識(shí),把自己的很多理論知識(shí)的理論轉(zhuǎn)換成了實(shí)際操作,明白了IIC、SPI、串口、并口等通訊協(xié)議的重要性。本文介紹了基于STC89C52單片機(jī)制作的智能路燈控制系統(tǒng),通過(guò)BH1750FVI傳感器采集光照強(qiáng)度、HC-SR501紅外線技術(shù)檢測(cè)用戶情況,結(jié)合一些外圍電路和接口設(shè)計(jì),實(shí)現(xiàn)了智能路燈控制系統(tǒng)的功能,達(dá)到了節(jié)能降耗的需求。路燈在傍晚18:00時(shí)開(kāi)啟,早晨7:00時(shí)熄滅,在路燈開(kāi)啟時(shí)間段內(nèi),光照強(qiáng)度傳感器可以根據(jù)環(huán)境的亮度來(lái)調(diào)整路燈亮度,紅外線傳感器可檢測(cè)人與車輛通過(guò)情況,當(dāng)人與車輛通過(guò)時(shí),路燈也會(huì)變亮,必要時(shí)刻也可通過(guò)手動(dòng)開(kāi)關(guān)使路燈開(kāi)啟,為人們照亮夜行的路。在經(jīng)過(guò)了多次的檢驗(yàn)測(cè)試之后,證明了本設(shè)計(jì)已經(jīng)基本達(dá)到要求。最終實(shí)現(xiàn)的功能如下:(1)在設(shè)定時(shí)間段內(nèi)路燈亮起;(2)路燈的亮度可以根據(jù)環(huán)境光照強(qiáng)度來(lái)調(diào)節(jié);(3)能監(jiān)測(cè)人與車輛的活動(dòng)情況;(4)能實(shí)時(shí)顯示工作狀態(tài);(5)節(jié)約設(shè)計(jì)成本,減少能源消耗。但是,由于自己的知識(shí)掌握的不夠充足的原因,在經(jīng)過(guò)多次調(diào)試后也發(fā)現(xiàn)的一些問(wèn)題,比如時(shí)間設(shè)制按鈕只能加不能減、紅外線模塊會(huì)受到溫度的影響等。在以后的深入學(xué)習(xí)中,我會(huì)更加努力,對(duì)本設(shè)計(jì)存在的問(wèn)題,會(huì)逐漸學(xué)會(huì)如何解決。在我們的日常生活中,智能路燈控制系統(tǒng)的重要性不言而喻,希望在未來(lái)的日子中,經(jīng)過(guò)不斷發(fā)展,智能路燈控制系統(tǒng)能夠更加完善。參考文獻(xiàn)[1]張偉,楊森林.基于單片機(jī)控制的智能路燈控制系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2018,41(14):110-113.[2]呂祚英,唐濤,李光文等.基于電力載波的智能路燈控制系統(tǒng)[J].電子測(cè)試,2018(10):28-29.[3]劉紫燕,馮亮,楊揚(yáng),羅厚德,胡紅博.基于WSN的智能路燈控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù),2015,34(08):58-61.[4]陳忠林,張士晶,詹宇川等.基于ZigBee的智能路燈控制系統(tǒng)[J].新型工業(yè)化,2021,11(07):15-18.[5]胡菁蕓,劉月,鮑震杰等.基于單片機(jī)的智能路燈系統(tǒng)設(shè)計(jì)與仿真[J].太原學(xué)院學(xué)報(bào)(自然科學(xué)版),2021,39(02):48-55.[6]陳苗,崔世鋼.組培鐵皮石斛LED智能照明系統(tǒng)設(shè)計(jì)[J].天津職業(yè)技術(shù)師范大學(xué)學(xué)報(bào),2021,31(01):42-47.[7]王東,莫先.基于STM32和HC-SR501智能家居的智能照明系統(tǒng)設(shè)計(jì)[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)),2016,30(06):135-142.[8]張宏偉.基于STM32的智能環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].大慶師范學(xué)院學(xué)報(bào),2020,40(06):91-98.[9]李巒,陳英革,王小英.一種基于機(jī)器學(xué)習(xí)的自然調(diào)光LED節(jié)能燈[J].電腦知識(shí)與技術(shù),2020,16(05):231-235.[10]陳宇,戴亮,戚蕊,顧婕妤,何穎.智能環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2021,39(06):157-159.[11]裘昌利,金美善,楊坤.串行時(shí)鐘芯片DS1302在單片機(jī)系統(tǒng)中的應(yīng)用[J].現(xiàn)代教育科學(xué),2010(S1):96-97.[12]丁正祁.智能路燈控制系統(tǒng)的設(shè)計(jì)[J].福建電腦,2020,36(06):14-17.[13]何穎,林智慧,王振鐸等.智能路燈控制系統(tǒng)的研究與設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2021,17(33):14-16.[14]蔣明強(qiáng),宗強(qiáng),宋宇欽等.智能路燈控制系統(tǒng)設(shè)計(jì)及其應(yīng)用[J].集成電路應(yīng)用,2020,37(04):114-115.[15]程晶姝,潘往麗,羅輝輝等.基于單片機(jī)的智能模擬路燈控制系統(tǒng)[J].軟件,2019,40(03):38-40.[16]張晟昱,段金英.智能路燈控制系統(tǒng)設(shè)計(jì)[J].電子測(cè)試,2019(Z1):27-28.[17]李帥杰,任開(kāi)炎,熊壯等.智能路燈系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2021,37(10):82-85.[18]袁濤編著.單片機(jī)C高級(jí)語(yǔ)言程序設(shè)計(jì)及其應(yīng)用[M].清華大學(xué)出版社,2001.[19]賈立新,王涌等.電子系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:清華大學(xué)出版社,2007.

附錄附錄一系統(tǒng)原理圖附錄二系統(tǒng)源程序/*******************************************************//*******************************************************///工程:51單片機(jī)開(kāi)發(fā)板//文件名:LCD12864.c//處理器:STC89C52RC//編譯環(huán)境:Keil4C51//系統(tǒng)時(shí)鐘:11.0592MHZ//版本 :V1.0//生成日期 :2020-09-20 //修改日期 ://簡(jiǎn)單描述:本文件是帶字庫(kù)LCD12864顯示程序/*******************************************************/#include<reg52.h>#include<math.h>//Keillibrary#include<stdio.h>//Keillibrary #include<INTRINS.H>#defineuintunsignedint#defineucharunsignedchar#defineLcd_BusP0//數(shù)據(jù)總線#defineSlaveAddress0x46 //BH1750定義器件在IIC總線中的從地址,根據(jù)ALTADDRESS地址引腳不同修改typedefunsignedcharBYTE;typedefunsignedshortWORD;/*******************************************************///位定義/*******************************************************/sbitLCD_RS=P3^2; //LCD數(shù)據(jù)/命令選擇端(H/L)sbitLCD_RW=P3^3; //LCD數(shù)/寫選擇端(H/L)sbitLCD_E=P3^4; //LCD使能信號(hào)sbitLCD_PSB=P2^3; //LCDpsbsbitLCD_RST=P2^2; //LCD復(fù)位sbitSR501_IO=P1^1; //紅外探測(cè)器反饋引腳sbitSCL=P1^4; //BH1750IIC時(shí)鐘引腳定義sbitSDA=P1^3; //BH1750IIC數(shù)據(jù)引腳定義sbitPWM=P1^2; //燈光控制引腳sbitsda=P3^6; //ds1302sda功能引腳sbitclk=P3^5; //ds1302clk功能引腳sbitrst=P3^7; //ds1302rst功能引腳sbitK1=P2^4; //按鍵K1sbitK2=P2^5; //按鍵K2sbitK3=P2^6; //按鍵K3sbitK4=P2^7; //按鍵K4uchard1[]="智能路燈系統(tǒng)";uchard2[]="10:27:00";uchard3[]="LUX:125";uchard4[]="PWM:125";inttep[3]={20,39,19};//時(shí)間日期緩存ucharMaxTime=17,MinTime=7; //開(kāi)關(guān)燈時(shí)間MaxTime+1點(diǎn)到早上MinTime-1點(diǎn)時(shí)間段開(kāi)燈BYTE BUF[8]; //BH1750接收數(shù)據(jù)緩存區(qū)int dis_data;//變量uchartime,zkb; //定時(shí)器中斷次數(shù),zkbPWM占空比,高電平時(shí)間//***********************以下LCD12864驅(qū)動(dòng)函數(shù)**************///*******************************************************///函數(shù)名稱:DelayMS()//函數(shù)功能:延時(shí)毫秒數(shù)(ValMS)//入口參數(shù):無(wú)//出口參數(shù):無(wú)/*******************************************************/voidDelayMS(uintValMS){ uintuiVal,ujVal; for(uiVal=0;uiVal<ValMS;uiVal++) for(ujVal=0;ujVal<121;ujVal++);}/*******************************************************///函數(shù)名稱hk_busy()//函數(shù)功能:檢測(cè)狀態(tài)標(biāo)志位(判斷是忙/閑)//入口參數(shù):無(wú)//出口參數(shù):無(wú)/*******************************************************/voidchk_busy(){ Lcd_Bus=0x00;LCD_RS=0;LCD_RW=1;LCD_E=1; DelayMS(1);while(Lcd_Bus&0x80); //若LCD忙,停止到這里,否則走起LCD_E=0; //之后將EN初始化為低電平}/*******************************************************///函數(shù)名稱rite_com()//函數(shù)功能:LCD寫指令//入口參數(shù):指令(cmdcode)//出口參數(shù):無(wú)/*******************************************************/voidwrite_com(unsignedcharcmdcode){ chk_busy(); //忙檢查 LCD_RS=0; LCD_RW=0; //RS=0,RW=0;表示MCU寫指令到暫存器IR LCD_E=1; Lcd_Bus=cmdcode; //Lcd_Bus=P0; LCD_E=0; //E由高到低變化配合W進(jìn)行寫指令或?qū)憯?shù)據(jù)}/*******************************************************///函數(shù)名稱rite_data()//函數(shù)功能:LCD寫數(shù)據(jù)//入口參數(shù):數(shù)據(jù)(Dispdata)//出口參數(shù):無(wú)/*******************************************************/voidwrite_data(unsignedcharDispdata){ chk_busy(); //忙檢查 LCD_RS=1; LCD_RW=0; //RS=1;RW=0;表示MCU寫數(shù)據(jù)到暫存器IR LCD_E=1; Lcd_Bus=Dispdata; //Lcd_Bus=P0; LCD_E=0; //E由高到低變化配合W進(jìn)行寫指令或?qū)憯?shù)據(jù)}/*******************************************************///函數(shù)名稱:lcm_init()//函數(shù)功能:LCD初始化//入口參數(shù):無(wú)//出口參數(shù):無(wú)/*******************************************************/voidlcm_init(){ LCD_PSB=1; LCD_RST=1; write_com(0x30);//選擇8bit數(shù)據(jù)流0X30=0011,0000 DelayMS(10); write_com(0x0C);//開(kāi)顯示(無(wú)游標(biāo),不反白) DelayMS(10); write_com(0x01);//清除顯示,并且設(shè)定地址指針為00H DelayMS(10);}//============================================================//寫數(shù)據(jù)或指令(被調(diào)用層)voidlcm_w_test(biti,unsignedcharword){ if(i==0)//根據(jù)i的狀態(tài)區(qū)分指令或數(shù)據(jù) { write_com(word);//寫數(shù)據(jù)或指令(0,指令) } else { write_data(word);//寫指令或數(shù)據(jù)(1,數(shù)據(jù)) }}////清屏函數(shù)voidlcm_clr(void){lcm_w_test(0,0x01);}//===========================================================//向LCM發(fā)送一個(gè)字符串,長(zhǎng)度64字符之內(nèi)(被調(diào)用層),voidlcm_w_word(unsignedchar*s){while(*s>0)//*s指針 { write_data(*s);//用指針顯示數(shù)據(jù)地址 s++;//自加顯示下一個(gè)數(shù)據(jù)地址}}voidwelcome(void)//初始化開(kāi)機(jī)顯示{lcm_w_test(0,0x81);//寫指令和地址lcm_w_word(d1);lcm_w_test(0,0x91);lcm_w_word(d2);//寫顯示數(shù)據(jù)lcm_w_test(0,0x8A);lcm_w_word(d3);lcm_w_test(0,0x9A);lcm_w_word(d4);}//***********************以下BH1750驅(qū)動(dòng)函數(shù)**************////毫秒延時(shí)**************************voiddelay_nms(unsignedintk) { unsignedinti,j; for(i=0;i<k;i++) { for(j=0;j<121;j++) {;}} }/**************************************延時(shí)5微秒不同的工作環(huán)境,需要調(diào)整此函數(shù),注意時(shí)鐘過(guò)快時(shí)需要修改當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)**************************************/voidDelay5us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}/**************************************延時(shí)5毫秒不同的工作環(huán)境,需要調(diào)整此函數(shù)當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)**************************************/voidDelay5ms(){WORDn=560;while(n--);}/**************************************起始信號(hào)**************************************/voidBH1750_Start(){SDA=1;//拉高數(shù)據(jù)線SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SDA=0;//產(chǎn)生下降沿Delay5us();//延時(shí)SCL=0;//拉低時(shí)鐘線}/**************************************停止信號(hào)**************************************/voidBH1750_Stop(){SDA=0;//拉低數(shù)據(jù)線SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SDA=1;//產(chǎn)生上升沿Delay5us();//延時(shí)}/**************************************發(fā)送應(yīng)答信號(hào)入口參數(shù):ack(0:ACK1:NAK)**************************************/voidBH1750_SendACK(bitack){SDA=ack;//寫應(yīng)答信號(hào)SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)}/**************************************接收應(yīng)答信號(hào)**************************************/bitBH1750_RecvACK(){SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)CY=SDA;//讀應(yīng)答信號(hào)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)returnCY;}/**************************************向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)**************************************/voidBH1750_SendByte(BYTEdat){BYTEi;for(i=0;i<8;i++)//8位計(jì)數(shù)器{dat<<=1;//移出數(shù)據(jù)的最高位SDA=CY;//送數(shù)據(jù)口SCL=0;//拉高時(shí)鐘線Delay5us();//延時(shí)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)}BH1750_RecvACK();}/**************************************從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)**************************************/BYTEBH1750_RecvByte(){BYTEi;BYTEdat=0;SDA=1;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),for(i=0;i<8;i++)//8位計(jì)數(shù)器{dat<<=1;SCL=1;//拉高時(shí)鐘線Delay5us();//延時(shí)dat|=SDA;//讀數(shù)據(jù)SCL=0;//拉低時(shí)鐘線Delay5us();//延時(shí)}returndat;}//*********************************voidSingle_Write_BH1750(ucharREG_Address){BH1750_Start();//起始信號(hào)BH1750_SendByte(SlaveAddress);//發(fā)送設(shè)備地址+寫信號(hào)BH1750_SendByte(REG_Address);//內(nèi)部寄存器地址,//BH1750_SendByte(REG_data);//內(nèi)部寄存器數(shù)據(jù),BH1750_Stop();//發(fā)送停止信號(hào)}//*********************************************************////連續(xù)讀出BH1750內(nèi)部數(shù)據(jù)////*********************************************************voidMultiple_Read_BH1750(void){uchari; BH1750_Start();//起始信號(hào)BH1750_SendByte(SlaveAddress+1);//發(fā)送設(shè)備地址+讀信號(hào) for(i=0;i<3;i++)//連續(xù)讀取2個(gè)地址數(shù)據(jù),存儲(chǔ)中BUF{

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論