基于5單片機的交通燈的課程設(shè)計_第1頁
基于5單片機的交通燈的課程設(shè)計_第2頁
基于5單片機的交通燈的課程設(shè)計_第3頁
基于5單片機的交通燈的課程設(shè)計_第4頁
基于5單片機的交通燈的課程設(shè)計_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于51單片機的交通燈控制 實驗報告摘 要:近年來隨著科技的飛速發(fā)展,單片機的應(yīng)用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實時檢測和自動控制的單片機應(yīng)用系統(tǒng)中,單片機往往作為一個核心部件來使用,僅單片機方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。交通信號燈控制方式很多。本系統(tǒng)采用STC-51系列單片機STC89C51來設(shè)計交通燈控制器,實現(xiàn)了能根據(jù)實際車流量通過8051芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點亮,倒計時剩5秒時黃燈閃爍警

2、示(交通燈信號通過PA口輸出,顯示時間直接通過8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報警;綠燈時間可檢測車流量并可通過雙位數(shù)碼管顯示。本系統(tǒng)實用性強、操作簡單、擴展功能強。 關(guān)鍵詞:單片機 交通燈 電路連接圖 Proteus仿真圖一 引言當(dāng)今,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。綠燈是通行信號,面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車

3、輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進入交叉路口。二單片機概述1單片機的歷史自1971年美國INTEL公司制造出第一塊4位微處理器以來,其發(fā)展十分迅猛,到目前為止,大致可分為以下五個階段1。(1)4位單片機(19711974)(2)低檔8位單片機(19741978)(3)高檔8位單片機(19781982)(4)16位單片機(19821990)(5)新一代單片機(90年代以來)2單片機的應(yīng)用因單片機具有體積小、重量輕、價格便宜、功耗低、控制功能強及運算速度快等特點,故在國民經(jīng)濟建設(shè)、軍事及家用電器等領(lǐng)域均得到廣泛

4、的應(yīng)用。按照單片機的特點,單片機可分為單機應(yīng)用和多機應(yīng)用。在一個應(yīng)用系統(tǒng)中,只用一個單片機,這是目前應(yīng)用最多的方式,主要應(yīng)用領(lǐng)域有:(1)單機應(yīng)用:測控系統(tǒng)。用單片機可構(gòu)成各種工業(yè)控制系統(tǒng)、自適應(yīng)系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等。例如,溫室人工氣候控制、水閘自動控制、電鍍生產(chǎn)線自動控制、汽輪機電液調(diào)節(jié)系統(tǒng)、車輛檢測系統(tǒng)、機器人軸處理器等2。智能儀表。用單片機改造原有的測量、控制儀表,能迥數(shù)字化、智能化、多功能化、綜合化、柔性化發(fā)展。如溫度、壓力、流量、濃度等的測量、顯示及儀表控制。通過采用單片機軟件編程技術(shù),使測量儀表中長期存在的誤差修正、線性化處理等難題迎刃而解。機電一體化產(chǎn)品。單片機與傳統(tǒng)的機械產(chǎn)品結(jié)

5、合,使傳統(tǒng)機械產(chǎn)品結(jié)構(gòu)簡化,控制智能化。這類產(chǎn)品如:簡易數(shù)控機床,電腦繡花機,醫(yī)療器械等。智能接口。在計算機控制系統(tǒng)(特別是較大型的工業(yè)測控系統(tǒng))中,普遍采用單片機進行接口的控制與管理,因單片機與主機是并行工作,故能大大提高了系統(tǒng)的運行速度。例如:在大型數(shù)據(jù)采集系統(tǒng)中,用單片機對ADC接口進行控制不僅可提高采集速度,而且還能對數(shù)據(jù)進行預(yù)處理,如數(shù)字濾波、線性化處理、誤差修正等。智能民用產(chǎn)品。在家用電器、玩具、游戲機、聲像設(shè)備、電子秤、收銀機、辦公設(shè)備、廚房設(shè)備等產(chǎn)品中引入單片機,不僅使產(chǎn)品的功能大大增強,而且獲得了良好的使用效果。三 芯片簡介1 .STC-51芯片簡介STC-51單片機內(nèi)部結(jié)構(gòu)

6、,8051是STC-51系列單片機的典型產(chǎn)品,我們以這一代表性的機型進行系統(tǒng)的講解。8051單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:中央處理器:中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。數(shù)據(jù)存儲器(RAM)  8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能

7、用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。程序存儲器(ROM):8051共有4096個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。定時/計數(shù)器(ROM):8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:8051共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。全雙工串行口:8051內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷

8、系統(tǒng):8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時鐘電路:8051內(nèi)置最高頻率達12MHz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8051單片機需外置振蕩電容。單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的STC-51系列單片機采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機則采用普林斯頓結(jié)構(gòu)。STC-51的引腳說明:S

9、TC-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:STC-51的引腳說明:STC-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:Pin9:RESET/Vpd復(fù)位信號復(fù)用腳,當(dāng)8051

10、通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。8051的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖4。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM的數(shù)據(jù)不丟失。Pin30:ALE/當(dāng)訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存

11、地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當(dāng)作一個時鐘向外輸出。更有一個特點,當(dāng)訪問外部程序存儲器,ALE會跳過一個脈沖。如果單片機是EPROM,在編程其間,將用于輸入編程脈沖。Pin29:當(dāng)訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。Pin31:EA/Vpp程序存儲器的內(nèi)外部選通線,8051和8751單片機,內(nèi)置有4kB的程序存儲器,當(dāng)EA為高電平并且程序地址小于4kB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超

12、過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,EA端必須接地。在編程時,EA/Vpp腳還需加上21V的編程電壓。四.系 統(tǒng) 硬 件設(shè) 計.1交通管理的方案論證東西、南北兩干道交于一個十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車時間。設(shè)東西道比南北道的車流量大,指示燈燃亮的方案如表2。60S5S55S5S東西道紅燈亮黃燈亮綠燈亮黃燈亮南北道綠燈亮黃燈亮紅燈亮黃燈亮 表2表2說

13、明:(1)當(dāng)東西方向為紅燈,此道車輛禁止通行,東西道行人可通過;南北道為綠燈,此道車輛通過,行人禁止通行。時間為60秒。(2)黃燈閃爍5秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。 (3)當(dāng)東西方向為綠燈,此道車輛通行;南北方向為紅燈,南北道車輛禁止通過,行人通行。時間為55秒。 東西方向車流大 通行時間長。(4)這樣如上表的時間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。(5)此表可根據(jù)車流量動態(tài)設(shè)定紅綠燈初始值。2.系統(tǒng)硬件設(shè)計STC89C51芯片一個,12M晶振一個,1K排阻2個,10K電阻一個,10uF電解電容一個,22uF電容2個,紅黃綠二極管各四個,控制開關(guān)7個,

14、數(shù)碼管2個,電源輸入接口一個,數(shù)據(jù)線一根,導(dǎo)線若干。3 交通燈硬件線路圖 4. 焊接電路圖5.Proteus仿真圖1.程序仿真前2.程序仿真過程中(1)正常運行(2)黃燈亮(3)禁止通行六程序源代碼#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar data buf4;uchar data sec_dx=20;/東西數(shù)默認uchar data sec_nb=30;/南北默認值uchar data set_timedx=20;uchar data set_timenb=30;int n

15、;uchar data countt0;/定時器0中斷次數(shù)/定義5組開關(guān)sbit k4=P37; /切換方向sbit k1=P35;/時間加sbit k2=P36;/時間減sbit k3=P34;/確認sbit k5=P31;/禁止/ P32/只允許東西方向通行,中斷0/ P33/只允許南北方向通行,中斷1sbit Red_nb=P25;/南北黃燈標(biāo)志sbit Red_dx=P22;/東西黃燈標(biāo)志sbit Green_nb=P24; /南北綠燈標(biāo)志sbit Green_dx=P21;/東西綠燈標(biāo)志sbit Buzz=P30;bit Buzzer_Indicate;bit time=0;/燈狀態(tài)

16、循環(huán)標(biāo)志bit set=1;/調(diào)時方向切換鍵標(biāo)志uchar code table11=/共陰極字型碼0x3f, /-00x06, /-10x5b, /-20x4f, /-30x66, /-40x6d, /-50x7d, /-60x07, /-70x7f, /-80x6f, /-90x00 /-NULL;/函數(shù)的聲明部分void delay(int ms);/延時子程序void key();/按鍵掃描子程序void key_to1();/鍵處理子程序void key_to2();void key_to3();void display();/顯示子程序void logo(); /開機LOGOvoi

17、d Buzzer();/主程序void main()TMOD=0X11; /定時器設(shè)置TH0=0X3C;/定時器0置初值 0.05STL0=0XB0;EA=1;/開總中斷ET0=1;/定時器0中斷開啟TR0=1;/啟動定時0EX0=1;/開外部中斷0EX1=1;/開外部中斷1 logo();P2=0Xc3;/ 開始默認狀態(tài),東西綠燈,南北黃燈 sec_nb=sec_dx+5; /默認南北通行時間比東西多5秒while(1) key(); /調(diào)用按鍵掃描程序display(); /調(diào)用顯示程序Buzzer();/函數(shù)的定義部分void key()/按鍵掃描子程序 if(k1!=1)/時間加按下時

18、delay(10);/延時消抖if(k1!=1)while(k1!=1)/當(dāng)按鍵未彈起時,一直執(zhí)行 key_to1();/調(diào)用按鍵1功能 for(n=0;n<40;n+)/調(diào)用40次顯示,用于延時 display(); if(k2!=1)/當(dāng)K2按鍵按下時delay(10);/延時消抖if(k2!=1)while(k2!=1)/按鍵按下未彈起時一直執(zhí)行 key_to2();/調(diào)用key2功能 for(n=0;n<40;n+)/調(diào)用40次顯示,用于延時 display();if(k3!=1)/當(dāng)K3(確認)鍵按下時TR0=1; /啟動定時器Buzzer_Indicate=0;sec_

19、nb=set_timenb;/從中斷回復(fù),仍顯示設(shè)置過的數(shù)值sec_dx=set_timedx;/顯示設(shè)置過的時間if(set=1)/時間倒時到0時 P2=0X99;/東西紅燈,南北綠燈sec_nb=sec_dx+5; /回到初值else P2=0xC3;/東西綠燈,南北紅燈sec_dx=sec_nb+5; if(k4!=1)/當(dāng)K4(切換)鍵按下 delay(5);/延時消抖if(k4!=1) while(k4!=1);set=!set;/取反set標(biāo)志位,以切換調(diào)節(jié)方向 if(k5!=1)/當(dāng)K5(禁止)鍵按下時 delay(5);/延時消抖 if(k5!=1) while(k5!=1)

20、key_to3(); void display() /顯示子程序buf1=sec_dx/10; /第1位 東西秒十位buf2=sec_dx%10; /第2位 東西秒個位buf3=sec_nb/10; /第3位 南北秒十位buf0=sec_nb%10; /第4位 南北秒個位 P1=0xff; / 初始燈為滅的 P0=0x00; P1=0xfe; /片選LED1 P0=tablebuf1;/送東西時間十位的數(shù)碼管編碼delay(1);/延時 P1=0xff;/關(guān)顯示 P0=0x00; P1=0xfd; /片選LED2 P0=tablebuf2; delay(1); P1=0xff; P0=0x00

21、; P1=0Xfb; /片選LED3P0=tablebuf3; delay(1);P1=0xff; P0=0x00;P1=0Xf7;P0=tablebuf0;/片選LED4 delay(1);void time0(void) interrupt 1 using 1 /定時中斷子程序TH0=0X3C;/重賦初值TL0=0XB0;TR0=1;/重新啟動定時器countt0+;/軟件計數(shù)加1if(countt0=20) / 定時器中斷次數(shù)=20時(即1秒時)countt0=0;/清零計數(shù)器sec_dx-;/東西時間減1sec_nb-;/南北時間減1if(sec_nb<=5&&t

22、ime=0) /東西黃燈閃 Green_dx=0;Red_dx=!Red_dx; if(sec_dx<=5&&time=1) /南北黃燈閃 Green_nb=0;Red_nb=!Red_nb; if(sec_dx=0&&sec_nb=5) /當(dāng)東西倒計時到0時,重置5秒,用于黃燈閃爍時間sec_dx=5;if(sec_nb=0&&sec_dx=5)/當(dāng)南北倒計時到0時,重置5秒,用于黃燈閃爍時間sec_nb=5;if(time=0&&sec_nb=0)/當(dāng)黃燈閃爍時間倒計時到0時, P2=0x99;/重置東西南背方向的紅綠燈

23、time=!time;sec_nb=set_timenb;/重賦南北方向的起始值sec_dx=set_timenb+5;/重賦東西方向的起始值if(time=1&&sec_dx=0)/當(dāng)黃燈閃爍時間到P2=0Xc3;/重置東西南北的紅綠燈狀態(tài)time=!time;sec_dx=set_timedx;/重賦東西方向的起始值sec_nb=set_timedx+5;/重賦南北方向的起始值void key_to1()/鍵盤處理子程序之+TR0=0; /關(guān)定時器if(set=0)set_timenb+; /南北加1Selseset_timedx+; /東西加1Sif(set_timenb

24、=100)set_timenb=1;if(set_timedx=100)set_timedx=1; /加到100置1sec_nb=set_timenb ; /設(shè)置的數(shù)值賦給東西南北sec_dx=set_timedx;/void key_to2() /鍵盤處理子程序之-TR0=0; /關(guān)定時器if(set=0)set_timenb-; /南北減1Selseset_timedx-; /東西減1Sif(set_timenb=0)set_timenb=99;if(set_timedx=0 )set_timedx=99; /減到1重置99sec_nb=set_timenb ; /設(shè)置的數(shù)值賦給東西南北s

25、ec_dx=set_timedx;void key_to3() /鍵盤處理之緊急車通行 TR0=0;/關(guān)定時器 P2=0Xc9;/全部置紅燈 sec_dx=00;/四個方向的時間都為00 sec_nb=00; Buzzer_Indicate=1;/外部中斷0void int0(void) interrupt 0 using 1 /只允許東西通行TR0=0;/關(guān)定時器P2=0Xc3;/東西方向置綠燈Buzzer_Indicate=0;sec_dx=00;/四個方向的時間都為00sec_nb=00;/外部中斷1void int1(void) interrupt 2 using 1 /只允許南北通行 TR

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論