找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10363|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

MSP430單片機(jī)簡易交通信號燈設(shè)計與實現(xiàn)(PCB文件+代碼+文檔)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:451410 發(fā)表于 2018-12-21 11:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本文介紹了一種基于單片機(jī)控制的交通信號燈的控制系統(tǒng)。該系統(tǒng)采用MSP430G2553單片機(jī)為核心,以LED燈作為交通燈紅、黃、綠三色燈用發(fā)光二極管作為模擬交通信號燈,可以模擬各種道路交通燈控制情況。
關(guān)鍵詞:交通信號燈;單片機(jī);LED燈

目錄

1 項目要求
2 項目分析和系統(tǒng)設(shè)計
3 硬件設(shè)計
3.1單片機(jī)選型模塊
3.2 LED流水燈模塊
3.3功能模式選擇模塊
4 軟件設(shè)計
4.1主程序
4.2子程序
5 系統(tǒng)調(diào)試
5.1硬件調(diào)試
5.2程序調(diào)試
5.3聯(lián)合調(diào)試
6 外延
7 項目演練
8 項目總結(jié)
附錄1電路設(shè)計原理圖(參考)
附錄2  PCB設(shè)計原理圖(參考)
附錄3 關(guān)鍵程序(參考)

基于單片機(jī)的簡易交通信號燈設(shè)計與實現(xiàn)
1 項目要求
本項目花樣流水燈采用MSP430單片機(jī)為控制器件,用于交通信號的輸出,此交通信號燈共有12盞燈,分3盞燈一組分別控制四個路口。
1設(shè)計一個交通信號燈控制器,由條主干道匯合成十字路口,在每個入口處設(shè)置紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。
(2)在每次由綠燈亮到紅燈亮的轉(zhuǎn)換過程中,要亮5秒黃燈作為過渡,使行駛中的車輛有時間停到禁行線外。
2 項目分析和系統(tǒng)設(shè)計
本系統(tǒng)分為硬件和軟件模塊。硬件上我們打算在單片機(jī)的不同的i/o中裝上一個LED燈來進(jìn)行對信號燈進(jìn)行控制。
在程序方面,首先對msp430的i/o口進(jìn)行的定義和設(shè)置,然后在去定義了一個delay進(jìn)行延時功能,在用一個switch循環(huán)來使得流水燈不斷的循環(huán)亮滅。
3 硬件設(shè)計
本系統(tǒng)采用MSP430單片機(jī)為控制核心進(jìn)行設(shè)計,該LED燈系統(tǒng)共可分為兩個模塊:單片機(jī)選型模塊和交通信號燈模塊。
   3-1系統(tǒng)原理框圖
3.1單片機(jī)選型模塊
MSP430單片機(jī)是16位的單片機(jī),采用了精簡指令集(RISC)結(jié)構(gòu),只有簡潔的27條內(nèi)核指令,大量的指令則是模擬指令;眾多的寄存器以及片內(nèi)數(shù)據(jù)存儲器都可參加多種運算。這些內(nèi)核指令均為單周期指令,功能強(qiáng),運行的速度快。
3-2 單片機(jī)選型模塊
3.2 交通信號燈模塊
要實現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1~LED8 依次按照交通信號規(guī)則點亮、熄滅,12盞燈就可以按照交通信號燈的方式進(jìn)行閃爍了。在此我們還應(yīng)注意一點,由于人眼的視覺暫留效應(yīng)以及單片機(jī)執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應(yīng)該延時一段時間,否則我們就看不到其效果了。且每一個LED燈于一個電阻串聯(lián)。電阻的作用就是對通過LED燈的電流進(jìn)行一定的限制起到去LED燈進(jìn)行的保護(hù)作用。使得其在高電壓的時候使得LED在電阻的保護(hù)下不會燒壞。
3-3 LED燈接線原理
此圖為共陰極接法,因此當(dāng)LED_RED給高電平“1”時LED_RED亮;當(dāng)LED_RED給低電平“0”時,LED_RED滅。
3-4交通信號燈模塊
如圖3可知此原理圖的LED燈為共陰極的接法,因此我們只要給它一個高電平就能點亮此LED燈。
3.3功能模式選擇模塊
此設(shè)計有6種功能模式可以選擇:
(1)初始化后,執(zhí)行8個LED燈從右至左逐次點亮,每隔0.2s亮一個LED燈,直到8個LED燈全亮,再從左至右依次熄滅直到全滅,以此循環(huán);
(2)當(dāng)按下按鍵后,執(zhí)行8個LED燈從右至左每隔0.2s逐一亮滅,直到點亮最左邊一個燈后再從左至右每隔0.2s逐一亮滅,以此循環(huán);

