模擬路燈控制系統(tǒng)的畢業(yè)論文_第1頁
模擬路燈控制系統(tǒng)的畢業(yè)論文_第2頁
模擬路燈控制系統(tǒng)的畢業(yè)論文_第3頁
模擬路燈控制系統(tǒng)的畢業(yè)論文_第4頁
模擬路燈控制系統(tǒng)的畢業(yè)論文_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、瀘 州 職 業(yè) 技 術(shù) 學(xué) 院畢業(yè)設(shè)計報告模擬路燈控制系統(tǒng)學(xué)生姓名所 在 系班 級專 業(yè)指導(dǎo)教師2009年11月15日摘要 本作品是具有自動化程度高、運行可靠、使用維護方便的照明控制系統(tǒng),為城市路燈現(xiàn)代化提供了一些參考方案。系統(tǒng)采用STC單片機為核心的最小系統(tǒng)板,設(shè)計了模擬路燈控制系統(tǒng)。控制系統(tǒng)采用定時器設(shè)定時鐘功能,設(shè)定、顯示開關(guān)燈時間;用了基于555為核心的紅外傳感器檢測物體的定位。路燈單元控制系統(tǒng)采用恒流源供電,具有輸出功率調(diào)整功能,并能定時調(diào)整功率。闡述了基于單片機模擬路燈控制系統(tǒng)實現(xiàn)的設(shè)計思想、方法及過程。該模擬控制系統(tǒng),能有效的節(jié)約能源,減少照燈具的損耗。以STC89C5

2、1RC為核心,利用時鐘控制LED燈的開關(guān)時間段,通過紅外感應(yīng)模塊將物體運動的信號通過555的TTL高低電平輸入單片機,并通過三紅外線輸入的情況判斷物體運行方向,再控制LED燈的開關(guān)情況。并完成四方面的功能:時間設(shè)定功能,環(huán)境明暗判斷,獨立控制功能,交通條件控制功能。顯示部分用LCD液晶顯示,要求能顯示實時時間以及對路燈設(shè)置的開關(guān)燈時。關(guān)鍵詞:STC89C51單片機 紅外傳感器 1602液晶顯示器 DS1302 NE555目錄第一章緒論11.1概述11.2 系統(tǒng)的性能要求及特點1第二章系統(tǒng)分析及硬件設(shè)計32.1 系統(tǒng)設(shè)計思路與方案比較論證。32.2 各個模塊的硬件電路設(shè)計42.2.1 物體感應(yīng)模

3、塊設(shè)計52.2.2 時鐘模塊設(shè)計72.2.3 中央控制模塊設(shè)計82.2.4 顯示模塊設(shè)計92.2 硬件系統(tǒng)原理圖11第三章軟件設(shè)計與調(diào)試123.1系統(tǒng)設(shè)計思路123.2系統(tǒng)各部分子程序設(shè)計123.2.1 主程序設(shè)計123.2.2 紅外中斷與查詢子程序設(shè)計12按鍵設(shè)定程序設(shè)計143.3整體系統(tǒng)的軟件調(diào)試15總結(jié)16致謝17參考文獻18附錄19第一章 緒論1.1概述城市照明工程作為城市公共設(shè)施的重要組成部分,對完善城市功能,改善城市人居環(huán)境,提高人民生活水平發(fā)揮著重要作用。近年來,隨著城區(qū)總面積的不斷擴大,道路照明設(shè)施也隨著變化。為方便廣大市民夜間出行,美化城市環(huán)境,市路燈管理如果管理不當,那將會

