《單片機原理及應用》課程設(shè)計-基于51單片機的交通燈模擬系統(tǒng)設(shè)計_第1頁
《單片機原理及應用》課程設(shè)計-基于51單片機的交通燈模擬系統(tǒng)設(shè)計_第2頁
《單片機原理及應用》課程設(shè)計-基于51單片機的交通燈模擬系統(tǒng)設(shè)計_第3頁
《單片機原理及應用》課程設(shè)計-基于51單片機的交通燈模擬系統(tǒng)設(shè)計_第4頁
《單片機原理及應用》課程設(shè)計-基于51單片機的交通燈模擬系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《單片機原理及應用》課程設(shè)計-基于51單片機的交通燈模擬系統(tǒng)設(shè)計

《單片機原理及應用》課程設(shè)計設(shè)計題目:基于51單片機的交通燈模擬系統(tǒng)設(shè)計

院系:物理工程學院

專業(yè):電子信息科學與技術(shù)

班級:2024級

班級:電信1班

指導老師:

學號:

姓名:

完成時間:2024-10-26

第一部分:設(shè)計思路

國內(nèi)的交通燈一般設(shè)在十字路門,在醒目位置用紅、綠、黃三種顏色的指示燈。加上一個倒計時的顯示計時器來掌握行車。一般來說,東西方向和南北方向的車流量是不同的,這就要求南北方向和東西方向要求車輛能通行的時間應當是不一樣的。本系統(tǒng)的設(shè)計是基于東西方向為主干道,南北方向為支干道來設(shè)計的。

假設(shè)剛開頭允許東西方向通車(此時東西方向綠燈亮其它滅),南北方向禁止通車(此時南北方向紅燈亮其它滅)。這我們稱為第一階段。其次階段東西方向綠燈滅,黃燈亮,此時南北方向依舊為紅燈。第三階段,東西方向黃燈滅,紅燈亮,南北方向紅燈滅,綠燈亮。第四階段東西方向依舊紅燈,南北方向綠燈滅,黃燈亮。此時又轉(zhuǎn)為第一階段,如此循環(huán)往復,便可掌握十字路口的車輛通行。此外我還考慮到了兩個特別狀況,當警車或消防車通過時,此時應當只能允許一個方向通車,本系統(tǒng)設(shè)計了兩個獨立按鍵,可掌握只允許東西方向通車或南北方向通車。

其次部分:系統(tǒng)硬件選擇

由于是基于51系列單片機的交通燈模擬系統(tǒng)設(shè)計,所以我選用了宏晶公司的STC89C52型號單片機,這款單片機性價比不錯,而且買的時候贈送了許多資料,里面的老師講解特別具體,讓我受益良多。由于我設(shè)計交通燈主要是使用到了LED和數(shù)碼管,所以我這里簡潔介紹一下它的引腳接口。LED1~LED8是接在了P1.0~P1.7引腳,低電平有效。數(shù)碼管的位選是P2.7引腳。段選是P2.6引腳。數(shù)碼管顯示是

由P0口掌握。本次我選用的是LED1、LED2、LED3分別代表東西向紅、黃、綠,LED5、LED6、LED7分別代表南北向紅、黃、綠。數(shù)碼管選擇第三第四位表示南北向倒計時,第七第八位代表東西向倒計時。下面是原理圖:

第三部分:系統(tǒng)流程圖

開頭

第四部分:系統(tǒng)軟件設(shè)計源碼:#include

#defineuintunsignedint

#defineucharunsignedchar

voiddelay(uinti);

voiddisplaydx(uinti);

voiddisplaynb(uinti);

voidkey_ss2();

voidkey_ss3();

sbitwei=P2^7;

sbitduan=P2^6;

sbitLED1=P1^0;

sbitLED2=P1^1;

sbitLED3=P1^2;

sbitLED4=P1^3;

sbitLED5=P1^4;

sbitLED6=P1^5;

sbitLED7=P1^6;

sbitLED8=P1^7;

sbitkey_s2=P3^0;

sbitkey_s3=P3^1;

sbitkey_s4=P3^2;

sbitkey_s5=P3^3;

ucharcodetable={

0x3F,//"0"

0x06,//"1"

0x5B,//"2"

0x4F,//"3"

0x66,//"4"

0x6D,//"5"

0x7D,//"6"

0x07,//"7"

0x7F,//"8"

0x6F,//"9"

0x77,//"A"

0x7C,//"B"

0x39,//"C"

0x5E,//"D"

0x79,//"E"

0x71,//"F"

0x76,//"H"

0x38,//"L"

0x37,//"n"

0x3E,//"u"

0x73,//"P"

0x5C,//"o"

0x40,//"-"

0x00,//熄滅

0x00//自定義

};voidmain()

