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 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仿真的简易交通灯设计相关推荐
- Multisim14.0 简易交通灯设计
设计框图 设计思路: 利用74LS160构成三进制计数器,使其对交通灯倒计时显示进行控制. 当计数器输出00(绿).01(黄).10(红灯) 并通过逻辑门化简对74LS192倒计芯片的输入端进行控制 ...
- 基于51单片机的简易交通灯仿真代码讲解
J028 51单片机简易交通灯易懂版_仿真+代码+报告讲解 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 目录标题 工作状态 仿真图 程序 倒计时的产生 红黄 ...
- 【Proteus仿真】51单片机汇编数显大型交通灯控制
[Proteus仿真]51单片机汇编数显大型交通灯控制 Proteus仿真 学汇编的人虽然 不多,但是还是有的,分享一个汇编的案例,给需要的人予以参考学习,有些时候我们还是需要懂一些汇编指令比较好. ...
- 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...
51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...
- 基于单片机的交通灯设计
摘要 本系统由单片机系统.键盘.LED 显示.交通灯演示系统组成.系统包括人行道.左转.右转.以及基本的交通灯的功能.系统除基本交通灯功能外,还具有倒计时.时间设置.紧急情况处理.分时段调整信号灯的点 ...
- 单片机c语言交通灯源程序,51单片机用C语言实现交通灯_红绿灯_源程序
单片机 AT STC C语言 C 89c51 89c52 设计 交通灯 仿真 毕业论文 程序设计 毕业设计 课题设计 51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交 ...
- 简易交通灯控制电路设计
摘要 利用计数器和必要的门电路设计简易交通灯控制电路,红绿灯交替点亮90秒.使用74LS90为计数器件,利用T触发器的翻转功能,(本实验将不采用译码器而采用T触发器进行实验),查阅器件参数手册,设计功 ...
- 基于单片机的交通灯设计c语言程序,基于单片机AT89C51控制的十字路口交通灯系统设计...
摘要:本文设计一个单片机AT89C51控制的十字路口交通灯,通过硬件电路设计.元器件使用.软件设计.仿真等环节,实现主干道和支干道的分时控制,保证正常的交通秩序. 关键词:单片机 系统设计 交通灯 1 ...
- 51单片机数码管交通灯倒计时c语言,51单片机数码管倒计时模拟交通灯汇编程序...
/********************************************************************** 51单片机数码管倒计时模拟交通灯汇编程序 LED数码管为 ...
- c语言写红绿灯程序,51单片机用C语言实现交通灯(红绿灯)源程序
51单片机用C语言实现交通灯(红绿灯)源程序 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: /* 1.程序目的:使用定时器学习 倒计时 红绿灯原理 主 ...
最新文章
- window环境Visual Studio配置:OpenCV,Eigen,jsoncpp
- Python 面试总结
- TCP连接建立系列 — 服务端接收ACK段(二)
- 单核7:全景闹钟和单核工作法
- 中间件的解析漏洞详解及演示
- sql视图 权限_MySQL数据库的SQL语言与视图
- FreeRTOS系统配置文件FreeRTOSConfig.h
- 品质创新,江铃控股携手华天软件CAPP系统决战SUV中高端市场
- html在线设计,快速建站 20个设计优秀的HTML网站模板(免费)
- http接口返回对象的方法
- 紫色金融仿给你花网贷平台源码|借贷系统|带计息费用
- 计算机系大学生为什么选择在CSDN写博客?
- 大气压力换算公式_气压单位换算表(压力单位换算公式大全)
- 什么是android原生系统版本,定制安卓和原生Android到底有哪些不同之处?彻底真相了...
- CHM文件打不开或者提示的解决办法
- 深度学习数据集—鞋子、凉鞋和靴子图片数据集介绍
- 灭点计算 matlab,基于两个灭点的相机标定
- 信息量爆表的struct page-flags
- 在ROS中使用USB网络摄像头传输图像
- 使用Apisix打造家庭NAS网关,免公网IP访问