標題: 基于AT89S52單片機交通燈控制系統的設計 [打印本頁]
作者: csjws 時間: 2018-4-9 18:51
標題: 基于AT89S52單片機交通燈控制系統的設計
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif
電子線路課程設計(2)
論文(設計)題目: 其于AT89S52單片機交通燈控制系統的設計
系 別: 物理與電子工程系
專 業: 電子信息工程
年 級: 2007級
學生姓名: 賓 華
指導教師: 鄒 清 平
時 間: 2010年6月20日
目 錄
摘 要 ………………………………………………………………………………4
關鍵詞 …………………………………………………………………………… 4
一、設計任務與要求 ………………………………… …………… ………… 4
二、方案設計與論證 …………………………… ……………… …………… 4
方案一 …………………………………………… …………… ……………4
方案二 ……… ……… ……………………… … …… ……………………5
方案三……………………………………………… ……… ……………… 5
三、硬件單元電路設計與參數計算 …………… ……………………………5
1. 時鐘電路模塊 ………………………………… …… ……… ……………5
2. 復位電路模塊 ………………………… ……………… ………………… 6
3. 主控電路模塊 …………………………………… … ………………… 6
4. 交通燈控制模塊 ………………………… ………………………………7
5. 時間顯示電路模塊 ……………………………… ………………………7
6. 緊急通車電路模塊 …………………………… …… ……………………8
四、軟件設計與流程圖 ………………………… …………………………………9
五、總原電路及元器件清單………………………………………………………10
1.總原理圖 ………………………………… …………………………………10
2. PCB制板圖…………………………… ………… …………………………10
3. 整體電路仿真圖以及仿真結果分析………………… …… …………11
4.元件清單………………………… …………… ……………………………12
六、安裝與調試………………… …………… …………………………………… 12
1. 電路安裝…………………………… ………… ……………………………12
2. 電路調試…………………………………… ………………………………12
3. 軟件調試………………………………… …………………………………13
七、性能測試與分析 ………………………………………………………………13
八、結論與心得 ………………………… …………………………………………13
九、參考文獻 ……………………… ………………………………………………14
十、致謝 ……………………………… ……… ……………………………………14
十一、程序清單 ……………………… ……………………………………………14
摘要:
近年來隨著科技的飛速發展,單片機的應用正在不地走向深入,同時帶動傳統控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統中,單片機往往是作為一個核心部件來使用,單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。交通信號燈的出現,使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。本系統采用單片機AT89S52為中心器件來設計交通燈控制器,系統實用性強、操作簡單、擴展性強。
關鍵詞:
1、單片機最小系統。
2、紅、黃、綠LED交通燈。
3、緊急通車開關。
一、設計任務與要求
用AT89S52單片機控制一個交通信號燈系統,晶振采用12MHZ。
設A車道與B車道交叉組成十字路口,A是主道,B是支道。設計要求如下:
用發光二極管模擬交通信號燈,用按鍵開關模擬車輛檢測信號。正常情況下,A、B兩車道輪流放行,A車道放行50s,其中5s用于警告;B車道放行30s,其中5s用于警告。交通繁忙時,交通信號燈控制系統應有手控開關,可人為地改變信號燈的狀態,以緩解交通擁擠狀況。在B 車道放行期間,若A車道有車而B車道無車,按下開關K1 使 A車道放行15s;在 A車道放行期間,若B車道有車而A車道無車,按下開關K1 使B 車道放行15s。有緊急車輛通過時,按下K2開關使 A、B車道均為紅燈,禁行20s。
二、方案設計與論證
方案一:
交通控制系統主要控制A、B兩車道的交通,以AT89S52單片機為核心芯片,通過控制三色LED的亮滅來控制各車道的通行;另外通過2個按鍵來模擬各車道有無車輛的情況和有緊急車輛的情況。根據設計要求,制定總體設計思想如下:
1、正常情況下運行主程序,采用0.5S延時子程序的反復調用來實現各種定時時間。
2、一道有車而另一道無車時,采用外部中斷1執行中斷服務程序,并設置中斷為低優先級中斷。
3、有緊急車輛通過時,采用外部中斷0執行中斷服務程序,并設置中斷為高優先級中斷,實現二級中斷嵌套。
該電路具有電路簡單,設計方便,顯示亮度高,耗電較少,也非常的可靠等點。
總體設計框圖如圖1所示:
|
| file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif |
圖1 系統整體設計方框圖
方案二:
采用標準AT89S52單片機作為控制器;通行倒計時顯示采用3位數碼管;主、次通道及行人指示燈采用雙色高亮發光二極管;LED顯示采用動態掃描,以節省端口。緊急車輛通行采用實時中斷完成,識別方法采用手動按鈕。按以上系統構架設計,單片機端口資源剛好滿足要求。該系統具有電路簡單,設計方便,顯示亮度高耗電少,可靠性高,但是占用單片機資源太多了。整個電路組成框圖如圖2所示。
|
| file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif |
圖2
方案三:
采用AT89C2051單片機作為控制器,通行倒計時、主、次車道及行人通行指示采用單塊LCD液晶點陣顯示器。這種方案設計占用單片機的端口最少,硬件也最少,耗電也最少;雖然顯示圖案也很精美,但由于亮度太暗,晚上還得必須開背光燈,所以較少采用。
通過以上綜合分析可以看出,方案一具有綜合設計優點,因此城市道口交通燈控制系統模型采用方案一設計。
三、硬件單元電路設計與參數計算
1、時鐘電路模塊
時鐘電路由一個晶體振蕩器12MHZ和兩個30pF的瓷片電容組成。時鐘電路用于產生單片機工作所需要的時鐘信號,而時序所研究的是指令執行中各信號之間的相互關系。單片機本身就如一個復雜的同步時序電路,為了保證同步工作方式的實現,電路應在唯一的時鐘信
號控制下嚴格地工作。其電路如圖3所示:
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
圖3 時鐘電路模塊
2、復位電路模塊
復位電路是使單片機的CPU或系統中的其他部件處于某一確定的初始狀態,并從這狀態開始工作,除了進入系統的正常初始化之外,當由于程序運行出錯或操作錯誤使系統處于死鎖狀態時,為擺脫困境,也需按復位電路以重新啟動。本設計采用的是按鍵復位電路。其電路如圖4所示:
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
圖4 復位電路
3、主控制系統模塊
主控制器采用AT89S52,是ATMEL公司生產的一款性能穩定的8位單片機。AT89S52具有1個8KB的FLASH程序存儲器,1個512字節的RAM,4個8位的雙向可位尋址I/O端口,3個16位定時/計數器及1個串行口和6個向量二級中斷結構。
單片機的P0口分別用于控制南北及東西的通行燈,P2口和P3^4-P3^7口用于4組4位LED計時器的控制,緊急車輛通行時使用外中斷0(P3^2)和外中斷1(P3^3),進行手動按鍵,即可轉換。其主控電路如圖5所示:
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
圖5 主控制系統模塊
4、交通燈輸出控制模塊
道口交通燈指示采用高亮度紅、黃、綠發光二極管進行提示。其圖如圖6所示
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif
圖6 LED顯示模塊
當R=220歐時,按公式A=(5-1.8)/R計算,電路中的電流大小應為A=14.545mA.由于每個路口的通行雙向指示處理相同,因此每個端口應具有3A的吸收電流能力。
5、時間顯示電路模塊
道口通行剩余時間采用高亮紅色7段LED發光數碼管顯示,采用共陽數碼管,如用單片機吸收電流驅動,列掃描驅動使用三極管,按每段6mA電流計算,全顯示字形“8”時,每個數碼需6mA*8=48mA,由于時間顯示每個道口相同,共需要電流192mA,因此設計中也采用了中功率三極管8550.其顯示電路如圖7所示:
6、緊急通車電路模塊
為了實現此功能,利用單片機中斷達到目的。利用一個手動按鈕開關接至單片機外部中斷0,同時在軟件設計時將其設定為最高優先級,當其按下時,四方全為紅燈,同時將中斷位置的PSW、ACC進棧保護,當其計時完了之后,回到原來的位置進行執行。再利用一個手動按鈕接至單片機外部中斷1當其按下時,如果是東西道是紅燈,而南北道是綠燈,則將其置為東西是綠燈,南北是紅燈;如果是東西道是綠燈,而南北道是紅燈,則將其置為東西是紅燈,南北是綠燈。兩種情況都是執行完后,回到斷點處繼續執行。其電路如圖8所示:
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif
圖7 數碼管顯示模塊
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif
圖8 按鍵控制電路
三、軟件設計與流程圖
1、軟件的設計
主程序采用查詢方式定時,調用0.5S延時子程序的次數,從而獲取交通燈的各種時間。子程序采用定時器1方式1查詢式定時,定時器定時50ms,確定50ms循環20次,從而獲得1S的延時時間。
有車車道的放行的中斷服務程序首先要保護現場,因而需用到延時子程序,子程序采用定時器0方式1查詢式定時,定時器定時50ms,確定50ms循環20次,從而獲得1S的延時時間,保護現場時還需關中斷,以防止高優先級中斷(緊急車輛通過所產生的中斷)出現導致程序混亂。
開中斷,由軟件查詢外中斷1,判別哪一道有車,再根據查詢情況執行相應的服務。待交通燈信號出現后,保持15S的延時,然后,關中斷,恢復現場,再開中斷返回主程序。
緊急車輛出現時的中斷服務程序也需要保護現場,但無須關中斷(因其為高優先級中斷),然后執行相應的服務,待交通燈信號出現后延時20S,確保緊急車輛通過交叉路口,然后,恢復現場,返回主程序。
2、程序流程圖
主程序 有車車道放行時的中斷服務程序(外中斷1)
| | | |
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif |
| file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image020.gif |
|
|
| file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif |
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image022.gif
| | | | | | | |
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif |
|
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image024.gif |
| file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif |
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif |
|
緊急情況時的中斷服務程序(外中斷0)
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif
| | | |
| file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif |
|
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image029.gif |
五、總原電路及元器件清單
1.總原理圖如圖9所示
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image031.gif
圖9 總的原理圖
2.PCB制板圖如圖10所示
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image033.gif
圖10 PCB板
3.整體電路仿真圖以及仿真結果分析
(1)、整體電路仿真圖如圖11所示
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg
圖11 仿真圖
(2)、仿真結果分析
上電或按鍵復位后數碼管無顯示,東西、南北的燈都為紅燈亮;開始工作后主車道綠燈亮次車道紅燈亮50S,在這里選定它亮到5S時,主車道綠燈滅,黃燈亮;5S后主車道變為紅燈亮次車道綠燈亮30S,在這里選定它亮到5S時,次車道黃燈亮,5S后返回重新執行。按緊急車輛按鈕紅燈全亮顯示時間為20S;有車車道放行按鈕按下時,若主車道是綠燈、次車道是紅燈,則把主車道變為紅燈、次車道變為綠燈,顯示15S;若主車道是紅燈、次車道是綠燈,則把主車道變為綠燈、次車道變為紅燈,顯示15S;
4、元件清單
如下表所示:
六、安裝與調試
1. 電路安裝
打好板后,按照所畫的PCB板,一一的把各個元件焊接到所制的板上即可。
2. 電路調試
電路調試是利用開發系統、基本測試儀器(萬用表、示波器等),檢查系統硬件中存在的故障。其調試可分為靜態調試與動態調試兩步進行。
靜態調試是在系統未工作時的一種硬件檢測。
第一步:目測。檢查外部的各種元件或者是電路是否有斷點。
第二步:用萬用表測試。先用萬用表復核目測中有疑問的連接點,再檢測各種電源與地線之間是否有短路現象。
第三步:加電檢測。給板加電,檢測所有的插座或是器件的電源端是否符合要求的值。
第四步:是聯機檢查。因為只有用單片機開發系統才能完成對用戶系統的調試。
動態調試
動態調試是在系統工作的情況下發現和排除系統硬件中存在的器件內部故障、器件連接邏輯錯誤等的一種硬件檢查。動態調試的一般方法是由近及遠、由分到合。
由分到合是指首先按邏輯功能將系統硬件電路分為若干塊,當調試電路時,與該元件無關的器件全部從系統中去掉,這樣可以將故障范圍限定在某個局部的電路上。當各塊電路無故障后,將各電路逐塊加入系統中,在對各塊電路功能及各電路間可能存在的相互聯系進行調試。由分到合調試既告完成。
由近及遠是將信號流經的各器件按照距離單片機的邏輯距離進行由近及的分層,然后分層調試。調試時,仍采用去掉無關元件的方法,逐層調試下去,就會定位故障元件了。
3.軟件調試
軟件調試是通過對擁護程序的C編程、連接、執行發現程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。運行程序后,編輯,查看程序是否有邏輯的錯誤。
七、性能測試與分析
系統做好的,進行系統的完整調試。按照所設計的流程圖,用單片機跟蹤模式程序進行調試,配合相關的硬件動作,可以觀察LED的變化和數碼管的顯示是否正確。同樣明確延時時間長短、跳轉位置及調用的程序功能。經過觀察各檢測,我可以看到整個系統的功能都能達到我的設計要求。
八、結論與心得
以往每次做課程設計,都會感覺自己收獲不少。這次單片機課程設計也不例外。做課程設計是為了讓我們對平時學習的理論知識與實際操作相結合,在理論和實驗教學基礎上進一步鞏固已學基本理論及應用知識并加綜合提高,學會將知識應用于實際的方法,提高和解決問題的能力。
第一,在編寫軟件中,在此過程中我更為熟練得掌握匯編語言各種指令的使用方法,掌握了keil軟件的使用。
第二,在軟件調試過程中,使我又一次復習了keil和proteus聯合使用的方法。在調試時曾經遇到數碼管倒計時顯示時間兩位不能同時顯示,后來經過查找資料不斷調試才領悟到原來在顯示的過程中要循環顯示才能使得顯示穩定下來。
第三,在做原理圖和PCB的過程中,使我進一步掌握了proteus軟件的使用方法。再次熟悉了各種作圖工具的應用,而且培養了我在設計原理圖時的一些技巧和好的習慣。
第四,在做實物的過程中,培養了我認真耐心的工作態度。我在做板子過程中,首先由于我的布線比較緊密加上孔和焊盤過小使得在打孔是出現刮斷線以及在焊接的時候出現了虛焊和聯焊等問題,后來我不得不重新再做一次板;二是由于焊接前沒檢查斷線問題,使得我的PCB在加載程序后只有燈亮,而數碼管卻不亮,后來經過我的仔細檢查,原來是在給三級管供電的線有斷,將其連接起來后,就能顯示了,從而得以成功。
總之,通過這次課程設計,我掌握了用單片機設計交通燈的基體方法,增強了我尋找問題,解決問題的能力。培養了我的設計思維,此次課程設計的成功不僅幫助我更好地掌握書本知識,尤其重要的是增強了我的自信,培養了我獨立思考的能力。但是此次設計不中之處是不能實現左右彎燈,不有人行道控制燈,不能進行流量控制。
九、參考文獻
[1]《單片機基礎》.李廣弟、朱月秀、冷祖祁.北京航空航天大學出版社。
[2] 華成英 童詩白, 《模擬電子技術基礎(第四版)》,高等教育出版社。
[3] 康華光,《電子技術基礎 數字部分(第五版)》,高等教育出版社。
[4]《51單片機C語言常用模塊與綜合系統設計實例精講》.于永、戴佳、常江.電子工業出版社。
[5]《單片機課程設計指導》.楊居義.清華大學出版社。
[6]《零基礎學單片機C語言程序設計》.趙建領、薛園國.機械工業出版社。
十、致謝
通過本次畢業設計,我在指導老師鄒清平的精心指導和嚴格要求下,獲得了豐富的理論知識,極大地提高了實踐能力,并對當前電子領域的研究狀況和發展方向有了一定的了解,單片機領域這對我今后進一步學習電子方面的知識有極大的幫助。另外,此次畢業設計還獲得了我們同學的大力支持。在此我忠心感謝鄒清平以及各位同學的指導和支持。在未來的工作和學習中,我將以更好的成績來加報各位老師和同學。
十一 、程序清單
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define time 50000
#define on 0
#define off 1
sbitRED_ZHU = P0^0; //南北 紅燈
sbitYELLOW_ZHU = P0^1;//南北 黃燈
sbitGREEN_ZHU = P0^2; //南北 綠燈
sbitRED_ZHI = P0^3; //東西 紅燈
sbitYELLOW_ZHI = P0^4; //東西 黃燈
sbitGREEN_ZHI = P0^5; //東西 綠燈
sbitP23 = P3^4;
sbitP22 = P3^5; //東西方向數碼管位選
sbitP21 = P3^6;
sbitP20 = P3^7; //南北方向數碼管位選
sbitint0_key = P3^2;
sbitint1_key = P3^3;
voiddisplay1(uchar,uchar);
voiddisplay2(uchar,uchar);
voiddelayms(uint k);
uchartemp1,temp2,temp3,temp4,temp5,temp6;
/*===============倒計時=========================*/
ucharN = 50,Y = 45,Z = 50,M = 75,G = 80,U =80;
ucharC50ms,t0;
ucharseg = 1;
ucharflag=0,led_data_temp;
voidInitialT1(void)
{
TMOD = 0x11; //定時器0,1工作在方式1
TH1 = (65536 - time)/256; //相當于(65536-time)/256;
TL1 = (65536 - time)%256;//初值為time(50ms)
TR1 = 1;//開定時器1中斷
ET1 = 1;//允許定時器1中斷
ET0 = 1;
TH0 = (65536 - time)/256;
TL0 = (65536 - time)%256;
EX0 = 1; //允許外部中斷0
IE0 = 1;//啟動外部中斷0
PX0 = 1;
EX1=1;
IE1=1;
EA = 1; //開總中斷
}
void int0(void) interrupt 0 //外中斷0
{
flag = 0;
led_data_temp = P0;
t0 = 20;
if(!int0_key)
{
delayms(10);
if(!int0_key)
{
while(!int0_key);
TH0 = (65536 - time)/256;
TL0 = (65536 - time)%256;
TR1 = 0;
TR0 = 1;
EX0 = 0;
EX1 = 0;
C50ms = 0;
}
}
}
void int1(void) interrupt 2 //外部中斷1
{
t0=15;
flag = 1;
led_data_temp = P0;
if(((RED_ZHU == 0) && (GREEN_ZHI== 0))||((YELLOW_ZHI == 0)&&(RED_ZHU == 0)))
{
P0 = 0xff;
GREEN_ZHU = 0;
RED_ZHI = 0;
}
else //if((RED_ZHI ==0)&&(GREEN_ZHU == 0))
{
P0 = 0xff;
GREEN_ZHI = 0;
RED_ZHU = 0;
}
if(!int1_key)
{
delayms(10);
if(!int1_key)
{
while(!int1_key);
TH0 = (65536 - time)/256;
TL0 = (65536 - time)%256;
TR1 = 0;
TR0 = 1;
EX0 = 0;
EX1 = 0;
C50ms = 0;
}
}
}
voidISRT0(void) interrupt 1//定時器0中斷服務子程序
{
temp1 = N,temp2 = Y,temp3 = Z,temp4 =M,temp5 = G,temp6 = U;
TH0 = (65536 - time)/256;
TL0 = (65536 - time)%256; //重裝初值time
YELLOW_ZHU=1; //如果在黃5S時進行熄滅黃燈
YELLOW_ZHI=1;
if(!flag)
{
P0 = 0xf6;
}
C50ms++;
if(C50ms > 19)
{
t0--;
C50ms = 0;
}
if(t0 == 0)
{
P0 = led_data_temp;
N = temp1,Y = temp2,Z = temp3,M =temp4,G = temp5,U = temp6;
TR0 = 0;//禁止定時器1中斷
TR1 = 1;//開定時器1中
EX1 = 1;
//EX0 = 1;
C50ms = 0;
return;
}
}
voidISRT1(void) interrupt 3 //定時器1中斷服務子程序
{
TH1 = (65536 - time)/256;
TL1 = (65536 - time)%256; //重裝初值time
C50ms++;
if(C50ms > 19)
{
N--;
M--;
Y--;
Z--;
G--;
U--;
C50ms = 0;
}
}
/*=================延時=======================*/
voidDelay10uS(uchar second)
{
uint i;
while((second--) != 0)
{
for(i = 0;i < 5;i++)
{}
}
}
voiddelayms(uint k)
{
uinti,j;
for(i = 0;i < k;i++)
for(j = 0;j < 120;j++);
}
/*==================數碼管控制========================*/
ucharcode discode[]=
{0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數碼管0-9代碼
voiddisplay1(uchar num1,uchar num2) //控制南數碼管顯示
{
P2=discode[num1]; P21=on; Delay10uS(10);P21=off; //低位
P2=discode[num2]; P20=on; Delay10uS(10);P20=off; //高位
}
voiddisplay2(uchar num3,uchar num4) //控制東西數碼管顯示
{
P2 = discode[num3]; P23 = on;Delay10uS(10); P23 = off; //低位
P2 = discode[num4]; P22 = on;Delay10uS(10); P22 = off; //高位
}
/*===================主函數=================================*/
main()
{
/*=============初始狀態:東西南北都紅燈==================*/
RED_ZHU=on;
RED_ZHI=on;
delayms(1000);
RED_ZHU = off;
RED_ZHI = off;
InitialT1();
while(1)
{
// 初始化計時器
/*=============狀態1:東西綠燈(45s) 南北紅燈(40s)==================*/
/*=============狀態2:東西黃燈(5s) 南北紅燈(5s)=================*/
RED_ZHI = on;
GREEN_ZHU = on;
while(N != 0)
{
if(TR0 == 1)
{
display2(t0/10,t0%10);// 當t0=20時東西、南北紅燈(20s)
display1(t0/10,t0%10);// 當t0=15時東西、南北紅、綠燈交換點亮
}
else
{
if(N == 5)
{
while(Z != 0)
{
if(TR0 == 1)
{
display2(t0/10,t0%10);
display1(t0/10,t0%10);
}
else
{
display1(N/10,N%10); // 東西黃燈(5s)
display2(Z/10,Z%10); // 南北紅燈(5s)
GREEN_ZHU = off;
YELLOW_ZHU = on;
}
}
}
else
{
display1(N/10,N%10); // 東西綠燈(45s)
display2(Y/10,Y%10); // 南北紅燈(40s)
}
}
}
GREEN_ZHU = off;
RED_ZHI = off;
YELLOW_ZHU = off;
P0 = 0xff; //數碼管全關掉
Delay10uS(1);
/*=============狀態3:東西紅燈(20s) 南北綠燈(25s)==================*/
/*=============狀態4:東西紅燈(5s) 南北黃燈(5s)==================*/
GREEN_ZHI = on;
RED_ZHU = on;
while(G != 0)
{
if(TR0 == 1)
{
display2(t0/10,t0%10);
display1(t0/10,t0%10);
}
else
{
if(G == 5)
{
while(U != 0)
{
if(TR0 == 1)
{
display2(t0/10,t0%10);
display1(t0/10,t0%10);
}
else
{
display2(G/10,G%10);// 東西紅燈(5s)
display1(U/10,U%10);// 南北黃燈(5s)
GREEN_ZHI = off;
YELLOW_ZHI = on;
}
}
}
else
{
display2(G/10,G%10);// 東西紅燈(25s)
display1(M/10,M%10);// 南北綠燈(20s)
}
}
}
GREEN_ZHI = off;
RED_ZHU = off;
YELLOW_ZHI = off;
P0 = 0xff;
Delay10uS(1);
/*=====================重新賦值===============================*/
N =50,Y = 45,Z = 50,M = 75,G = 80,U=80;
}
}
物理與電子工程系軟件課程設計成績評定表
專業:電子信息工程 年級:2007 班級:07電本 2 班 成員:賓華
| 課題名稱 | |
| 用AT89S52單片機控制一個交通信號燈系統,晶振采用12MHZ。 設A車道與B車道交叉組成十字路口,A是主道,B是支道。設計要求如下: 用發光二極管模擬交通信號燈,用按鍵開關模擬車輛檢測信號。正常情況下,A、B兩車道輪流放行,A車道放行50s,其中5s用于警告;B車道放行30s,其中5s用于警告。交通繁忙時,交通信號燈控制系統應有手控開關,可人為地改變信號燈的狀態,以緩解交通擁擠狀況。在B 車道放行期間,若A車道有車而B車道無車,按下開關K1 使 A車道放行15s;在 A車道放行期間,若B車道有車而A車道無車,按下開關K1 使B 車道放行15s。有緊急車輛通過時,按下K2開關使 A、B車道均為紅燈,禁行20s。 |
| 該生能在老師的嚴格要求下順利完成整個課程設計工作和論文的撰寫。程序能正確的運行,達到了所要求的所有功能,界面安排合理,論文符合要求。在整個課程設計的過程中,態度端正,學習也比較認真,時間安排也很合理,能基本在每個階段完成相應的任務,做到時間上前緊后松。當然,在這其間也存在一些不足和需要提高的地方。例如,知識面不夠廣,處理問題和運用知識的能力還有待提高,不能積極主動和老師交流工作的進程,希望該生在以后的工作學習中注意這些問題,爭取更大的提高和進步。 建議成績: 指導教師: |
| |
| | | |
作者: 我們毒藥向前看 時間: 2018-7-2 15:25
有沒有原文檔呀
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |