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    2021.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    2021.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_OFF     GPIOA->BSRR = GPIO_Pin_13    // PA0输出高电平 - LED1关
//#define LED1_ON      GPIOA->BRR  = GPIO_Pin_13    // PA0输出低电平 - LED1开/* 控制LED1(调用库函数) */
#define LED_GREEN1_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_1)    // PB1输出高电平 - LED1关
#define LED_GREEN1_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_1)  // PB1输出低电平 - LED1开#define LED_YELLOW1_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_2)    // PB2输出高电平 - LED2关
#define LED_YELLOW1_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_2)  // PB2输出低电平 - LED2开#define LED_RED1_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_3)    // PB3输出高电平 - LED3关
#define LED_RED1_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_3)  // PB3输出低电平 - LED3开#define LED_GREEN2_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_4)    // PB4输出高电平 - LED4关
#define LED_GREEN2_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_4)  // PB4输出低电平 - LED4开#define LED_YELLOW2_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_5)    // PB5输出高电平 - LED5关
#define LED_YELLOW2_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_5)  // PB5输出低电平 - LED5开#define LED_RED2_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_6)    // PB6输出高电平 - LED6关
#define LED_RED2_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_6)  // PB6输出低电平 - LED6开#define LED_GREEN3_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_7)    // PB7输出高电平 - LED7关
#define LED_GREEN3_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_7)  // PB7输出低电平 - LED7开#define LED_YELLOW3_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_8)    // PB8输出高电平 - LED8关
#define LED_YELLOW3_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_8)  // PB8输出低电平 - LED8开#define LED_RED3_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_9)    // PB9输出高电平 - LED9关
#define LED_RED3_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_9)  // PB9输出低电平 - LED9开#define LED_GREEN4_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_10)    // PB10输出高电平 - LED10关
#define LED_GREEN4_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_10)  // PB10输出低电平 - LED10开#define LED_YELLOW4_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_11)    // PB11输出高电平 - LED11关
#define LED_YELLOW4_ON      GPIO_ResetBits(GPIOA, GPIO_Pin_11)  // PB11输出低电平 - LED11开#define LED_RED4_OFF     GPIO_SetBits(GPIOA, GPIO_Pin_12)    // PB12输出高电平 - LED12关
#define LED_RED4_ON      GPIO_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    2021.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    2021.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_OFF     GPIO_SetBits(GPIOB, GPIO_Pin_0)    // PB13输出高电平 - BEEP0关
#define BEEP0_ON      GPIO_ResetBits(GPIOB, GPIO_Pin_0)  // PB13输出低电平 - BEEP0开#define BEEP1_OFF     GPIO_SetBits(GPIOB, GPIO_Pin_1)    // PB13输出高电平 - BEEP1关
#define BEEP1_ON      GPIO_ResetBits(GPIOB, GPIO_Pin_1)  // PB13输出低电平 - BEEP1开#define BEEP2_OFF     GPIO_SetBits(GPIOB, GPIO_Pin_2)    // PB13输出高电平 - BEEP2关
#define BEEP2_ON      GPIO_ResetBits(GPIOB, GPIO_Pin_2)  // PB13输出低电平 - BEEP2开#define BEEP3_OFF     GPIO_SetBits(GPIOB, GPIO_Pin_3)    // PB13输出高电平 - BEEP3关
#define BEEP3_ON      GPIO_ResetBits(GPIOB, GPIO_Pin_3)  // PB13输出低电平 - BEEP3开/* Exported functions ------------------------------------------------------- */
void BEEP_Cfg(void);#endif /* __BEEP_H */

