基於51單片機的交通燈控制系統設計

塵書休 發佈 2024-04-26T15:11:16.566592+00:00

第一章 硬體設計與原理以AT89C51單片機為核心,起著控制作用。系統包括數碼管顯示電路、復位電路、時鐘電路、發光二級管電路和按鍵電路。設計思路分為六個模塊:復位電路、晶振電路模塊、AT89C51、數碼管顯示電路、發光二級管電路和按鍵電路這六個模塊。1.2 硬體設計分析1.2.

第一章 硬體設計與原理

以AT89C51單片機為核心,起著控制作用。系統包括數碼管顯示電路、復位電路、時鐘電路、發光二級管電路和按鍵電路。設計思路分為六個模塊:復位電路、晶振電路模塊、AT89C51、數碼管顯示電路、發光二級管電路和按鍵電路這六個模塊。

1.2 硬體設計分析

1.2.1 電源的設計

系統電源使用直流5伏。

由電腦USB接口提供電源。

USB是通用串行總線(Universal Serial Bus)接口的簡稱。它是目前使用比較廣泛的電腦接口之一,主要版本有1.0、1.1和最新的2.0三種版本。根據USB總線的工業標準,它可以提供額定功率為5V/500mA的電源供USB設備使用。


1.2.2 單片機最小系統

51單片機是對目前所有兼容intel 8031指令系統的單片機的統稱。該系列單片機的始祖是intel的8031單片機,後來隨著技術的發展,成為目前廣泛應用的8為單片機之一。單片機是在一塊晶片內集成了CPU、RAM、ROM、定時器/計數器和多功能I/O口等計算機所需要的基本功能部件的大規模集成電路,又稱為MCU。51系列單片機內包含以下幾個部件:

一個8位CPU;一個片內振盪器及時鐘電路;

4KB的ROM程序存儲器;

一個128B的RAM數據存儲器;

尋址64KB外部數據存儲器和64KB外部程序存儲空間的控制電路;

32條可編程的I/O口線;

兩個16位定時/計數器;

一個可編程全雙工串行口;

5個中斷源、兩個優先級嵌套中斷結構。

如圖1-2-1所示為AT89C51單片機基本構造,其基本性能介紹如下:

AT89C51本身內含40個引腳,32個外部雙向輸入/輸出(I/O)埠,同時內含2個外中埠,3個16位可編程定時計數器,2個全雙工串行通信口,STC89C51RC可以按照常規方法進行編程,但不可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反覆擦寫的Flash存儲器可有效地降低開發成本。


AT89C51的主要特性如下表所示:

AT89C51為40腳雙列直插封裝的8位通用微處理器,採用工業標準的C51內核,在內部功能及管腳排布上與通用的8xc52相同,其主要用於會聚調整時的功能控制。功能包括對會聚主IC內部寄存器、數據RAM及外部接口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振盪器輸入輸出埠,外接12MHz 晶振。RST/Vpd(9腳)為復位輸入埠,外接電阻電容組成的復位電路。VCC(40腳)和VSS(20腳)為供電埠,分別接+5V電源的正負端。P0~P3 為可編程通用I/O腳,其功能用途由軟體定義,在本設計中,P0埠(32~39腳)被定義為N1功能控制埠,分別與N1的相應功能管腳相連接,13腳定義為IR輸入端,10腳和11腳定義為I2C總線控制埠,分別連接N1的SDAS(18腳)和SCLS(19腳)埠,12腳、27腳及28腳定義為握手信號功能埠,連接主板CPU的相應功能端,用於當前制式的檢測及會聚調整狀態進入的控制功能。


P0口:P0口是一組8位漏極開路型雙向I/O 口,也即地址/數據總線復用口。作為輸出口用時,每位能吸收電流的方式驅動8個TTL邏輯門電路,對埠P0寫「1」時,可作為高阻抗輸入端用。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內部上拉電阻。在Flash 編程時,P0口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。


P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩衝級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對埠寫「1」,通過內部的上拉電阻把埠拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數器2 的外部計數輸入(P1.0/T2)和輸入(P1.1/T2EX)。Flash編程和程序校驗期間,P1接收低8位地址。


P2口:P2是一個帶有內部上拉電阻的8 位雙向I/O口,P2的輸出緩衝級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對埠P2寫「1」,通過內部的上拉電阻把埠拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數據存儲器(例如執行MOVX @dpTR指令)時,P2口送出高8位地址數據。在訪問8位地址的外部數據存儲器(如執行MOVX @RI指令)時,P2口輸出P2鎖存器的內容。Flash編程或校驗時,P2亦接收高位地址和一些控制信號。


P3口:P3口是一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩衝級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入「1」時,它們被內部上拉電阻拉高並可作為輸入埠。此時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還接收一些用於Flash 閃速存儲器編程和程序校驗的控制信號。


