一起玩儿Proteus仿真(C51)——05. 红绿灯仿真(一)

摘要:本文介绍如何仿真红绿灯

今天来做一个红绿灯仿真的程序,这个程序主要包括一下这些功能:

  1. 模拟的路口为十字交叉路口,假设东西和南北方向都是双向行驶,因此需要设置4组红绿灯和4个倒计时显示屏。
  2. 倒计时时间最长为99秒,可以使用2位数码管。
  3. 用按键可以单独调整东西和南北方向的绿灯时间。
  4. 黄灯的时长默认为3秒。
  5. 红灯的倒计时时间为另一方向的绿灯时间加上黄灯的时间。

下面就来做一个简单的仿真程序。在进行方案设计之前,先来了解一下数码管的基本知识机器使用方法。

数码管是一种利用LED的显示器件,其原理就是在内部集成了一系列的LED,每个LED对应显示一段,通过控制不同的LED点亮来组成不同的字符。根据不同的显示段数(也就是内部LED的数量),常见的有7段式、8段式、14段式和16段式数码管。如下图所示:

数码管内部是一系列的LED二极管,根据这些LED的接法不同,可以将数码管分成共阳极数码管和共阴极数码管。所谓的共阳极就是将LED的阳极都连接到一起,这样在使用的时候,将这个公共端连接到电源正极,那么另一端为低电平的时候,该LED就会被点亮。如果是共阴极数码管,那么就是将所有LED的阴极连接到了一起,然后再将这个公共点接地,那么将来另一端为高电平时,可以驱动这个LED点亮。电路原理图如下图所示:

由于数码管的内部就是LED二极管,因此在驱动其点亮的时候,不能直接一端接+5V,一端接地,必须要有限流电阻。通常限流电阻的大小为100欧~330欧都可以。

利用单片机驱动数码管,本质上就是通过单片机的引脚控制LED的两灭,通过不同的组合,显示出来我们想要的字符。下面就以上图中的8段式数码管为例,将其连接到单片机的某一组的8个引脚上,看显示不同的字符,所对应的引脚的输出值。

数码管内部连接

共阳

共阴

小数点接单片机

最高位

最低位

最高位

最低位

点亮

熄灭

点亮

熄灭

点亮

熄灭

点亮

熄灭

0

0x40

0xC0

0x02

0x03

0xBF

0x3F

0xFD

0xFC

1

0x79

0xF9

0x9E

0x9F

0x86

0x06

0x61

0x60

2

0x24

0xA4

0x24

0x25

0xDB

0x5B

0xDB

0xDA

3

0x30

0xB0

0x0C

0x0D

0xCF

0x4F

0xF3

0xF2

4

0x19

0x99

0x98

0x99

0xE6

0x66

0x67

0x66

5

0x12

0x92

0x48

0x49

0xED

0x6D

0xB7

0xB6

6

0x02

0x82

0x40

0x41

0xFD

0x7D

0xBF

0xBE

7

0x78

0xF8

0x1E

0x1F

0x87

0x07

0xE1

0xE0

8

0x00

0x80

0x00

0x01

0xFF

0x7F

0xFF

0xFE

9

0x10

0x90

0x08

0x09

0xEF

0x6F

0xF7

0xF6

在程序的开发中可以按照接法,将相应一列的数值存储到一个数组中,这样,使用的时候,直接通过索引访问数组中的数值就可以了。这个在后面的程序中会有例子。

数码管的驱动显示方法有两种,一种是静态显示,一种是动态显示。静态显示就是利用单片机的一组GPIO口,连接一个数码管模块,然后让各个引脚保持上面表中相应的状态,来显示数据的方法。

具体使用方法如下图所示:

这时,只要设置P0=0x40就可以让数码管一直显示“0”。这种静态驱动数码管的好处显而易见,就是驱动程序非常的简单,但缺点也是显而易见的,每个数码管都要占用一组GPIO端口,如果数码管多了,引脚肯定会不够用的。因此,多个数码管的时候,就要使用动态显示。

所谓的动态显示,就是依次向每位数码管送出字形码的同时,控制公共端的电平,每一位数码管之间利用延时程序进行延时,当延时程序非常短时,由于发光管的余辉和人眼视觉暂留作用,此时我们人眼就分别不出位于位之间时有延迟存在并且是交替显示的,此时的感觉是所有的数码管都在同时显示。

所谓视觉暂留现象即视觉暂停现象(Persistenceofvision Visualstayingphenomenon, durationofvision)又称“余晖效应”,1824年由英国伦敦大学教授皮特·马克·罗葛特在他的研究报告《移动物体的视觉暂留现象》中最先提出:人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。

动态显示的原理如下图所示:

动态显示的程序在这里就不举例了,这个红绿灯仿真的程序使用的就是动态显示的方法。具体实现方法请参照下篇文章中的介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/681536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】C++语言基础学习笔记(七)——Array数组

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

Linux_进程概念

硬件系统 软件系统 进程概念 进程状态 孤儿进程 进程优先级 一.硬件系统 1.1 冯诺依曼体系结构 数学家冯诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备&a…

Python学习之路-爬虫提高:scrapy基础

Python学习之路-爬虫提高:scrapy基础 为什么要学习scrapy 通过前面的学习,我们已经能够解决90%的爬虫问题了,那么scrapy是为了解决剩下的10%的问题么,不是,scrapy框架能够让我们的爬虫效率更高 什么是scrapy Scrapy是一个为了…

tee漏洞学习-翻译-3:TrustZone exploit for MSM8974

原文:http://bits-please.blogspot.com/2015/08/full-trustzone-exploit-for-msm8974.html 在这篇博文中,我们将介绍利用上一篇文章中描述的 TrustZone 漏洞的完整过程。 在开发此漏洞时,我只使用了我值得信赖的(个人&#xff0…

120.乐理基础-五线谱-五线谱的多声部与指法问题

内容参考于:三分钟音乐社 上一个内容:119.乐理基础-五线谱-五线谱的标记-CSDN博客 五线谱多声部与简谱的多声部一样:简谱的多声部 五线谱多声部例子:钢琴谱 另一个例子:在纵向上有多个音符 然后放大之后&#xff0c…

【51单片机】利用【时间延迟】的原理规避【按键抖动问题】

前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 本章是51LCD单片机设计的一个环节,完整可前往相应博客查看完整传送门 欢迎订阅 YY滴C专栏!更多干货持续更新!以下…

详解CC++内存管理(new和delete)

文章目录 写在前面1. C&C内存分布2. C语言中动态内存管理方式:malloc/calloc/realloc/free3. C内存管理方式(语法)3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. new和delete的实现原理4.1 operator new与operator delete…

数据结构——6.2 图的存储与基本操作

6.2 图的存储与基本操作 概念 图的存储 邻接矩阵存有向图和无向图 根据邻接矩阵求度: 无向图:第i个结点的度 第i行 (或第列) 的非零元素个数 有向图: 第i个结点的出度 第i行的非零元素个数 第i个结点的入度 第i列的非零元素个数 第i个结…

Stable Diffusion教程——stable diffusion基础原理详解与安装秋叶整合包进行出图测试

前言 在2022年,人工智能创作内容(AIGC)成为了AI领域的热门话题之一。在ChatGPT问世之前,AI绘画以其独特的创意和便捷的创作工具迅速走红,引起了广泛关注。随着一系列以Stable Diffusion、Midjourney、NovelAI等为代表…

linux信号机制[一]

目录 信号量 时序问题 原子性 什么是信号 信号如何产生 引入 信号的处理方法 常见信号 如何理解组合键变成信号呢? 如何理解信号被进程保存以及信号发送的本质? 为什么要有信号 信号怎么用? 样例代码 core文件有什么用呢&#…

Docker基础与持续集成

docker 基础知识: docker与虚拟机 !左边为虚拟机,右边为docker环境 – Server :物理机服务器Host OS :构建的操作系统Hypervisor :一种虚拟机软件,装了之后才能虚拟化操作系统Guest OS :虚拟化的操作系统…

自动驾驶轨迹规划之kinodynamic planning

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文PPT来自深蓝学院《移动机器人的运动规划》 目录 1.kinodynamic的背景 2. old-school pipline 3.example 1.kinodynamic的背景 kinodynami…

java之jvm详解

JVM内存结构 程序计数器 Program Counter Register程序计数器(寄存器) 程序计数器在物理层上是通过寄存器实现的 作用:记住下一条jvm指令的执行地址特点 是线程私有的(每个线程都有属于自己的程序计数器)不会存在内存溢出 虚拟机栈(默认大小为1024kb) 每个线…

LeetCode、739. 每日温度【中等,单调栈】

文章目录 前言LeetCode、739. 每日温度【中等,单调栈】题目链接及分类思路单调栈 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技…

二次元自适应动态引导页

源码介绍 二次元自适应动态引导页,HTMLJSCSS,记事本修改,上传到服务器即可,也可以本地双击index.html查看效果 下载地址 https://wfr.lanzout.com/isRem1o7bfcb

MockServer 服务框架设计

大部分现有的 mock 工具只能满足 HTTP 协议下简单业务场景的使用。但是面对一些复杂的业务场景就显得捉襟见肘,比如对 socket 协议的应用进行 mock,或者对于支付接口的失败重试的定制化 mock 场景。 为解决上述问题,霍格沃兹测试学院设计并研…

零基础学编程怎么入手,中文编程工具构件箱之多页面板构件用法教程,系统化的编程视频教程上线

零基础学编程怎么入手,中文编程工具构件箱之多页面板构件用法教程,系统化的编程视频教程上线 一、前言 今天给大家分享的中文编程开发语言工具资料如下: 编程入门视频教程链接 http://​ https://edu.csdn.net/course/detail/39036 ​ …

下一代块存储重新定义任务关键型存储架构

HPE 宣布全面推出基于 HPE Alletra Storage MP 构建的 HPE GreenLake for Block Storage 第 3 版,提供业界首款分解式横向扩展块存储,并提供 100% 数据可用性保证。这种独特的块存储产品由共享一切存储架构提供支持,并通过 HPE GreenLake 云平…

(算法3)二分查找

朴素二分查找 最直接的二分查找,有序,查找数组中的某个元素 这种方法是有局限性的:只可以查找升序的数组,且要查找的元素是一个 注意:mid(中点)的计算应该是:left(right-left)/2 (个数是偶数时…

接口测试06 -- pytest接口自动化封装Loggin实战

1. 接口关键字封装 1.1 基本概念 接口关键字封装是指:将接口测试过程中常用的操作、验证封装成可复用的关键字(或称为函数、方法),以提高测试代码的可维护性和可复用性。 1.2 常见的接口关键字封装方式 1. 发送请求:封装一个函数,接受参数如请求方法、URL、请求头、请求…