失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > STM32单片机+proteus8仿真的简易交通灯设计

STM32单片机+proteus8仿真的简易交通灯设计

时间:2021-01-31 14:06:29

相关推荐

STM32单片机+proteus8仿真的简易交通灯设计

STM32单片机+proteus8仿真的简易交通灯设计

前言keil5代码proteus中仿真电路图

前言

红×4、绿灯×4、黄灯×4、蜂鸣器×4、使用stm32f10c8t6芯片、

绿灯通行时,蜂鸣器响起提醒,延时函数简单编写不能精确的延时

keil5代码

main函数代码

#include "stm32f10x.h"#include "led.h"#include "beep.h"void delay(int len){volatile unsigned int i = 6*1000*len;while(i--);}int main(void){LED_Cfg();BEEP_Cfg();while(1){LED_RED1_OFF;//红灯1和红灯3关闭LED_RED3_OFF;LED_GREEN1_ON; //绿灯1和绿灯3打开LED_GREEN3_ON;BEEP0_ON;//蜂鸣器0和蜂鸣器2打开BEEP2_ON;LED_RED2_ON;//红灯2和红灯4打开LED_RED4_ON;delay(200);//1和3马路通行,2和4马路不通行LED_GREEN1_OFF;//绿灯1和绿灯3关闭LED_GREEN3_OFF;BEEP0_OFF;//蜂鸣器0和蜂鸣器2关闭BEEP2_OFF;LED_YELLOW1_ON;//黄灯1和黄灯3打开LED_YELLOW3_ON;delay(100);LED_YELLOW1_OFF;//黄灯1和黄灯3关闭LED_YELLOW3_OFF;LED_RED1_ON;//红灯1和红灯3打开LED_RED3_ON;delay(50);LED_RED2_OFF;//红灯2和红灯4关闭LED_RED4_OFF;LED_GREEN2_ON;//绿灯2和绿灯4打开LED_GREEN4_ON;BEEP1_ON;//蜂鸣器1和蜂鸣器3打开BEEP3_ON;delay(200);//2和4马路通行,1和3马路不通行LED_GREEN2_OFF;//绿灯2和绿灯4关闭LED_GREEN4_OFF;BEEP1_OFF;//蜂鸣器1和蜂鸣器3关闭BEEP3_OFF;LED_YELLOW2_ON;//黄灯2和黄灯4打开LED_YELLOW4_ON;delay(100);LED_YELLOW2_OFF;//黄灯2和黄灯4关闭LED_YELLOW4_OFF;LED_RED2_ON;//红灯2和红灯4打开LED_RED4_ON;delay(50);}}

led.c

/********************************************************************************* @file led.c* @author 陈* @version Vx.x* @date .4.13* @brief xxx.******************************************************************************* @attention********************************************************************************//* Includes ------------------------------------------------------------------*/#include "led.h" #include "stm32f10x.h"void LED_Cfg(void){GPIO_InitTypeDef led_gpio;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能端口B的时钟/* LED I/O配置 */ led_gpio.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12; //1-12引脚led_gpio.GPIO_Mode = GPIO_Mode_Out_PP;// 通用推挽输出led_gpio.GPIO_Speed = GPIO_Speed_2MHz;// 2MHzGPIO_Init(GPIOA, &led_gpio);/* 配置完成后关闭所有LED */LED_GREEN1_OFF;LED_YELLOW1_OFF;LED_RED1_OFF;LED_GREEN2_OFF;LED_YELLOW2_OFF;LED_RED2_OFF;LED_GREEN3_OFF;LED_YELLOW3_OFF;LED_RED3_OFF;LED_GREEN4_OFF;LED_YELLOW4_OFF;LED_RED4_OFF;}

led.h