4、浪費多少能源。路燈管理的方便性和路燈節(jié)能對一個城市而言非常重要。隨著人們對節(jié)能環(huán)保的訴求越來越高,以及十城萬盞半導(dǎo)體照明工程的啟動,我國基本確定了以LED室外照明為主攻方向。其中,LED路燈備受矚目,被政府視為推動照明應(yīng)用市場的重要切入點。模擬路燈控制系統(tǒng)是生產(chǎn)生活和城市道路建設(shè)中必備的系統(tǒng)之一。根據(jù)設(shè)計題目要求,我們以單片機為中心,通過AT89C51單片機實現(xiàn)對路燈定時開關(guān)及時間顯示的控制。紅外傳感器部分電路通過可根據(jù)外界環(huán)境明暗的變化,能夠自動進行開燈和關(guān)燈。紅外傳感器可以接收物體在一定范圍內(nèi)發(fā)出的紅外線,因此,將紅外傳感器置于適當位置,便可實現(xiàn)燈依次點亮的控制。通過對AT89C51單片機

5、進行編程,使用單片機的兩個端口分別對兩只路燈進行控制,并設(shè)定不同的開燈和關(guān)燈時間。最終,達到所要求設(shè)計的各項指標。1.2 系統(tǒng)的性能要求及特點模擬路燈控制統(tǒng)應(yīng)能達到以下功能要求:(1)系統(tǒng)有時鐘功能,能設(shè)定、顯示開關(guān)燈時間。(2)系統(tǒng)應(yīng)能根據(jù)環(huán)境明暗變化,自動開燈和關(guān)燈。(3)系統(tǒng)應(yīng)能根據(jù)交通情況自動調(diào)節(jié)亮燈狀態(tài)。(4)系統(tǒng)能控制兩盞路燈的開燈和關(guān)燈時間。圖1 路燈布置示意圖(單位:cm)第二章 系統(tǒng)分析及硬件設(shè)計2.1 系統(tǒng)設(shè)計思路與方案比較論證。系統(tǒng)設(shè)計思路根據(jù)題目要求,經(jīng)過仔細分析,參考硬件軟件因素,大致可以將本系統(tǒng)分為:物體感應(yīng)模塊,時鐘模塊,中央控制模塊,按鍵控制模塊,顯示模塊。如圖

6、2-1所示顯示模塊中央控制模塊時鐘模塊物體感應(yīng)模塊物體感應(yīng)模塊物體感應(yīng)模塊按鍵控制模塊圖2-1 系統(tǒng)整體框圖方案論證與確立1、央控制模塊方案一:采用單片機控制,利用利用以C51系列為核心的單片機系統(tǒng)控制兩盞LED開關(guān)燈時間,利用單片機的內(nèi)部時鐘與外部中斷能夠滿足系統(tǒng)設(shè)計要求,且成本較低,適合路燈系統(tǒng)的大規(guī)模建設(shè)。方案二:采用FPGA和單片機相結(jié)和的方式路燈的控制,由于本系統(tǒng)只需要實現(xiàn)對兩盞LED燈的控制,不需要大規(guī)模的FPGA。方案三:全部采用模擬電路模塊時間。由于本系統(tǒng)設(shè)計要求時間判斷,環(huán)境判斷,獨立控制等邏輯功能,使用模擬電路導(dǎo)致電路的龐大復(fù)雜。2、物體感應(yīng)模塊方案一:利用紅外線的物理性質(zhì)

7、來進行測量的傳感器。紅外線又稱紅外光,它具有反射、折射、散射、干涉、吸收等性質(zhì)。任何物質(zhì),只要它本身具有一定的溫度(高于絕對零度),都能輻射紅外線。紅外線傳感器測量時不與被測物體直接接觸,因而不存在摩擦,并且有靈敏度高,響應(yīng)快等優(yōu)點。方案二:采用超聲波感應(yīng),超聲波傳感器是利用超聲波的特性研制而成的傳感器。超聲波是一種振動頻率高于聲波的機械波,由換能晶片電在壓的激勵下發(fā)生振動產(chǎn)生的,它具有頻率高、波長短、繞射現(xiàn)象小,特別是方向性好、能夠成為射線而定向傳播等特點。超聲波對液體、固體的穿透本領(lǐng)很大,尤其是在陽光不透明的固體中,它可穿透幾十米的深度。方案三:利用激光技術(shù)進行測量的傳感器。它由激光器、激

