基于stm32单片机智能交通灯设计Proteus仿真

资料编号:179    下面是仿真功能视频演示:

179-基于stm32单片机智能交通灯设计Proteus仿真

功能讲解:

采用stm32单片机作为控制CPU,4个双位数码管作为东西南北倒计时显示器,红黄绿灯代表路灯,东西向10s绿灯,南北向10s红灯 全部黄灯5s 东西向10s红灯,南北向10s绿灯 ,系统进行循环运行,模拟出智能交通灯的效果,全套仿真资料齐全:

基于stm32单片机智能交通灯设计Proteus仿真_第1张图片

下面是相关程序展示: 

基于stm32单片机智能交通灯设计Proteus仿真_第2张图片

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;

}

下面是该资料的分享下载链接:

https://pan.baidu.com/s/10EzgmZmLutJWxFe_otot2g?pwd=jhp6 

你可能感兴趣的:(单片机,stm32,proteus)