2.1 設計要求
2.1.1題目概述
道路交通信號燈是道路交通安全的產品,它可以加強道路交通管理,減少交通事故的發生,提高道路使用效率,改善交通狀況的一種重要工具。它適用于各種十字、丁字等交叉路口,由道路交通信號燈控制,指導車輛和行人安全而有序地通行。
2.1.2 設計任務
設計一種交通信號燈的控制系統。要求直觀,簡單。能夠滿足十字路口交通等的使用需求。
2.1.3 設計要求
1. 交通路口為十字路口。
2.馬路為雙向六車道,即要有左轉燈,直行燈,右轉燈。
3.要考慮人行橫道的信號燈。
4.有顯示設備可以顯示通信時間。
5.要求通行時間可調。
2.2 設計方案
2.2.1 供電方案
系統要在正常而穩定的狀態下工作,必須要有可靠的電源。而本次基于單片機的設計需要顯示的芯片較多,電源供應量大,因此本次設計了如下三種方案。
方案一:利用獨立的穩壓電源供電。優點是可提供穩定而可靠電源,而且可以利用220V電壓轉化,不受各種因素的限制;缺點是各模塊都采用獨立電源,會增加本次設計的難度,而且對其他電路還會造成一定的干擾。
方案二:采用USB轉接口5V電壓供電,這樣簡單明了,但是單單一個5V電源供電可能會顯得電源不足,而無法滿足實際的需要。
方案三:采用USB轉接口5V雙電源電壓供電,這樣把本次設計分為兩大模塊,一是交通信號燈控制系統,二是萬年歷系統,采用雙電源供電,一個為交通信號燈控制系統提供電源,另一個為萬年歷系統提供電源。這樣即簡單而又可提供穩定的電源。
考慮到實際情況和電路的簡潔,本設計采用了第三套方案,此方案在電路的設計上可以把系統分為兩大模塊,使系統設計簡單化,從而又可以提供穩定而可靠電源。而且在單電源斷電的情況下不影響另一模塊的工作。
2.2.2 輸入方案
該系統要求能手動及智能控制改變交通信號燈的通行時間和萬年歷時間的調整。
方案一:采用8155擴展I/O 口及鍵盤、顯示等。該方案的優點是:使用靈活可編程,并且有RAM,及計數器。若用該方案,可提供較多I/O 口,但操作起來稍顯復雜。
方案二: 直接在I/O口線上接上按鍵開關。該方案優點是:編程更加簡潔,使用更加簡單,且成本更低。缺點就是功能有限。
綜合考慮本設計的實際需要,在使用輸入的時候不需要過于復雜的功能,因此直接在I/O口線上接上按鍵開關足以滿足本次系統設計的需要,故采用方案二。
2.2.3 顯示界面方案
本設計涉及到倒計時、狀態燈、時間、溫度等顯示功能。基于功能需求,本設計考慮如下四種方案:
方案一:完全采用數碼管顯示。這種方案只顯示有限的符號和數碼字符,無法勝任功能需求。
方案二:完全采用點陣式LED 顯示。這種方案實現復雜,且須完成大量的軟件工作;但功能強大,可方便的顯示各種英文字符,漢字,圖形等。
方案三:采用LCD1602液晶顯示,這種顯示比較樂觀,但是工作量大,而且設計復雜,再加上需要到的LCD1602較多,從經濟上也不劃算。
方案四:采用數碼管、LED與LCD1602相結合的方法因為設計既要求倒計時數字輸出,又要求有狀態燈輸出,同時還要顯示出年、月、日、時、分、秒、星期和溫度。為了方便觀看并考慮到實際情況,用數碼管顯示交通信號燈的倒計時,用LED顯示交通燈的狀態燈、用LCD1602顯示年、月、日、時、分、秒、星期和溫度。這種設計方案既滿足系統功能要求,又減少了系統實現的復雜度。
2.2.4交通燈方案
2.2.4.1交通燈規則方案
本設計的交通燈以十字路口為模型,在實現基本的功能前提下增加了時間及溫度的液晶顯示。從而還增加了路口高峰期的智能化人工管理機制。
實際生活中交通信號燈的規則千變萬化,在不同的路口上看到的交通信號燈的規則不一樣,但是總體還是相差不大,也有一些根據實際的需要而設置不同的交通規則,本次系統交通規則的設置是根據現實生活中的交通規則和多加考慮各種現實因素結合起來而制定了以下交通規則。
下圖所示為一種紅綠燈規則的狀態圖:
共四種狀態,分別設定為S1、S2、S3、S4,交通燈以這四種狀態為一個周期,循環執行如下圖所示:
依據上述車輛行駛的狀態圖,可以列出正常模式下各個路口交通信號燈的邏輯表如下表所示(其中邏輯值“1”表示直行通行,邏輯值“0”表示禁止通行,邏輯值“L”表示左轉通行):
表2.1 正常模式下工作表
S1的狀態 | E | S | W | N |
邏輯值 | 0 | 1 | 0 | 1 |
顯示時間 | 正常模式下為40S |
S2的狀態 | E | S | W | N |
邏輯值 | 0 | L | 0 | L |
顯示時間 | 正常模式下為20S |
S3的狀態 | E | S | W | N |
邏輯值 | 1 | 0 | 1 | 0 |
顯示時間 | 正常模式下為40S |
S4的狀態 | E | S | W | N |
邏輯值 | L | 0 | L | 0 |
顯示時間 | 正常模式下為20S |
程序就是在上述四種狀態下循環轉化的,而每種狀態下又包括綠燈通行和黃燈閃爍警告狀態。系統在正常模式下循環一個周期所需要的時間為120S,數碼管顯示的工作模式為半周期60.
2.2.4.2各種模式下通行時間
本系統結合實際的需要,而在上述四種狀態的每種狀態下再細分為綠燈通行、黃燈閃爍兩種狀態,總共八種工作狀態。系統在正常工作模式下又可分為三種工作模式,分別為:正常模式、繁忙模式和特殊模式。各種模式下的時間分配如下表2.2:
表2.2 各模式下時間分配表
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | 周期 |
正常模式 | 35S | 5S | 15S | 5S | 35S | 5S | 15S | 5S | 120S |
繁忙模式 | 25S | 5S | 10S | 5S | 25S | 5S | 10S | 5S | 90S |
特殊模式 | 50S | 5S | 15S | 5S | 50S | 5S | 15S | 5S | 150S |
2.2.5 萬年歷設計方案
電路設計框圖
本系統的電路系統框圖如圖2.6所示。AT89C51單片機對DS1302和DS18B20寫入控制字并讀取相應的數據,繼而控制LCD1602作出對應的顯示,同時也向交通信號燈外部發出定時中斷,從而改變交通信號燈的工作模式。
圖2.6統硬件框圖
3.1 AT89C51單片機介紹及應用
單片微型計算機簡稱單片機,同時又稱為微控制器、嵌入式微控制器等,它屬于第四代電子計算機。它把各種芯片電路集成在一塊芯片上,因此它具有體積小、抗干擾能力強、功耗低、可靠性高以及低廉的價格。它廣泛應用于工業過程控制、測控系統及各種智能儀器儀表等。因此國際上逐漸采用微控制器(MCU)代替單片微型計算機(SCM)這一名稱。微控制器可以更準確的反應出單片機的本質,但單片機這一名稱以為大多數人所接受,所以單片微型計算機即是單片機,同時又稱為微控制器。
3.1.1單片機的引腳及功能
AT89C51單片機的 引腳圖如圖3.1 所示
圖3.1 AT89C51單片機引腳圖
VCC:電源電壓
GND:地
P0口:P0口是一個漏極開路型8位雙向I/0口,即數據/地址總線的復用口。當它作為輸出端口使用時,每位能驅動8個TTL邏輯門電路。
P1口:Pl 口是一個帶內部上拉電阻的8位雙向I/O口,Pl口的輸出緩沖級能驅動4個TTL邏輯門電路。當我們對端口寫入“1”時,通過內部上拉電阻來把端口拉到高電平,此時P1口可做為輸入端口。當P1口做為輸入口時,由于內部存在上拉電阻,當被外部引腳拉低時會輸出數據。P1口除了以上功能外,最重要的是它的第二功能如表3.1所示。
表3.1 P1口引腳的第二功能
端口引腳 | 第二功能: |
P1.5 | MOSI(用于ISP編程) |
P1.6 | MOSI(用于ISP編程) |
P1.7 | MOSI(用于ISP編程) |
P2口:P2口也是一個帶有內部上拉電阻的8 位雙向I/O 口。P2 的輸出緩沖級也能驅動4 個TTL邏輯門電路。當我們對端口寫入“1”時,通過內部上拉電阻來把端口拉到高電平,此時P2口可做為輸入端口。當P2口做為輸入口時,由于內部存在上拉電阻,當被外部引腳拉低時會輸出數據。當訪問外部程序存儲器或16位地址外部數據的存儲器時,P2口輸出高8位數據地址。當訪問8 位外部數據存儲器地址時,P2口的內容在整個訪問過程將不會改變。
P3 口:P3 口也是一個帶有內部上拉電阻的8 位雙向I/0 口。P3 口輸出緩沖級也能驅動4 個TTL邏輯門電路。當我們對端口寫入“1”時,通過內部上拉電阻來把端口拉到高電平,此時P3口可做為輸入端口。當P3口做為輸入口時,由于內部存在上拉電阻,當被外部引腳拉低時會輸出數據。P3口除了以上用途外,最重要的是它的第二功能如表3.2所示。
表3.2 P3口引腳的第二功能
端口引腳 | 第二功能: |
P3.0 | RXD(串行輸入) |
P3.1 | TXD(串行輸出) |
P3.2 | /INT0(外中斷0) |
P3.3 | / INT1(外中斷1) |
P3.4 | T0(定時/計數器0外部輸入) |
P3.5 | T1(定時/計數器1外部輸入) |
P3.6 | / WR(外部數據存儲器寫選通) |
P3.7 | / RD(外部數據存儲器讀選通) |
P3口還可用于接收一些Flash閃速存儲器的編程及程序的校驗控制等。
RST:復位輸入引腳。振蕩器在工作時,RST引腳將會出現兩個或兩個以上的機器周期高電平來使單片機進行復位。WDT 溢出將使該引腳輸出高電平,設置SFR AUXR的DISRT0 位(地址8EH)可打開或關閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態。
ALE/:在訪問外部數據存儲器或程序存儲器時,ALE(地址鎖存)主要是利用輸出脈沖來鎖存地址低8位字節。ALE還可以用于對外輸出時鐘信號或定時功能,因為ALE時刻以時鐘振蕩器的1/6頻率輸出固定的脈沖信號。
值得注意的是:當我們在訪問外部數據存儲器時將會跳過一個ALE脈沖。在F1ash存儲器編程期間,該引腳還可用于輸入編程脈沖。還可以通過特殊的功能寄存器中的8EH單元的D0位置來禁止ALE工作。執行該操作后,需要通過MOVX和MOVC指令ALE才能被激活,從而恢復工作狀態。在執行單片機外部程序時,ALE應設置為無效。
程序的儲存是在()允許輸出外部程序存儲器時進行,當單片機需要進行讀寫數據時,此時該引腳在每個周期下就會兩次有效,從而發出兩次脈沖,當訪問外部的數據存儲器時,則是發出一次脈沖信號。
/VPP:外部訪問允許。當EA端設置為低電平時,CPU可單獨訪問外部程序存儲器(即:0000H-FFFFH地址)。
XTAL1:振蕩器的反相放大器和內部時鐘發生器的輸入端。
3.1.2單片機最小系統的設置
本次基于單片機交通信號燈控制系統的設計的單片機最小系統設置的如下圖所示:
圖3.2 AT89C51單片機最小系統圖
3.2 LCD1602芯片介紹及應用
3.2.1 液晶顯示器的介紹
液晶顯示器有多種分類方法,通常按顯示的方式分可分為字符式、段式、點陣式等。液晶顯示器即可顯示黑白又可顯示多彩色灰度,因此可分為黑白顯示器和彩色顯示器。如果按驅動方式分,它又可以分為單純矩陣驅動(Simple Matrix)、靜態驅動(Static)和主動矩陣驅動(Active Matrix)三種。液晶顯示器它具有厚度薄、體積小,適用于大規模集成電路的驅動等特點,目前已廣泛應用在數字攝像機、便攜式電腦、MP3、MP4、PDA移動通信工具等領域。
3.2.2 液晶顯示器各種圖形的顯示原理
液晶顯示器是利用液晶的物理特性,通過高低電壓來控制顯示的區域,高電平則亮,低電平則滅,這樣就可以顯示出圖形。液晶顯示器圖形的顯示是通過N*M個液晶顯示單元構成,通過控制各個顯示單元的亮暗而達到顯示圖形的目的。例如一個液晶顯示器有64行顯示屏,而每行有128列,每字節又由8列組成,因此每行可顯示16個字節,即整個顯示器可顯示1024個字節。最后通過控制液晶顯示相應位置的亮暗從而顯示出每字節上的內容。
3.2.3 LCD1602的基本參數及引腳功能
LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,本次設計采用16腳(帶背光)來顯示年、月、日、時、分、秒、星期和溫度。各引腳接口說明如表3.3所示:
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL是顯示器對比度調整端,當接地信號時液晶對比度最高,當接正電源時對比度最弱,對比度的高低將會影響液晶顯示器的顯示,對比度過高時會產生“鬼影”。因此我們通常接一個10K的電位器來調節。
第4腳:RS是寄存器的選擇,高電平表示數據寄存器、低電平表示指令寄存器。
第5腳:R/W是信號線的讀寫,當高電平時表示正在進行讀操作,當低電平時表示正在進行寫操作,如果RS和R/W同時為低電平時可進行顯示地址或寫入指令,如果RS為低電平且R/W為高電平時可進行讀取信號,如果RS為高電平R/W為低電平時可進行寫入數據。
第6腳:E端是使能信號端,當E端由高電平變化為低電平時,液晶模塊命令開始執行。
第7~14腳:D0~D7是8位雙向數據線。
第15腳:背光源正極。
第16腳:背光源負極。
表3.3引腳接口說明表
編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 |
1 | VSS | 電源地 | 9 | D2 | 數據 |
2 | VDD | 電源正極 | 10 | D3 | 數據 |
3 | VL | 液晶顯示偏壓 | 11 | D4 | 數據 |
4 | RS | 數據/命令選擇 | 12 | D5 | 數據 |
5 | R/W | 讀/寫選擇 | 13 | D6 | 數據 |
6 | E | 使能信號 | 14 | D7 | 數據 |
7 | D0 | 數據 | 15 | BLA | 背光源正極 |
8 | D1 | 數據 | 16 | BLK | 背光源負極 |
3.2.4 LCD1602的指令說明及時序
LCD1602內部液晶顯示模塊控制器指令共11條,如表3.4所示:
LCD1602的讀寫操作、光標操作以及屏幕顯示等都是通過各種指令程序而實現的,具體說明如下:(注:1為高電平,0為低電平)
指令1:清顯示,指令碼由01H復位到00H位置。
指令2:光標復位,執行時光標將返回到00H位置。
指令3:光標以及顯示模式的設置。光標的移動方向為:高電平表示右移,低電平則表示左移。S:屏幕文字是否進行右移或者進行左移。高電平表示有效,低電平表示無效。
指令4:顯示控制開關。B:光標閃爍的控制,高電平表示閃爍,低電平則表示不閃爍。
C:光標開關的控制,高電平表示有光標,低電平則表示無光標 。D:整體顯示的開關控制,高電平表示打開顯示,低電平則表示關閉顯示。
指令5:光標或者顯示移位 S/C的控制。高電平表示文字移動的顯示,低電平表示光標的移動。
指令6:功能命令的設置。DL為高電平表示4位總線,低電平則表示8位總線。F: 低電平表示顯示5x7的點陣字符,高電平表示顯示5x10的點陣字符。 N:低電平表示單行顯示,高電平表示雙行顯示
指令7:字符發生器RAM地址設置。
指令8:DDRAM地址的設置。
指令9:光標地址和讀忙信號。 BF:表示忙標志位,高電平時表示忙,此時模塊不能進行命令或者數據的接受,低電平則表示不忙。
指令10:寫數據。
指令11:讀數據
表3.4 控制命令表
序號 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 光標返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
4 | 顯示開/關控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
5 | 光標或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * |
6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
7 | 置字符發生存貯器地址 | 0 | 0 | 0 | 1 | 字符發生存貯器地址 | |||||
8 | 置數據存貯器地址 | 0 | 0 | 1 | 顯示數據存貯器地址 | ||||||
9 | 讀忙標志或地址 | 0 | 1 | BF | 計數器地址 | ||||||
10 | 寫數據到CGRAM或DDRAM) | 1 | 0 | 寫入的數據內容 | |||||||
11 | 從CGRAM或DDRAM讀數 | 1 | 1 | 讀出的數據內容 |
LCD1602液晶顯示器有多種,其中市場上最常見的是HD44780。HD44780內置了DDRA(80字節),CGRAM(64字節,用來存放用戶自定義字符,每個字符需要用到8個字節,所以以一共可以存放8個用戶自定義字符),CGROM(內存了160個字符,包括了標準的ASCII碼表上的字符等)。與HD44780相兼容的芯片時序表如表3.5所示:
表3.5 基本操作時序表
讀狀態 | 輸入 | RS=L,R/W=H,E=H | 輸出 | D0—D7=狀態字 |
寫指令 | 輸入 | RS=L,R/W=L,D0—D7=指令碼,E=高脈沖 | 輸出 | 無 |
讀數據 | 輸入 | RS=H,R/W=H,E=H | 輸出 | D0—D7=數據 |
寫數據 | 輸入 | RS=H,R/W=L,D0—D7=數據,E=高脈沖 | 輸出 | 無 |
讀寫操作時序如圖3.3和3.4所示。
圖3.3 讀操作時序
圖3.4寫操作時序
LCD1602液晶顯示是一個慢顯示器件,所以每次在執行指令時一定要先進行確認模塊的忙標志位是否為低電平,否而指令將會失效。要進行字符的顯示,首先要進行輸入顯示字符的地址,實際就是輸入顯示的內容。LCD1602內部顯示地址如圖3.5所示。
對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標將會自動右移。液晶模塊在繁忙狀態下將不能輸入指令。
3.2.5 LCD1602液晶顯示模塊原理圖
LCD1602顯示模塊電路,首先VSS接地信號,VDD接5V高電平,VEE接10K的變阻器,變阻器兩端分別接5V電壓和大地。接著RS、RW和E是數據信號線分別接單片機的P2.5、P2.6和P2.7引腳。最后D0到D7接單片機的P0.0到P0.7引腳,要接排阻。而實際的LCD1602還有兩個背光調節引腳,分別是BLA和BLK接5V電壓和大地。
圖3.6 LCD1602顯示電路
3.3 DS1302芯片介紹及應用
DS1302是美國 DALLAS 公司推出的一種高性能、低功耗的時鐘芯片,它采用 SPI 三線接口與 CPU 進行同步通信,并可采用突發方式一次傳送一個或多個字節的時鐘信號和 RAM數據。它可提供年、月、日、星期、時、分、秒的計時顯示,各月天數它可進行自動的調整,同時還具有閏年的補償功能。工作電壓范圍為2.5~5.5V。DS1302芯片采用雙電源供電,即有主電源和備用電源。同時還可設置備用電源的充電方式,提供了對備用電源進行電流充電的能力。DS1302也可用于數據的記錄, 特別是對于某些特殊意義的數據點的記錄上,它能實現數據和數據出現的時間同時記錄,因此在各種測量系統中得到廣泛的應用。
3.3.1 DS1302引腳功能
DS1302芯片的外部引腳分配如圖3.7所示。
圖3.7 DS1302的外部引腳分配
Vcc1:表示主電源;Vcc2:表示備份電源。如果 Vcc2>Vcc1+0.2V, 則 Vcc2向 DS1302供電,如果 Vcc2< Vcc1,由則Vcc1向 DS1302供電。
SCLK:串行時鐘,輸入,控制數據的輸入與輸出。
I/O:三線接口時的雙向數據線。
CE:輸入信號。DS1302在進行讀寫數據時,此位必須為高。該引腳有兩個功能:首先是CE 開始控制字進行訪問移位寄存器的邏輯控制;其次是CE 提供結束單字節或者多字節數據的傳輸方法。
3.3.2 DS1302讀寫說明
DS1302是 SPI 總線方式來驅動。它不僅需要向寄存器寫入控制字, 同時還需要讀取相應寄存器的數據。
1:DS1302的讀寫寄存器
DS1302的時間寄存器總共有12個,其中讀寄存器(81H-8DH)和寫寄存器(81H-8DH)是以BCD碼格式進行數據的存取。
表3.6 DS1302的讀寫寄存器
寫寄存器 | 讀寄存器 | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
80H | 81H | CH | 10秒 | 秒 | |||||
82H | 83H |
| 10分 | 分 | |||||
84H | 85H | 12/24 | 0 | 10 | 時 | 時 | |||
AM/PM | |||||||||
86H | 87H | 0 | 0 | 10日 | 日 | ||||
88H | 89H | 0 | 0 | 0 | 10月 | 月 | |||
8A | 8BH | 0 | 0 | 0 | 0 | 0 | 星期 | ||
8C | 8DH | 10年 | 年 | ||||||
8E | 8FH | WP | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DS1302小時寄存器(84H、85H)的位7應用于DS1302是運行的模式。即12小時制還是24小時制。當位7為1時,表示12小時模式,此時相應的寄存器位5為高時表示AM,為低時表示PM。當位7為0時, 表示24小時模式。
DS1302秒寄存器(80H、81H)的位7應用于時鐘暫停標志(CH)位。當該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態;當該位為0時,時鐘開始運行。
DS1302 控制寄存器(8EH、8FH)的位7是寫入保護位,其它7位均為0。當WP位為0時可以開始進行對時鐘和RAW進行寫入,當WP位為1時,禁止對寄存器的寫入操作。
2:DS1302中靜態RAM地址
DS1302在靜態工作模式下的RAW地址如表3.7所示。
表3.7 靜態 RAM 的地址表
讀地址 | 寫地址 |
| 數據范圍 |
C1H | C0H |
| 00-FFH |
C3H | C2H |
| 00-FFH |
C5H | C4H |
| 00-FFH |
. . . | . . . |
| . . . |
FDH | FCH |
| 00-FFH |
3:DS1302的工作模式寄存器
DS1302的工作模式寄存器又分為時鐘突發模式寄存器、RAW突發模式寄存器等。突發模式是指一次傳送多個字節的時鐘信號和 RAM 數據。 突發模式寄存器如表3.8所示。
表3.8突發模式寄存器
工作模式寄存器 | 讀寄存器 | 寫寄存器 | |
時鐘突發模式寄器 | CLOCK BURST | BFH | BEH |
RAW突發模式寄存器 | RAW BURST | FFH | FEH |
4:DS1302控制字符表
DS1302的控制字最高位(位7)必須是1,才能進行數據的寫入,否則不能寫入數據;次高位(位6)表示RAW數據或者時鐘日歷的存取,當為1時表示RAW數據存取,為0則表示時鐘日歷的存取;接著是數據操作地址(位5-位1);最后是位0表示數據的讀寫操作,當為1時表示讀操作,為0表示寫操作。如表3.9所示。
表3.9 控制字(即地址及命令字節)
5:DS1302的讀寫時序
DS1302數據的讀寫規則是在控制字的基礎上從低位到高位的輸出,每當控制字指令輸入后下一個SCLK脈沖上升沿到來時,數據就會被寫入到DS1302中,數據從最低位開始寫入,下一個SCLK脈沖的下降沿到來時,就會讀出DS1302里面的數據,讀出的規則也是從低位到高位。
圖3.8 數據讀寫時序
3.3.3 DS1302時鐘采集模塊原理圖
圖3.9 DS1302原理圖
此圖為DS1302時鐘芯片模塊采集原理圖,X1和X2接的是時鐘晶振,,大小為32.768MHz,VCC1和VCC2分別接3V和5V電壓,I/O、SCLK和ST分別接單片機的P1.6、P1.7和P1.5引腳。
3.4 DS18B20芯片介紹及應用
DS18B20數字溫度計是DALLAS公司生產的One-Wire,即單總線器件,它具有體積小而且線路簡單的優點。它只有三個引腳,分別是接高電源、地信號和一條數據信號線,設計簡單而又方便。因此它廣泛應用于溫度的測溫系統。
DS18B20除了體積小、線路設計簡單優點外,它在實際應用中不需要其它外部任何器件即可實現溫度的測溫功能,測量溫度范圍為-55—+125 °C 之間,如超出檢測的溫度,DS18B20將會發出報警信號。數字溫度計的讀取可以從9位到12位選擇。可用數據線供電,供電范圍+3.0-5.5V電壓。
3.4.1 DS18B20引腳功能
DS18B20器件的封裝引腳排列及引腳功能的描述如圖3.10和表3.10。
圖3.10(底視圖)
表3.10 DS18B20引腳功能
序號 | 名稱 | 引腳功能描 |
1 | GND | 地信號 |
2 | DQ | 數據輸入/輸出引腳。開漏單總線接口引腳。當被用在寄生電源下,也可以向器件提供電源。 |
3 | VDD | 可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。 |
3.4.2 DS18B20的應用及原理圖
DS18B20采用的是one-Wire總線協議方式連接,實際就是在一根數據線進行數據的雙向傳輸,,然而對于51單片機在硬件上并不支持單總線協議方式的連接,因此我們采用軟件的方法來模擬單總線的協議方式來完成對DS18B20溫度芯片的訪問。
DS18B20的讀寫是在一根I/O線上進行,因此,對數據的讀寫有著嚴格的要求。DS18B20的通信協議也有著嚴格的要求來確保數據傳輸的正確性和完整性。
DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該通信協議又細分了幾種信號的時序,即:初始化時序、讀時序、寫時序。然而在這幾種時序的工作下都是以主機作為主設備,單總線器件作為從設備。數據的傳輸是在主機先啟動讀入時序,讀出數據后進入寫時序命令,從而啟動讀寫時序功能,完成數據的傳輸。數據和命令的傳輸都是低位在先。下面為DS18B20在本次設計的溫度采集模塊原理圖3.11所示。
溫度采集模塊圖主要是由DS18B20芯片進行,通過AT89C51單片機進行數據的傳輸和接受,從而再送到LCD1602,從LCD1602顯示出來。DS18B20只有三個引腳,分別是VCC為正電源接5V電壓,GND地信號接大地,最后是DQ數據輸入/輸出引腳連接AT89C51單片機的P1.0引腳。
4.1 交通燈程序設計的流程
4.1.1倒計時顯示的理論分析
利用定時器中斷,設置 TH0= (65536-50000)/256,TH1=(65536-50000)%256,即每0.05秒中斷一次。每到第20次中斷即過了20*0.05秒=1秒時,使時間的計數值減1,便實現了倒計時的功能。
4.1.2狀態燈顯示的理論分析
黃燈閃爍同樣可以利用定時器中斷。每到第10次中斷即過了10*0.05秒=0.5秒時,使黃燈標志位反置,即可讓黃燈1秒閃爍一次。
4.1.3 交通燈主程序設計流程
交通燈系統在正常模式下工作的
圖4.1 程序設計流程圖
4.2萬年歷的設計流程
萬年歷的設置一方面可以更好的顯示時間和溫度,其次可以對交通信號燈系統的控制,定時向交通信號燈控制系統發出外部中斷,從而該變當前工作模式,以致在實際中更具有實用性。
圖4.2 萬年歷主程序流程圖
此次萬年歷的設計功能主要是兩個,一個是通過LCD1602顯示時間和溫度,另一個則是為交通信號燈提供外部定時中斷,從而改變當前的工作模式。而萬年歷的設計流程和普通設計的一樣,開始先是對各種芯片的初始化,接著是從DS1302、DS18B20讀取時間和溫度信息,從而傳送到AT89C51單片機進行時間、溫度的分離轉化,再傳送到LCD1602顯示出來,其次是時間的調整和校正,通過調整按鍵可以對秒、分、時、星期、日、月和年進行加減1的修改。最近是定時發出外部中斷,利用IF語句進行判斷,適合條件則輸出低電平到交通信號燈,否則為高電平。從而達到了實驗的目的。
4.3萬年歷時間的調整流程
本次萬年歷系統的設計只是采用DS1302進行時間的掃描和讀取,而沒用進行掉電保存電路的設計,因此在每次硬件的開啟,系統都是進入初始化設置,以致要進行時間的調整和校正。
圖4.3 時間調整控制圖
時間的調整程序設計。首先,系統在正常工作下,由DS1302時鐘芯片進行時間的讀取,傳遞到AT89C51單片機進行對時間進行分離和轉化,最后由LCD1602顯示出來。在進行時間的調整和校正時,先進入調整模式,即按下第一個按鍵,執行調整程序,先是進入秒程序調整,按加減按鍵相應的進行加1或減1,再按調整切換鍵進入分程序調整,按加減減進行相應的加1減1,再接著是時、星期、日、月、年的調整。按加減鍵進行相應的加減1,在進行調整途中,如果按退出時間調整按鍵都將會退出時間調整程序。如圖4.3時間調整控制圖所示。
4.4交通信號系統工作模式的工作流程
圖4.4 工作模式切換圖
開始進入系統時,默認模式為正常模式60S,到了早上7:00時上班高峰期,萬年歷發出中斷,從而使系統進入繁忙模式45S,從而可以減少路口上交通的擁堵。時間到了早上9:00,車輛逐漸減少,萬年歷又發出定時中斷使系統進入正常模式,到了11:00,萬年歷再次發出定時中斷,重新使系統進入繁忙模式,減少車輛的擁堵。到了下午14:00,萬年歷發出定時中斷,使系統進入正常模式,在正常模式下運行到下午17:00下班時間,為了減少交通的擁堵,萬年歷發出定時中斷,使系統進入繁忙模式,到了晚上19:00,道口上車輛減少,萬年歷最后發出定時中斷,使系統在正常模式下正常運行。系統在正常模式、繁忙模式和特殊模式下運行時,還可以進行外部手動進行中斷來進行通行時間的調整。如:在正常模式下按下繁忙模式,系統將會進入繁忙模式,當下次中斷再次到來時,系統會根據中斷的要求而進入相應的模式,不會受上次中斷或下次中斷的影響。
5.1 PROTEUS仿真圖
整個交通燈控制系統在PROTEUS仿真圖中的仿真如下所示,雙向通行,倒計時是2位時間提醒。每個路口分別有左轉、直行和右轉,分別有紅燈、綠燈和黃燈提示。每個路口還相應配有行人的紅綠燈指示 。圖右上角數碼管顯示的工作模式,60代表是在正常模式下工作,45和75分別代表是在繁忙模式和特殊模式,右下角是開關調節按鍵,左邊三個開關從上到下是交通燈各種模式轉換開關,右邊四個是時間調節開關,從而更具有實用性。
圖5.1 PROTEUS仿真圖
5.2 硬件實物圖
此次硬件實物的設計分為兩部分,一部分是電子器件的設計,另一部分是顯示界面的設計。電子器件的設計主要是單片機的最小系統設置、DS1302時鐘模塊的設置、DS18B20溫度模塊的設置以及非門74HC04的設置等;顯示界面的設置主要是LCD1602液晶顯示模塊、各個方向數碼管倒計時、數碼管顯示系統工作模式、各個道口的交通燈、人行道的交通燈以及控制開關調節按鍵的設置。兩部分的分開設計可以使實物顯得更美觀,同時對于實物的器件的修改和調整也提供了更好的條件。也更聯系了實際生活,顯得簡單、整潔和美觀。
顯示界面如圖5.2所示。
圖5.2 硬件實物圖
本次基于單片機的交通信號燈控制系統的設計是在一般交通燈的基礎上加上時間的智能控制,從而改變各方向通行的時間。因此本次智能交通燈的設計可以更好的解決了車流量較大的十字路口車輛的通行,與一般交通燈相比,它更具有實用性、簡單化和智能化。從而也更好的應用到實際生活中,因此具有一定的實用價值。
此次基于單片機的交通信號燈控制系統的設計可以說得到了成功,但是還是存在很多的不足和缺陷。如:工作模式的時間只有三種選擇,而不能通過按鍵進行隨意更改,工作模式時間的智能切換也不能進行手動調節,以及對通過道口車流量的統計、車輛速度的檢測和拍攝功能等都還沒實現,而且此次設計需要用到的電子元器件較多,從經濟上不劃算,因此本次基于單片機的交通信號燈控制系統的設計也還存在著很大的不足,還有待改善。
致 謝
歷時三個月的畢業設計已經告一段落。經過自己不斷的搜索努力以及張玉薇老師的耐心指導和熱情幫助,本設計已經基本完成。同時系里興趣小組實驗室的開放和大部分興趣小組同學也為我的設計提供指導,在他們的幫助和指導下得到了完成。在此對于他們的幫助給與深刻的致謝。
在本次基于單片機的交通信號燈的控制系統設計中一路遇到了很多的困難,首先從開始電路原理圖的設計、畫PCB圖和制板都遇到了困難。先是對芯片的不理解,專業知識的不夠從而導致在程序的編寫中經常出錯。接著是在最后的調試中,由于本次設計分為兩塊電路板,線路繁多因此也很容易混亂等問題。但是在老師和同學的幫助和鼓勵下一一得到了解決。
通過這次畢業設計,使我對自己有了一個深刻的認識。認識到了自己專業知識的不足和專業知識的重要性,同時也理解了理論要聯系實際含義。通過這次的畢業設計也檢驗了自己大學四年的學習成果,認識到了自己的不足和缺陷,在今后的工作和學習中將會繼續努力,不斷完善,從而為今后的發展打下良好的基礎。
由于自身水平有限,設計中一定還存在很多不足之處,敬請各位老師批評指正。
附錄程序:(見附件)
完整的Word格式文檔51黑下載地址:
交通燈設計-畢業論文.doc
(1.18 MB, 下載次數: 22)
交通燈.jpg (158 KB, 下載次數: 24)
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |