標(biāo)題: 單片機(jī)的LED數(shù)碼管顯示交通燈設(shè)計-帶仿真 [打印本頁]

作者: gagalonghun    時間: 2019-6-12 15:36
標(biāo)題: 單片機(jī)的LED數(shù)碼管顯示交通燈設(shè)計-帶仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

說明:
(1)當(dāng)東西方向?yàn)榫G燈時,此時南北方向?yàn)榧t燈;
(2)當(dāng)東西方向綠燈閃爍時,南北方向依舊保持紅燈;
(3)當(dāng)東西方向綠燈閃爍完畢時,變?yōu)辄S燈,南北方向依舊是紅燈;
(4)當(dāng)東西方向黃燈結(jié)束后,變?yōu)榧t燈,南北方向變?yōu)榫G燈;
(5)南北方向綠燈閃爍時,東西方向依舊保持紅燈;
(6)當(dāng)南北方向綠燈閃爍完畢時,變?yōu)辄S燈,東西方向依舊是紅燈;
(7)當(dāng)南北方向黃燈結(jié)束后,變?yōu)榧t燈,東西方向變?yōu)榫G燈;
(8)重復(fù)(1)。
交通燈控制系統(tǒng)的總體設(shè)計方案共有五個部分組成,分別是:單片機(jī)AT89C52、紅、綠、黃燈顯示電路、LED數(shù)顯時間電路、晶振及復(fù)位控制電路。在進(jìn)行仿真調(diào)試過程中,程序運(yùn)行正確,五個部分就同時工作,從而實(shí)現(xiàn)了交通燈的基本功能及調(diào)時功能。
一個完整的交通燈相當(dāng)于一個簡單的單片機(jī)系統(tǒng),該系統(tǒng)有交通燈設(shè)置電路、單片機(jī)、顯示電路等構(gòu)成。單片機(jī)是集成的IC芯片,只需根據(jù)實(shí)際設(shè)計要求選型。其他部分都需要根據(jù)應(yīng)用要求和性能指標(biāo)自行設(shè)計。首先了解實(shí)際交通燈的變化規(guī)律。假設(shè)一個十字路口為東西南北走向。初始狀態(tài)0為東西紅燈,南北紅燈。然后轉(zhuǎn)狀態(tài)1南北綠燈通車,東西紅燈。過一段時間轉(zhuǎn)狀態(tài)2,南北綠燈閃幾次轉(zhuǎn)亮黃燈,延時幾秒,東西仍然紅燈。再轉(zhuǎn)狀態(tài)3,東西綠燈通車,南北紅燈。過一段時間轉(zhuǎn)狀態(tài)4,東西綠燈閃幾次轉(zhuǎn)亮黃燈,延時幾秒,南北仍然紅燈。最后循環(huán)至狀態(tài)1。
單片機(jī)代碼如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uchar num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//七段數(shù)碼管0~9的對應(yīng)電平
  5. uchar time[4];        //time[]={南北燈十位,南北燈個位,東西燈十位,東西燈個位}
  6. uchar t3,t2,t1,t0;
  7. //單獨(dú)設(shè)置兩個綠燈對應(yīng)端口便于設(shè)置閃爍
  8. sbit NSG=P2^3;//南北綠燈
  9. sbit EWG=P2^0;//東西綠燈
  10. sbit BEEM=P2^7;        //語音

  11. void delay(uint ms)//延遲函數(shù),功能為以毫秒為單位延遲,待微調(diào),不要在意細(xì)節(jié)。
  12. {
  13.         uint i;
  14.         while(ms--)
  15.         {
  16.                 for(i=0;i<81;i++);
  17.         }
  18. }


  19. void timer(uchar i)                //時間設(shè)置函數(shù)
  20. {
  21.         switch (i)
  22.         {
  23.                 case 0:{time[3]=num[t3];time[2]=num[--t2];time[1]=num[t1];time[0]=num[--t0];break;}
  24.                 //代表把time數(shù)組里的四個表示時間的電平設(shè)為對應(yīng)t3、t2、t1、t0的時間的電平
  25.                 case 1:{t3=2;t2=8;t1=3;t0=1;break;}                //南北紅燈東西綠燈
  26.                 case 2:{t3=0;t2=4;t1=0;t0=4;break;}                //黃燈
  27.                 case 3:{t3=3;t2=1;t1=2;t0=8;break;}                //南北綠燈東西紅燈
  28.         }
  29.         if(t2==0){t2=10;t3--;}
  30.         if(t0==0){t0=10;t1--;}
  31. }

  32. void TR(uchar Gr)        //數(shù)碼管時間控制函數(shù),通過片選將兩個方向四個數(shù)碼管作為一組進(jìn)行刷新
  33. {        
  34.         uint i,j;
  35.         for(i=1;i<=25;i++)
  36.         {
  37.                 for(j=0;j<=3;j++)
  38.                 {
  39.                         P0=~(1<<j);P1=time[j];delay(10);
  40.                 }
  41.                 if(Gr==1 && i==12)EWG=0;
  42.                 if(Gr==1 && i==24)EWG=1;
  43.                 if(Gr==2 && i==12)NSG=0;
  44.                 if(Gr==2 && i==24)NSG=1;
  45.         }
  46. }

  47. void main()
  48. {
  49.         delay(500);
  50.         while(1)
  51.         {
  52.                 uint i;
  53.                 timer(1);P2=0x1e;
  54.                 for(i=1;i<=22;i++){timer(0);TR(0);}
  55.                 for(i=1;i<=5;i++){timer(0);TR(1);}
  56.                 timer(2);P2=0x1d;
  57.                 for(i=1;i<=3;i++){timer(0);TR(0);}
  58.                 timer(3);P2=0x33;
  59.                 for(i=1;i<=22;i++){timer(0);TR(0);}
  60.                 for(i=1;i<=5;i++){timer(0);TR(2);}
  61.                 timer(2);P2=0x2b;
  62.                 for(i=1;i<=3;i++){timer(0);TR(0);}
  63.         }

  64. }
復(fù)制代碼

全部資料51hei下載地址:
交通燈.zip (24.95 KB, 下載次數(shù): 65)


作者: xwl_    時間: 2023-7-2 11:34
需要分時控制嗎





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1