3-5交通信號燈的功能示意圖
4 軟件設(shè)計4.1主程序
本系統(tǒng)整體工作主要由單片機(jī)程序控制實現(xiàn),其工作過程為:對端口進(jìn)行初始化,在主程序中用不同的端口定義分別來點亮LED燈。再用延時程序來實現(xiàn)每一個LED的亮滅。
程序整體框架如下圖5所示。
              
4-1程序整體框架圖
4.2子程序
一個完整的程序是由一個主程序和若干個子程序組成。在一個加工程序中,如果其中有些加工內(nèi)容完全相同或相似,為了簡化程序,可以把這些重復(fù)的程序段單獨列出,并按一定的格式編寫成子程序。主程序在執(zhí)行過程中如果需要某一子程序,通過調(diào)用指令來調(diào)用該子程序,子程序執(zhí)行完后又返回到主程序,繼續(xù)執(zhí)行后面的程序段。
本系統(tǒng)中所使用的子程序都是比較簡單的,用for語句實現(xiàn)循環(huán)之后再使用延時函數(shù)進(jìn)行延時。

5 系統(tǒng)調(diào)試
本單片機(jī)的交通信號燈系統(tǒng)的設(shè)計分為硬件電路設(shè)計和軟件設(shè)計兩個部分,因此調(diào)試也分成兩部分進(jìn)行調(diào)試。
5.1硬件調(diào)試
主要根據(jù)系統(tǒng)框圖和硬件原理設(shè)計進(jìn)行原理的繪制、各參數(shù)的設(shè)置、電路板的制作,以及元器件的焊接等。具體如下:
5.1.1 各單元電路,確認(rèn)各單元電路鏈接無誤,尤其是關(guān)鍵元器件,一定要接保護(hù)電阻。
(1)選擇合適規(guī)格的元器件,在放置期間前一定要檢查規(guī)格;
(2)關(guān)鍵器件放置:在器件布置方面與其它邏輯電路一樣,應(yīng)把相互有關(guān)的器件盡量放靠近些,這樣可以減少材料,更加美觀。
5.1.2 PCB設(shè)計原則:
在進(jìn)行PCB設(shè)計時,必須遵守PCB設(shè)計的一般原則,并應(yīng)符合要實現(xiàn)的效果設(shè)計的要求。
(1)盡量采用印制電路板,印制電路板不像萬用板一樣會有一定的接觸不好或者焊盤不穩(wěn)和線路連接有問題的情況,印制電路板的制作可防止產(chǎn)生地電位差和元件之間的耦合。
(2)元件面和焊接面應(yīng)采用相互垂直、斜交、或者彎曲走線,避免相互平 導(dǎo)線盡量短,使用45°或者圓弧折線布線,不要使用90°折線,以減小高頻信號的發(fā)射。
5.2程序調(diào)試
在本系統(tǒng)中,主要分為主程序部分、中斷程序、子程序等。在調(diào)試過程中,按照程序功能一項項進(jìn)行調(diào)試,首先確認(rèn)主程序正確,在確認(rèn)其他程序。調(diào)試方法主要跟蹤調(diào)試、斷點調(diào)試等等,可以參考相關(guān)專業(yè)書籍。
5.1.1 CCSV5的打開步驟
  • 右鍵Code Composer Studio v5快捷方式,左鍵打開。會出現(xiàn)如圖6所示界面:
5-1Code Composer Studio v5軟件加載界面

(2)加載完畢之后會有如圖7所示界面出現(xiàn):
5-2Code Composer Studio v5軟件打開界面

(3)選擇Project->Import Existing CCS Eclipse Project,導(dǎo)入程序文件夾中的工程;具體操作如圖8:

5-3Code Composer Studio v5程序?qū)氩襟E圖
5.3聯(lián)合調(diào)試
整個系統(tǒng)的軟硬件都完成后,需要進(jìn)行聯(lián)合調(diào)試,主要是針對系統(tǒng)設(shè)定的功能能否完成和完善進(jìn)行調(diào)試。
調(diào)試步驟:
(1) 將PC和硬件電路通過USB線相連;
(2) 選擇對該工程進(jìn)行編譯鏈接,生成.out文件。然后選擇,將程序下載到實驗板中。程序下載完畢之后,可以選擇   全速運行程序,也可以選擇單步調(diào)試程序,選擇F3查看具體函數(shù)。也可以程序下載之后,按下,軟件界面恢復(fù)到原編輯程序的畫面。再按下實驗板的復(fù)位鍵,運行程序。(調(diào)試方式下的全速運行和直接上電運行程序在時序有少許差別,建議上電運行程序)
1