8、光檢測器和測量電路組成。激光傳感器是新型測量儀表,它的優(yōu)點是能實現(xiàn)無接觸遠距離測量,速度快,精度高,量程大,抗光、電干擾能力強等。3、顯示模塊方案一:數(shù)碼管顯示,由于本題要求實時顯示系統(tǒng)時間、狀態(tài)、和故障LED燈編號等,而數(shù)碼管不能顯示字符。方案二:LED點陣顯示,LED點陣顯示雖然能顯示字符和數(shù)字,但顯示效果不好,且不易編程。方案三:LCD液晶顯示,LCD液晶不但能顯示字符和數(shù)字,而且顯示效果較好,容易編程實現(xiàn)。4、時鐘模塊 方案一:專用時鐘芯片,直接將時鐘信息存儲在時鐘芯片中,利用時鐘芯片自帶的定時器定時,中央控制模塊讀取該時鐘芯片時鐘信息,節(jié)省其系統(tǒng)資源提高時間精度。方案二:利用機械定時

9、器件,方案三:利用555定時器組建定時模塊555,555定時器具有成本低,性能可靠等優(yōu)勢,雖然能夠做到精確定時但不具備儲存時間信息的能力。 5、按鍵控制模塊方案一:均采用輕觸按鍵。6、綜合以上方案最后確立了各個模塊所使用的方案為中央控制模塊STC89C52時鐘模塊DS1302時鐘芯片物體檢測模塊555的紅外感應(yīng)顯示模塊1602液晶顯示器2.2 各個模塊的硬件電路設(shè)計 物體感應(yīng)模塊設(shè)計1. NE555概述NE555是屬于555系列的計時IC的其中的一種型號,555系列IC的接腳功能及運用都是相容的,只是型號不同的因其價格不同其穩(wěn)定度、省電、可產(chǎn)生的振蕩頻率也不大相同;而555是一個用途很廣且相當

10、普遍的計時IC,只需少數(shù)的電阻和電容,便可產(chǎn)生數(shù)位電路所需的各種不同頻率之脈沖信號。 NE555的特點有:1.只需簡單的電阻器、電容器,即可完成特定的振蕩延時作用。其延時范圍極廣,可由幾微秒至幾小時之久。2.它的操作電源電壓范圍極大,可與TTL,CMOS等邏輯電路配合,也就是它的輸出準位及輸入觸發(fā)準位,均能與這些邏輯系列的高、低態(tài)組合。3.其輸出端的供給電流大,可直接推動多種自動控制的負載。 4.它的計時精確度高、溫度穩(wěn)定度佳,且價格便宜。表1是NE555的極限參數(shù),不同的封裝形式及不同的生產(chǎn)廠商的器件這些參數(shù)不盡相同,極限參數(shù)是指在不損壞器件的情況下,廠商保證的界限,并非可以工作的條件,如果

11、超過某一環(huán)境下使用,其間的安全性將不會得到保證,這使用中應(yīng)加以注意。2. 555定時器的電路結(jié)構(gòu)與功能555定時器是一種多用途的數(shù)字-模擬混合集成電路,利用它能極方便地構(gòu)成施密特觸發(fā)器、單穩(wěn)態(tài)觸發(fā)器和多諧振蕩器等。由于使用靈活、方便,所以555定時器在波形的產(chǎn)生與變換、測量與控制、家用電器、電子玩具等許多領(lǐng)域中都得到了應(yīng)用。555的電路結(jié)構(gòu)如圖:圖2-2 555內(nèi)部電路結(jié)構(gòu)圖555的引腳功能如下: 1腳, (接地) -地線(或共同接地) ,通常被連接到電路共同接地。 2 腳,(觸發(fā)點) -這個腳位是觸發(fā)NE555使其啟動它的時間周期。觸發(fā)信號上緣電壓須大于2/3 VCC,下緣須低于1/3 VC