proteus中仿真电路图

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

  1. Multisim14.0 简易交通灯设计

    设计框图 设计思路: 利用74LS160构成三进制计数器,使其对交通灯倒计时显示进行控制. 当计数器输出00(绿).01(黄).10(红灯) 并通过逻辑门化简对74LS192倒计芯片的输入端进行控制 ...

  2. 基于51单片机的简易交通灯仿真代码讲解

    J028 51单片机简易交通灯易懂版_仿真+代码+报告讲解 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 目录标题 工作状态 仿真图 程序 倒计时的产生 红黄 ...

  3. 【Proteus仿真】51单片机汇编数显大型交通灯控制

    [Proteus仿真]51单片机汇编数显大型交通灯控制 Proteus仿真 学汇编的人虽然 不多,但是还是有的,分享一个汇编的案例,给需要的人予以参考学习,有些时候我们还是需要懂一些汇编指令比较好. ...

  4. 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...

    51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...

  5. 基于单片机的交通灯设计

    摘要 本系统由单片机系统.键盘.LED 显示.交通灯演示系统组成.系统包括人行道.左转.右转.以及基本的交通灯的功能.系统除基本交通灯功能外,还具有倒计时.时间设置.紧急情况处理.分时段调整信号灯的点 ...

  6. 单片机c语言交通灯源程序,51单片机用C语言实现交通灯_红绿灯_源程序

    单片机 AT STC C语言 C 89c51 89c52 设计 交通灯 仿真 毕业论文 程序设计 毕业设计 课题设计 51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交 ...

  7. 简易交通灯控制电路设计

    摘要 利用计数器和必要的门电路设计简易交通灯控制电路,红绿灯交替点亮90秒.使用74LS90为计数器件,利用T触发器的翻转功能,(本实验将不采用译码器而采用T触发器进行实验),查阅器件参数手册,设计功 ...

  8. 基于单片机的交通灯设计c语言程序,基于单片机AT89C51控制的十字路口交通灯系统设计...

    摘要:本文设计一个单片机AT89C51控制的十字路口交通灯,通过硬件电路设计.元器件使用.软件设计.仿真等环节,实现主干道和支干道的分时控制,保证正常的交通秩序. 关键词:单片机 系统设计 交通灯 1 ...

  9. 51单片机数码管交通灯倒计时c语言,51单片机数码管倒计时模拟交通灯汇编程序...

    /********************************************************************** 51单片机数码管倒计时模拟交通灯汇编程序 LED数码管为 ...

  10. c语言写红绿灯程序,51单片机用C语言实现交通灯(红绿灯)源程序

    51单片机用C语言实现交通灯(红绿灯)源程序 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用定时器学习 倒计时 红绿灯原理 主 ...

最新文章

  1. window环境Visual Studio配置:OpenCV,Eigen,jsoncpp
  2. Python 面试总结
  3. TCP连接建立系列 — 服务端接收ACK段(二)
  4. 单核7:全景闹钟和单核工作法
  5. 中间件的解析漏洞详解及演示
  6. sql视图 权限_MySQL数据库的SQL语言与视图
  7. FreeRTOS系统配置文件FreeRTOSConfig.h
  8. 品质创新,江铃控股携手华天软件CAPP系统决战SUV中高端市场
  9. html在线设计,快速建站 20个设计优秀的HTML网站模板(免费)
  10. http接口返回对象的方法
  11. 紫色金融仿给你花网贷平台源码|借贷系统|带计息费用
  12. 计算机系大学生为什么选择在CSDN写博客?
  13. 大气压力换算公式_气压单位换算表(压力单位换算公式大全)
  14. 什么是android原生系统版本,定制安卓和原生Android到底有哪些不同之处?彻底真相了...
  15. CHM文件打不开或者提示的解决办法
  16. 深度学习数据集—鞋子、凉鞋和靴子图片数据集介绍
  17. 灭点计算 matlab,基于两个灭点的相机标定
  18. 信息量爆表的struct page-flags
  19. 在ROS中使用USB网络摄像头传输图像
  20. 使用Apisix打造家庭NAS网关,免公网IP访问

热门文章

  1. MATLAB-马尔可夫链(马氏链)模型
  2. donet 微服务开发 学习-使用docker部署Asp.net core web应用程序
  3. 微信上老师发的试卷怎样打印?
  4. 微信小程序加载图片失败展示默认图片
  5. 三菱f800变频器 频率设定_三菱plc和变频器通讯怎么设置频率
  6. 【学习笔记】《网络安全态势感知》第三章:网络安全数据采集与融合
  7. 基于RFID定位技术的酒店资产管理--RFID资产管理--新导智能
  8. Java实现观察者模式
  9. 微信小程序 计算导航高度、设置浮层位置
  10. java JButton计算器布局