5-4聯(lián)合調(diào)試效果
6 外延
除交通信號燈的顯示方式之外,我們在以上功能基礎(chǔ)上,還能將其加上語音提示以及時間顯示的效果。

基于單片機(jī)的交通信號燈系統(tǒng)設(shè)計與實現(xiàn),充分運用了LED燈通過MSP430單片機(jī)為控制核心,多個中斷程序控制其亮滅來實現(xiàn)對道路交通的控制,從而使單一的LED燈變得多元化。主要利用的知識點有中斷操作、單片機(jī)原理知識等,并利用C語言編程,最后制作出一個完善的作品,該作品再經(jīng)過一定的功能完善和外觀制作,符合現(xiàn)代化商場和各市場的裝飾,更有利于推廣。
1



附錄1電路設(shè)計原理圖(參考)
附錄2  PCB設(shè)計原理圖(參考)

附錄3 關(guān)鍵程序(參考)
  1. void main()
  2. {

  3. WDTCTL = WDTPW + WDTHOLD; // Stop WDT
  4. BCSCTL1 = CALBC1_1MHZ;
  5. DCOCTL = CALDCO_1MHZ;

  6.   led_init();
  7.   timer_init();
  8. _BIS_SR(GIE); //開總中斷

  9. while(1)
  10. {

  11.                 if((flag1>=0)&&(flag1<=10))
  12.                 {
  13.                   led_red1_h;
  14.                   led_yellow1_l;
  15.                   led_green1_l;

  16.                   led_red2_l;
  17.                   led_yellow2_l;
  18.                   led_green2_h;
  19.                 }

  20.                 if((flag1>10)&&(flag1<=12))
  21.                 {
  22.                                 led_red1_h;
  23.                                 led_yellow1_l;
  24.                                 led_green1_l;

  25.                                 led_red2_l;
  26.                                 led_yellow2_h;
  27.                                 led_green2_l;
  28.                 }

  29.                 if((flag1>12)&&(flag1<=22))
  30.                 {
  31.                                 led_red1_l;
  32.                                 led_yellow1_l;
  33.                                 led_green1_h;

  34.                                 led_red2_h;
  35.                                 led_yellow2_l;
  36.                                 led_green2_l;
  37.                 }

  38.                 if((flag1>22)&&(flag1<=24))
  39.                 {
  40.                                 led_red1_l;
  41.                                 led_yellow1_h;
  42.                                 led_green1_l;

  43.                                 led_red2_h;
  44.                                 led_yellow2_l;
  45.                                 led_green2_l;
  46.                 }

  47. }

  48. }


  49. //--------定時器中斷函數(shù)------------
  50. #pragma vector=TIMER0_A0_VECTOR
  51. __interrupt void Timer_A(void)
  52. {
  53.   //TACCTL0&=~ CCIE; //關(guān)中斷
  54.   static int cc=0;

  55.   cc+=1;


  56.   if(cc==50) //1s=1000ms=20*50 定時
  57.   {
  58.   flag1++;
  59.   cc=0;
  60.   }

  61.   if(flag1>=25)
  62.                 flag1=0;

  63. }
復(fù)制代碼



全部資料51hei下載地址:
基于單片機(jī)的簡易交通信號燈設(shè)計與實現(xiàn).rar (1.39 MB, 下載次數(shù): 92)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:645136 發(fā)表于 2019-11-19 16:34 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

板凳
ID:245004 發(fā)表于 2019-11-19 23:05 | 只看該作者
交通燈程序有非常多的寫法,原帖這種寫法學(xué)習(xí)起來比較簡單明了。作為初學(xué)者完成整個制作已經(jīng)很不錯了,值得學(xué)習(xí)。


后面可以逐步改進(jìn)優(yōu)化程序,例如:


帶上花括號是更規(guī)范,不易出錯;
放在if語句里面是減少系統(tǒng)執(zhí)行無用的過程,因為只有“flag1++;"后才有必要執(zhí)行它;



if應(yīng)該結(jié)合else if ,避免重復(fù)判斷;
如果改成switch語句更簡潔。



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表