|
單片機課程設計報告
專 業: 電氣工程及其自動化
班 級: 電1401-2
學 號: 20142536
姓 名: 劉鑫
指導教師: 何峰
完成日期: 2016/9/9
0.png (64.9 KB, 下載次數: 93)
下載附件
2016-9-24 15:21 上傳
所有資料打包下載:
http://www.zg4o1577.cn/bbs/dpj-55650-1.html
一、課程設計的目的
1.學會用AD軟件繪制電路原理圖、線路板圖,通過畫圖鞏固已學的專業 知識,學習電路設計方法,提高動手能力,培養創新意識。
- 練習51單片機程序的編寫
- 掌握相關軟件(AD,keil,Proteus ISIS,韋福6000)的使用
二、課程設計的主要內容
1.課程設計題目:交通燈的遠程控制
2.主要內容:本課題主要從單片機的應用上來實現十字路口交通燈智能化的管理,用以控制過往車輛的正常運作。設計采用AT89C51單片機的最小系統,通過燒錄程序實現。設計方法有查閱法(通過手機和網絡知識進行概述)、實驗法(在實驗室里做出單片機口的交通燈控制系統)、對比法(單片機口的交通燈控制系統技術與其他技術進行比較)。采用MCS-51系列單片機AT89C51為中心器件來設計交通燈控制電路,實現了的功能包括:(注S2,S3,S4為開關,具體接法見原理圖)
(1)定時器控制(在程序中加定時器中斷)
(2)開關S2為開始開關,交警按下開關S2交通燈開始工作
(3)開關S3為緊急停車開關,當十字路口發生交通事故時,交警按下S3,東西南北四個方向全變為紅燈,車全部停下,待交通事故處理完畢按開始開關恢復通信
(4)開關S4控制南北方向通行,東西方向停止通行
(5)開關S5控制東西方向通行,南北方向停止通行
三、設計方案
1.設計思想 基于對交通燈功能的認識和對51單片機的掌握,對交通燈實現手動控制可通過設置外部中斷的方式做到,交通燈紅黃綠燈交替閃爍可設置延遲函數和定時器中斷。以上是對系統軟件的描述,至于硬件部分較簡單,基于51單片機的最小系統,時鐘電路,復位電路,AT89C51單片機,加上東南西北四個方向各3盞燈。每個方向三盞燈依次為紅黃綠。這12盞燈與單片機P1口相應引腳相連可通過程序點亮。
2.設計說明
交通燈是城市交通有序、安全、快速運行的重要保障,而保障交通燈信號燈正常工作就成了保障交通有序、安全、快速運行的關鍵。 交通燈遠程控制系統的設計可以在專業技能方面得到一個很大的提高。同時在制板,畫板,排布等方面可以得到全面的思維鍛煉并熟練技巧。因此,研究交通燈有著十分重要的意義。基于所學知識完全可以實現交通燈的遠程控制,想法切實可行。同時本次課設做的交通燈功能較完善,除拐彎燈,倒計時外與平時用的交通燈沒什么差別。
3.方案選擇
能實現此電路的方法很多,我們根據實際將范圍定在以下幾個比較切合我們的方案中。
第一種方案:采用數字電子技術實現。用基本的555芯片(利用單穩態實現定時),計數芯片(如74LS163,74LS160等)完成計時功能,控制電路芯片,譯碼芯片(如74LS138)等基本芯片,結合電阻,電容等基本元件,通過邏輯電路實現交通燈的功能。
第二種方案:使用單片可編程來實現交通燈的功能。利用單片機的外圍擴展,顯示電路構成基本硬件。然后編程實現對定時,控制,顯示電路的控制,然后調試,完成設計。
結合實際情況,根據畢業設計任務書的要求,經過討論和論證,最終一致選
用第二種方案的設計思路對交通燈控制系統進行設計。
整個系統的構成以AT89C51單片機為核心,由I/O口擴展,LED燈,緊急情況中斷電路還有復位電路等組成。
單片機作為整個硬件系統的核心,它既是協調整機工作的控制器,又是數據處理器。它由單片機、時鐘電路、復位電路等組成。
行車方向指示采用LED發光二極管,可有紅、綠兩種顏色指示放行與禁止,黃燈作為紅綠轉換的提示,形象直觀。
行人通行指示也同樣采用LED發光二極管,用紅、綠兩種顏色指示放行與禁止,黃燈作為紅綠轉換的提示,形象直觀,簡潔明了,更方便控制。
按鍵控制臺,可供警察在室內實時監視交通狀況。通過按鍵可設置緊急情況發生時的交通燈狀態控制。本次設計用了三個中斷開關,(1)開關S3為緊急停車開關,當十字路口發生交通事故時,交警按下S3,東西南北四個方向全變為紅燈,車全部停下,待交通事故處理完畢按開始開關恢復通信(2)開關S4控制南北方向通行,東西方向停止通行(3)開關S5控制東西方向通行,南北方向停止通行;另外還設計了一個開關用于打開交通燈或者恢復交通燈的正常工作。
系統所需硬件清單表
元件名稱
| 數量
| 備注
| 單片機
| 1
| AT89C51
| 晶振
| 1
| 12Mhz
| 電容
| 3
| 150pf 10uf
| 電解電容
| 1
| 10uf
| 電阻
| 14
| 220歐 10k歐
| 復位開關
| 5
|
| 發光二極管
| 紅燈 4
黃燈 4
綠燈 4
|
|
采用12MHZ的晶振構成時鐘電路為單片機提供時鐘信號,在單片機系統里晶振提供的時鐘頻率越高,那么單片機運行的速度越快,單片機的指令都是建立在時鐘頻率上。
一個系統共用一個晶振,便于同步,本系統晶振如下所示。
1.001.jpg (14.2 KB, 下載次數: 94)
下載附件
2016-9-24 15:18 上傳
2.復位電路設計
復位電路通常采用上電自動復位和按鈕復位兩種方式。
通常在復位引腳RST上鏈接一個電容到VCC再接一個電阻到GND,由此形成一個RC充放電回路保證單片機上電時RST腳上有足夠的的時間對高電平進行復位,隨后回歸到低電平進入正常工作狀態,電阻電容取典型值10k和10uf。按鍵復位就是當開關按下后電容放電,RST被拉到高電平。
本系統復位電路如下圖
1.002.jpg (14.01 KB, 下載次數: 86)
下載附件
2016-9-24 15:18 上傳
3.LED燈模擬十字路口交通燈電路圖設計
LED電路如下。
1.003.jpg (21.48 KB, 下載次數: 97)
下載附件
2016-9-24 15:18 上傳
4.系統原理圖
1.004.jpg (27.27 KB, 下載次數: 106)
下載附件
2016-9-24 15:18 上傳
系統PCB圖
1.005.jpg (27.22 KB, 下載次數: 84)
下載附件
2016-9-24 15:18 上傳
工作原理:
(1)開關S2為開始開關,交警按下開關S2交通燈開始工作
(2)按下S2后交通燈開始工作。由89C51單片機的P0口顯示紅、綠、黃燈的亮滅情況;綠、黃、紅時間分別為20秒、5秒、20秒循環。 南北紅,東西綠,紅燈20秒后然后滅。 南北黃,東西黃,黃燈閃動5秒。 南北綠,東西紅,綠燈20秒后,重新開始循環。
(3)開關S3為緊急停車開關,當十字路口發生交通事故時,交警按下S3,東西南北四個方向全變為紅燈,車全部停下,待交通事故處理完畢按開始開關恢復通信
(4)開關S4控制南北方向通行,東西方向停止通行,即按下S4后南北方向均為綠燈,東西方向均為紅燈,通過S2恢復
(5)開關S5控制東西方向通行,南北方向停止通行 即按下S5后東西方向均為綠燈,南北方向均為紅燈,通過S2恢復
五、軟件系統設計
單片機的應用由硬件軟件組成,我們需要編寫交通燈點亮的程序,來實現發光二極管按照要求亮滅,為了實現想要的功能,在程序編寫過程中我們加入了一個定時器中斷,四個開關按鍵實現手動控制。
1.軟件流程圖
#include
#define uint unsigned int
#define uchar unsigned char
sbit RED_A = P0^0;
sbit YELLOW_A = P0^1;
sbit GREEN_A = P0^2;
sbit RED_B = P0^3;
sbit YELLOW_B = P0^4;
sbit GREEN_B = P0^5;
sbit KEY=P3^2;
sbit nbkey=P1^0;
sbit dxkey=P1^1;
uchar Time_Count = 0,Flash_Count = 0,Operation_Type = 1;
void main()
{
TMOD = 0x01;
IE = 0x82;
EA =1;
EX1=1;
IT1=1;
TR0=0;
EX0 = 1;
PX0=1;
TCON = 0x01;
nbkey=1;
dxkey=1;
while(1)
{ if(nbkey==0) //nbkey表示控制只南北方
向通行的按鍵,即按鍵S4
{ TR0=0;
GREEN_A=1;
YELLOW_A=1;
YELLOW_B=1;
GREEN_B=0;
RED_A=0;
RED_B=1;
}
if(dxkey==0) //nbkey表示控制只東西方
向通行的按鍵,即按鍵S5
{ TR0=0;
GREEN_A=0;
YELLOW_A=1;
YELLOW_B=1;
GREEN_B=1;
RED_A=1;
RED_B=0;
}
}
}
void External_Interrupt_0() interrupt 0 //外部中斷0,對應開始按
鈕S2,交通燈開始工作
{
TR0=1;
}
void External_Interrupt_1() interrupt 2 //外部中斷1,對應緊急按
鈕S3,全亮紅燈
{ TR0=0;
P0=0xf6;
}
void T0_INT() interrupt 1 //定時器控制LED燈按要求
計時循環點亮
{
TH0 = -20000/256;
TL0 = -20000%256;
switch(Operation_Type)
{
case 1:
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
if(++Time_Count != 100) return;
Time_Count=0;
Operation_Type = 2;
break;
case 2:
if(++Time_Count !=20) return;
Time_Count=0;
YELLOW_A=!YELLOW_A;
GREEN_A=0;
if(++Flash_Count != 10) return;
Flash_Count=0;
Operation_Type = 3;
break;
case 3:
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
if(++Time_Count != 100) return;
Time_Count=0;
Operation_Type = 4;
break;
case 4:
if(++Time_Count != 20) return;
Time_Count=0;
YELLOW_B=!YELLOW_B;
GREEN_B=0;
if(++Flash_Count !=10)
return;
Flash_Count=0;
Operation_Type = 1;
break;
}
}
附 仿真圖
1.S2未按下之前的狀態,交通燈未開始工作
1.076.jpg (23.12 KB, 下載次數: 105)
下載附件
2016-9-24 15:18 上傳
1.077.jpg (22.37 KB, 下載次數: 80)
下載附件
2016-9-24 15:18 上傳
3.S3按下,全為紅燈
1.078.jpg (22.24 KB, 下載次數: 76)
下載附件
2016-9-24 15:18 上傳
4.S4按下,南北方向通行
1.079.jpg (20.77 KB, 下載次數: 93)
下載附件
2016-9-24 15:18 上傳
5.S5按下,東西方向通行
1.080.jpg (21.24 KB, 下載次數: 74)
下載附件
2016-9-24 15:18 上傳
總結及心得體會
本次課設很有收獲,自己的獨立思考能力,動手能力和發現問題,解決問題的能力都有所提高。
在完成課設的過程中我們熟悉了完成一個作品需要的步驟。選定題目之后,我們進行了構思,對相關電路進行了設計,制作了一個操作流程,完成了自己的初步設計之后我們上網查閱了相關的模塊,并對每個模塊進行了分析,取長補短,將處理的比較好的部分加以升華用于我們的課設。通過分析和比較,加上自己的設計,我們最終明確了自己的設計思路,以及每一部分需要改進的地方。然后,我們著手開始課設的制作,硬件方面我們按所需基于AT89C51單片機的最小系統設計了交通燈電路,并用AD軟件進行了原理圖和PCB板的設計,確認硬件電路無誤后我們進行了軟件部分的設計,通過4個開關實現交通燈的手動控制,為此我們在程序里加入了外部中斷。在程序的編寫過程中我們用了韋福6000和keil編譯軟件對程序進行編譯,編譯無誤之后我們用Proteus ISIS進行了仿真,看是否符合我們需要的現象。如果與要求不符,返回編譯軟件繼續進行程序的編譯和調試。在程序編寫和調試的過程中,我們進一步鍛煉了自己編寫程序的能力,更好的運用C51語言控制單片機實現一定的功能。在調試過程中我們也遇到了許多問題,程序改了又改,由于功能較多,得協調各個中斷。在編寫調試過程中由于編寫不正確,往往實現這個功能,那個功能沒了,不過還好,最后這些問題都解決了。最后,通過努力,我們編寫的程序實現了要求的功能,仿真也符合要求,AD和PCB 制作也弄好之后,我們開始進行報告的撰寫,報告的撰寫也挺重要的,因為他是對所做成果的一個總結。
通過這次課設我不僅熟悉了做一件產品的具體流程,還進一步鞏固了課上所學的理論知識,并將理論轉化為實踐,即將知識用活,致力于實際應用。硬件制作中,我進一步熟悉了常用元件的用途,接法,相關參數的意思。在軟件,即程序的編寫調試過程中,進一步掌握了用C51語言實現單片機對外部電路的控制。同時,進行程序編寫了進一步熟練掌握了程序編譯軟件韋福6000和keil的使用。在進行硬件電路設計過程中學會用AD進行硬件電路的設計。在仿真過程中,學會用Proteus ISIS軟件進行仿真。這些軟件對于以后的學習都會很有幫助,熟練掌握他們是我們應該做到的。
|
|