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

news2024/11/28 4:42:23

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

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

  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.coloradmin.cn/o/1448447.html

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

相关文章

.NET高级面试指南专题七【SocketWebSocket】

Socket(套接字)是一种在计算机网络中实现通信的一种机制,它提供了一种标准的接口,使不同计算机上的程序能够通过网络进行数据交换。Socket允许在网络中的不同设备之间建立连接,进行双向的数据传输。 Socket通常用于实现…

C语言学习day13:for循环练习(生成随机数)

题目: 通过程序随机一个1-100的数,用户通过键盘输入数字 看是否匹配,匹配成功则跳出循环,失败则继续循环。 思路: 然后生成一个随机数需要写成死循环,同时需要有其他的出口可以写一个提示,比…

猫头虎分享已解决Bug || 任务调度失败(Cron Job Failure):CronJobError, ScheduledTaskFailure

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

炫酷3D按钮

一.预览 该样式有一种3D变换的高级感&#xff0c;大家可以合理利用这些样式到自己的按钮上 二.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

URL编码算法:解决特殊字符在URL中的烦恼

引言&#xff1a; URL编码算法是一种将URL中的特殊字符转换为特定格式的编码方式。它在网络传输中起到了保护数据安全与完整性的重要作用。本文将深入探讨URL编码算法的优点与缺点&#xff0c;并介绍它在Web开发、网络安全等方面的应用。 URL编码解码 | 一个覆盖广泛主题工具…

Decian 12.x基于LNMP安装phpIPAM(IP管理系统)

phpipam是一个开源Web IP地址管理应用程序&#xff08;IPAM&#xff09;。其目标是提供轻便&#xff0c;且有用的IP地址管理系统。它是基于PHP的应用程序&#xff0c;具有MySQL数据库后端&#xff0c;使用jQuery库&#xff0c;ajax和HTML5 / CSS3功能。 在Debian 12中&…

20240212请问如何将B站下载的软字幕转换成为SRT格式?

20240212请问如何将B站下载的软字幕转换成为SRT格式&#xff1f; 2024/2/12 12:47 百度搜索&#xff1a;字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下&#xff0c;三元操作替换if条件语句可以精简代码&#xff0c;并且更为直观&#xff0c;但是在下面的情况中使用三元操作将会返回警告。 借图&#xff1a; 案例 比如原代码&#xff1a; class classA{publ…

Vue3.0(六):VueX 4.x详解

Vuex4状态管理 什么是状态管理 在开发中&#xff0c;我们的应用程序需要处理各种各样的数据&#xff0c;这些数据需要保存在应用程序的某一个位置&#xff0c;对于这些数据的管理&#xff0c;就是 状态管理目前前端项目越来越复杂&#xff0c;多组件共享同一数据的状态很常见…

高校危化试剂管理:Java与SpringBoot的革新

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

机器学习2---逻辑回归(基础准备)

逻辑回归是基于线性回归是直线分的也可以做多分类 ## 数学基础 import numpy as np np.pi # 三角函数 np.sin() np.cos() np.tan() # 指数 y3**x # 对数 np.log10(10) np.log2(2) np.e np.log(np.e) #ln(e)# 对数运算 # log(AB) log(A) logB np.log(3*4)np.log(3)np.log(4) #…

HTML5+CSS3+移动web——HTML 基础

目录 一、标签语法 HTML的基本框架 1. 标题标签 2. 段落标签 3. 换行和水平线 4. 文本格式化标签 5. 图像标签 6. 路径 相对路径 绝对路径 7. 超链接标签 8. 音频 9. 视频 10. 注释 二、标签结构 一、标签语法 HTML 超文本标记语言——HyperText Markup Langua…

【大数据Hive】hive 表设计常用优化策略

目录 一、前言 二、hive 普通表查询原理 2.1 操作演示说明 2.1.1 创建一张表&#xff0c;并加载数据 2.1.2 统计3月24号的登录人数 2.1.3 查询原理过程总结 2.2 普通表结构带来的问题 三、hive分区表设计 3.1 区表结构 - 分区设计思想 3.2 操作演示 3.2.1 创建分区表…

如何使用六图一表七种武器

六图一表七种武器用于质量管理&#xff1a; 描述当遇到问题时应该用那张图来解决&#xff1a; 一、如果题目说出了质量问题需要找原因&#xff1f; 解&#xff1a;用因果图&#xff0c;因果图也称石川图或鱼骨图 二、如果要判断过程是否稳定受控&#xff1f; 解&#xff1a…

谷歌浏览器,如何将常用打开的网站创建快捷方式到电脑桌面?

打开谷歌浏览器&#xff0c;打开想要创建的快捷方式的网页 点击浏览器右上角的三个点&#xff1a; 点击选择【更多工具】 选择【创建快捷方式】 然后&#xff0c;在浏览器上方会弹出一个框&#xff0c;让命名此创建的快捷方式的名称 命名好之后&#xff0c;再点击【创…

Python-web自动化-Playwright的学习

Python-web自动化-Playwright的学习 1. 安装playwright2. 界面等待3. 自动化代码助手4. 定位元素1. css selector定位2. xpath定位3. get_by_XXX定位 5. 操作元素1. 单选框、复选框2. select下拉框3. 网页操作4. 框架页 frame5. 窗口切换6. 截屏 1. 安装playwright pip命令 pi…

【Windows】常用快捷键

文章目录 文本编辑相关快捷键窗口管理和操作系统快捷键浏览器快捷键其他常用快捷键系统无响应快捷键 快捷键&#xff1a;shortcut key、keyboard shortcuts。 文本编辑相关快捷键 这部分是非常常用的内容&#xff0c;在很多编辑器中都适用的&#xff0c;比如csdn的markdown和t…

Python 数据分析库之polars使用详解

概要 数据分析是现代应用程序和业务决策的关键组成部分。Python 作为一门强大的编程语言,拥有丰富的数据处理库和工具,其中之一就是 Polars。Polars 是一个现代化的数据操作和分析库,它提供了高性能的数据操作功能,支持链式方法调用,并且兼容 Pandas 和 Arrow 格式。本文…

每日一练——月落乌啼算钱

题目&#xff1a; 举例&#xff1a; 输入&#xff1a;6&#xff0c;输出&#xff1a;8.00 最开始看到这道题还有点蒙&#xff0c;但是看到他的公式想起了斐波那契数列 1,1,2,3,5,8...... 由前两个数相加得到第三个数&#xff0c;为An2An1An。 可以得出这个题目中所给的通项就…

Hive的Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是&#xff1a;inner join&#xff08;内连接&#xff09;、left join&#xff08;左连接&#xff09;、right join&#xff08;右连接&#xff09;、full outer join&#xff08;全外连接&#xff09;、left semi join&#xff08;左…