12、C 。 3腳, (輸出) -當時間周期開始555的輸出輸出腳位,移至比電源電壓少1.7伏的高電位。周期的結(jié)束輸出回到O伏左右的低電位。于高電位時的最大輸出電流大約200 mA 。 4腳, (復(fù)位) -一個低邏輯電位送至這個腳位時會重置定時器和使輸出回到一個低電位。它通常被接到正電源或忽略不用。 5 腳,(控制) -這個接腳準許由外部電壓改變觸發(fā)和閘限電壓。當計時器經(jīng)營在穩(wěn)定或振蕩的運作方式下,這輸入能用來改變或調(diào)整輸出頻率。 6腳, (重置鎖定) - Pin 6重置鎖定并使輸出呈低態(tài)。當這個接腳的電壓從1/3 VCC電壓以下移至2/3 VCC以上時啟動這個動作。7腳, (放電) -這個接腳和主

13、要的輸出接腳有相同的電流輸出能力,當輸出為ON時為LOW,對地為低阻抗,當輸出為OFF時為HIGH,對地為高阻抗。 8 腳,(V +) -這是555個計時器IC的正電源電壓端。供應(yīng)電壓的范圍是+4.5伏特(最小值)至+16伏特(最大值)。參數(shù)功能特性: 供應(yīng)電壓4.5-18V輸出電225mA (max) 上升/下時間100 ns 供應(yīng)電3-6 mA3. 基于NE555的紅外感應(yīng)設(shè)計 紅外對管原理:直流驅(qū)動紅外探測器電路的設(shè)計與參數(shù)計算電路如下圖所示(圖2-2)。W1 和 R1 及D1成簡單直流發(fā)光二極管驅(qū)動電路,調(diào)節(jié) W1 可以改變發(fā)光管的發(fā)光

14、光強,從而節(jié)探測距離,NE555 及其外圍原件構(gòu)成施密特觸發(fā)器,其觸發(fā)電平可通過 W2調(diào)制,接收管D2 和電阻 R2 構(gòu)成光電檢測電路。通過 NE555 第 3 腳輸出的 TTL平可以直接驅(qū)動單片機 I/O 口。由于 NE555 輸出信號為 TTL 電平,單片機檢測方便。 圖 2-3 直流驅(qū)動紅外探測器電路 時鐘模塊設(shè)計時鐘模塊主要功能是時間設(shè)置,主要由DS1302芯片實現(xiàn),它通過串行方式與單片機進行數(shù)據(jù)傳送,能夠向單片機提供包括秒、分

15、、時、日、月、年等在內(nèi)的實時時間信息,并可對月末日期、閏年天數(shù)自動進行調(diào)整;它還擁有用于主電源和備份電源的雙電源引腳,在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。另外,它還能提供31字節(jié)的用于高速數(shù)據(jù)暫存的RAM。鑒于上述特點,DS1302已在許多單片機系統(tǒng)中得到應(yīng)用,為系統(tǒng)提供所需的實時時鐘信息。 1. DS1302芯片概述DS1302慢速充電時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM,它經(jīng)過一個簡單的串行接口與微處理器通信,實時時鐘/日歷提供秒、分、時、日、周、月和年等信息,對于小于31天的月,月末的日期自動進行調(diào)整,還包括了閏年校正的功能。時鐘的運行可以采用24小時或帶AM(上午

16、)/PM(下午)的12小時格式。使用同步串行通信,簡化了DS1302與微處理器的通信。與時鐘/RAM通信僅需三根線:(1)(復(fù)位)、(2)I/O(數(shù)據(jù)線)、和(3)SCLK(串行時鐘)。數(shù)據(jù)可以以每次一個字節(jié)或多達31字節(jié)的多字節(jié)形式傳送至?xí)r鐘/RAM或從其中送出。DS1302設(shè)計成為能在非常低的功耗下工作,消耗小于1微瓦的功率便能保存數(shù)據(jù)和時鐘信息。 DS1302是DS1202的升級產(chǎn)品,除了DS1202基本的慢速充電功能外,DS1302具有的其它特點包括:用于主電源和備份電源的雙電源的雙電源引腳,可編程的VCC1慢速充電器以及7個附加字節(jié)的高速暫存存儲器。2. DS1302工作原理串行時鐘

