2 課題的設(shè)計(jì)要求和設(shè)計(jì)方案 2.1 設(shè)計(jì)要求 2.1.1題目概述 道路交通信號(hào)燈是道路交通安全的產(chǎn)品,它可以加強(qiáng)道路交通管理,減少交通事故的發(fā)生,提高道路使用效率,改善交通狀況的一種重要工具。它適用于各種十字、丁字等交叉路口,由道路交通信號(hào)燈控制,指導(dǎo)車輛和行人安全而有序地通行。 2.1.2 設(shè)計(jì)任務(wù) 設(shè)計(jì)一種交通信號(hào)燈的控制系統(tǒng)。要求直觀,簡(jiǎn)單。能夠滿足十字路口交通等的使用需求。 2.1.3 設(shè)計(jì)要求 1. 交通路口為十字路口。 2.馬路為雙向六車道,即要有左轉(zhuǎn)燈,直行燈,右轉(zhuǎn)燈。 3.要考慮人行橫道的信號(hào)燈。 4.有顯示設(shè)備可以顯示通信時(shí)間。 5.要求通行時(shí)間可調(diào)。
2.2 設(shè)計(jì)方案 2.2.1 供電方案 系統(tǒng)要在正常而穩(wěn)定的狀態(tài)下工作,必須要有可靠的電源。而本次基于單片機(jī)的設(shè)計(jì)需要顯示的芯片較多,電源供應(yīng)量大,因此本次設(shè)計(jì)了如下三種方案。 方案一:利用獨(dú)立的穩(wěn)壓電源供電。優(yōu)點(diǎn)是可提供穩(wěn)定而可靠電源,而且可以利用220V電壓轉(zhuǎn)化,不受各種因素的限制;缺點(diǎn)是各模塊都采用獨(dú)立電源,會(huì)增加本次設(shè)計(jì)的難度,而且對(duì)其他電路還會(huì)造成一定的干擾。 方案二:采用USB轉(zhuǎn)接口5V電壓供電,這樣簡(jiǎn)單明了,但是單單一個(gè)5V電源供電可能會(huì)顯得電源不足,而無法滿足實(shí)際的需要。 方案三:采用USB轉(zhuǎn)接口5V雙電源電壓供電,這樣把本次設(shè)計(jì)分為兩大模塊,一是交通信號(hào)燈控制系統(tǒng),二是萬(wàn)年歷系統(tǒng),采用雙電源供電,一個(gè)為交通信號(hào)燈控制系統(tǒng)提供電源,另一個(gè)為萬(wàn)年歷系統(tǒng)提供電源。這樣即簡(jiǎn)單而又可提供穩(wěn)定的電源。 考慮到實(shí)際情況和電路的簡(jiǎn)潔,本設(shè)計(jì)采用了第三套方案,此方案在電路的設(shè)計(jì)上可以把系統(tǒng)分為兩大模塊,使系統(tǒng)設(shè)計(jì)簡(jiǎn)單化,從而又可以提供穩(wěn)定而可靠電源。而且在單電源斷電的情況下不影響另一模塊的工作。
2.2.2 輸入方案 該系統(tǒng)要求能手動(dòng)及智能控制改變交通信號(hào)燈的通行時(shí)間和萬(wàn)年歷時(shí)間的調(diào)整。 方案一:采用8155擴(kuò)展I/O 口及鍵盤、顯示等。該方案的優(yōu)點(diǎn)是:使用靈活可編程,并且有RAM,及計(jì)數(shù)器。若用該方案,可提供較多I/O 口,但操作起來稍顯復(fù)雜。 方案二: 直接在I/O口線上接上按鍵開關(guān)。該方案優(yōu)點(diǎn)是:編程更加簡(jiǎn)潔,使用更加簡(jiǎn)單,且成本更低。缺點(diǎn)就是功能有限。 綜合考慮本設(shè)計(jì)的實(shí)際需要,在使用輸入的時(shí)候不需要過于復(fù)雜的功能,因此直接在I/O口線上接上按鍵開關(guān)足以滿足本次系統(tǒng)設(shè)計(jì)的需要,故采用方案二。
2.2.3 顯示界面方案 本設(shè)計(jì)涉及到倒計(jì)時(shí)、狀態(tài)燈、時(shí)間、溫度等顯示功能。基于功能需求,本設(shè)計(jì)考慮如下四種方案: 方案一:完全采用數(shù)碼管顯示。這種方案只顯示有限的符號(hào)和數(shù)碼字符,無法勝任功能需求。 方案二:完全采用點(diǎn)陣式LED 顯示。這種方案實(shí)現(xiàn)復(fù)雜,且須完成大量的軟件工作;但功能強(qiáng)大,可方便的顯示各種英文字符,漢字,圖形等。 方案三:采用LCD1602液晶顯示,這種顯示比較樂觀,但是工作量大,而且設(shè)計(jì)復(fù)雜,再加上需要到的LCD1602較多,從經(jīng)濟(jì)上也不劃算。 方案四:采用數(shù)碼管、LED與LCD1602相結(jié)合的方法因?yàn)樵O(shè)計(jì)既要求倒計(jì)時(shí)數(shù)字輸出,又要求有狀態(tài)燈輸出,同時(shí)還要顯示出年、月、日、時(shí)、分、秒、星期和溫度。為了方便觀看并考慮到實(shí)際情況,用數(shù)碼管顯示交通信號(hào)燈的倒計(jì)時(shí),用LED顯示交通燈的狀態(tài)燈、用LCD1602顯示年、月、日、時(shí)、分、秒、星期和溫度。這種設(shè)計(jì)方案既滿足系統(tǒng)功能要求,又減少了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。
2.2.4交通燈方案 2.2.4.1交通燈規(guī)則方案 本設(shè)計(jì)的交通燈以十字路口為模型,在實(shí)現(xiàn)基本的功能前提下增加了時(shí)間及溫度的液晶顯示。從而還增加了路口高峰期的智能化人工管理機(jī)制。 實(shí)際生活中交通信號(hào)燈的規(guī)則千變?nèi)f化,在不同的路口上看到的交通信號(hào)燈的規(guī)則不一樣,但是總體還是相差不大,也有一些根據(jù)實(shí)際的需要而設(shè)置不同的交通規(guī)則,本次系統(tǒng)交通規(guī)則的設(shè)置是根據(jù)現(xiàn)實(shí)生活中的交通規(guī)則和多加考慮各種現(xiàn)實(shí)因素結(jié)合起來而制定了以下交通規(guī)則。 下圖所示為一種紅綠燈規(guī)則的狀態(tài)圖:
 
 

 
共四種狀態(tài),分別設(shè)定為S1、S2、S3、S4,交通燈以這四種狀態(tài)為一個(gè)周期,循環(huán)執(zhí)行如下圖所示: 
 依據(jù)上述車輛行駛的狀態(tài)圖,可以列出正常模式下各個(gè)路口交通信號(hào)燈的邏輯表如下表所示(其中邏輯值“1”表示直行通行,邏輯值“0”表示禁止通行,邏輯值“L”表示左轉(zhuǎn)通行):
