標題: 基于單片機交通顯示系統(tǒng)源代碼與Proteus仿真 [打印本頁]
作者: 柴新宇 時間: 2020-12-30 22:51
標題: 基于單片機交通顯示系統(tǒng)源代碼與Proteus仿真
由單片機,交通燈狀態(tài)顯示系統(tǒng)、LED數(shù)碼顯示系統(tǒng)等幾大部分組成。系統(tǒng)除基本的交通燈功能外,還具有倒計時、緊急情況處理等功能,較好的模擬實現(xiàn)了十字路口可能出現(xiàn)的狀況。
本系統(tǒng)采用單片機C語言編寫,主要編寫了主程序,LED數(shù)碼管顯示程序等。總體上完成了軟件的編寫。
交通顯示系統(tǒng)
1. 設計要求- 東西干道和南北干道的通行分左行,右行,直行,其中左行,右行固定15秒;直行固定30秒。
(2)信號燈分綠燈,紅燈,黃燈,每次綠燈換紅燈時,黃燈亮3秒。
(3)東西干道和南北干道交替控制,每次干道綠燈交替時,有3秒鐘所有干道的交通燈都是黃燈閃爍3秒鐘,提示已經(jīng)進入路口的車輛迅速通過。
(4)當遇到突發(fā)狀況時,各個方向靜止通行,顯示紅燈,并維持5秒倒計時。
2.分析(1)分析目前交通路口的基本控制技術以及各種通行方案,并以此為基礎提出自己的交通控制的初步方案。
(2)及系統(tǒng)應擁有的各項功能,在這里,本設計除了有信號燈狀態(tài)控制能實現(xiàn)基本的交通功能,還增加了倒計時顯示提示。
(3)進行顯示電路,燈狀態(tài)電路,按鍵電路的設計和各器件的選擇及連接,大體分配各個器件及模塊的基本功能要求。
(4)進行軟件系統(tǒng)的設計,對于本系統(tǒng),本人采用C語言編寫,對單片機內(nèi)部結構和工作情況做了充足的研究,了解定時器,中斷以及延時原理,總體上完成了軟件的設計。
圖1系統(tǒng)框圖
3. 硬件設計分析
3.1單片機選型:AT89C51
與MCS-51單片機產(chǎn)品兼容,8k字節(jié)在系統(tǒng)可編程Flash存儲器,1000次可檫寫周期,全靜態(tài)操作:0Hz~33Hz,三級加密程序存儲器,32個可編程I/O口線,三個16位定時器/計數(shù)器八個中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電標識符。
當8051的ALE及/PSEN兩引腳輸出高電平,RST引腳高電平到時,單片機復位。RST/VPD端的高電平,若直接由啟動瞬間產(chǎn)生,則為啟動復位,若通過按動按鈕產(chǎn)生高電平復位稱手動復位。圖中,上電時,接通電源,電容器C相當于瞬間短路,+5V加到了RST/VPD端,該高電平使8051全機復位。若運行過程中,需要程序從頭執(zhí)行,只需按動按鈕S,則直接把+5V加到了RST/VPD端,從而復位。顯然,該電路即可以上電復位,也可以手動復位,是常用復位電路之一[5]。
3.3數(shù)碼管顯示
圖4數(shù)碼管顯示
此處采用的數(shù)碼管時共陰極數(shù)碼管,G、F、E、D、C、B、A七個端口是輸入端口,對其各位進行賦值,置位則亮,復位則滅,用此來顯示出相應的數(shù)字;1、2兩端用來控制高位和低位的選通顯示,只要對端口置位,便可以選擇該端口,并對其所代表的位進行賦值,顯示。正常通行狀況下,數(shù)碼管從30秒開始倒計時,各個方向,對應點亮紅綠黃燈。遇到突發(fā)狀況,數(shù)碼管從5秒開始倒計時,各方向禁止通行,點亮紅燈。
3.4紅綠燈顯示
圖5紅綠燈顯示
每個路口都采用了3個LED燈來顯示,分別代表紅綠黃三種燈,來模擬路口交通的變換。其中D7和D8表示轉(zhuǎn)彎模塊[6]。
以南北方向舉例,正常狀況下,從30秒開始倒計時,南北方向可直行,即綠燈(D6)亮起,東西方向禁止通行,亮紅燈(D2)。當顯示至15秒時,南北方向可直行和轉(zhuǎn)彎,即兩個綠燈(D6和D7)亮起,東西方向禁止通行,亮紅燈(D2)。當顯示至3秒時,通知車輛快速通過,南北黃燈(D5)閃爍,東西方向禁止通行,亮紅燈(D2)。
3.5鍵盤:獨立鍵盤+中斷
圖6獨立鍵盤+中斷
采用開關來控制進入中斷,可以在路口出現(xiàn)緊急情況時,拉動開關。使紅綠燈發(fā)生相應的改變,已處理緊急情況下車輛通行。
當發(fā)生突發(fā)情況時,如救護車通過,接通上面的按鍵,各個方向中止當前狀態(tài),即禁止通行,各個方向點亮紅燈,并維持5秒倒計時。當結束5秒倒計時,各個方向恢復到中止前的狀態(tài)。
3.6系統(tǒng)原理圖
圖7總電路圖
4. 軟件設計4.1總體流程
圖8流程圖
4.2循環(huán)流程控制思路
圖9流程控制圖
仿真分析5.1正常運行狀態(tài)
圖10正常運行狀態(tài)
5.2左右行顯示
圖11左右行顯示
5.3黃燈閃爍顯示
圖12黃燈閃爍顯示
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #defineuintunsignedint
- #defineucharunsignedchar
- uchartemp,aa,nn;
- sbitrn=P2^0; //南北紅燈
- sbitnb=P2^1; //南北黃燈
- sbitgn=P2^2; //南北綠燈
- sbitrw=P2^3; //東西方向紅燈
- sbitdx=P2^4; //東西方向黃燈
- sbitgw=P2^5; //東西方向綠燈
- sbitshi=P3^6; //十位
- sbitge=P3^7;//個位
- bitflag=0;
- ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,
- 0x79,0x71};/*將數(shù)字0123456789的16進制數(shù)定義成數(shù)組用以顯示*/
- voiddelay(uintz);//延遲
- voiddisp(uintn);
- voidnb_flash(void);
- voiddx_flash(void);
- voidxint0();
- voidtimer0();
- voidLED_ON();
- voidxint1();
- voidnanbei();
- voiddongxi();/*將所使用的子函數(shù)定義*/
- voidmain()
- {
- uintnum;
- num=0;
- aa=0;
- TMOD=0x01; //方式116位定時器
- TH0=(65536-50000)/256;//定義裝入定時器高8位的時間常數(shù)
- TL0=(65536-50000)%256;//定義裝入定時器低8位的時間常數(shù)
- EA=1; //開關總中斷
- ET0=1; //允許定時器T0中斷
- TR0=1; //打開定時器T0
- EX0=1; //允許外部中斷0中斷
- IT0=0; //禁止T0溢出中斷
- EX1=1; //允許外部中斷1中斷
- IT1=1;/*中斷初始化*/ //允許T1溢出
- while(1)
- {
- nanbei();
- nb_flash();
- dongxi();
- }
- }
- voiddelay(uintz) //延遲
- {uintx,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- voidtimer0()interrupt1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- aa++;
- if(aa==9)
- {
- aa=0;
- flag=1;
- }
- }
- voiddisp(uintn)/*顯示子函數(shù)*/
- {
- while(!flag) //flag=0
- {
- ge=0;
- P0=table[n%10];
- delay(50);
- shi=1;
- ge=1;
- shi=0;
- P0=table[n/10];
- delay(50);
- shi=1;
- ge=1;
- }
- if(flag==1)
- flag=0;
- }
- voidnanbei()/*南北方向的紅綠燈和數(shù)碼管顯示子函數(shù)*/
- {
- uintnum;
- num=30;
- disp(num);
- while(num<=30&&num>15)
- {
- num--;
- P2=0xf3;
- disp(num);
- }
- while(num<=15&&num>4)/*南北方向及轉(zhuǎn)彎的紅綠燈和數(shù)碼管顯示子函數(shù)*/
- {
- num--;
- P2=0xb3;
- disp(num);
- }
- }
- voidnb_flash(void)/*南北方向的黃燈和數(shù)碼管顯示子函數(shù)*/
- {
- uinta;
- for(a=3;a>0;a--)
- {
- P2=0xf5;
- nb=1; //
- delay(100);
- nb=0; //
- disp(a);
- }
- }
- voiddongxi()/*東西方向的紅綠燈和數(shù)碼管顯示子函數(shù)*/
- {
- uintnum;
- num=30;
- while(num<=30&&num>15)
- {
- P2=0xde;
- disp(num);
- num--;
- }
- while(num<=15&&num>3)/*東西方向及轉(zhuǎn)彎的紅綠燈和數(shù)碼管顯示子函數(shù)*/
- {
- num--;
- P2=0x5e;
- disp(num);
- }
- while(num<=3&&num>0)/*東西方向的黃燈和數(shù)碼管顯示子函數(shù)*/
- {
- P2=0xee;
- dx=1; //
- delay(100);
- dx=0; //
- disp(num);
- num--;
- }
- }
- voidxint0()interrupt2/*中斷定義*/
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- LED_ON(); //
- }
- voidLED_ON() //中斷2全紅燈
- {
- uintb;
- rn=0; //南北紅
- rw=0; //東西紅
- gn=1; //南北綠
- gw=1; //東西綠
- nb=1; //南北黃
- dx=1; //東西黃
- for(b=5;b>0;b--)
- {
- ge=0;
- shi=1;
- P0=table[b];
- delay(1000);
- ge=1;
- shi=1;
- }
- return;
- }
復制代碼
全部資料51hei下載地址:
基于單片機交通顯示系統(tǒng)的設計與仿真.zip
(522.66 KB, 下載次數(shù): 11)
2020-12-30 22:50 上傳
點擊文件名下載附件
程仿真+報告
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
国产91 在线播放
|
久久久久国产
|
超碰在线97国产
|
色成人免费网站
|
亚洲精品久久久久久一区二区
|
日本公妇乱淫xxxⅹ
国产在线不卡
|
夜夜操天天操
|
亚洲一区视频在线
|
精品一二区|
www.日韩|
国产精品久久久久久久久免费软件
|
久久久久免费精品国产小说色大师
|
日韩一级免费电影
|
亚洲a视频
|
日本三级网站在线观看
|
欧产日产国产精品视频
|
欧美一级一区
|
久草在线|
成人在线播放
|
欧美a在线看
|
九色视频网
|
国产成人麻豆免费观看
|
三级视频在线观看
|
免费一级黄色
|
国产精品久久久久999
|
日韩欧美在线观看
|
日韩精品1区2区3区
成人黄页在线观看
|
亚洲人久久
|
日本精品免费
|
亚洲高清视频在线观看
|
99精品国自产在线
|
亚洲成人在线视频播放
|
日韩福利|
国产精品揄拍一区二区
|
成人小视频在线观看
|
一本大道久久a久久精二百
欧洲一区二区三区
|
手机看片169
|
91精品国产乱码久久久久久久久
|
久久久久国产一级毛片高清网站
|
男人天堂免费在线
|
看一级黄色毛片
|