【正文】
being able to meet the needs of the development and management of urban street, and must rely on modern hightech management tools. Microcontroller with high integration, processing capability, high reliability, simple structure and low cost advantages, and therefore is widely used in street lighting works. The system uses the MSC51 SCM AT89C51 and the associated optical testing equipment to design intelligent light control of street lamp controller, eight 51series singlechip programmable control logic I / O ports to achieve intelligent street lamps to achieve energy saving, automatic control purpose of the SCM Acquisition photoresistor or photoelectric switch signal to control the lights off bright, with automatic detection and fault alarm function, at the same time, according to the actual situation, the timing system to time for effective control in this design, the input switch button time control, showing the six digital control and LED diode, time for the normal 24 hours to go, the available buttons to adjust the timer switch time, through the process time required to switch lights, street lights with LED lights, energy saving and environmental protection, power consumption low, service life is long, you can get a good economic and environmental benefits. This system is practical, simple operation, can effectively solve the backward city street lighting system, lighting control and management tools used in the lamps low scientific and technological content.KEY WORDS: microcontroller,control,LED 72 目 錄摘 要 IABSTRACT II第1章 緒 論 1 國內(nèi)外研究現(xiàn)狀及課題意義 1 課題意義 1 國內(nèi)外研究現(xiàn)狀 1 主要研究的內(nèi)容 4 方案論證 4 傳感電路部分 4 執(zhí)行電路部分 5第2章 總體設(shè)計 6 設(shè)計要求 6 設(shè)計思路 6 系統(tǒng)框圖 7第3章 硬件設(shè)計 8 單片機概述 8 單片機的簡介 8 單片機的特點 9 單片機的選型 9 AT89C51的簡介 10 AT89C51特性概述 11 單片機的中斷系統(tǒng) 11 引腳說明 11 時鐘電路 15 存儲器系統(tǒng) 15 時鐘電路 18 復(fù)位電路 19 復(fù)位方式 19 手動按鈕復(fù)位 19 上電復(fù)位 20 LM324 21 LM324簡介 21 LM324的特點 22 74HC573簡介 22 光敏電阻簡介 24 按鍵電路 25 顯示電路 26 顯示方式選擇 26 LED的驅(qū)動和顯示 27 電源電路 28 光控電路 28 路燈控制電路 29第4章 軟件設(shè)計 30 主程序 30 計時程序 30 中斷程序 34 按鍵程序 35 程序清單 36第5章 系統(tǒng)調(diào)試 48 結(jié)果分析 48 系統(tǒng)調(diào)試 48 對每個子程序進行調(diào)試 48 總的程序調(diào)試 48第6章 結(jié) 論 50參考文獻 51附錄A 外文參考及中文翻譯 53附錄B 系統(tǒng)原理圖 71致 謝 72 第1章 緒 論 國內(nèi)外研究現(xiàn)狀及課題意義 課題意義近年來,隨著我國經(jīng)濟改革的深入發(fā)展和信息化時代的深入,各級政府對城市整體形象工程建設(shè)備受重視,他們通過各種方式來開展城市化建設(shè)。其發(fā)展趨勢可以體現(xiàn)在以下幾個方面, 即: 精確化控制、多場景控制、網(wǎng)絡(luò)化控制、節(jié)能與快速反應(yīng)。而為了更好的達到控制的目的,現(xiàn)在國內(nèi)外都開始采用智能控制方式,如光控、聲控、時空等,國外甚至開始采用太陽能供能光控方式來控制路燈,基本可以達到完全自給自足的效果。對于人行道、商業(yè)步行街、居住小區(qū)等道路,LED的顯色性優(yōu)于鈉燈,分辨人的狀況更加清晰,較有優(yōu)勢。LED路燈的統(tǒng)一標準:LED路燈在產(chǎn)品規(guī)格方面缺少統(tǒng)一的技術(shù)標準,目前還沒有統(tǒng)一的LED路燈生產(chǎn)技術(shù)標準,每個廠家都按自己的標準生產(chǎn)自己的產(chǎn)品,彼此之間是很難通用的。社會對亮燈率、開關(guān)燈的準確率、故障檢測的實時性和維修的及時性要求不斷提高,利用51系列單片機可編程控制八位邏輯I/O端口實現(xiàn)路燈的智能化,達到節(jié)能、自動控制的目的,避免了傳統(tǒng)電路對能源的浪費,且路燈的自動控制更方便了工作人員的管理。多篇文章中都闡述了散熱是靠面積而不是看體積的大小,許多企業(yè)都了解了個中道理,殼體采用多層翅片散熱,但對熱沉散熱殼體的翅片忽略了防塵和積塵,日積月累將會影響殼體的散熱效果。有關(guān)人士正研究在熱沉材料上進行特殊的陶瓷化處理直接安裝線路,經(jīng)過這樣的優(yōu)化后將會根本解決散熱的導熱環(huán)節(jié)。 執(zhí)行電路部分方案一:由單片機端口對相應(yīng)電路進行操作;方案二:使用LM324芯片,含有四個運算放大器,電源電壓范圍寬,靜態(tài)功耗小,可單電源使用。根據(jù)任務(wù)書的要求,分析出需要的功能有:具備時鐘功能、時間調(diào)節(jié)的調(diào)節(jié)、二極管(模擬路燈)的顯示功能、定時開燈關(guān)燈的時間調(diào)整功能、按鍵控制功能,光電控制路燈功能。①為進入調(diào)整開燈、關(guān)燈的時間按鈕,還有為退出調(diào)整開燈和關(guān)燈的按鈕,只有通過它才能有效的退出定義開燈和關(guān)燈的調(diào)整狀態(tài);②為調(diào)整加一小時的按鈕,③為調(diào)整減一小時的按鈕,④為調(diào)加一分鐘的按鈕,⑤為調(diào)整減一分鐘的按鈕。這些電路能在軟件控制之下,準確、迅速、高效地完成程序設(shè)計者事先規(guī)定的任務(wù)。只是能力沒那么強大。單片機的應(yīng)用意義遠不限于它的應(yīng)用范疇或由此帶來的經(jīng)濟效益,更重要的是它從根本上改變了傳統(tǒng)的控制方法和設(shè)計理念,向著嵌入式系統(tǒng)方向發(fā)展。⑤ 單片機本身并不具備開發(fā)能力,一般情況下,需要借助專用的開發(fā)工具在相應(yīng)的開發(fā)環(huán)境下,進行系統(tǒng)的開發(fā)和調(diào)試,但最終形成的產(chǎn)品簡單實用,成本低,效益高。③ 內(nèi)部資源增多:片內(nèi)的資源越豐富,產(chǎn)品的體積就越小,可靠性就越高。本系統(tǒng)采用的是最常用的AT89C51。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS51指令集和輸出管腳相兼容。P0口:P0 口是一組8 位漏極開路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。初始化后,程序計數(shù)器PC指向0000H,P0P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。該反向放大器可以配置為片內(nèi)振蕩器。Pin29:當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,當外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。存儲器的種類很多,8051單片機存儲器在物理結(jié)構(gòu)上分為程序存儲器空間和數(shù)據(jù)存儲器空間。從用戶使用的角度,8051存儲器地址空間分為三類:片內(nèi)片外統(tǒng)一編址的0000HFFFFH的64K字節(jié)的程序存儲器地址空間,用16位地址。片外最多可擴至64K字節(jié)。二、數(shù)據(jù)存儲器空間數(shù)據(jù)存儲器RAM用于存放運算中的結(jié)果、數(shù)據(jù)暫存或緩沖、標志位等。片內(nèi)數(shù)據(jù)存儲器的容量很小,常需要擴展片外數(shù)據(jù)存儲器。 圖34 AT89C51內(nèi)部功能圖 時鐘電路時鐘電路是產(chǎn)生CPU校準時序,是單片機的控制核心,它控制著計算機的工作節(jié)奏。而對于晶振的選擇:一種是:6MHz的晶振,其機器周期是2us。當系統(tǒng)處于正常工作狀態(tài)時,而且振蕩器穩(wěn)定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應(yīng)并將其系統(tǒng)復(fù)位。復(fù)位以后內(nèi)部寄存器的初始狀態(tài)為(SP=07,P0、PPP3為0FFH外,其它寄存器都為0)。上電復(fù)位電路如下圖所示: 圖36 上電復(fù)位電路+5V 電壓,,我選擇了簡單實用的上電復(fù)位電路上電后,由于電容充電,使RST持續(xù)一段高電平時間。除電源共用之外,四組運放是相互獨立的。(7)共模范圍擴展到負電源。當使能(G)為低時,輸出將鎖存在已經(jīng)建立的數(shù)據(jù)電平上。光敏電阻一般用于光的測量、光的控制和光電轉(zhuǎn)換等。在光敏電阻兩端的金屬電極加上電壓,其中便會有電流通過,受到一定波長的光線照射時,電流就會隨光強的增大而增大,從而實現(xiàn)了光電轉(zhuǎn)換。光敏電阻屬于半導體光敏器件,除了具有靈敏度高,反應(yīng)速度快,光譜特性好以及R值一致性好等特點外,在高溫、多濕的惡劣環(huán)境下,還能保持高度的穩(wěn)定性和可靠性,并且廣泛應(yīng)用于照相機,太陽能庭院燈,草坪燈,石英鐘,禮品盒,路燈自動開關(guān)以及各種光控玩具,光控燈飾,燈具等光自動開關(guān)控制領(lǐng)域。 圖312 按鍵電路圖 顯示電路 顯示方式選擇顯示器用于實現(xiàn)單片機應(yīng)用系統(tǒng)中的數(shù)據(jù)輸出和狀態(tài)反饋。所謂的共陰極方式就是指筆畫顯示器各段發(fā)光管的陰極(即N區(qū))是公共的,而陽極卻是互相隔離的。LED的驅(qū)動問題是顯示設(shè)計中的一個非常重要的環(huán)節(jié)。我采用的是三個數(shù)碼管集成在一起的管子,這種管子的好處是在接線的時候比較簡單,三個COM端接位選接口,非常適合用于動態(tài)顯示。 圖316 路燈控制電路 第4章 軟件設(shè)計 主程序模擬路燈控制系統(tǒng)的軟件程序設(shè)計包括判斷各個按鈕按下之后能夠?qū)崿F(xiàn)什么樣功能,判斷開燈、關(guān)燈的時間。所以定時器也可看做是對計算機的機器周期的計數(shù)器,因為每個機器周期包含晶體振蕩器的12個振蕩周期,所以每一個機器周期定時器加1,可以把輸入的時鐘脈沖看成機器周期信號。由TH0的8位和TL0的低5位組成一個13位計數(shù)器。方式2常用于定時控制。方式2就是針對此問題而設(shè)置的,它具有自動重新加載功能,因此也可以說方式2是自動重新加載工作方式。時間調(diào)整子程序流程圖: 圖42 時間調(diào)整子程序流程圖這次設(shè)計用到了T0和T1進行中斷控制,T0和T1用的都是方式一。內(nèi)部中斷是指單片機芯片內(nèi)部產(chǎn)生的中斷,MCS51單片機的內(nèi)部中斷有定時/計數(shù)器T0和T1的溢出中斷、串行口的發(fā)送/接收中斷。流程圖如下: 圖43 中斷程序流程圖 按鍵程序?qū)τ诎存I電路的設(shè)計,在沒有鍵按下去時一直為高電平,有按鍵按下時就變?yōu)榈碗娖健?sbit hour_add = P1^1。sbit guang=P0^2。unsigned int ms50。 unsigned char code choose_bit[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}。 for(a=0。 disdata[0] = hour/10。 i++) { P0 = 0xff。 delay1ms(1)。 dissetup[4] = ds[disp_type1].second/10。 } P2 = choose_bit[i]。 EN_COCLK = 0。 break。 case 1: if(ds[0].hour==0xff) ds[0].hour = 23。 break。 switch(disp_type) { case 0: if(minute==0xff) minute