找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2500|回復(fù): 0
收起左側(cè)

51單片機(jī)交通信號燈Proteus仿真程序

[復(fù)制鏈接]
ID:1014599 發(fā)表于 2022-4-17 09:05 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif 交通信號燈.png

單片機(jī)源程序如下:
  1. /*
  2. *模擬交通燈*
  3. */
  4. #include <reg51.h>
  5. typedef unsigned char uint8;
  6. typedef unsigned int uint16;

  7. void delay(uint16 x)
  8. {
  9.         uint16 i,j;
  10.         for(i = x; i > 0; i --)
  11.                 for(j = 114; j > 0; j --);               
  12. }

  13. #define    RED_EW_ON()        P0 &= ~0x01                        //東西方向指示燈開
  14. #define YELLOW_EW_ON()        P0 &= ~0x02
  15. #define  GREEN_EW_ON()        P0 &= ~0x04

  16. #define    RED_EW_OFF()        P0 |=  0x01                        //東西方向指示燈關(guān)
  17. #define YELLOW_EW_OFF()        P0 |=  0x02
  18. #define  GREEN_EW_OFF()        P0 |=  0x04

  19. #define  RED_SN_ON()        P0 &= ~0x08                        //南北方向指示燈開  0000100 1111011
  20. #define YELLOW_SN_ON()        P0 &= ~0x10
  21. #define GREEN_SN_ON()        P0 &= ~0x20

  22. #define  RED_SN_OFF()        P0 |=  0x08                        //南北方向指示燈關(guān)
  23. #define YELLOW_SN_OFF()        P0 |=  0x10
  24. #define GREEN_SN_OFF()        P0 |=  0x20               

  25. #define YELLOW_EW_BLINK() P0 ^= 0x02                        //東西方向黃燈閃爍
  26. #define YELLOW_SN_BLINK() P0 ^= 0x10                        //南北方向黃燈閃爍

  27. uint8 Flash_Count = 0, Operation_Type = 1;                        //閃爍次數(shù),操作類型變量

  28. void Traffic_Light()                                                                //交通燈切換子程序
  29. {
  30.         switch (Operation_Type)
  31.         {
  32.                 case 1://東西方向綠燈與南北方向紅燈亮
  33.                                 RED_EW_OFF(); YELLOW_EW_OFF(); GREEN_EW_ON();
  34.                             RED_SN_ON(); YELLOW_SN_OFF(); GREEN_SN_OFF();
  35.                                 delay(2000);                                                                //延時(shí)
  36.                                 Operation_Type = 2;                                                        //下一個(gè)操作
  37.                                 break;

  38.                 case 2://東西方向黃燈開始閃爍,綠燈關(guān)閉
  39.                                 delay(120);
  40.                                 YELLOW_EW_BLINK();
  41.                                 GREEN_EW_OFF();
  42.                                 //閃爍5次
  43.                                 if( ++Flash_Count != 10) return;
  44.                                 Flash_Count = 0;
  45.                                 Operation_Type = 3;                                                        //下一個(gè)操作
  46.                                 break;

  47.                 case 3://東西方向紅燈與南北方向綠燈亮
  48.                                 RED_EW_ON();  YELLOW_EW_OFF(); GREEN_EW_OFF();
  49.                                 RED_SN_OFF(); YELLOW_SN_OFF(); GREEN_SN_ON();
  50.                            //南北方向綠燈亮若干秒后切換
  51.                            delay(2000);
  52.                            Operation_Type = 4;                                                        //下一個(gè)操作
  53.                            break;

  54.                 case 4://南北方向紅燈開始閃爍
  55.                            delay(120);
  56.                            YELLOW_SN_BLINK();
  57.                            GREEN_SN_OFF();
  58.                            //閃爍5次
  59.                            if( ++ Flash_Count != 10) return;
  60.                            Flash_Count = 0;
  61.                            Operation_Type = 1;                                                        //回到第一種操作
  62.         }                  
  63. }

  64. //主程序
  65. int main()
  66. {
  67.         while(1) Traffic_Light();
  68. }
復(fù)制代碼

所有資料51hei附件下載:
模擬交通燈.7z (70.87 KB, 下載次數(shù): 29)


評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表