版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 交通管理與控制課程設(shè)計(jì)</p><p> 題目:道路交叉口信號燈控制仿真</p><p> 學(xué) 院: 信息工程學(xué)院 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)</p><p> 班 級: 學(xué) 號: </p><p> 學(xué)生姓名:
2、 指導(dǎo)老師: </p><p> 課設(shè)成績: 完成日期:2011年6月18日</p><p><b> 目 錄</b></p><p><b> 1.摘 要3</b></p><p> 2.課程設(shè)計(jì)內(nèi)容和要求3</p
3、><p><b> 3.系統(tǒng)設(shè)計(jì)3</b></p><p> 3.1 設(shè)計(jì)原理3</p><p> 3.2 硬件設(shè)計(jì)部分4</p><p> 3.2.1單片機(jī)最小系統(tǒng)5</p><p> 3.2.2顯示電路5</p><p> 3.3 程序算法描述7
4、</p><p> 3.3.1 延時算法7</p><p> 3.3.2 相位設(shè)計(jì)算法7</p><p> 3.3.3 黃燈閃爍算法8</p><p> 3.3.4 數(shù)碼管顯示算法8</p><p> 4.運(yùn)行結(jié)果及分析8</p><p><b> 5.體會感想
5、8</b></p><p><b> 參考文獻(xiàn)9</b></p><p><b> 任務(wù)分工9</b></p><p><b> 附錄19</b></p><p><b> 1.摘 要</b></p><p&
6、gt; 在城鎮(zhèn)街道的十字交叉路口,為了保證交通秩序和行人安全,一般在每條道路上各有一組紅、黃、綠交通信號燈,其中紅燈亮,表示該條道路禁止通行;黃燈亮表示該條道路上未過停車線的車輛停止通行,已過停車線的車輛繼續(xù)通行;綠燈亮表示該條道路允許通行。交通燈控制電路自動控制十字路口、丁字路口和環(huán)形路口的紅、黃、綠交通燈的狀態(tài)轉(zhuǎn)換,指揮各種車輛和行人安全通行,實(shí)現(xiàn)交通管理的自動化。</p><p> 2.課程設(shè)計(jì)內(nèi)容和要
7、求</p><p><b> 課程設(shè)計(jì)內(nèi)容:</b></p><p> 十字路口的四相位控制;</p><p> 丁字路口的三相位控制;</p><p><b> 環(huán)道相位控制。</b></p><p><b> 課程設(shè)計(jì)基本要求:</b>&l
8、t;/p><p> 使用proteus和keil兩款軟件進(jìn)行模擬設(shè)計(jì);</p><p> 每個進(jìn)口道必須有紅、黃、綠三色交通信號燈;</p><p> 在綠燈變綠燈期間黃燈亮,并要求沒秒閃亮一次;</p><p> 各個進(jìn)口道的通行時間和黃燈亮的時間均可在0~99秒內(nèi)任意設(shè)定;</p><p> 內(nèi)容任選一個,或
9、者全選做。</p><p><b> 3.系統(tǒng)設(shè)計(jì)</b></p><p><b> 3.1 設(shè)計(jì)原理</b></p><p> 本次的交通管理與控制課程設(shè)計(jì),我們?nèi)齻€人主要做的是丁字路口三相位的信號燈控制設(shè)計(jì),包括西進(jìn)口、東進(jìn)口和北進(jìn)口的信號燈設(shè)計(jì)。在查閱書上內(nèi)容和相關(guān)資料后,我們設(shè)計(jì)的三相位包括:</p&g
10、t;<p> 第一相位是西進(jìn)口允許直行禁止左轉(zhuǎn),東進(jìn)口允許直行和右轉(zhuǎn),北進(jìn)口禁止左轉(zhuǎn)和右轉(zhuǎn)。設(shè)計(jì)相位圖如圖1:</p><p><b> 圖1 第一相位圖</b></p><p> 第二相位是西進(jìn)口允許左轉(zhuǎn)和直行,東進(jìn)口禁止直行和右轉(zhuǎn),北進(jìn)口允許右轉(zhuǎn)禁止左轉(zhuǎn)。設(shè)計(jì)相位圖如圖2:</p><p><b> 圖2 第
11、二相位圖</b></p><p> 第三相位是西進(jìn)口禁止直行和左轉(zhuǎn),東進(jìn)口禁止直行允許右轉(zhuǎn),北進(jìn)口允許左轉(zhuǎn)和右轉(zhuǎn)。設(shè)計(jì)相位圖如圖3:</p><p><b> 圖3 第三相位圖</b></p><p> 我們這樣設(shè)計(jì)可以使每個進(jìn)口道都不存在沖突點(diǎn),使得每個進(jìn)口道設(shè)計(jì)最合理,同時也滿足課程設(shè)計(jì)要求。</p><
12、;p> 3.2 硬件設(shè)計(jì)部分</p><p> 本次的交通管理與控制課程設(shè)計(jì),我們利用AT89C51單片機(jī)最小系統(tǒng)作為最主要部分進(jìn)行電路控制,用LED-GREEN作為綠燈,LED-RED作為紅燈,LED-YELLOW作為黃燈,使用7SEG-BCD數(shù)碼管對各個進(jìn)口道的通行時間進(jìn)行控制顯示。其中電路連接時為了使得電路圖看得清晰明了,我們沒有采用傳統(tǒng)的線路連接法,而是使用終端模式。下面對每部分進(jìn)行介紹:<
13、;/p><p><b> 單片機(jī)最小系統(tǒng)</b></p><p> 單片機(jī)最小系統(tǒng)包括AT89C51單片機(jī)芯片,時鐘電路和復(fù)位電路。其中AT89C51單片機(jī)芯片是整個系統(tǒng)的核心,程序燒錄到芯片中,通過芯片控制電路;時鐘電路由一個晶振和兩個電容構(gòu)成,用于產(chǎn)生系統(tǒng)時鐘;復(fù)位電路由一個電容、一個電阻和一個開關(guān)構(gòu)成,可以有上電復(fù)位、手動復(fù)位和看門狗復(fù)位。最小系統(tǒng)電路圖如圖4:
14、</p><p> 圖4 單片機(jī)最小系統(tǒng)圖</p><p><b> 顯示電路</b></p><p> 我們利用LED和7SEG-BCD數(shù)碼管對顯示電路進(jìn)行設(shè)計(jì)。系統(tǒng)總設(shè)計(jì)圖如圖7:</p><p> 圖5 LED示意圖圖6 7SEG-BCD數(shù)碼管示意圖</p><p>&l
15、t;b> 圖5 系統(tǒng)總設(shè)計(jì)圖</b></p><p> 3.3 程序算法描述</p><p> 3.3.1 延時算法</p><p> 我們利用兩函數(shù)來設(shè)計(jì)延時算法,包括微妙函數(shù)和毫秒函數(shù),程序如下:</p><p> void DelayUs2x(uchar t){ //微妙函數(shù)</p><
16、p> while(--t);</p><p><b> }</b></p><p> void DelayMS(uint t){//毫秒函數(shù),延時t毫秒</p><p> while(t--){</p><p> DelayUs2x(245);</p><p> DelayUs
17、2x(245); </p><p> //時間運(yùn)算為:2*(2*245+5)=990us,約等于1 ms</p><p><b> }</b></p><p><b> }</b></p><p> 3.3.2 相位設(shè)計(jì)算法</p><p> 在設(shè)計(jì)交通信號燈函
18、數(shù)時,我們使用了switch…case…選擇分支,并且分6個分支,其中前3個case是用來設(shè)計(jì)相位,舉例說明程序如下:</p><p> case 1://第一相位</p><p><b> //初始化各端口</b></p><p> RED_WEST=1;YELLOW_WEST=1;</p><p> GRE
19、EN_LEFT_WEST=1;GREEN_STRIGHT_WEST=0;</p><p> RED_EAST=1;YELLOW_EAST=1;</p><p> GREEN_RIGHT_EAST=0;GREEN_STRIGHT_EAST=0;</p><p> RED_NORTH=0;YELLOW_NORTH=1;</p><p>
20、GREEN_RIGHT_NORTH=1;GREEN_LEFT_NORTH=1;</p><p> for(i=20;i>=0;i--){ //設(shè)計(jì)第一相位通行20秒</p><p> num_display(i); //調(diào)用顯示函數(shù),從20顯示到0</p><p> DelayMS(1000); //延時1秒</p>&l
21、t;p> if(i==0){ //當(dāng)i的值為0</p><p><b> i=99;</b></p><p> break; </p><p> //退出for循環(huán),避免數(shù)的回繞而無法退出for循環(huán)</p><p><b> }</b></p>&
22、lt;p><b> }</b></p><p> Operation_Type = 4; //轉(zhuǎn)到case4進(jìn)行黃燈閃爍</p><p><b> break;</b></p><p> 3.3.3 黃燈閃爍算法</p><p> switch…case…選擇分支的后3個cas
23、e是用來設(shè)計(jì)3次黃燈閃爍,列舉其中一個,程序如下:</p><p> case 4: //進(jìn)行黃燈閃爍</p><p> if(Flash_Count%2==0) //當(dāng)Flash_Count為偶數(shù)是進(jìn)行閃爍</p><p> num_display(3-Flash_Count/2); //調(diào)用顯示函數(shù),從3顯示到0<
24、;/p><p> GREEN_RIGHT_EAST=1;GREEN_STRIGHT_EAST=1; //初始化各端口</p><p> YELLOW_EAST=~YELLOW_EAST; //YELLOW_EAST取反</p><p> DelayMS(500); //延時0.5秒</p><p> if(
25、++Flash_Count!=7) //if判斷</p><p> return;//如果還未到7則回到case4開頭</p><p> Flash_Count=0;//將Flash_Count復(fù)位</p><p> Operation_Type=2;//轉(zhuǎn)到case2</p><p><b>
26、; break;</b></p><p> 3.3.4 數(shù)碼管顯示算法</p><p> 因?yàn)槲覀冞x用的是7SEG-BCD數(shù)碼管進(jìn)行顯示,其特點(diǎn)是管腳只有4個,可以直接和單片機(jī)芯片的管腳相連。又其是BCD數(shù)碼管,特點(diǎn)是直接給數(shù)碼管便可直接進(jìn)行數(shù)據(jù)顯示。程序描述如下:</p><p> void num_display(uint num){
27、//7SEG-BCD顯示函數(shù)</p><p> uint a,b,c; //定義三個無符號整數(shù)</p><p> a=num/10; //a存的是十位數(shù)</p><p> b=num%10; //b存的是個位數(shù)</p><p><b> c=b;</b></p>
28、<p> a=a<<4; //a左移4位</p><p> c=c|a; //進(jìn)行或運(yùn)算,得到a和b的組合數(shù)</p><p> dataport=c; </p><p> //將c的值給P2端口,高4位的是十位數(shù)a的值,低4位的值是個位數(shù)b的值</p><p><b&g
29、t; }</b></p><p><b> 4.運(yùn)行結(jié)果及分析</b></p><p> 當(dāng)把設(shè)計(jì)好電路,并把程序裝載到單片機(jī)中,啟動電源后可以看到LED燈按照設(shè)計(jì)的相位開始點(diǎn)亮,并且數(shù)碼管也在進(jìn)行數(shù)據(jù)的遞減,完全吻合程序設(shè)計(jì)。</p><p><b> 5.體會感想</b></p>&l
30、t;p> 通過這次課程設(shè)計(jì),我受益匪淺,一方面是對學(xué)過的課內(nèi)知識的溫習(xí)和鞏固,一方面是鍛煉了我的動手能力、分析能力、寫作能力和團(tuán)隊(duì)協(xié)作精神,再一方面是學(xué)會了使用proteus和keil這兩款軟件,為今后的學(xué)習(xí)做好了鋪墊。感謝XX老師,謝謝老師的講課和課設(shè)指導(dǎo)!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 吳兵,李曄等.交通管理與控
31、制[M].北京:人民交通出版社,2010.</p><p> [2] 袁俊泉.單片機(jī)設(shè)計(jì)及其應(yīng)用.西安:西安電子科技大學(xué)出版社,2002.</p><p><b> 任務(wù)分工</b></p><p> 在本次課設(shè)中,我們的分工如下:XX負(fù)責(zé)課設(shè)報告的撰寫,XX和XX負(fù)責(zé)程序和電路圖的設(shè)計(jì)。</p><p><
32、b> 附錄1</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char //類型重定義</p><p> #define uint unsigned int </p><p> #define dataport P2
33、 //定義P2端口</p><p> //定義西進(jìn)口交通燈的端口號</p><p> sbit RED_WEST=P0^0;</p><p> sbit YELLOW_WEST=P0^1;</p><p> sbit GREEN_LEFT_WEST=P0^2;</p><p> sbit GREE
34、N_STRIGHT_WEST=P0^3;</p><p> //定義東進(jìn)口交通燈的端口號</p><p> sbit RED_EAST=P0^4;</p><p> sbit YELLOW_EAST=P0^5;</p><p> sbit GREEN_RIGHT_EAST=P0^6;</p><p> sbi
35、t GREEN_STRIGHT_EAST=P0^7;</p><p> //定義北進(jìn)口交通燈的端口號</p><p> sbit RED_NORTH=P1^0;</p><p> sbit YELLOW_NORTH=P1^1;</p><p> sbit GREEN_RIGHT_NORTH=P1^2;</p><p
36、> sbit GREEN_LEFT_NORTH=P1^3;</p><p> uchar Flash_Count = 0; //閃爍計(jì)數(shù)變量</p><p> Operation_Type = 1; //操作類型變量</p><p> void num_display(uint num) {//7SEG-BCD顯示函數(shù)</p
37、><p> uint a,b,c; //定義三個無符號整數(shù)</p><p> a=num/10; //a存的是十位數(shù)</p><p> b=num%10; //b存的是個位數(shù)</p><p><b> c=b;</b></p><p> a=a<<4
38、; //a左移4位</p><p> c=c|a; //進(jìn)行或運(yùn)算,得到a和b的組合數(shù)</p><p> dataport=c;</p><p> //將c的值給P2端口,高4位的是十位數(shù)a的值,低4位的值是個位數(shù)b的值</p><p><b> }</b></p><
39、p> void DelayUs2x(uchar t){ //延時函數(shù)</p><p> while(--t);</p><p><b> }</b></p><p> void DelayMS(uint t){ //延時t毫秒</p><p> while(t--){</p>&l
40、t;p> DelayUs2x(245);</p><p> DelayUs2x(245); //時間運(yùn)算為:2*(2*245+5)=990us,約等于1 ms</p><p><b> }</b></p><p><b> }</b></p><p> void Traffic
41、_light() //交通信號燈函數(shù)</p><p><b> {</b></p><p><b> uint i;</b></p><p> switch(Operation_Type) { //switch選擇</p><p>
42、 case 1: //第一相位</p><p><b> //初始化各端口</b></p><p> RED_WEST=1;YELLOW_WEST=1;</p><p> GREEN_LEFT_WEST=1;GREEN_STRIGHT_WEST=0;</p><p> R
43、ED_EAST=1;YELLOW_EAST=1;</p><p> GREEN_RIGHT_EAST=0;GREEN_STRIGHT_EAST=0;</p><p> RED_NORTH=0;YELLOW_NORTH=1;</p><p> GREEN_RIGHT_NORTH=1;GREEN_LEFT_NORTH=1;</p><p>
44、 for(i=20;i>=0;i--){ //設(shè)計(jì)第一相位通行20秒</p><p> num_display(i); //調(diào)用顯示函數(shù),從20顯示到0</p><p> DelayMS(1000); //延時1秒</p><p> if(i==0) { //當(dāng)i的值為0</p><p>
45、;<b> i=99;</b></p><p> break;//退出for循環(huán),避免數(shù)的回繞而無法退出for循環(huán)</p><p><b> }</b></p><p><b> }</b></p><p> Operation_Type = 4; //轉(zhuǎn)到
46、case4進(jìn)行黃燈閃爍</p><p><b> break;</b></p><p> case 2: //第二相位</p><p><b> //初始化各端口</b></p><p> RED_WEST=1;YELLOW_WEST=1;</p><p&g
47、t; GREEN_LEFT_WEST=0;GREEN_STRIGHT_WEST=0;</p><p> RED_EAST=0;YELLOW_EAST=1;</p><p> GREEN_RIGHT_EAST=1;GREEN_STRIGHT_EAST=1;</p><p> RED_NORTH=1;YELLOW_NORTH=1;</p><
48、p> GREEN_RIGHT_NORTH=0;GREEN_LEFT_NORTH=1;</p><p> for(i=25;i>=0;i--){ //設(shè)計(jì)第二相位通行25秒</p><p> num_display(i); //調(diào)用顯示函數(shù),從25顯示到0</p><p> DelayMS(1000); //延時1秒<
49、;/p><p><b> if(i==0){</b></p><p><b> i=99;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }&
50、lt;/b></p><p> Operation_Type = 5; //跳到case5進(jìn)行黃燈閃爍</p><p><b> break;</b></p><p> case 3: //第三相位</p><p><b> //初始化各端口</b></p&g
51、t;<p> RED_WEST=0;YELLOW_WEST=1;</p><p> GREEN_LEFT_WEST=1;GREEN_STRIGHT_WEST=1;</p><p> RED_EAST=1;YELLOW_EAST=1;</p><p> GREEN_RIGHT_EAST=0;GREEN_STRIGHT_EAST=1;</p&
52、gt;<p> RED_NORTH=1;YELLOW_NORTH=1;</p><p> GREEN_RIGHT_NORTH=0;GREEN_LEFT_NORTH=0;</p><p> for(i=30;i>=0;i--){ //設(shè)計(jì)第三相位通行30秒</p><p> num_display(i); //調(diào)用顯示函
53、數(shù),從30顯示到0</p><p> DelayMS(1000); //延時1秒</p><p><b> if(i==0){</b></p><p><b> i=99;</b></p><p><b> break;</b></p><p&
54、gt;<b> }</b></p><p><b> }</b></p><p> Operation_Type = 6; //跳到case6進(jìn)行黃燈閃爍</p><p><b> break;</b></p><p> case 4: //進(jìn)行
55、黃燈閃爍</p><p> if(Flash_Count%2==0) //當(dāng)Flash_Count為偶數(shù)是進(jìn)行閃爍</p><p> num_display(3-Flash_Count/2); //調(diào)用顯示函數(shù),從3顯示到0</p><p> GREEN_RIGHT_EAST=1;GREEN_STRIGHT_EAST=1; //初始化各端
56、口</p><p> YELLOW_EAST=~YELLOW_EAST; //YELLOW_EAST取反</p><p> DelayMS(500); //延時0.5秒</p><p> if(++Flash_Count!=7) //if判斷</p><p> return; //如果還未到7
57、則回到case4開頭</p><p> Flash_Count=0; //將Flash_Count復(fù)位</p><p> Operation_Type=2; //轉(zhuǎn)到case2</p><p><b> break;</b></p><p> case 5: <
58、/p><p> if(Flash_Count%2==0)</p><p> num_display(3-Flash_Count/2);</p><p> GREEN_LEFT_WEST=1;GREEN_STRIGHT_WEST=1;</p><p> YELLOW_WEST=~YELLOW_WEST; //YEL
59、LOW_WEST取反</p><p> DelayMS(500);</p><p> if(++Flash_Count!=7) </p><p><b> return;</b></p><p> Flash_Count=0;</p><p> Operation_Type=3;
60、 //轉(zhuǎn)到case3</p><p><b> break;</b></p><p><b> case 6:</b></p><p> if(Flash_Count%2==0)</p><p> num_display(3-Flash_Count/2);</p>&
61、lt;p> GREEN_RIGHT_NORTH=1;GREEN_LEFT_NORTH=1;</p><p> YELLOW_NORTH=~YELLOW_NORTH; //YELLOW_NORTH取反</p><p> DelayMS(500);</p><p> if(++Flash_Count!=7) </p><p>&l
62、t;b> return;</b></p><p> Flash_Count=0;</p><p> Operation_Type=1; //轉(zhuǎn)到case1</p><p><b> break;</b></p><p><b> }</b></p>
63、;<p><b> }</b></p><p> void main()//主函數(shù)</p><p><b> {</b></p><p> while(1) //死循環(huán)</p><p><b> {</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通管理與控制課程設(shè)計(jì)---十字交叉口信號配時設(shè)計(jì)
- 交通信號燈控制課程設(shè)計(jì)
- 交通信號燈控制課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通信號燈控制
- 錯位交叉口信號控制優(yōu)化及交通管理措施分析.pdf
- 信號燈課程設(shè)計(jì)---簡易交通信號燈控制器
- 課程設(shè)計(jì)---交通信號燈控制設(shè)計(jì)
- 數(shù)電交通信號燈課程設(shè)計(jì)---交通信號燈控制器仿真設(shè)計(jì)
- 交通信號燈課程設(shè)計(jì)--交通指揮信號燈控制系統(tǒng)設(shè)計(jì)
- 交通信號燈課程設(shè)計(jì)--交通信號燈控制電路的設(shè)計(jì)
- 交通控制信號燈設(shè)計(jì)
- eda課程設(shè)計(jì)報告交通信號燈控制
- 基于車流量的交叉口信號燈控制系統(tǒng)研究.pdf
- 課程設(shè)計(jì)---交通信號燈控制器
- 課程設(shè)計(jì)---交通信號燈控制器
- eda課程設(shè)計(jì)報告--交通信號燈控制
- 交通信號燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通信號燈控制器
- 基于VISSIM的道路交叉口信號控制算法與仿真研究.pdf
- 交通信號燈控制系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
評論
0/150
提交評論