找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1023|回復: 1
打印 上一主題 下一主題
收起左側(cè)

單片機智能交通燈 根據(jù)兩個方向的車流量調(diào)整兩個方向紅綠燈的持續(xù)時間

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1125752 發(fā)表于 2024-6-17 21:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是目前我手頭的程序,但是不滿足設(shè)計的要求,以下是設(shè)計要求,請問我應(yīng)該怎么做本設(shè)計要求實現(xiàn)一個智能交通燈控制系統(tǒng)。該系統(tǒng)有自動與交警手動兩種方式。在自動方式下,系統(tǒng)可根據(jù)兩個方向的車流量調(diào)整兩個方向紅綠燈的持續(xù)時間;在手動方式下,交警可以控制每路信號燈的狀況。并且所有信息都可通過串口顯示在電腦上。

int main(void)
{
  /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
  int times;        //綠燈閃爍計數(shù)
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
          //先橫向通行,再縱向通行
          //【橫向通行】
          //【橫向通行階段1:通行(5s)】
          //T橫向綠亮,紅黃滅,上拉需要反
          HAL_GPIO_WritePin(T_Green_GPIO_Port, T_Green_Pin, GPIO_PIN_RESET);
          HAL_GPIO_WritePin(T_Yellow_GPIO_Port, T_Yellow_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(T_Red_GPIO_Port, T_Red_Pin, GPIO_PIN_SET);
          //M縱向紅亮,紅黃滅
          HAL_GPIO_WritePin(M_Green_GPIO_Port, M_Green_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(M_Yellow_GPIO_Port, M_Yellow_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(M_Red_GPIO_Port, M_Red_Pin, GPIO_PIN_RESET);
          HAL_Delay(5000);        //通行5秒,(仿真暫且設(shè)為5s)
          //【橫向通行階段2:綠燈閃爍(5次共1s)】
          //橫向綠燈閃爍5次
          for(times=0;times<5;times++){
                  HAL_GPIO_TogglePin(T_Green_GPIO_Port,T_Green_Pin);        //翻轉(zhuǎn)綠燈
                  HAL_Delay(150);        //每150ms閃爍1次
          }
          //【橫向通行階段3:變黃燈(1s)】
          //T橫向黃亮,紅綠滅,上拉需要反
          HAL_GPIO_WritePin(T_Green_GPIO_Port, T_Green_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(T_Yellow_GPIO_Port, T_Yellow_Pin, GPIO_PIN_RESET);
          HAL_Delay(1000);        //黃燈1秒
          //【縱向通行】
          //【縱向通行階段1:通行(5s)】
          //M縱向綠亮,紅黃滅,上拉需要反
          HAL_GPIO_WritePin(M_Green_GPIO_Port, M_Green_Pin, GPIO_PIN_RESET);
          HAL_GPIO_WritePin(M_Yellow_GPIO_Port, M_Yellow_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(M_Red_GPIO_Port, M_Red_Pin, GPIO_PIN_SET);
          //T橫向紅亮,紅黃滅
          HAL_GPIO_WritePin(T_Green_GPIO_Port, T_Green_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(T_Yellow_GPIO_Port, T_Yellow_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(T_Red_GPIO_Port, T_Red_Pin, GPIO_PIN_RESET);
          HAL_Delay(5000);        //通行5秒,(仿真暫且設(shè)為5s)
          //【縱向通行階段2:綠燈閃爍(5次共1s)】
          //縱向綠燈閃爍5次
          for(times=0;times<5;times++){
                  HAL_GPIO_TogglePin(M_Green_GPIO_Port,M_Green_Pin);        //翻轉(zhuǎn)綠燈
                  HAL_Delay(150);        //每200ms閃爍1次
          }
          //【縱向通行階段3:變黃燈(1s)】
          //縱向黃亮,紅綠滅,上拉需要反
          HAL_GPIO_WritePin(M_Green_GPIO_Port, M_Green_Pin, GPIO_PIN_SET);
          HAL_GPIO_WritePin(M_Yellow_GPIO_Port, M_Yellow_Pin, GPIO_PIN_RESET);
          HAL_Delay(1000);        //黃燈1秒
  }
  /* USER CODE END 3 */
}   


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

使用道具 舉報

沙發(fā)
ID:276663 發(fā)表于 2024-6-18 09:09 | 只看該作者
1.如何檢測車流量
2.如果手動控制
3.如何顯示到串口
先把這三個模塊用程序?qū)崿F(xiàn)。

然后就是倒計時了。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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