/********************************************************************************* @file led.h* @author 陈* @version Vx.x* @date .4.13* @brief xxx.******************************************************************************* @attention********************************************************************************//* Define to prevent recursive inclusion -------------------------------------*/#ifndef __LED_H#define __LED_H/* Includes ------------------------------------------------------------------*/#include "stm32f10x.h"/* Exported types ------------------------------------------------------------*//* Exported constants --------------------------------------------------------*//* Exported macro ------------------------------------------------------------*//* 控制LED1(直接操作寄存器) *///#define LED1_TOGGLE GPIOA->ODR ^= GPIO_Pin_13 // PA0输出相反状态 - LED1状态反转//#define LED1_OFFGPIOA->BSRR = GPIO_Pin_13 // PA0输出高电平 - LED1关//#define LED1_ONGPIOA->BRR = GPIO_Pin_13 // PA0输出低电平 - LED1开/* 控制LED1(调用库函数) */#define LED_GREEN1_OFFGPIO_SetBits(GPIOA, GPIO_Pin_1) // PB1输出高电平 - LED1关#define LED_GREEN1_ONGPIO_ResetBits(GPIOA, GPIO_Pin_1) // PB1输出低电平 - LED1开#define LED_YELLOW1_OFFGPIO_SetBits(GPIOA, GPIO_Pin_2) // PB2输出高电平 - LED2关#define LED_YELLOW1_ONGPIO_ResetBits(GPIOA, GPIO_Pin_2) // PB2输出低电平 - LED2开#define LED_RED1_OFFGPIO_SetBits(GPIOA, GPIO_Pin_3) // PB3输出高电平 - LED3关#define LED_RED1_ONGPIO_ResetBits(GPIOA, GPIO_Pin_3) // PB3输出低电平 - LED3开#define LED_GREEN2_OFFGPIO_SetBits(GPIOA, GPIO_Pin_4) // PB4输出高电平 - LED4关#define LED_GREEN2_ONGPIO_ResetBits(GPIOA, GPIO_Pin_4) // PB4输出低电平 - LED4开#define LED_YELLOW2_OFFGPIO_SetBits(GPIOA, GPIO_Pin_5) // PB5输出高电平 - LED5关#define LED_YELLOW2_ONGPIO_ResetBits(GPIOA, GPIO_Pin_5) // PB5输出低电平 - LED5开#define LED_RED2_OFFGPIO_SetBits(GPIOA, GPIO_Pin_6) // PB6输出高电平 - LED6关#define LED_RED2_ONGPIO_ResetBits(GPIOA, GPIO_Pin_6) // PB6输出低电平 - LED6开#define LED_GREEN3_OFFGPIO_SetBits(GPIOA, GPIO_Pin_7) // PB7输出高电平 - LED7关#define LED_GREEN3_ONGPIO_ResetBits(GPIOA, GPIO_Pin_7) // PB7输出低电平 - LED7开#define LED_YELLOW3_OFFGPIO_SetBits(GPIOA, GPIO_Pin_8) // PB8输出高电平 - LED8关#define LED_YELLOW3_ONGPIO_ResetBits(GPIOA, GPIO_Pin_8) // PB8输出低电平 - LED8开#define LED_RED3_OFFGPIO_SetBits(GPIOA, GPIO_Pin_9) // PB9输出高电平 - LED9关#define LED_RED3_ONGPIO_ResetBits(GPIOA, GPIO_Pin_9) // PB9输出低电平 - LED9开#define LED_GREEN4_OFFGPIO_SetBits(GPIOA, GPIO_Pin_10) // PB10输出高电平 - LED10关#define LED_GREEN4_ONGPIO_ResetBits(GPIOA, GPIO_Pin_10) // PB10输出低电平 - LED10开#define LED_YELLOW4_OFFGPIO_SetBits(GPIOA, GPIO_Pin_11) // PB11输出高电平 - LED11关#define LED_YELLOW4_ONGPIO_ResetBits(GPIOA, GPIO_Pin_11) // PB11输出低电平 - LED11开#define LED_RED4_OFFGPIO_SetBits(GPIOA, GPIO_Pin_12) // PB12输出高电平 - LED12关#define LED_RED4_ONGPIO_ResetBits(GPIOA, GPIO_Pin_12) // PB12输出低电平 - LED12开/* Exported functions ------------------------------------------------------- */void LED_Cfg(void);#endif /* __LED_H */

beep.c

/********************************************************************************* @file beep.c* @author 陈* @version Vx.x* @date .4.24* @brief xxx.******************************************************************************* @attention********************************************************************************//* Includes ------------------------------------------------------------------*/#include "beep.h" #include "stm32f10x.h"void BEEP_Cfg(void){GPIO_InitTypeDef beep_gpio;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能端口B的时钟/* LED I/O配置 */ beep_gpio.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //14引脚beep_gpio.GPIO_Mode = GPIO_Mode_Out_PP;// 通用推挽输出beep_gpio.GPIO_Speed = GPIO_Speed_2MHz;// 2MHzGPIO_Init(GPIOB, &beep_gpio);/* 配置完成后关闭所有BEEP */BEEP0_OFF;BEEP1_OFF;BEEP2_OFF;BEEP3_OFF;}

beep.h

/********************************************************************************* @file beep.h* @author 陈* @version Vx.x* @date .4.24* @brief xxx.******************************************************************************* @attention********************************************************************************//* Define to prevent recursive inclusion -------------------------------------*/#ifndef __BEEP_H#define __BEEP_H/* Includes ------------------------------------------------------------------*/#include "stm32f10x.h"/* Exported types ------------------------------------------------------------*//* Exported constants --------------------------------------------------------*//* Exported macro ------------------------------------------------------------*//* 控制BEEP(调用库函数) */#define BEEP0_OFFGPIO_SetBits(GPIOB, GPIO_Pin_0) // PB13输出高电平 - BEEP0关#define BEEP0_ONGPIO_ResetBits(GPIOB, GPIO_Pin_0) // PB13输出低电平 - BEEP0开#define BEEP1_OFFGPIO_SetBits(GPIOB, GPIO_Pin_1) // PB13输出高电平 - BEEP1关#define BEEP1_ONGPIO_ResetBits(GPIOB, GPIO_Pin_1) // PB13输出低电平 - BEEP1开#define BEEP2_OFFGPIO_SetBits(GPIOB, GPIO_Pin_2) // PB13输出高电平 - BEEP2关#define BEEP2_ONGPIO_ResetBits(GPIOB, GPIO_Pin_2) // PB13输出低电平 - BEEP2开#define BEEP3_OFFGPIO_SetBits(GPIOB, GPIO_Pin_3) // PB13输出高电平 - BEEP3关#define BEEP3_ONGPIO_ResetBits(GPIOB, GPIO_Pin_3) // PB13输出低电平 - BEEP3开/* Exported functions ------------------------------------------------------- */void BEEP_Cfg(void);#endif /* __BEEP_H */

proteus中仿真电路图

如果觉得《STM32单片机+proteus8仿真的简易交通灯设计》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。