找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 491|回复: 1
打印 上一主题 下一主题
收起左侧

单片机智能交通灯 根据两个方向的车流量调整两个方向红绿灯的持续时间

[复制链接]
跳转到指定楼层
楼主
ID:1125752 发表于 2024-6-17 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是目前我手头的程序,但是不满足设计的要求,以下是设计要求,请问我应该怎么做本设计要求实现一个智能交通灯控制系统。该系统有自动与交警手动两种方式。在自动方式下,系统可根据两个方向的车流量调整两个方向红绿灯的持续时间;在手动方式下,交警可以控制每路信号灯的状况。并且所有信息都可通过串口显示在电脑上。

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;        //绿灯闪烁计数
  /* 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秒,(仿真暂且设为5s)
          //【横向通行阶段2:绿灯闪烁(5次共1s)】
          //横向绿灯闪烁5次
          for(times=0;times<5;times++){
                  HAL_GPIO_TogglePin(T_Green_GPIO_Port,T_Green_Pin);        //翻转绿灯
                  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秒,(仿真暂且设为5s)
          //【纵向通行阶段2:绿灯闪烁(5次共1s)】
          //纵向绿灯闪烁5次
          for(times=0;times<5;times++){
                  HAL_GPIO_TogglePin(M_Green_GPIO_Port,M_Green_Pin);        //翻转绿灯
                  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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:276663 发表于 2024-6-18 09:09 | 只看该作者
1.如何检测车流量
2.如果手动控制
3.如何显示到串口
先把这三个模块用程序实现。

然后就是倒计时了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表