表2.1 正常模式下工作表
程序就是在上述四種狀態(tài)下循環(huán)轉(zhuǎn)化的,而每種狀態(tài)下又包括綠燈通行和黃燈閃爍警告狀態(tài)。系統(tǒng)在正常模式下循環(huán)一個(gè)周期所需要的時(shí)間為120S,數(shù)碼管顯示的工作模式為半周期60.
2.2.4.2各種模式下通行時(shí)間 本系統(tǒng)結(jié)合實(shí)際的需要,而在上述四種狀態(tài)的每種狀態(tài)下再細(xì)分為綠燈通行、黃燈閃爍兩種狀態(tài),總共八種工作狀態(tài)。系統(tǒng)在正常工作模式下又可分為三種工作模式,分別為:正常模式、繁忙模式和特殊模式。各種模式下的時(shí)間分配如下表2.2: 表2.2 各模式下時(shí)間分配表
2.2.5 萬(wàn)年歷設(shè)計(jì)方案 電路設(shè)計(jì)框圖 本系統(tǒng)的電路系統(tǒng)框圖如圖2.6所示。AT89C51單片機(jī)對(duì)DS1302和DS18B20寫入控制字并讀取相應(yīng)的數(shù)據(jù),繼而控制LCD1602作出對(duì)應(yīng)的顯示,同時(shí)也向交通信號(hào)燈外部發(fā)出定時(shí)中斷,從而改變交通信號(hào)燈的工作模式。
圖2.6統(tǒng)硬件框圖
3 芯片的介紹及應(yīng)用3.1 AT89C51單片機(jī)介紹及應(yīng)用 單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),同時(shí)又稱為微控制器、嵌入式微控制器等,它屬于第四代電子計(jì)算機(jī)。它把各種芯片電路集成在一塊芯片上,因此它具有體積小、抗干擾能力強(qiáng)、功耗低、可靠性高以及低廉的價(jià)格。它廣泛應(yīng)用于工業(yè)過程控制、測(cè)控系統(tǒng)及各種智能儀器儀表等。因此國(guó)際上逐漸采用微控制器(MCU)代替單片微型計(jì)算機(jī)(SCM)這一名稱。微控制器可以更準(zhǔn)確的反應(yīng)出單片機(jī)的本質(zhì),但單片機(jī)這一名稱以為大多數(shù)人所接受,所以單片微型計(jì)算機(jī)即是單片機(jī),同時(shí)又稱為微控制器。
3.1.1單片機(jī)的引腳及功能 AT89C51單片機(jī)的 引腳圖如圖3.1 所示 
圖3.1 AT89C51單片機(jī)引腳圖
VCC:電源電壓 GND:地 P0口:P0口是一個(gè)漏極開路型8位雙向I/0口,即數(shù)據(jù)/地址總線的復(fù)用口。當(dāng)它作為輸出端口使用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路。 P1口:Pl 口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,Pl口的輸出緩沖級(jí)能驅(qū)動(dòng)4個(gè)TTL邏輯門電路。當(dāng)我們對(duì)端口寫入“1”時(shí),通過內(nèi)部上拉電阻來把端口拉到高電平,此時(shí)P1口可做為輸入端口。當(dāng)P1口做為輸入口時(shí),由于內(nèi)部存在上拉電阻,當(dāng)被外部引腳拉低時(shí)會(huì)輸出數(shù)據(jù)。P1口除了以上功能外,最重要的是它的第二功能如表3.1所示。
表3.1 P1口引腳的第二功能
P2口:P2口也是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P2 的輸出緩沖級(jí)也能驅(qū)動(dòng)4 個(gè)TTL邏輯門電路。當(dāng)我們對(duì)端口寫入“1”時(shí),通過內(nèi)部上拉電阻來把端口拉到高電平,此時(shí)P2口可做為輸入端口。當(dāng)P2口做為輸入口時(shí),由于內(nèi)部存在上拉電阻,當(dāng)被外部引腳拉低時(shí)會(huì)輸出數(shù)據(jù)。當(dāng)訪問外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)的存儲(chǔ)器時(shí),P2口輸出高8位數(shù)據(jù)地址。當(dāng)訪問8 位外部數(shù)據(jù)存儲(chǔ)器地址時(shí),P2口的內(nèi)容在整個(gè)訪問過程將不會(huì)改變。 P3 口:P3 口也是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/0 口。P3 口輸出緩沖級(jí)也能驅(qū)動(dòng)4 個(gè)TTL邏輯門電路。當(dāng)我們對(duì)端口寫入“1”時(shí),通過內(nèi)部上拉電阻來把端口拉到高電平,此時(shí)P3口可做為輸入端口。當(dāng)P3口做為輸入口時(shí),由于內(nèi)部存在上拉電阻,當(dāng)被外部引腳拉低時(shí)會(huì)輸出數(shù)據(jù)。P3口除了以上用途外,最重要的是它的第二功能如表3.2所示。 表3.2 P3口引腳的第二功能 | | | | | | | | | | | T0(定時(shí)/計(jì)數(shù)器0外部輸入) | | T1(定時(shí)/計(jì)數(shù)器1外部輸入) | | / WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) | | / RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) |
P3口還可用于接收一些Flash閃速存儲(chǔ)器的編程及程序的校驗(yàn)控制等。 RST:復(fù)位輸入引腳。振蕩器在工作時(shí),RST引腳將會(huì)出現(xiàn)兩個(gè)或兩個(gè)以上的機(jī)器周期高電平來使單片機(jī)進(jìn)行復(fù)位。WDT 溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRT0 位(地址8EH)可打開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。 ALE/:在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),ALE(地址鎖存)主要是利用輸出脈沖來鎖存地址低8位字節(jié)。ALE還可以用于對(duì)外輸出時(shí)鐘信號(hào)或定時(shí)功能,因?yàn)锳LE時(shí)刻以時(shí)鐘振蕩器的1/6頻率輸出固定的脈沖信號(hào)。 值得注意的是:當(dāng)我們?cè)谠L問外部數(shù)據(jù)存儲(chǔ)器時(shí)將會(huì)跳過一個(gè)ALE脈沖。在F1ash存儲(chǔ)器編程期間,該引腳還可用于輸入編程脈沖。還可以通過特殊的功能寄存器中的8EH單元的D0位置來禁止ALE工作。執(zhí)行該操作后,需要通過MOVX和MOVC指令A(yù)LE才能被激活,從而恢復(fù)工作狀態(tài)。在執(zhí)行單片機(jī)外部程序時(shí),ALE應(yīng)設(shè)置為無效。 程序的儲(chǔ)存是在()允許輸出外部程序存儲(chǔ)器時(shí)進(jìn)行,當(dāng)單片機(jī)需要進(jìn)行讀寫數(shù)據(jù)時(shí),此時(shí)該引腳在每個(gè)周期下就會(huì)兩次有效,從而發(fā)出兩次脈沖,當(dāng)訪問外部的數(shù)據(jù)存儲(chǔ)器時(shí),則是發(fā)出一次脈沖信號(hào)。 /VPP:外部訪問允許。當(dāng)EA端設(shè)置為低電平時(shí),CPU可單獨(dú)訪問外部程序存儲(chǔ)器(即:0000H-FFFFH地址)。 XTAL1:振蕩器的反相放大器和內(nèi)部時(shí)鐘發(fā)生器的輸入端。
3.1.2單片機(jī)最小系統(tǒng)的設(shè)置 本次基于單片機(jī)交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)的單片機(jī)最小系統(tǒng)設(shè)置的如下圖所示: 
圖3.2 AT89C51單片機(jī)最小系統(tǒng)圖
3.2 LCD1602芯片介紹及應(yīng)用 3.2.1 液晶顯示器的介紹 液晶顯示器有多種分類方法,通常按顯示的方式分可分為字符式、段式、點(diǎn)陣式等。液晶顯示器即可顯示黑白又可顯示多彩色灰度,因此可分為黑白顯示器和彩色顯示器。如果按驅(qū)動(dòng)方式分,它又可以分為單純矩陣驅(qū)動(dòng)(Simple Matrix)、靜態(tài)驅(qū)動(dòng)(Static)和主動(dòng)矩陣驅(qū)動(dòng)(Active Matrix)三種。液晶顯示器它具有厚度薄、體積小,適用于大規(guī)模集成電路的驅(qū)動(dòng)等特點(diǎn),目前已廣泛應(yīng)用在數(shù)字?jǐn)z像機(jī)、便攜式電腦、MP3、MP4、PDA移動(dòng)通信工具等領(lǐng)域。
3.2.2 液晶顯示器各種圖形的顯示原理 液晶顯示器是利用液晶的物理特性,通過高低電壓來控制顯示的區(qū)域,高電平則亮,低電平則滅,這樣就可以顯示出圖形。液晶顯示器圖形的顯示是通過N*M個(gè)液晶顯示單元構(gòu)成,通過控制各個(gè)顯示單元的亮暗而達(dá)到顯示圖形的目的。例如一個(gè)液晶顯示器有64行顯示屏,而每行有128列,每字節(jié)又由8列組成,因此每行可顯示16個(gè)字節(jié),即整個(gè)顯示器可顯示1024個(gè)字節(jié)。最后通過控制液晶顯示相應(yīng)位置的亮暗從而顯示出每字節(jié)上的內(nèi)容。
3.2.3 LCD1602的基本參數(shù)及引腳功能 LCD1602采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,本次設(shè)計(jì)采用16腳(帶背光)來顯示年、月、日、時(shí)、分、秒、星期和溫度。各引腳接口說明如表3.3所示: 第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL是顯示器對(duì)比度調(diào)整端,當(dāng)接地信號(hào)時(shí)液晶對(duì)比度最高,當(dāng)接正電源時(shí)對(duì)比度最弱,對(duì)比度的高低將會(huì)影響液晶顯示器的顯示,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”。因此我們通常接一個(gè)10K的電位器來調(diào)節(jié)。 第4腳:RS是寄存器的選擇,高電平表示數(shù)據(jù)寄存器、低電平表示指令寄存器。 第5腳:R/W是信號(hào)線的讀寫,當(dāng)高電平時(shí)表示正在進(jìn)行讀操作,當(dāng)?shù)碗娖綍r(shí)表示正在進(jìn)行寫操作,如果RS和R/W同時(shí)為低電平時(shí)可進(jìn)行顯示地址或?qū)懭胫噶睿绻鸕S為低電平且R/W為高電平時(shí)可進(jìn)行讀取信號(hào),如果RS為高電平R/W為低電平時(shí)可進(jìn)行寫入數(shù)據(jù)。 第6腳:E端是使能信號(hào)端,當(dāng)E端由高電平變化為低電平時(shí),液晶模塊命令開始執(zhí)行。 第7~14腳:D0~D7是8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負(fù)極。
表3.3引腳接口說明表 編號(hào) | 符號(hào) | 引腳說明 | 編號(hào) | 符號(hào) | 引腳說明 | 1 | VSS | 電源地 | 9 | D2 | 數(shù)據(jù) | 2 | VDD | 電源正極 | 10 | D3 | 數(shù)據(jù) | 3 | VL | 液晶顯示偏壓 | 11 | D4 | 數(shù)據(jù) | 4 | RS | 數(shù)據(jù)/命令選擇 | 12 | D5 | 數(shù)據(jù) | 5 | R/W | 讀/寫選擇 | 13 | D6 | 數(shù)據(jù) | 6 | E | 使能信號(hào) | 14 | D7 | 數(shù)據(jù) | 7 | D0 | 數(shù)據(jù) | 15 | BLA | 背光源正極 | 8 | D1 | 數(shù)據(jù) | 16 | BLK | 背光源負(fù)極 |
3.2.4 LCD1602的指令說明及時(shí)序 LCD1602內(nèi)部液晶顯示模塊控制器指令共11條,如表3.4所示: LCD1602的讀寫操作、光標(biāo)操作以及屏幕顯示等都是通過各種指令程序而實(shí)現(xiàn)的,具體說明如下:(注:1為高電平,0為低電平) 指令1:清顯示,指令碼由01H復(fù)位到00H位置。 指令2:光標(biāo)復(fù)位,執(zhí)行時(shí)光標(biāo)將返回到00H位置。 指令3:光標(biāo)以及顯示模式的設(shè)置。光標(biāo)的移動(dòng)方向?yàn)椋焊唠娖奖硎居乙疲碗娖絼t表示左移。S:屏幕文字是否進(jìn)行右移或者進(jìn)行左移。高電平表示有效,低電平表示無效。 指令4:顯示控制開關(guān)。B:光標(biāo)閃爍的控制,高電平表示閃爍,低電平則表示不閃爍。 C:光標(biāo)開關(guān)的控制,高電平表示有光標(biāo),低電平則表示無光標(biāo) 。D:整體顯示的開關(guān)控制,高電平表示打開顯示,低電平則表示關(guān)閉顯示。 指令5:光標(biāo)或者顯示移位 S/C的控制。高電平表示文字移動(dòng)的顯示,低電平表示光標(biāo)的移動(dòng)。 指令6:功能命令的設(shè)置。DL為高電平表示4位總線,低電平則表示8位總線。F: 低電平表示顯示5x7的點(diǎn)陣字符,高電平表示顯示5x10的點(diǎn)陣字符。 N:低電平表示單行顯示,高電平表示雙行顯示 指令7:字符發(fā)生器RAM地址設(shè)置。 指令8:DDRAM地址的設(shè)置。 指令9:光標(biāo)地址和讀忙信號(hào)。 BF:表示忙標(biāo)志位,高電平時(shí)表示忙,此時(shí)模塊不能進(jìn)行命令或者數(shù)據(jù)的接受,低電平則表示不忙。 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)
表3.4 控制命令表 序號(hào) | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 光標(biāo)返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | 3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | 4 | 顯示開/關(guān)控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | 5 | 光標(biāo)或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | 6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | 7 | 置字符發(fā)生存貯器地址 | 0 | 0 | 0 | 1 | 字符發(fā)生存貯器地址 | 8 | 置數(shù)據(jù)存貯器地址 | 0 | 0 | 1 | 顯示數(shù)據(jù)存貯器地址 | 9 | 讀忙標(biāo)志或地址 | 0 | 1 | BF | 計(jì)數(shù)器地址 | 10 | 寫數(shù)據(jù)到CGRAM或DDRAM) | 1 | 0 | 寫入的數(shù)據(jù)內(nèi)容 | 11 | 從CGRAM或DDRAM讀數(shù) | 1 | 1 | 讀出的數(shù)據(jù)內(nèi)容 |
LCD1602液晶顯示器有多種,其中市場(chǎng)上最常見的是HD44780。HD44780內(nèi)置了DDRA(80字節(jié)),CGRAM(64字節(jié),用來存放用戶自定義字符,每個(gè)字符需要用到8個(gè)字節(jié),所以以一共可以存放8個(gè)用戶自定義字符),CGROM(內(nèi)存了160個(gè)字符,包括了標(biāo)準(zhǔn)的ASCII碼表上的字符等)。與HD44780相兼容的芯片時(shí)序表如表3.5所示:
表3.5 基本操作時(shí)序表 讀狀態(tài) | 輸入 | RS=L,R/W=H,E=H | 輸出 | D0—D7=狀態(tài)字 | 寫指令 | 輸入 | RS=L,R/W=L,D0—D7=指令碼,E=高脈沖 | 輸出 | 無 | 讀數(shù)據(jù) | 輸入 | RS=H,R/W=H,E=H | 輸出 | D0—D7=數(shù)據(jù) | 寫數(shù)據(jù) | 輸入 | RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖 | 輸出 | 無 |
讀寫操作時(shí)序如圖3.3和3.4所示。 
圖3.3 讀操作時(shí)序 
圖3.4寫操作時(shí)序 LCD1602液晶顯示是一個(gè)慢顯示器件,所以每次在執(zhí)行指令時(shí)一定要先進(jìn)行確認(rèn)模塊的忙標(biāo)志位是否為低電平,否而指令將會(huì)失效。要進(jìn)行字符的顯示,首先要進(jìn)行輸入顯示字符的地址,實(shí)際就是輸入顯示的內(nèi)容。LCD1602內(nèi)部顯示地址如圖3.5所示。  
對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)將會(huì)自動(dòng)右移。液晶模塊在繁忙狀態(tài)下將不能輸入指令。 3.2.5 LCD1602液晶顯示模塊原理圖 LCD1602顯示模塊電路,首先VSS接地信號(hào),VDD接5V高電平,VEE接10K的變阻器,變阻器兩端分別接5V電壓和大地。接著RS、RW和E是數(shù)據(jù)信號(hào)線分別接單片機(jī)的P2.5、P2.6和P2.7引腳。最后D0到D7接單片機(jī)的P0.0到P0.7引腳,要接排阻。而實(shí)際的LCD1602還有兩個(gè)背光調(diào)節(jié)引腳,分別是BLA和BLK接5V電壓和大地。 
圖3.6 LCD1602顯示電路 3.3 DS1302芯片介紹及應(yīng)用 DS1302是美國(guó) DALLAS 公司推出的一種高性能、低功耗的時(shí)鐘芯片,它采用 SPI 三線接口與 CPU 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送一個(gè)或多個(gè)字節(jié)的時(shí)鐘信號(hào)和 RAM數(shù)據(jù)。它可提供年、月、日、星期、時(shí)、分、秒的計(jì)時(shí)顯示,各月天數(shù)它可進(jìn)行自動(dòng)的調(diào)整,同時(shí)還具有閏年的補(bǔ)償功能。工作電壓范圍為2.5~5.5V。DS1302芯片采用雙電源供電,即有主電源和備用電源。同時(shí)還可設(shè)置備用電源的充電方式,提供了對(duì)備用電源進(jìn)行電流充電的能力。DS1302也可用于數(shù)據(jù)的記錄, 特別是對(duì)于某些特殊意義的數(shù)據(jù)點(diǎn)的記錄上,它能實(shí)現(xiàn)數(shù)據(jù)和數(shù)據(jù)出現(xiàn)的時(shí)間同時(shí)記錄,因此在各種測(cè)量系統(tǒng)中得到廣泛的應(yīng)用。
3.3.1 DS1302引腳功能 DS1302芯片的外部引腳分配如圖3.7所示。 
圖3.7 DS1302的外部引腳分配
Vcc1:表示主電源;Vcc2:表示備份電源。如果 Vcc2>Vcc1+0.2V, 則 Vcc2向 DS1302供電,如果 Vcc2< Vcc1,由則Vcc1向 DS1302供電。 SCLK:串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出。 I/O:三線接口時(shí)的雙向數(shù)據(jù)線。 CE:輸入信號(hào)。DS1302在進(jìn)行讀寫數(shù)據(jù)時(shí),此位必須為高。該引腳有兩個(gè)功能:首先是CE 開始控制字進(jìn)行訪問移位寄存器的邏輯控制;其次是CE 提供結(jié)束單字節(jié)或者多字節(jié)數(shù)據(jù)的傳輸方法。
3.3.2 DS1302讀寫說明 DS1302是 SPI 總線方式來驅(qū)動(dòng)。它不僅需要向寄存器寫入控制字, 同時(shí)還需要讀取相應(yīng)寄存器的數(shù)據(jù)。
1:DS1302的讀寫寄存器 DS1302的時(shí)間寄存器總共有12個(gè),其中讀寄存器(81H-8DH)和寫寄存器(81H-8DH)是以BCD碼格式進(jìn)行數(shù)據(jù)的存取。 表3.6 DS1302的讀寫寄存器 DS1302小時(shí)寄存器(84H、85H)的位7應(yīng)用于DS1302是運(yùn)行的模式。即12小時(shí)制還是24小時(shí)制。當(dāng)位7為1時(shí),表示12小時(shí)模式,此時(shí)相應(yīng)的寄存器位5為高時(shí)表示AM,為低時(shí)表示PM。當(dāng)位7為0時(shí), 表示24小時(shí)模式。 DS1302秒寄存器(80H、81H)的位7應(yīng)用于時(shí)鐘暫停標(biāo)志(CH)位。當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行。 DS1302 控制寄存器(8EH、8FH)的位7是寫入保護(hù)位,其它7位均為0。當(dāng)WP位為0時(shí)可以開始進(jìn)行對(duì)時(shí)鐘和RAW進(jìn)行寫入,當(dāng)WP位為1時(shí),禁止對(duì)寄存器的寫入操作。
2:DS1302中靜態(tài)RAM地址 DS1302在靜態(tài)工作模式下的RAW地址如表3.7所示。 表3.7 靜態(tài) RAM 的地址表
3:DS1302的工作模式寄存器 DS1302的工作模式寄存器又分為時(shí)鐘突發(fā)模式寄存器、RAW突發(fā)模式寄存器等。突發(fā)模式是指一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和 RAM 數(shù)據(jù)。 突發(fā)模式寄存器如表3.8所示。 表3.8突發(fā)模式寄存器
4:DS1302控制字符表 DS1302的控制字最高位(位7)必須是1,才能進(jìn)行數(shù)據(jù)的寫入,否則不能寫入數(shù)據(jù);次高位(位6)表示RAW數(shù)據(jù)或者時(shí)鐘日歷的存取,當(dāng)為1時(shí)表示RAW數(shù)據(jù)存取,為0則表示時(shí)鐘日歷的存取;接著是數(shù)據(jù)操作地址(位5-位1);最后是位0表示數(shù)據(jù)的讀寫操作,當(dāng)為1時(shí)表示讀操作,為0表示寫操作。如表3.9所示。 表3.9 控制字(即地址及命令字節(jié)) 
5:DS1302的讀寫時(shí)序 DS1302數(shù)據(jù)的讀寫規(guī)則是在控制字的基礎(chǔ)上從低位到高位的輸出,每當(dāng)控制字指令輸入后下一個(gè)SCLK脈沖上升沿到來時(shí),數(shù)據(jù)就會(huì)被寫入到DS1302中,數(shù)據(jù)從最低位開始寫入,下一個(gè)SCLK脈沖的下降沿到來時(shí),就會(huì)讀出DS1302里面的數(shù)據(jù),讀出的規(guī)則也是從低位到高位。 
圖3.8 數(shù)據(jù)讀寫時(shí)序
3.3.3 DS1302時(shí)鐘采集模塊原理圖 
圖3.9 DS1302原理圖 此圖為DS1302時(shí)鐘芯片模塊采集原理圖,X1和X2接的是時(shí)鐘晶振,,大小為32.768MHz,VCC1和VCC2分別接3V和5V電壓,I/O、SCLK和ST分別接單片機(jī)的P1.6、P1.7和P1.5引腳。
3.4 DS18B20芯片介紹及應(yīng)用 DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的One-Wire,即單總線器件,它具有體積小而且線路簡(jiǎn)單的優(yōu)點(diǎn)。它只有三個(gè)引腳,分別是接高電源、地信號(hào)和一條數(shù)據(jù)信號(hào)線,設(shè)計(jì)簡(jiǎn)單而又方便。因此它廣泛應(yīng)用于溫度的測(cè)溫系統(tǒng)。 DS18B20除了體積小、線路設(shè)計(jì)簡(jiǎn)單優(yōu)點(diǎn)外,它在實(shí)際應(yīng)用中不需要其它外部任何器件即可實(shí)現(xiàn)溫度的測(cè)溫功能,測(cè)量溫度范圍為-55—+125 °C 之間,如超出檢測(cè)的溫度,DS18B20將會(huì)發(fā)出報(bào)警信號(hào)。數(shù)字溫度計(jì)的讀取可以從9位到12位選擇。可用數(shù)據(jù)線供電,供電范圍+3.0-5.5V電壓。
3.4.1 DS18B20引腳功能 DS18B20器件的封裝引腳排列及引腳功能的描述如圖3.10和表3.10。 
圖3.10(底視圖)
表3.10 DS18B20引腳功能 | | | | | | | | 數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用在寄生電源下,也可以向器件提供電源。 | | | 可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。 |
3.4.2 DS18B20的應(yīng)用及原理圖 DS18B20采用的是one-Wire總線協(xié)議方式連接,實(shí)際就是在一根數(shù)據(jù)線進(jìn)行數(shù)據(jù)的雙向傳輸,,然而對(duì)于51單片機(jī)在硬件上并不支持單總線協(xié)議方式的連接,因此我們采用軟件的方法來模擬單總線的協(xié)議方式來完成對(duì)DS18B20溫度芯片的訪問。 DS18B20的讀寫是在一根I/O線上進(jìn)行,因此,對(duì)數(shù)據(jù)的讀寫有著嚴(yán)格的要求。DS18B20的通信協(xié)議也有著嚴(yán)格的要求來確保數(shù)據(jù)傳輸?shù)恼_性和完整性。 DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該通信協(xié)議又細(xì)分了幾種信號(hào)的時(shí)序,即:初始化時(shí)序、讀時(shí)序、寫時(shí)序。然而在這幾種時(shí)序的工作下都是以主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。數(shù)據(jù)的傳輸是在主機(jī)先啟動(dòng)讀入時(shí)序,讀出數(shù)據(jù)后進(jìn)入寫時(shí)序命令,從而啟動(dòng)讀寫時(shí)序功能,完成數(shù)據(jù)的傳輸。數(shù)據(jù)和命令的傳輸都是低位在先。下面為DS18B20在本次設(shè)計(jì)的溫度采集模塊原理圖3.11所示。  圖3.11 DS18B20溫度采集原理圖
溫度采集模塊圖主要是由DS18B20芯片進(jìn)行,通過AT89C51單片機(jī)進(jìn)行數(shù)據(jù)的傳輸和接受,從而再送到LCD1602,從LCD1602顯示出來。DS18B20只有三個(gè)引腳,分別是VCC為正電源接5V電壓,GND地信號(hào)接大地,最后是DQ數(shù)據(jù)輸入/輸出引腳連接AT89C51單片機(jī)的P1.0引腳。
4 程序的設(shè)計(jì)流程4.1 交通燈程序設(shè)計(jì)的流程 4.1.1倒計(jì)時(shí)顯示的理論分析 利用定時(shí)器中斷,設(shè)置 TH0= (65536-50000)/256,TH1=(65536-50000)%256,即每0.05秒中斷一次。每到第20次中斷即過了20*0.05秒=1秒時(shí),使時(shí)間的計(jì)數(shù)值減1,便實(shí)現(xiàn)了倒計(jì)時(shí)的功能。
4.1.2狀態(tài)燈顯示的理論分析 黃燈閃爍同樣可以利用定時(shí)器中斷。每到第10次中斷即過了10*0.05秒=0.5秒時(shí),使黃燈標(biāo)志位反置,即可讓黃燈1秒閃爍一次。
4.1.3 交通燈主程序設(shè)計(jì)流程 交通燈系統(tǒng)在正常模式下工作的 - 首先,正常進(jìn)入系統(tǒng)開始運(yùn)行,交通燈在默認(rèn)正常模式下工作,數(shù)碼管顯示時(shí)間為60。
- 交通信號(hào)燈開始正常工作,右轉(zhuǎn)彎為常亮燈(綠色)。南北直行方向綠燈亮,其它方向亮紅燈,數(shù)碼管開始倒計(jì)時(shí),南北方向從40倒計(jì),東西方向從60倒計(jì)。
- 35S后,南北直行方向滅綠燈,閃爍黃燈,閃爍時(shí)間為5S。
- 40S后,南北直行方向亮紅燈,左轉(zhuǎn)方向亮綠燈,亮?xí)r15S,同時(shí)數(shù)碼管從20倒計(jì),其它不變。
- 55S后,南北左轉(zhuǎn)方向滅綠燈,閃爍黃燈,閃爍時(shí)間為5S。
- 60S后,南北左轉(zhuǎn)方向黃燈滅,亮紅燈,數(shù)碼管從60倒計(jì),東西直行方向亮綠燈,數(shù)碼管從40倒計(jì),其它不變。
- 95S后,東西直行方向滅綠燈,閃爍黃燈,閃爍時(shí)間為5S。
- 100S后,東西直行方向滅黃燈,亮紅燈,左轉(zhuǎn)方向亮綠燈,亮?xí)r為15S,同時(shí)數(shù)碼管從20倒計(jì),其它不變。
- 115S后,東西左轉(zhuǎn)方向滅綠燈,閃爍黃燈,閃爍時(shí)間為5S。
- 120S后,東西左轉(zhuǎn)方向滅黃燈,亮紅燈,數(shù)碼管從60倒計(jì)。南北直行亮綠燈,數(shù)碼管從40倒計(jì)。

圖4.1 程序設(shè)計(jì)流程圖
4.2萬(wàn)年歷的設(shè)計(jì)流程 萬(wàn)年歷的設(shè)置一方面可以更好的顯示時(shí)間和溫度,其次可以對(duì)交通信號(hào)燈系統(tǒng)的控制,定時(shí)向交通信號(hào)燈控制系統(tǒng)發(fā)出外部中斷,從而該變當(dāng)前工作模式,以致在實(shí)際中更具有實(shí)用性。

圖4.2 萬(wàn)年歷主程序流程圖
此次萬(wàn)年歷的設(shè)計(jì)功能主要是兩個(gè),一個(gè)是通過LCD1602顯示時(shí)間和溫度,另一個(gè)則是為交通信號(hào)燈提供外部定時(shí)中斷,從而改變當(dāng)前的工作模式。而萬(wàn)年歷的設(shè)計(jì)流程和普通設(shè)計(jì)的一樣,開始先是對(duì)各種芯片的初始化,接著是從DS1302、DS18B20讀取時(shí)間和溫度信息,從而傳送到AT89C51單片機(jī)進(jìn)行時(shí)間、溫度的分離轉(zhuǎn)化,再傳送到LCD1602顯示出來,其次是時(shí)間的調(diào)整和校正,通過調(diào)整按鍵可以對(duì)秒、分、時(shí)、星期、日、月和年進(jìn)行加減1的修改。最近是定時(shí)發(fā)出外部中斷,利用IF語(yǔ)句進(jìn)行判斷,適合條件則輸出低電平到交通信號(hào)燈,否則為高電平。從而達(dá)到了實(shí)驗(yàn)的目的。
4.3萬(wàn)年歷時(shí)間的調(diào)整流程 本次萬(wàn)年歷系統(tǒng)的設(shè)計(jì)只是采用DS1302進(jìn)行時(shí)間的掃描和讀取,而沒用進(jìn)行掉電保存電路的設(shè)計(jì),因此在每次硬件的開啟,系統(tǒng)都是進(jìn)入初始化設(shè)置,以致要進(jìn)行時(shí)間的調(diào)整和校正。 
圖4.3 時(shí)間調(diào)整控制圖 時(shí)間的調(diào)整程序設(shè)計(jì)。首先,系統(tǒng)在正常工作下,由DS1302時(shí)鐘芯片進(jìn)行時(shí)間的讀取,傳遞到AT89C51單片機(jī)進(jìn)行對(duì)時(shí)間進(jìn)行分離和轉(zhuǎn)化,最后由LCD1602顯示出來。在進(jìn)行時(shí)間的調(diào)整和校正時(shí),先進(jìn)入調(diào)整模式,即按下第一個(gè)按鍵,執(zhí)行調(diào)整程序,先是進(jìn)入秒程序調(diào)整,按加減按鍵相應(yīng)的進(jìn)行加1或減1,再按調(diào)整切換鍵進(jìn)入分程序調(diào)整,按加減減進(jìn)行相應(yīng)的加1減1,再接著是時(shí)、星期、日、月、年的調(diào)整。按加減鍵進(jìn)行相應(yīng)的加減1,在進(jìn)行調(diào)整途中,如果按退出時(shí)間調(diào)整按鍵都將會(huì)退出時(shí)間調(diào)整程序。如圖4.3時(shí)間調(diào)整控制圖所示。 4.4交通信號(hào)系統(tǒng)工作模式的工作流程

圖4.4 工作模式切換圖 開始進(jìn)入系統(tǒng)時(shí),默認(rèn)模式為正常模式60S,到了早上7:00時(shí)上班高峰期,萬(wàn)年歷發(fā)出中斷,從而使系統(tǒng)進(jìn)入繁忙模式45S,從而可以減少路口上交通的擁堵。時(shí)間到了早上9:00,車輛逐漸減少,萬(wàn)年歷又發(fā)出定時(shí)中斷使系統(tǒng)進(jìn)入正常模式,到了11:00,萬(wàn)年歷再次發(fā)出定時(shí)中斷,重新使系統(tǒng)進(jìn)入繁忙模式,減少車輛的擁堵。到了下午14:00,萬(wàn)年歷發(fā)出定時(shí)中斷,使系統(tǒng)進(jìn)入正常模式,在正常模式下運(yùn)行到下午17:00下班時(shí)間,為了減少交通的擁堵,萬(wàn)年歷發(fā)出定時(shí)中斷,使系統(tǒng)進(jìn)入繁忙模式,到了晚上19:00,道口上車輛減少,萬(wàn)年歷最后發(fā)出定時(shí)中斷,使系統(tǒng)在正常模式下正常運(yùn)行。系統(tǒng)在正常模式、繁忙模式和特殊模式下運(yùn)行時(shí),還可以進(jìn)行外部手動(dòng)進(jìn)行中斷來進(jìn)行通行時(shí)間的調(diào)整。如:在正常模式下按下繁忙模式,系統(tǒng)將會(huì)進(jìn)入繁忙模式,當(dāng)下次中斷再次到來時(shí),系統(tǒng)會(huì)根據(jù)中斷的要求而進(jìn)入相應(yīng)的模式,不會(huì)受上次中斷或下次中斷的影響。
5 軟硬件的仿真調(diào)試5.1 PROTEUS仿真圖 整個(gè)交通燈控制系統(tǒng)在PROTEUS仿真圖中的仿真如下所示,雙向通行,倒計(jì)時(shí)是2位時(shí)間提醒。每個(gè)路口分別有左轉(zhuǎn)、直行和右轉(zhuǎn),分別有紅燈、綠燈和黃燈提示。每個(gè)路口還相應(yīng)配有行人的紅綠燈指示 。圖右上角數(shù)碼管顯示的工作模式,60代表是在正常模式下工作,45和75分別代表是在繁忙模式和特殊模式,右下角是開關(guān)調(diào)節(jié)按鍵,左邊三個(gè)開關(guān)從上到下是交通燈各種模式轉(zhuǎn)換開關(guān),右邊四個(gè)是時(shí)間調(diào)節(jié)開關(guān),從而更具有實(shí)用性。 圖5.1 PROTEUS仿真圖
5.2 硬件實(shí)物圖 此次硬件實(shí)物的設(shè)計(jì)分為兩部分,一部分是電子器件的設(shè)計(jì),另一部分是顯示界面的設(shè)計(jì)。電子器件的設(shè)計(jì)主要是單片機(jī)的最小系統(tǒng)設(shè)置、DS1302時(shí)鐘模塊的設(shè)置、DS18B20溫度模塊的設(shè)置以及非門74HC04的設(shè)置等;顯示界面的設(shè)置主要是LCD1602液晶顯示模塊、各個(gè)方向數(shù)碼管倒計(jì)時(shí)、數(shù)碼管顯示系統(tǒng)工作模式、各個(gè)道口的交通燈、人行道的交通燈以及控制開關(guān)調(diào)節(jié)按鍵的設(shè)置。兩部分的分開設(shè)計(jì)可以使實(shí)物顯得更美觀,同時(shí)對(duì)于實(shí)物的器件的修改和調(diào)整也提供了更好的條件。也更聯(lián)系了實(shí)際生活,顯得簡(jiǎn)單、整潔和美觀。 顯示界面如圖5.2所示。 圖5.2 硬件實(shí)物圖
結(jié) 論本次基于單片機(jī)的交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)是在一般交通燈的基礎(chǔ)上加上時(shí)間的智能控制,從而改變各方向通行的時(shí)間。因此本次智能交通燈的設(shè)計(jì)可以更好的解決了車流量較大的十字路口車輛的通行,與一般交通燈相比,它更具有實(shí)用性、簡(jiǎn)單化和智能化。從而也更好的應(yīng)用到實(shí)際生活中,因此具有一定的實(shí)用價(jià)值。 此次基于單片機(jī)的交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)可以說得到了成功,但是還是存在很多的不足和缺陷。如:工作模式的時(shí)間只有三種選擇,而不能通過按鍵進(jìn)行隨意更改,工作模式時(shí)間的智能切換也不能進(jìn)行手動(dòng)調(diào)節(jié),以及對(duì)通過道口車流量的統(tǒng)計(jì)、車輛速度的檢測(cè)和拍攝功能等都還沒實(shí)現(xiàn),而且此次設(shè)計(jì)需要用到的電子元器件較多,從經(jīng)濟(jì)上不劃算,因此本次基于單片機(jī)的交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)也還存在著很大的不足,還有待改善。
致 謝
歷時(shí)三個(gè)月的畢業(yè)設(shè)計(jì)已經(jīng)告一段落。經(jīng)過自己不斷的搜索努力以及張玉薇老師的耐心指導(dǎo)和熱情幫助,本設(shè)計(jì)已經(jīng)基本完成。同時(shí)系里興趣小組實(shí)驗(yàn)室的開放和大部分興趣小組同學(xué)也為我的設(shè)計(jì)提供指導(dǎo),在他們的幫助和指導(dǎo)下得到了完成。在此對(duì)于他們的幫助給與深刻的致謝。
在本次基于單片機(jī)的交通信號(hào)燈的控制系統(tǒng)設(shè)計(jì)中一路遇到了很多的困難,首先從開始電路原理圖的設(shè)計(jì)、畫PCB圖和制板都遇到了困難。先是對(duì)芯片的不理解,專業(yè)知識(shí)的不夠從而導(dǎo)致在程序的編寫中經(jīng)常出錯(cuò)。接著是在最后的調(diào)試中,由于本次設(shè)計(jì)分為兩塊電路板,線路繁多因此也很容易混亂等問題。但是在老師和同學(xué)的幫助和鼓勵(lì)下一一得到了解決。
通過這次畢業(yè)設(shè)計(jì),使我對(duì)自己有了一個(gè)深刻的認(rèn)識(shí)。認(rèn)識(shí)到了自己專業(yè)知識(shí)的不足和專業(yè)知識(shí)的重要性,同時(shí)也理解了理論要聯(lián)系實(shí)際含義。通過這次的畢業(yè)設(shè)計(jì)也檢驗(yàn)了自己大學(xué)四年的學(xué)習(xí)成果,認(rèn)識(shí)到了自己的不足和缺陷,在今后的工作和學(xué)習(xí)中將會(huì)繼續(xù)努力,不斷完善,從而為今后的發(fā)展打下良好的基礎(chǔ)。
由于自身水平有限,設(shè)計(jì)中一定還存在很多不足之處,敬請(qǐng)各位老師批評(píng)指正。
附錄程序:(見附件)

完整的Word格式文檔51黑下載地址:
交通燈設(shè)計(jì)-畢業(yè)論文.doc
(1.18 MB, 下載次數(shù): 22)
2018-11-23 17:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|