17、芯片的主要組成部分:移位寄存器、控制邏輯、振蕩器、實時時鐘以及RAM。為了初始化任何的數(shù)據(jù)傳送,把置為高電平且把提供地址和命令的8位裝入到移位寄存器,數(shù)據(jù)在SCLK的上升沿串行輸入,無論是讀周期還是寫周期發(fā)生,也無論傳送方式是單字節(jié)傳送還是多字節(jié)傳送,開始8位指定40個字節(jié)中的哪個將被訪問。在開始8個時鐘周期把命令字裝入移位寄存器之后,另外的時鐘在讀操作時輸出數(shù)據(jù),在寫操作時輸入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加最大可達248的數(shù)。如圖2-3,引腳排列:圖2-4 DS1302引腳排列引腳說明:X1,X2:32,768kHz晶振引腳;GND:接地;:復(fù)位;I/O數(shù)據(jù)

18、輸入輸出;SCLK:串行時鐘;VCC1,VCC2:電源引腳。3. DS1302的電路設(shè)計如圖2-4所示,VCC1接3V電壓,VCC2接+5V電源,X1,X2接晶振,I/O串行口輸出,復(fù)位端。圖2-5 DS1302電路圖 中央控制模塊設(shè)計1. STC89C52單片機概述與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、全靜態(tài)操作:0Hz33Hz 、三級加密程序存儲器 、 32個可編程I/O口線、三個16位定時器/計數(shù)器八個中斷源、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針、掉電標識符 。2. STC8

19、9C52功能特性描述STC89C52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)

20、晶振及時鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8K字節(jié)在系統(tǒng)可編程 Flash。3. C51單片機最小系統(tǒng)介紹 單片機最小系統(tǒng)由晶振電路和復(fù)位電路構(gòu)成 圖 2-6 單片機最小系統(tǒng) 顯示模塊設(shè)計11602液晶概述液晶是一種高分子材料,因為其特殊的物理、化學(xué)、光學(xué)特性,被廣泛應(yīng)用于輕薄顯示器上。本系統(tǒng)顯示模塊采用了LCD1602液晶顯示器每行能夠顯示16個字符,可

21、以顯示兩行。主要實現(xiàn)系統(tǒng)時間設(shè)定,燈的開關(guān)時間的功能,系統(tǒng)狀態(tài)顯示。1、讀操作時序2、寫操作時序3、時序相關(guān)參數(shù)4.與單片機連接圖2.2 硬件系統(tǒng)原理圖第三章 軟件設(shè)計與調(diào)試3.1系統(tǒng)設(shè)計思路本軟件系統(tǒng)共包括主程序部分,物體感應(yīng)部分,按鍵設(shè)定部分,顯示部分。通過DS1302時鐘芯片將實時時鐘信息輸入到單片機,單片機將從時鐘芯片所讀信息與單片機中所設(shè)定的亮滅燈時間相對比,再參考外部總控制端確定路燈功能的開啟與否。在確定路燈功能開啟的前提下,外部中斷0、外部中斷1與查詢端口確定交通狀態(tài)。再由單片機控制兩盞路燈的亮滅狀態(tài)。3.2系統(tǒng)各部分子程序設(shè)計 主程序設(shè)計主程序設(shè)計主要包括函數(shù)初始化部分,紅外感

22、應(yīng)部分和按鍵掃描部分。其中紅外感應(yīng)部分采用了兩個外部中斷和一個查詢。程序流程圖如圖3-1。 紅外中斷與查詢子程序設(shè)計.1紅外中斷子程序中斷子程序主要包括讀取DS1302的時鐘信息和設(shè)置的時鐘信息相對比和對的燈方向上的判斷兩個方面。程序流程圖如圖3-2。圖3-2void INT_1() interrupt 2H2+; /H2紅外線2標志位if(H2=2)H2=0;if(H2=1)/IR_LED1=0; IR_LED2=1;elseIR_LED1=1; IR_LED2=0;LED1=time&IR_LED1;/時間控制&紅外控制LED2=time&IR_LED2;.2 紅外

23、查詢部分子程序void IR_Inquiry()查詢部分 if(H3=1) delay1(5); 延時5msif(H3=1) 紅外查詢3IR_LED2=IR_LED2; 控制LED燈2發(fā)生電平偏轉(zhuǎn) LED2=time&IR_LED2;時間控制&紅外控制按鍵設(shè)定程序設(shè)計開始按鍵設(shè)定程序是整個系統(tǒng)的核心,其中包括了對系統(tǒng)時間的設(shè)定,開關(guān)燈設(shè)定,總控制端設(shè)定等。流程圖如3-3。按K1按K3按K4按K2按K4設(shè)置初始時間進入路燈開關(guān)燈時間設(shè)置界面系統(tǒng)時間調(diào)整模式按K1按K2時間加時間減路燈控制開/路燈控制關(guān)圖3-33.3整體系統(tǒng)的軟件調(diào)試MCS-51系列單片機常用的開發(fā)編程軟件是KEI

24、L軟件,該軟件能對C和匯編語言進行語言編譯。同時能夠在KEIL軟件商之間調(diào)試程序錯誤并且支持模塊化設(shè)計縮短了開發(fā)周期減少了開發(fā)難度。通過KEIL生成得HEX文件能在Proteus上直接仿真,能減少硬件調(diào)試中的風(fēng)險和難度。通常單片機程序開發(fā)流程有以下步驟:1、 通過對項目研究,對項目的要求進行模塊化分類,設(shè)計程序流程圖,再對具體模塊選擇不同的算法,在KEIL中編寫出程序。2、 通過編譯查錯,在KEIL中對程序中出現(xiàn)的語法和邏輯的錯誤進行修改3、 生成HEX文件,在Proteus中畫出硬件原理圖仿真調(diào)試。總結(jié)本文介紹了以51單片機為核心的模擬路燈控制系統(tǒng),并詳細介紹了各個部分的功能的結(jié)構(gòu),原理,本

25、系統(tǒng)所選的STC89S52芯片精度高,物體感應(yīng)部分采用了基于555觸發(fā)器的紅外線感應(yīng)模塊,因而檢測物體靈敏度高,具有重大的實際意義。在論文制作的整個過程中,本人最深的體會到做任何一個項目首先必須具備的是扎實而豐富的專業(yè)知識,只有在專業(yè)知識積累到一定的程度的狀態(tài)下才能置身于一個高的位置,系統(tǒng)分析問題解決問題。在對待科學(xué)研究始終應(yīng)該保持著嚴謹?shù)膽B(tài)度,對于每一個環(huán)節(jié)都必須精益求精。當然,這些都是我未來學(xué)習(xí)和工作都必須具備的,相信有了這一步,我將會走得更遠。致謝本文的研究工作是在胡江老師的精心指導(dǎo)和悉心關(guān)懷下完成的,在我的設(shè)計題目的選擇、實物的調(diào)試 和論文的研究工作中無不傾注著指導(dǎo)老師辛勤的汗水和心血

26、。同時也要感謝幫助過我們的同學(xué),給我們提供了寶貴的建議。指導(dǎo)老師的嚴謹治學(xué)態(tài)度、無私的奉獻精神使我深受的啟迪。從尊敬的指導(dǎo)老師身上,我不僅學(xué)到了扎實、寬廣的專業(yè)知識,也學(xué)到了做人的道理,在此我要向我的指導(dǎo)老師致以最衷心的感謝和深深的敬意。在這里要特別感謝的是我的隊友王春燕同學(xué),她扎實的專業(yè)知識和精湛的焊接手藝在我們這個設(shè)計當中起到了決定性的作用,在論文和軟件調(diào)試中她也給我提出了一些建設(shè)性的意見。在于她合作完成畢業(yè)設(shè)計的過程中我了解到了團隊合作的重要性。 在多年的學(xué)習(xí)生活中,還得到了許多領(lǐng)導(dǎo)和老師的熱情關(guān)心和幫助,在此,向所有關(guān)心和幫助過我的領(lǐng)導(dǎo)、老師、同學(xué)和朋友表示由衷的謝意!參考文獻1戴佳

27、戴衛(wèi)恒 .51單片機應(yīng)用程序設(shè)計實例 2007(11)2郭天翔. 51單片機C語言教程.電子工業(yè)出版社2008(11)3馬忠梅, 籍順心,張凱,馬巖.北京航空航天大學(xué)出版社 1999(1)4王宜懷,劉曉升.嵌入式應(yīng)用技術(shù)基礎(chǔ)教程.清華大學(xué)出版社 2005(7)5高峰.單片微型計算機原理與接口技術(shù).科學(xué)出版社 2003(2)6潘清明,劉啟新.基于單片機路燈網(wǎng)絡(luò)控制系統(tǒng).中國制造業(yè)信息化.第36卷(21)7基于AT89C2051+ GAL16V8 LED驅(qū)動電路的多功能燈光控制器8基于AT89C2051+集成紅外傳感器+PC25陣并行通信接口 設(shè)計的雙機通訊的遠程開關(guān)燈9余錫存.單片機原理及接口技

28、術(shù)10新編555集成電路應(yīng)用800例附錄#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS = P22; sbit LCD_RW = P21;sbit LCD_EN = P20;sbit K1 = P13;sbit K2 = P14;sbit K3 = P15;sbit K4 = P16;sbit reset = P12; ds1302管腳sbit sclk = P10;sbit io = P11;/*紅外控制端*/sbit

29、 int0=P32;sbit int1=P33;sbit H3=P34;sbit LED2=P24;sbit LED1=P23;sbit BEEP = P37;bit flag=1,hour=0,min=0,sec=0,hour1=0,min1=0;bit year=0,month=0,day=0,week=0;bit alarm_flag=0;uchar H1,H2,H_3,IR_LED1,IR_LED2,time;uchar L1=0,L2=0;uchar timecount=0,count=0; uchar code str1=" - - Week: "uchar c

30、ode str2="Time: "uchar code str3="ON : "uchar code str4="OFF: "uchar init =0x00,0x00,0x00,0x00,0x00,0x00,0x00; /uchar init1 =0x00,0x00;uchar init2 =0x00,0x59,0x23,0x01,0x05,0x01,0x06; / /秒, 分, 時, 日, 月,星期,年uchar bj_time =0x00,0x00,0x00; uchar bj_time1 =0x00,0x00,0x00; /秒

31、, 分, 時uchar code mytab8 = 0x0e,0x11,0x11,0x11,0x0a,0x1f,0x04,0x00;/小燈泡#define delayNOP(); _nop_();_nop_();_nop_();_nop_();void Set_W1302(uchar addr);void Set_Flash(uchar row,uchar col);void Set_place(uchar row,uchar col);void Play_nowtime();/ 顯示當前時間void key_set(uchar num,uchar row,uchar col );/ 鍵設(shè)定函

32、數(shù)void alarm_time();/ 開關(guān)燈時間設(shè)定void Play_alarmtime();/ 顯示當前時間void Time_compare();/時間比較void IR_Inquiry();/紅外查詢void init_main(); /主程序初始化/*/void delay1(int ms) unsigned char y; while(ms-) for(y = 0; y<250; y+) _nop_(); _nop_(); _nop_(); _nop_(); /*檢查LCD忙狀態(tài) */*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。 */b

33、it lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*寫指令數(shù)據(jù)到LCD */*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN

34、 = 1; delayNOP(); LCD_EN = 0; /*寫顯示數(shù)據(jù)到LCD */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /* LCD初始化設(shè)定 */void init_lcd() delay1(15); lcd_wcmd(0x01); /清除LCD的顯示內(nèi)容 lcd_wcmd(0x38); /16*

35、2顯示,5*7點陣,8位數(shù)據(jù) delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x0c); /顯示開,關(guān)光標 delay1(5); lcd_wcmd(0x06); /移動光標 delay1(5); lcd_wcmd(0x01); /清除LCD的顯示內(nèi)容 delay1(5);/*/void delay() uchar j; for(j=250;j>0;j-);/* 寫字符串函數(shù) */void write_str(uchar addr,uchar *p) uchar i=0; lcd_wcmd

36、(addr); while(pi!='0') lcd_wdat(pi); i+; /*/* 設(shè)定顯示位置 */*/void write_position(uchar row,uchar col) uchar place; if(row=1) place=0x80+col-1; lcd_wcmd(place); else place=0xc0+col-1; lcd_wcmd(place); /*/* */*自定義字符寫入CGRAM */* */*/void writetab() unsigned char i; lcd_wcmd(0x40); /寫CGRAM for (i = 0

37、; i< 8; i+) lcd_wdat(mytabi); /*/*/void write_byte(uchar inbyte) uchar i; for(i=0;i<8;i+) sclk=0; /寫的時候低電平改變數(shù)據(jù) if(inbyte&0x01) io=1; else io=0; sclk=1; /寫的時候高電平,把數(shù)據(jù)寫入ds1302 _nop_(); inbyte=inbyte>>1; /*/*/uchar read_byte() /sclk的下跳沿讀數(shù)據(jù) uchar i,temp=0; io=1; /設(shè)置為輸入口 for(i=0;i<7;i+)

38、 sclk=0; if(io=1) temp=temp|0x80; else temp=temp&0x7f; sclk=1; /產(chǎn)生下跳沿 temp=temp>>1; return (temp);/*/ 往ds1302的某個地址寫入數(shù)據(jù) /*/void write_ds1302(uchar cmd,uchar indata) sclk=0; reset=1; write_byte(cmd); write_byte(indata); sclk=0; reset=0;/*/ 讀ds1302某地址的的數(shù)據(jù) /*/uchar read_ds1302(uchar addr) ucha

39、r backdata; sclk=0; reset=1; write_byte(addr); /先寫地址 backdata=read_byte(); /然后讀數(shù)據(jù) sclk=0; reset=0; return (backdata);/*/ 設(shè)置初始時間/*/void set_ds1302(uchar addr,uchar *p,uchar n) /寫入n個數(shù)據(jù) write_ds1302(0x8e,0x00); /寫控制字,允許寫操作 for(;n>0;n-) write_ds1302(addr,*p); p+; addr=addr+2; write_ds1302(0x8e,0x80);

40、 /寫保護,不允許寫/*/ 讀取當前時間 /*/void read_nowtime(uchar addr,uchar *p,uchar n) for(;n>0;n-) *p=read_ds1302(addr); p+; addr=addr+2; /*/ 初始化DS1302/*/void init_ds1302() reset=0; sclk=0; write_ds1302(0x80,0x00); write_ds1302(0x90,0xa6); /一個二極管4K電阻充電 write_ds1302(0x8e,0x80); /寫保護控制字,禁止寫/*/* */* 指示燈響一聲 */* */*

41、/void beep() unsigned char y; for (y=0;y<100;y+) delay(); BEEP=!BEEP; /BEEP取反 BEEP=1; /關(guān)閉指示燈delay1(50); /*/* */* :閃動函數(shù) */* */*/void flash() if(flag) write_position(2,9); lcd_wdat(':'); write_position(2,12); lcd_wdat(':'); else write_position(2,9); lcd_wdat(0x20); write_position(2,

42、12); lcd_wdat(0x20); void init_main() /主程序初始化子函數(shù)P1=0xff; TMOD=0x01; TH0=0x4c; TL0=0x00; EA=1; ET0=1; TR0=1; EX0=1; EX1=1; IT0=1; IT1=1; IR_LED1=0; IR_LED2=0; int0=0; int1=0; H3=0; init_lcd(); /初始化LCD write_str(0x80,str1); /液晶顯示提示信息 write_str(0xc0,str2); /液晶顯示提示信息 init_ds1302(); /初始化ds1302 writetab();/*/ 主函數(shù)/*/void main() init_main();/主程序

溫馨提示

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

最新文檔

評論

0/150

提交評論