找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3747|回復: 1
打印 上一主題 下一主題
收起左側

單片機的LED數(shù)碼管顯示交通燈設計-帶仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:519003 發(fā)表于 2019-6-12 15:36 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

說明:
(1)當東西方向為綠燈時,此時南北方向為紅燈;
(2)當東西方向綠燈閃爍時,南北方向依舊保持紅燈;
(3)當東西方向綠燈閃爍完畢時,變?yōu)辄S燈,南北方向依舊是紅燈;
(4)當東西方向黃燈結束后,變?yōu)榧t燈,南北方向變?yōu)榫G燈;
(5)南北方向綠燈閃爍時,東西方向依舊保持紅燈;
(6)當南北方向綠燈閃爍完畢時,變?yōu)辄S燈,東西方向依舊是紅燈;
(7)當南北方向黃燈結束后,變?yōu)榧t燈,東西方向變?yōu)榫G燈;
(8)重復(1)。
交通燈控制系統(tǒng)的總體設計方案共有五個部分組成,分別是:單片機AT89C52、紅、綠、黃燈顯示電路、LED數(shù)顯時間電路、晶振及復位控制電路。在進行仿真調試過程中,程序運行正確,五個部分就同時工作,從而實現(xiàn)了交通燈的基本功能及調時功能。
一個完整的交通燈相當于一個簡單的單片機系統(tǒng),該系統(tǒng)有交通燈設置電路、單片機、顯示電路等構成。單片機是集成的IC芯片,只需根據(jù)實際設計要求選型。其他部分都需要根據(jù)應用要求和性能指標自行設計。首先了解實際交通燈的變化規(guī)律。假設一個十字路口為東西南北走向。初始狀態(tài)0為東西紅燈,南北紅燈。然后轉狀態(tài)1南北綠燈通車,東西紅燈。過一段時間轉狀態(tài)2,南北綠燈閃幾次轉亮黃燈,延時幾秒,東西仍然紅燈。再轉狀態(tài)3,東西綠燈通車,南北紅燈。過一段時間轉狀態(tài)4,東西綠燈閃幾次轉亮黃燈,延時幾秒,南北仍然紅燈。最后循環(huán)至狀態(tài)1。
單片機代碼如下:
  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的對應電平
  5. uchar time[4];        //time[]={南北燈十位,南北燈個位,東西燈十位,東西燈個位}
  6. uchar t3,t2,t1,t0;
  7. //單獨設置兩個綠燈對應端口便于設置閃爍
  8. sbit NSG=P2^3;//南北綠燈
  9. sbit EWG=P2^0;//東西綠燈
  10. sbit BEEM=P2^7;        //語音

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


  19. void timer(uchar i)                //時間設置函數(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ù)組里的四個表示時間的電平設為對應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ù)碼管作為一組進行刷新
  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. }
復制代碼

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1085175 發(fā)表于 2023-7-2 11:34 | 只看該作者
需要分時控制嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表