找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4746|回復(fù): 2
收起左側(cè)

基于51單片機的復(fù)雜路口的交通燈程序設(shè)計和proteus仿真

[復(fù)制鏈接]
ID:323191 發(fā)表于 2019-1-6 17:29 | 顯示全部樓層 |閱讀模式
     該交通燈能夠?qū)崿F(xiàn)對復(fù)雜路口交通燈的控制,每個方向都包括直行、左轉(zhuǎn)、右轉(zhuǎn)方向以及人行橫道紅、黃、綠三色指示燈,每個方向均設(shè)有兩位數(shù)數(shù)碼管顯示倒計時的功能。通過中斷設(shè)置有四個按鍵,分別行使時間加、時間減、東西方向強制通行、南北方向強制通行的功能。

電路仿真截圖1

電路仿真截圖1

電路仿真截圖2

電路仿真截圖2


部分單片機源程序:
  1. /***************************************************
  2. 項目:復(fù)雜路口交通燈
  3. 功能:本程序能夠?qū)崿F(xiàn)對復(fù)雜路口交通燈的控制,每個方向
  4.       都包括直行、左轉(zhuǎn)、右轉(zhuǎn)方向以及人行橫道紅、黃、
  5.    綠三色指示燈,每個方向均設(shè)有兩位數(shù)數(shù)碼管顯示倒
  6.    計時的功能。通過中斷設(shè)置有四個按鍵,分別行使時
  7.    間加、時間減、東西方向強制通行、南北方向強制通
  8.    行的功能。  
  9. 姓名:醉清風(fēng)
  10. 注意:各端口意義詳見注釋!
  11. ***************************************************/
  12. #include <reg51.h>  
  13. #define uchar unsigned char
  14. #define uint unsigned int

  15. /*****定義控制位**********************/
  16. sbit   EW_LED2=P2^3;           //EW_LED2控制位
  17. sbit   EW_LED1=P2^2;           //EW_LED1控制位
  18. sbit   SN_LED2=P2^1;           //SN_LED2控制位
  19. sbit   SN_LED1=P2^0;           //SN_LED1控制位
  20. sbit    SNstraight_Green=P1^3;  //南北直行綠燈
  21. sbit    EWstraight_Green=P1^0;  //東西直行綠燈
  22. sbit    SNstraight_Yellow=P1^4; //南北直行黃燈
  23. sbit    EWstraight_Yellow=P1^1; //東西直行黃燈
  24. sbit    SNstraight_Red=P1^5;    //南北直行紅燈
  25. sbit    EWstraight_Red=P1^2;    //東西直行紅燈
  26. sbit    SNright_Green=P2^7;    //南北右拐綠燈
  27. sbit    EWright_Green=P1^6;    //東西右拐綠燈
  28. sbit    SNright_Red=P3^4;      //南北右拐紅燈
  29. sbit    EWright_Red=P2^4;      //東西右拐紅燈
  30. sbit    SNleft_Green=P3^5;    //南北左拐綠燈
  31. sbit    EWleft_Green=P2^5;    //東西左拐綠燈
  32. sbit    SNleft_Red=P3^7;      //南北左拐紅燈
  33. sbit    EWleft_Red=P2^6;      //東西左拐紅燈
  34. sbit    SNturn_Yellow=P3^6;     //南北轉(zhuǎn)向黃燈
  35. sbit    EWturn_Yellow=P1^7;     //東西轉(zhuǎn)向黃燈

  36. sbit    Time_Button=P3^0;       //時間加減按鈕判斷輸入端
  37. sbit    QZ_Button=P3^1;         //強制通行方向判斷輸入端
  38. bit     Flag_SNstraight_Yellow;  //SN直行黃燈標(biāo)志位
  39. bit     Flag_EWstraight_Yellow;  //EW直行黃燈標(biāo)志位
  40. bit     Flag_SNturn_Yellow;      //SN轉(zhuǎn)向黃燈標(biāo)志位
  41. bit     Flag_EWturn_Yellow;      //EW轉(zhuǎn)向黃燈標(biāo)志位
  42. bit     QZ_EW;              //EW強制通行標(biāo)志
  43. bit     QZ_SN;              //SN強制通行標(biāo)志
  44. bit     QZ_flag;                 //數(shù)碼管強制標(biāo)志
  45. char Time_EW;                //東西方向倒計時單元
  46. char Time_SN;                //南北方向倒計時單元
  47. uchar EW=30,SN=30,EWL=60,SNL=60; //倒計時時長</div><div>uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0~~~~9段選碼
  48. /*********************延時函數(shù)**********************/
  49. void Delay(uchar  a)
  50. {
  51.   while(a--);
  52. }
  53. /*******************顯示函數(shù),顯示倒計時的值**********************/
  54. void Display(void)
  55. {
  56.   char h,l;
  57.   h=Time_EW/10;  //EW方向計時的十位數(shù)
  58.   l=Time_EW%10;  //EW方向計時的個位數(shù)
  59.    P0=table[l];  //顯示EW計時時間的低位
  60.   EW_LED2=1;
  61.   Delay(2);
  62.   EW_LED2=0;
  63.    P0=table[h];  //顯示EW計時時間的高位
  64.   EW_LED1=1;
  65.   Delay(2);
  66.   EW_LED1=0;</div><div>  h=Time_SN/10;  //SN方向計時的十位數(shù)
  67.   l=Time_SN%10;  //SN方向計時的個位數(shù)
  68.   P0=table[l];  //顯示SN計時時間的低位
  69.   SN_LED2=1;
  70.   Delay(2);
  71.   SN_LED2=0;
  72.    P0=table[h];  //顯示SN計時時間的高位
  73.   SN_LED1=1;
  74.   Delay(2);
  75.   SN_LED1=0;
  76.   
  77. }
  78. /*******************顯示函數(shù),強制通行的值**********************/
  79. void Display1(void)
  80. {
  81.    P0=table[8];
  82.    if(QZ_flag==1)
  83.   {
  84.     EW_LED2=1;   
  85.     EW_LED1=1;  
  86.     SN_LED2=1;   
  87.     SN_LED1=1;
  88.    
  89.   }
  90.   else
  91.     {
  92.     EW_LED2=0;
  93.     EW_LED1=0;
  94.     SN_LED2=0;
  95.     SN_LED1=0;
  96.   }   
  97.    
復(fù)制代碼

0.png

全部資料51hei下載地址:
復(fù)雜路口交通燈設(shè)計.zip (100.61 KB, 下載次數(shù): 141)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:671705 發(fā)表于 2020-4-16 11:08 | 顯示全部樓層
感謝您的例子。冒昧請教您,如果想加入一個,全路口車輛禁行,東西南北向行人通行,假設(shè)緊急疏散這種功能,那這樣的引腳設(shè)置,可能實現(xiàn)?需要修改人行道的引腳嗎?
回復(fù)

使用道具 舉報

ID:671705 發(fā)表于 2020-4-16 12:05 | 顯示全部樓層
感謝您的例子。冒昧請教您,如果想加入一個,全路口車輛禁行,東西南北向行人通行,假設(shè)緊急疏散這種功能,那這樣的引腳設(shè)置,可能實現(xiàn)?需要修改人行道的引腳嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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