{

uinti=0,j=50,k=55;

TR1=1;

TMOD=0x10;

TH1=0x4b;

TL1=0xfc;

while(1)

{

j=50,k=55;

while(j>0)//第一階段東西綠燈南北紅燈{

key_ss2();

key_ss3();

LED1=1;

LED2=1;

LED3=0;

LED4=1;

LED5=0;

LED6=1;

LED7=1;

LED8=1;

displaydx(j);

displaynb(k);

if(TF1==1)

{

TH1=0x4b;

TL1=0xfc;

TF1=0;

i++;

}

if(i==50)

{

i=0;

j--;

k--;

}

}

j=5;

k=5;

while(j>0)//其次階段東西黃燈南北紅燈{

key_ss2();

key_ss3();

LED1=1;

LED2=0;

LED3=1;

LED4=1;

LED5=0;

LED6=1;

LED7=1;

LED8=1;

displaydx(j);

displaynb(k);

if(TF1==1)

{

TH1=0x4b;

TL1=0xfc;

TF1=0;

i++;

}

if(i==50)

{

i=0;

j--;

k--;

}

}

//第三階段東西紅燈南北綠燈

k=30;

j=35;

while(k>0)

{

key_ss2();

key_ss3();

key_ss2();

LED1=0;

LED2=1;

LED3=1;

LED4=1;

LED5=1;

LED6=1;

LED7=0;

LED8=1;

displaydx(j);

displaynb(k);

if(TF1==1)

{

TH1=0x4b;

TL1=0xfc;

TF1=0;

i++;

}

if(i==50)

{

i=0;

j--;

k--;

}

}

k=5;

j=5;

//第四階段東西紅燈南北黃燈

while(k>0)

{

key_ss2();

key_ss3();

key_ss2();

LED1=0;

LED2=1;

LED3=1;

LED4=1;

LED5=1;

LED6=0;

LED7=1;

LED8=1;

displaydx(j);

displaynb(k);

if(TF1==1)

{

TH1=0x4b;

TL1=0xfc;

TF1=0;

i++;

}

if(i==50)

{

i=0;

j--;

k--;

}

}

}

}

voiddelay(uinti){

uintz,y;

z=i;

for(;z>0;z--)

for(y=120;y>0;y--);}

voiddisplaydx(uinti){

P0=0xff;

wei=1;

P0=0x7f;

wei=0;

duan=1;

P0=table;duan=0;

delay(2);

P0=0xff;

wei=1;

P0=0xbf;

wei=0;

duan=1;

P0=table;duan=0;

delay(2);

}

voiddisplaynb(uinti){

P0=0xff;

wei=1;

P0=0xf7;

wei=0;

duan=1;

P0=table;duan=0;

delay(2);

P0=0xff;

wei=1;

P0=0xfb;

wei=0;

duan=1;

P0=table;duan=0;

delay(2);

}

voidkey_ss2()

{

if(key_s2==0)

{

delay(5);

if(key_s2==0)

{

while(!key_s2);

while(1)

{

LED1=1;

LED2=1;

LED3=0;

LED4=1;

LED5=0;

LED6=1;

LED7=1;

LED8=1;

wei=1;

P0=0xff;

wei=0;

}

}

}

}

voidkey_ss3()

{

if(key_s3==0)

delay(5);

if(key_s3==0)

{

while(!key_s3);

while(1)

{

LED1=0;

LED2=1;

LED3=1;

LED4=1;

LED5=1;

LED6=1;

LED7=0;

LED8=1;

wei=1;

P0=0xff;

wei=0;

}

}

}

第五部分:試驗結(jié)果及分析

試驗結(jié)果特別正確,模擬交通燈的狀況特別符合現(xiàn)實。剛開頭東西綠燈亮50秒,南北紅燈亮55秒,然后綠燈滅,黃燈亮。再然后黃燈亮五秒,東西黃燈滅,紅燈亮35秒,南北紅燈滅,綠燈亮30秒。然后南北綠燈滅,黃燈亮。然后黃燈亮5秒,南北黃燈滅,紅燈亮55秒,東西綠燈亮50秒.如此循環(huán)往復。按下S2鍵,只允許東西向通車,按下S3鍵,只允許南北向通車。

第六部分:試驗心得體會

本系統(tǒng)就是充分利用了AT89C51芯片的I/O引角。系統(tǒng)統(tǒng)采納MSC-51系列單片機為中心器件來設(shè)計交通燈掌握器,實現(xiàn)了能依據(jù)實際車流量通過單片機芯片的P1口掌握紅、黃、綠燈的燃亮與熄滅;P0口外接數(shù)碼管來顯示各個信號燈的時間。系統(tǒng)設(shè)計簡便、有用性強、操作簡潔、程序設(shè)計簡便。系統(tǒng)不足之處不能掌握車的左、右轉(zhuǎn)、以及自動依據(jù)車流轉(zhuǎn)變紅綠燈時間等。這是由于本身地理位子以及車流量狀況所定,假如有需要可以設(shè)計擴充原系統(tǒng)來實現(xiàn)。

通過這次課程設(shè)計,我得到了一次用所學學問與技能分析和解決問題的珍貴的熬煉機會,使我深刻鄰會了單片機的基本原理和單片機應用系統(tǒng)開發(fā)的過程。在常用編程設(shè)計思路技巧的把握方面都向前邁了一大步,為日后成為合格的應用型人才打下良

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論