RST:復位輸入。當振盪器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。


ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈衝用於鎖存地址的低8位字節。一般情況下,ALE仍以時鐘振盪頻率的1/6輸出固定的脈衝信號,因此它可對外輸出時鐘或用於定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個AL脈衝。對Flash存儲器編程期間,該引腳還用於輸入編程脈衝(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區中的8EH單元的D0位置位,可禁止ALE操作。該位置位後,只有一條 MOVX 和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執行外部程序時,應設置ALE禁止位無效。


PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C51由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈衝。在此期間,當訪問外部數據存儲器,將跳過兩次PSEN信號。


EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H—FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態。如EA端為高電平(接Vcc端),CPU則執行內部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。


XTAL1:振盪器反相放大器的及內部時鐘發生器的輸入端。

XTAL2:振盪器反相放大器的輸出端。

單片機最小原理圖如圖1-2-2所示。

單片機最小系統說明:

時鐘信號的產生:在MCS-51晶片內部有一個高增益反相放大器,其輸入端為晶片引腳XTAL1,其輸出端為引腳XTAL2。而在晶片的外部,XTAL1和XTAL2之間跨接晶體振盪器和微調電容,從而構成一個穩定的自激振盪器,這就是單片機的時鐘振盪電路。


時鐘電路產生的振盪脈衝經過觸發器進行二分頻之後,才成為單片機的時鐘脈衝信號。


一般地,電容C2和C3取30pF左右,晶體的振盪頻率範圍是1.2-12MHz。如果晶體振盪頻率高,則系統的時鐘頻率也高,單片機的運行速度也就快。


單片機復位使CPU和系統中的其他功能部件都處在一個確定的初始狀態下,並從這個狀態開始工作。單片機復位條件:必須使9腳加上持續兩個機器周期(即24個振盪周期)的高電平。


1.2.3 顯示系統

數碼管是一種半導體發光器件,其基本單元是發光二極體。


數碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極體單元(多一個小數點顯示);按能顯示多少個「8」可分為1位、2位、4位等等數碼管;按發光二極體單元連接方式分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極體的陽極接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極COM接到+5V,當某一欄位發光二極體的陰極為低電平時,相應欄位就點亮。當某一欄位的陰極為高電平時,相應欄位就不亮。。共陰數碼管是指將所有發光二極體的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一欄位發光二極體的陽極為高電平時,相應欄位就點亮。當某一欄位的陽極為低電平時,相應欄位就不亮。


數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。


1) 靜態顯示驅動:靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個單片機的I/O埠進行驅動,或者使用如BCD碼二-十進位解碼器解碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/O埠多,如驅動5個數碼管靜態顯示則需要5×8=40根I/O埠來驅動(要知道一個89C51單片機可用的I/O埠才32個呢),實際應用時必須增加解碼驅動器進行驅動,增加了硬體電路的複雜性。


2) 動態顯示驅動:數碼管動態顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決於單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。


本設計中數碼管採用的是動態驅動方式。


數碼管外形如圖1-2-3,數碼管電路結構如圖1-2-4。

1.2.4 發光二級管電路

1.2.5 按鍵電路

第二章 軟體設計與分析

2.1 軟體設計的組成

該系統由延時子函數、數碼管顯示子函數、定時器0中斷子函數、主函數和數據定義這幾部分組成。

//----------------------------------------------------------------------//

上傳過程感覺繁瑣,裡面可能有不全面的地方,請見諒。下面的是實現的目的。以及電路原理圖


**本次設計的主要目的是設計一個城市十字路口的交通燈控制系統,設計中將交通燈控制系統分為東西方向(主幹道)和南北方向(次幹道)兩個方向,且在東西南北四個路口的每個路口設置紅、綠、黃三個交通信號燈(用發光二極體模擬)和一個二位的LED數碼顯示管。設計的要求是規定在每一段時間內東西和南北兩個方向中只有一個方向能夠通行,另一個方向處于禁行狀態,然後在經過一段時間後,禁行的方向和通行的方向互相轉換狀態,原來通行的狀態變禁行狀態,原來禁行的狀態變為通行狀態,如此循環下去。詳細過程如下圖2-1:


狀態① 狀態②

圖 1圖2-1 交通燈狀態圖

狀態①:東西方向的交通燈黃燈閃爍3秒後,紅燈熄滅,綠燈點亮(東西方向允許車輛和行人通行),同時南北方向綠燈熄滅,紅燈點亮(南北方向禁止車輛和行人通行),LED數碼管倒計時顯示40秒,在倒計時3秒時進入狀態②。


狀態②:南北方向黃燈閃爍3秒後,紅燈熄滅綠燈點亮(南北允許車輛和行人通行);同時東西方向綠燈熄滅,紅燈點亮


(東西方向禁止車輛和行人通行),LED數碼管倒計時顯示40秒,在倒計時3秒時進入狀態①。


接下來在沒有人為干涉下將會一直按照上述進行循環。設計中還外設6個按鍵實現對交通燈控制系統的調控作用。


電路原理圖


//——————————————————————————-——————————//

相應的代碼已經上傳


下載地址

https://download.csdn.net/download/weixin_43442020/12231456


下載連結里可以下載,解壓后里面有壓縮文件,壓縮文件裡面的資料更詳細

找元器件現貨上唯樣商城

關鍵字: