標題: MSP430單片機簡易交通信號燈設計與實現(PCB文件+代碼+文檔) [打印本頁]
作者: panzeyuuu 時間: 2018-12-21 11:35
標題: MSP430單片機簡易交通信號燈設計與實現(PCB文件+代碼+文檔)
摘要
本文介紹了一種基于單片機控制的交通信號燈的控制系統。該系統采用MSP430G2553單片機為核心,以LED燈作為交通燈紅、黃、綠三色燈用發光二極管作為模擬交通信號燈,可以模擬各種道路交通燈控制情況。
關鍵詞:交通信號燈;單片機;LED燈
目錄
1 項目要求
2 項目分析和系統設計
3 硬件設計
3.1單片機選型模塊
3.2 LED流水燈模塊
3.3功能模式選擇模塊
4 軟件設計
4.1主程序
4.2子程序
5 系統調試
5.1硬件調試
5.2程序調試
5.3聯合調試
6 外延
7 項目演練
8 項目總結
附錄1電路設計原理圖(參考)
附錄2 PCB設計原理圖(參考)
附錄3 關鍵程序(參考)
基于單片機的簡易交通信號燈設計與實現
1 項目要求本項目花樣流水燈采用MSP430單片機為控制器件,用于交通信號的輸出,此交通信號燈共有12盞燈,分3盞燈一組分別控制四個路口。
(1)設計一個交通信號燈控制器,由兩條主干道匯合成十字路口,在每個入口處設置紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。(2)在每次由綠燈亮到紅燈亮的轉換過程中,要亮5秒黃燈作為過渡,使行駛中的車輛有時間停到禁行線外。
2 項目分析和系統設計本系統分為硬件和軟件模塊。硬件上我們打算在單片機的不同的i/o中裝上一個LED燈來進行對信號燈進行控制。
在程序方面,首先對msp430的i/o口進行的定義和設置,然后在去定義了一個delay進行延時功能,在用一個switch循環來使得流水燈不斷的循環亮滅。
3 硬件設計本系統采用MSP430單片機為控制核心進行設計,該LED燈系統共可分為兩個模塊:單片機選型模塊和交通信號燈模塊。
圖3-1系統原理框圖 3.1單片機選型模塊MSP430單片機是16位的單片機,采用了精簡指令集(RISC)結構,只有簡潔的27條內核指令,大量的指令則是模擬指令;眾多的寄存器以及片內數據存儲器都可參加多種運算。這些內核指令均為單周期指令,功能強,運行的速度快。
圖3-2 單片機選型模塊
3.2 交通信號燈模塊
要實現流水燈功能,我們只要將發光二極管LED1~LED8 依次按照交通信號規則點亮、熄滅,12盞燈就可以按照交通信號燈的方式進行閃爍了。在此我們還應注意一點,由于人眼的視覺暫留效應以及單片機執行每條指令的時間很短,我們在控制二極管亮滅的時候應該延時一段時間,否則我們就看不到其效果了。且每一個LED燈于一個電阻串聯。電阻的作用就是對通過LED燈的電流進行一定的限制起到去LED燈進行的保護作用。使得其在高電壓的時候使得LED在電阻的保護下不會燒壞。 圖3-3 LED燈接線原理此圖為共陰極接法,因此當LED_RED給高電平“1”時LED_RED亮;當LED_RED給低電平“0”時,LED_RED滅。
圖3-4交通信號燈模塊圖
如圖3可知此原理圖的LED燈為共陰極的接法,因此我們只要給它一個高電平就能點亮此LED燈。
3.3功能模式選擇模塊此設計有6種功能模式可以選擇:
(1)初始化后,執行8個LED燈從右至左逐次點亮,每隔0.2s亮一個LED燈,直到8個LED燈全亮,再從左至右依次熄滅直到全滅,以此循環;
(2)當按下按鍵后,執行8個LED燈從右至左每隔0.2s逐一亮滅,直到點亮最左邊一個燈后再從左至右每隔0.2s逐一亮滅,以此循環;
0.png (20.11 KB, 下載次數: 94)
下載附件
2018-12-21 17:40 上傳
圖3-5交通信號燈的功能示意圖
4 軟件設計4.1主程序本系統整體工作主要由單片機程序控制實現,其工作過程為:對端口進行初始化,在主程序中用不同的端口定義分別來點亮LED燈。再用延時程序來實現每一個LED的亮滅。
程序整體框架如下圖5所示。
圖4-1程序整體框架圖
4.2子程序一個完整的程序是由一個主程序和若干個子程序組成。在一個加工程序中,如果其中有些加工內容完全相同或相似,為了簡化程序,可以把這些重復的程序段單獨列出,并按一定的格式編寫成子程序。主程序在執行過程中如果需要某一子程序,通過調用指令來調用該子程序,子程序執行完后又返回到主程序,繼續執行后面的程序段。
本系統中所使用的子程序都是比較簡單的,用for語句實現循環之后再使用延時函數進行延時。
5 系統調試本單片機的交通信號燈系統的設計分為硬件電路設計和軟件設計兩個部分,因此調試也分成兩部分進行調試。
5.1硬件調試主要根據系統框圖和硬件原理設計進行原理的繪制、各參數的設置、電路板的制作,以及元器件的焊接等。具體如下:

5.1.1 各單元電路,確認各單元電路鏈接無誤,尤其是關鍵元器件,一定要接保護電阻。(1)選擇合適規格的元器件,在放置期間前一定要檢查規格;
(2)關鍵器件放置:在器件布置方面與其它邏輯電路一樣,應把相互有關的器件盡量放靠近些,這樣可以減少材料,更加美觀。
5.1.2 PCB設計原則:
在進行PCB設計時,必須遵守PCB設計的一般原則,并應符合要實現的效果設計的要求。
(1)盡量采用印制電路板,印制電路板不像萬用板一樣會有一定的接觸不好或者焊盤不穩和線路連接有問題的情況,印制電路板的制作可防止產生地電位差和元件之間的耦合。
(2)元件面和焊接面應采用相互垂直、斜交、或者彎曲走線,避免相互平 導線盡量短,使用45°或者圓弧折線布線,不要使用90°折線,以減小高頻信號的發射。
5.2程序調試在本系統中,主要分為主程序部分、中斷程序、子程序等。在調試過程中,按照程序功能一項項進行調試,首先確認主程序正確,在確認其他程序。調試方法主要跟蹤調試、斷點調試等等,可以參考相關專業書籍。
5.1.1 CCSV5的打開步驟
- 右鍵Code Composer Studio v5快捷方式,左鍵打開。會出現如圖6所示界面:
圖5-1Code Composer Studio v5軟件加載界面
(2)加載完畢之后會有如圖7所示界面出現:
圖5-2Code Composer Studio v5軟件打開界面
(3)選擇Project->Import Existing CCS Eclipse Project,導入程序文件夾中的工程;具體操作如圖8:
圖5-3Code Composer Studio v5程序導入步驟圖
5.3聯合調試整個系統的軟硬件都完成后,需要進行聯合調試,主要是針對系統設定的功能能否完成和完善進行調試。
調試步驟:
(1) 將PC和硬件電路通過USB線相連;

(2) 選擇

對該工程進行編譯鏈接,生成.out文件。然后選擇

,將程序下載到實驗板中。程序下載完畢之后,可以選擇 全速運行程序,也可以選擇

單步調試程序,選擇F3查看具體函數。也可以程序下載之后,按下

,軟件界面恢復到原編輯程序的畫面。再按下實驗板的復位鍵,運行程序。(調試方式下的全速運行和直接上電運行程序在時序有少許差別,建議上電運行程序)
1
圖5-4聯合調試效果圖
6 外延除交通信號燈的顯示方式之外,我們在以上功能基礎上,還能將其加上語音提示以及時間顯示的效果。
基于單片機的交通信號燈系統設計與實現,充分運用了LED燈通過MSP430單片機為控制核心,多個中斷程序控制其亮滅來實現對道路交通的控制,從而使單一的LED燈變得多元化。主要利用的知識點有中斷操作、單片機原理知識等,并利用C語言編程,最后制作出一個完善的作品,該作品再經過一定的功能完善和外觀制作,符合現代化商場和各市場的裝飾,更有利于推廣。
1
附錄1電路設計原理圖(參考)附錄2 PCB設計原理圖(參考)
附錄3 關鍵程序(參考)- void main()
- {
-
- WDTCTL = WDTPW + WDTHOLD; // Stop WDT
- BCSCTL1 = CALBC1_1MHZ;
- DCOCTL = CALDCO_1MHZ;
-
- led_init();
- timer_init();
- _BIS_SR(GIE); //開總中斷
-
- while(1)
- {
-
- if((flag1>=0)&&(flag1<=10))
- {
- led_red1_h;
- led_yellow1_l;
- led_green1_l;
-
- led_red2_l;
- led_yellow2_l;
- led_green2_h;
- }
-
- if((flag1>10)&&(flag1<=12))
- {
- led_red1_h;
- led_yellow1_l;
- led_green1_l;
-
- led_red2_l;
- led_yellow2_h;
- led_green2_l;
- }
-
- if((flag1>12)&&(flag1<=22))
- {
- led_red1_l;
- led_yellow1_l;
- led_green1_h;
-
- led_red2_h;
- led_yellow2_l;
- led_green2_l;
- }
-
- if((flag1>22)&&(flag1<=24))
- {
- led_red1_l;
- led_yellow1_h;
- led_green1_l;
-
- led_red2_h;
- led_yellow2_l;
- led_green2_l;
- }
-
- }
-
- }
-
-
- //--------定時器中斷函數------------
- #pragma vector=TIMER0_A0_VECTOR
- __interrupt void Timer_A(void)
- {
- //TACCTL0&=~ CCIE; //關中斷
- static int cc=0;
-
- cc+=1;
-
-
- if(cc==50) //1s=1000ms=20*50 定時
- {
- flag1++;
- cc=0;
- }
-
- if(flag1>=25)
- flag1=0;
-
- }
復制代碼
0.png (31.3 KB, 下載次數: 82)
下載附件
2018-12-21 17:36 上傳
0.png (8.33 KB, 下載次數: 103)
下載附件
2018-12-21 17:36 上傳
全部資料51hei下載地址:
基于單片機的簡易交通信號燈設計與實現.rar
(1.39 MB, 下載次數: 92)
2018-12-21 11:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: ADtt 時間: 2019-11-19 16:34
感謝分享
作者: bh2030693 時間: 2019-11-19 23:05
交通燈程序有非常多的寫法,原帖這種寫法學習起來比較簡單明了。作為初學者完成整個制作已經很不錯了,值得學習。
后面可以逐步改進優化程序,例如:
191119_temp1.png (8.5 KB, 下載次數: 92)
下載附件
2019-11-19 22:55 上傳
帶上花括號是更規范,不易出錯;
放在if語句里面是減少系統執行無用的過程,因為只有“flag1++;"后才有必要執行它;
191119_temp2.png (29.6 KB, 下載次數: 91)
下載附件
2019-11-19 22:56 上傳
if應該結合else if ,避免重復判斷;
如果改成switch語句更簡潔。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
日本一道本
|
国产精品久久久久久久久久妞妞
|
成人精品一区二区三区
|
欧美一区二区三区在线
|
www.国产日本
|
久久精品91
|
久久精品中文字幕
|
日韩精品一区二区三区视频播放
|
国内久久精品
|
日韩和的一区二在线
|
国产一区二区三区四区五区3d
|
色橹橹欧美在线观看视频高清
|
韩国精品在线
|
日韩欧美不卡
|
久久久久成人精品免费播放动漫
|
五月天综合网
|
一区二区三区视频免费看
|
国产精品久久久久久久久久软件
|
国产精品免费观看
|
91精品国产综合久久婷婷香蕉
|
国产精品欧美一区二区
|
九九热精品视频
|
国产成人精品一区二
|
一本色道久久综合亚洲精品高清
|
亚洲成人一区二区
|
91色网站|
久草热8精品视频在线观看
午夜伦4480yy私人影院
|
亚洲小视频|
国产精品我不卡
|
日韩中文一区
|
欧美v日韩|
国产在线不卡
|
日韩欧美二区
|
九九亚洲|
日日骑|
99精品视频一区二区三区
|
亚洲欧美国产毛片在线
|
亚洲精品一区二区三区蜜桃久
|
国产小u女发育末成年
|
久久丁香
|
午夜爽爽爽男女免费观看影院
|