仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
33.jpg (125.8 KB, 下載次數(shù): 71)
下載附件
仿真圖
2019-6-12 15:35 上傳
說明: (1)當(dāng)東西方向?yàn)榫G燈時(shí),此時(shí)南北方向?yàn)榧t燈; (2)當(dāng)東西方向綠燈閃爍時(shí),南北方向依舊保持紅燈; (3)當(dāng)東西方向綠燈閃爍完畢時(shí),變?yōu)辄S燈,南北方向依舊是紅燈; (4)當(dāng)東西方向黃燈結(jié)束后,變?yōu)榧t燈,南北方向變?yōu)榫G燈; (5)南北方向綠燈閃爍時(shí),東西方向依舊保持紅燈; (6)當(dāng)南北方向綠燈閃爍完畢時(shí),變?yōu)辄S燈,東西方向依舊是紅燈; (7)當(dāng)南北方向黃燈結(jié)束后,變?yōu)榧t燈,東西方向變?yōu)榫G燈; (8)重復(fù)(1)。 交通燈控制系統(tǒng)的總體設(shè)計(jì)方案共有五個(gè)部分組成,分別是:?jiǎn)纹瑱C(jī)AT89C52、紅、綠、黃燈顯示電路、LED數(shù)顯時(shí)間電路、晶振及復(fù)位控制電路。在進(jìn)行仿真調(diào)試過程中,程序運(yùn)行正確,五個(gè)部分就同時(shí)工作,從而實(shí)現(xiàn)了交通燈的基本功能及調(diào)時(shí)功能。 一個(gè)完整的交通燈相當(dāng)于一個(gè)簡(jiǎn)單的單片機(jī)系統(tǒng),該系統(tǒng)有交通燈設(shè)置電路、單片機(jī)、顯示電路等構(gòu)成。單片機(jī)是集成的IC芯片,只需根據(jù)實(shí)際設(shè)計(jì)要求選型。其他部分都需要根據(jù)應(yīng)用要求和性能指標(biāo)自行設(shè)計(jì)。首先了解實(shí)際交通燈的變化規(guī)律。假設(shè)一個(gè)十字路口為東西南北走向。初始狀態(tài)0為東西紅燈,南北紅燈。然后轉(zhuǎn)狀態(tài)1南北綠燈通車,東西紅燈。過一段時(shí)間轉(zhuǎn)狀態(tài)2,南北綠燈閃幾次轉(zhuǎn)亮黃燈,延時(shí)幾秒,東西仍然紅燈。再轉(zhuǎn)狀態(tài)3,東西綠燈通車,南北紅燈。過一段時(shí)間轉(zhuǎn)狀態(tài)4,東西綠燈閃幾次轉(zhuǎn)亮黃燈,延時(shí)幾秒,南北仍然紅燈。最后循環(huán)至狀態(tài)1。 單片機(jī)代碼如下: - #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//七段數(shù)碼管0~9的對(duì)應(yīng)電平
- uchar time[4]; //time[]={南北燈十位,南北燈個(gè)位,東西燈十位,東西燈個(gè)位}
- uchar t3,t2,t1,t0;
- //單獨(dú)設(shè)置兩個(gè)綠燈對(duì)應(yīng)端口便于設(shè)置閃爍
- sbit NSG=P2^3;//南北綠燈
- sbit EWG=P2^0;//東西綠燈
- sbit BEEM=P2^7; //語音
- void delay(uint ms)//延遲函數(shù),功能為以毫秒為單位延遲,待微調(diào),不要在意細(xì)節(jié)。
- {
- uint i;
- while(ms--)
- {
- for(i=0;i<81;i++);
- }
- }
- void timer(uchar i) //時(shí)間設(shè)置函數(shù)
- {
- switch (i)
- {
- case 0:{time[3]=num[t3];time[2]=num[--t2];time[1]=num[t1];time[0]=num[--t0];break;}
- //代表把time數(shù)組里的四個(gè)表示時(shí)間的電平設(shè)為對(duì)應(yīng)t3、t2、t1、t0的時(shí)間的電平
- case 1:{t3=2;t2=8;t1=3;t0=1;break;} //南北紅燈東西綠燈
- case 2:{t3=0;t2=4;t1=0;t0=4;break;} //黃燈
- case 3:{t3=3;t2=1;t1=2;t0=8;break;} //南北綠燈東西紅燈
- }
- if(t2==0){t2=10;t3--;}
- if(t0==0){t0=10;t1--;}
- }
- void TR(uchar Gr) //數(shù)碼管時(shí)間控制函數(shù),通過片選將兩個(gè)方向四個(gè)數(shù)碼管作為一組進(jìn)行刷新
- {
- uint i,j;
- for(i=1;i<=25;i++)
- {
- for(j=0;j<=3;j++)
- {
- P0=~(1<<j);P1=time[j];delay(10);
- }
- if(Gr==1 && i==12)EWG=0;
- if(Gr==1 && i==24)EWG=1;
- if(Gr==2 && i==12)NSG=0;
- if(Gr==2 && i==24)NSG=1;
- }
- }
- void main()
- {
- delay(500);
- while(1)
- {
- uint i;
- timer(1);P2=0x1e;
- for(i=1;i<=22;i++){timer(0);TR(0);}
- for(i=1;i<=5;i++){timer(0);TR(1);}
- timer(2);P2=0x1d;
- for(i=1;i<=3;i++){timer(0);TR(0);}
- timer(3);P2=0x33;
- for(i=1;i<=22;i++){timer(0);TR(0);}
- for(i=1;i<=5;i++){timer(0);TR(2);}
- timer(2);P2=0x2b;
- for(i=1;i<=3;i++){timer(0);TR(0);}
- }
- }
復(fù)制代碼
0.png (3.59 KB, 下載次數(shù): 70)
下載附件
2019-6-12 21:22 上傳
全部資料51hei下載地址:
交通燈.zip
(24.95 KB, 下載次數(shù): 65)
2019-6-12 15:35 上傳
點(diǎn)擊文件名下載附件
帶仿真電路 下載積分: 黑幣 -5
|