资料编号:179 下面是仿真功能视频演示:
179-基于stm32单片机智能交通灯设计Proteus仿真
功能讲解:
采用stm32单片机作为控制CPU,4个双位数码管作为东西南北倒计时显示器,红黄绿灯代表路灯,东西向10s绿灯,南北向10s红灯 全部黄灯5s 东西向10s红灯,南北向10s绿灯 ,系统进行循环运行,模拟出智能交通灯的效果,全套仿真资料齐全:
下面是相关程序展示:
void Key_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*开启按键GPIO口的时钟*/
KEY1_GPIO_CLK_ENABLE();
KEY2_GPIO_CLK_ENABLE();
KEY3_GPIO_CLK_ENABLE();
/*选择按键的引脚*/
GPIO_InitStructure.Pin = KEY1_PIN;
/*设置引脚为输入模式*/
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
/*设置引脚不上拉也不下拉*/
GPIO_InitStructure.Pull = GPIO_NOPULL;
/*使用上面的结构体初始化按键*/
HAL_GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);
/*选择按键的引脚*/
GPIO_InitStructure.Pin = KEY2_PIN|KEY3_PIN;
/*使用上面的结构体初始化按键*/
HAL_GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);
}
/**
* @brief 检测是否有按键按下
* @param 具体的端口和端口位
* @arg GPIOx: x可以是(A…G)
* @arg GPIO_PIN 可以是GPIO_PIN_x(x可以是1…16)
* @retval 按键的状态
* @arg KEY_ON:按键按下
* @arg KEY_OFF:按键没按下
*/
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
/*检测是否有按键按下 */
if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON )
{
/*等待按键释放 */
while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON);
return KEY_ON;
}
else
return KEY_OFF;
}
下面是该资料的分享下载链接: