Arduino-Proteus仿真04-LED交通灯仿真

设计者:STCode(公众号同名)

前言:

Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路和集成电路,其提供了大量模拟与数字元器件及外部设备,以及各种虚拟仪器(如电压表、电流表、示波器、逻辑分析仪、信号发生器等),特别是它具有对单片机及其外围电路组成的综合系统交互仿真功能,
目前,Proteus仿真系统支持的主流单片机有ARM7(LPC21xx)、8051/52、AVR、PIC 10/12/16/18/24、MSP430、CotexM0/M3、HC11等,其支持的开发环境有Keil u Vision2/3/4、MPLAB、Atmel Studio等。

提示:

Proteus仿真Arduino中,关于所需硬件获取、软件编译、HEX文件获取、代码导入等问题请参考文章:Arduino-Proteus仿真01-LED灯闪烁

1) 练习描述

这次做一个LED模拟交通灯的实验,实现的效果为:东西向绿灯亮若干秒后,黄灯闪烁,闪烁五次后亮红灯,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁,闪烁五次后亮红灯,东西向亮绿灯,如此往复,本例将延时时间设置得较短是为了调试的时候能较快的观察到运行效果。

2) 元器件选择

·Arduino Uno
·LED-GREEN
·LED-RED
·LED-YELLOW
·RES(220O欧姆)

在元件模式中点击P选项,在元件库中搜索所需的元件名称,双击后便可添加到元件清单中。

3) 电路连接

由电路连接可以看出,南北向的红灯同时接到IO5,绿灯同时接到IO7,黄灯同时接到IO6,东西向的红绿黄灯连接方法类似,所有LED灯共阳极。

4) 程序设计

5)    #define RED_A       2   //东西向指示灯
6)   #define YELLOW_A    3
7)   #define GREEN_A     4
8)   #define RED_B       5   //南北向指示灯
9)   #define YELLOW_B    6
10)  #define GREEN_B     7
11)
12)  //定义闪烁次数及操作类型变量定义
13)  uint8_t Flash_Count = 0, display_Type = 1;
14)  uint8_t YELLOW_State = HIGH;
15)  //定义黄色LED初始状态
16)  void setup()
17)  {18)      for(int i=2;i<8;i++)   //设置led所接引脚为输出模式
19)      pinMode(i,OUTPUT);
20)  }
21)
22)  void loop()
23)  {24)      switch (display_Type)
25)      {26)          case 1://东西向绿灯与南北向红灯亮
27)              digitalWrite(RED_A,HIGH);
28)              digitalWrite(YELLOW_A,HIGH);
29)              digitalWrite(GREEN_A,LOW);
30)              digitalWrite(RED_B,LOW);
31)              digitalWrite(YELLOW_B,HIGH);
32)              digitalWrite(GREEN_B,HIGH);
33)              delay(3000);
34)              display_Type=2;
35)              break;
36)          case 2://东西向黄灯开始闪烁,绿灯关闭
37)              delay(200);
38)              if(YELLOW_State==HIGH)  YELLOW_State=LOW;
39)              else  YELLOW_State=HIGH;
40)              digitalWrite(YELLOW_A,YELLOW_State);
41)              digitalWrite(GREEN_A,HIGH);
42)              if(++Flash_Count != 10) return;  //闪烁5次
43)              Flash_Count=0;       //计数归零
44)              display_Type=3;
45)              break;
46)          case 3://东西向红灯与南北向绿灯亮
47)              digitalWrite(RED_A,LOW);
48)              digitalWrite(YELLOW_A,HIGH);
49)              digitalWrite(GREEN_A,HIGH);
50)              digitalWrite(RED_B,HIGH);
51)              digitalWrite(YELLOW_B,HIGH);
52)              digitalWrite(GREEN_B,LOW);
53)              delay(3000);
54)              display_Type=4;
55)              break;
56)          case 4://南北向黄灯开始闪烁
57)              delay(200);
58)              if(YELLOW_State==HIGH)  YELLOW_State=LOW;
59)              else  YELLOW_State=HIGH;
60)              digitalWrite(YELLOW_B,YELLOW_State);
61)              digitalWrite(GREEN_B,HIGH);
62)              if(++Flash_Count != 10) return; //闪烁5次
63)              Flash_Count=0;    //计数归零
64)              display_Type=1;   //回到第一种操作
65)              break;
66)      }
67)  }

程序说明:

源程序中用#define对东西向和南北向的指示灯分别进行了引脚定义,以便独立控制各路指示灯。源程序中的Flash_Count和display_Type分别标识闪烁次数与当前需要操作的类型,本例仿真中的交通指示灯切换时间设置得较短,以便在调试的时候较快地观察到运行效果。

5) 软件操作

程序编写完成后点击Arduino IDE编译器的文件—首选项,将编译选项勾选上。点击好以后进行编译,编译完成后复制HEX文件所在的路径,复制完成后返回Proteus软件,双击Arduino控制板,在Program File处粘贴HEX文件的路径。点击确定以后即可进行仿真,点击Proteus软件下方运行仿真按钮,可以看到仿真的效果。

源文件请关注公众号“STCode”获取~

Arduino-Proteus仿真04-LED交通灯仿真相关推荐

  1. 【Proteus】51单片机交通灯信号模拟仿真示例二

    [Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...

  2. 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  3. 基于51单片机十字路交通灯仿真_黄灯闪烁_正常模式+夜间模式+紧急模式

    基于51单片机十字路交通灯仿真_黄灯闪烁+夜间+夜间 目录 基于51单片机十字路交通灯仿真_黄灯闪烁+夜间+夜间 演示视频 基本功能: 仿真图 程序 程序代码 程序讲解 倒计时的产生 红黄绿灯状态处理 ...

  4. 单片机怎么通过按键控制计时器的开始和停止_学习电路仿真:基于proteus电路仿真软件的交通灯控制电路设计...

    电路仿真软件是当代重要软件之一,缺乏电路仿真软件,模拟运行环境将无法搭建.对于电路仿真软件,虽然市面上类别众多,但知名电路仿真软件为proteus.本文对于电路仿真软件的介绍,为基于proteus的交 ...

  5. 怎么用C51语言实现50ms延时,单片机入门-C51语言实现简单的红绿LED交通灯控制

    原标题:单片机入门-C51语言实现简单的红绿LED交通灯控制 视频教程如下: 本文介绍了用C51语言实现十字路口交通灯控制: 四个路口各有红.绿2个LED,模拟交通灯的控制,即东西走向的灯变红,南北走 ...

  6. 51单片机(动态数码管,静态数码管,led交通灯全部点亮)小白试图进阶菜鸟

    代码有很多错误,因为没搞清楚咋个接线(能传输数据就OK),反正缝缝补补总算是给这一堆玩意点亮了. #include <REGX52.H> #include <intrins.h> ...

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

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

  8. protues 51单片机交通灯仿真

    1.仪器.材料 PC机.keil软件.proteus软件 2.内容及要求 使用51单片机控制交通灯状态的改变,并使用数码管来实现倒计时时间的显示.设置3个按键用于改变交通灯工作于不同的工作状态(全部黄 ...

  9. AT89C51单片机交通灯仿真图+代码

    接上篇万年历,这篇博客也是记录我的实训内容,我们实训有万年历和交通灯.好了不说闲话,上正文. 不知道为何突然发现说原创审核不过,完全手写的,也不知道为何,哭 注:在评论有附本人交通灯的图噢,不过我还是 ...

最新文章

  1. 【nginx学习一】基本原理初探
  2. masonry的约束应该写在哪里_规划奇思|“中心城区”到底在哪里?和城镇开发边界是什么关系?...
  3. TypeScript 简介与优势
  4. java中nio流_Java输入输出流IO介绍(与NIO比较)
  5. 表分析oracle的作用,Oracle中分析表的作用
  6. 不喜欢在北京的感觉,删掉几篇北京生活的随笔。以后能忘掉这个地方就好了。...
  7. Ubuntu下U盘变成只读的解决方法
  8. java抽象类的字段_java打印出继承体系的类(包括抽象类)、接口、域字段
  9. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)转载自码农网
  10. 锐起无盘服务器陈列设置,原创]锐起无盘安装全图文设置,含SCII设置在内
  11. ISP模块之RAW DATA去噪(二)--BM3D算法
  12. #Android-中控指纹仪Live R20 开发注意事项#
  13. echarts图表给柱形图的每个柱子设置不同颜色(包括每个柱子设置渐变颜色)
  14. paddlepaddle、paddlehub依赖包下载并离线安装
  15. iOS 自动订阅开发
  16. 什么是 JWT -- JSON WEB TOKEN
  17. es6 语法,在 IE 中不兼容的处理办法
  18. 信号完整性分析---串扰和反射
  19. Linux集群和自动化运维
  20. matlab怎么输入sin,在 MATLAB命令窗口中输入:a=sin(pi/7);save a,则下列论述中正确的是:...

热门文章

  1. 健身瑜伽知识答题+抽奖小程序具体玩法规则
  2. 本地连接显示网络电缆被拔出是怎么回事?
  3. MIT6.S081 Lab3 Page tables
  4. 螺旋折线(推公式,找规律)
  5. Ubuntu18.04或者20.04上用docker的方式安装微信或者qq
  6. 电脑优化软件测试大乐,性能优化小结(转) - 乐呵呵测试天地 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  7. 怎样让长途电话费去见鬼
  8. H264中的时间戳(DTS和PTS)
  9. “ABAQUS复合材料建模技术与应用”专题
  10. OGC标准介绍 18