【备战软考(嵌入式系统设计师)】11 - 硬件电路基础

逻辑门电路

首先我们需要先了解三个最基础的门电路,可以说我们一切的电子产品的基石就是这哥仨,它们就与,或,非。

与门和或门有两个输入端,一个输出端;非门有一个输入端一个输出端。

在我们数字电路中,使用逻辑‘1’和逻辑‘0’来表示高电平和低电平,也就是两种状态,这也是计算机中普遍(之前苏联搞过三进制计算机)用的是二进制,因为我们的电路只有高低电平两种状态,我们可以使用高电平来表示二进制里的1,低电平表示二进制里的0。

那么知道了我们的电子元件工作状态分为逻辑0和逻辑1之后我们再回过头看看上面哥仨,它们的工作状态又是怎么样的呢。

先来看看与门,我下面的演示使用的是proteus,不仅可以画原理图还可以直接仿真运行,缺点就是需要破解以及操作很反人类,所以我基本不用,这里需要演示一下电路图才用一用。

与门一共有两个输入端,每个端口的工作状态是两种,因此对应着的有2^2种不同的情况,也就是上面四种,我们可以发现只有第一种情况输出的是逻辑1,其他都是逻辑0。这是因为只有当两个输入都为逻辑1时,与门的输出才会为1,否则都是0。

接下来看看或门。

或门可以说是和与门相反,只有当两个输入端都为逻辑0时输出才会0,其他情况都会是逻辑1。

接下来看看非门,非门只有一个输入端,因此只有两种情况,从它的名字我们也可以猜出,它的功能就是将输入端的信号反过来。

除了这仨之外还有两个门电路比较常见,不过这俩是由上面三个组合而来的,分别是与非门和或非门,也就是在与门和或门的输出端再加个非门。在符号表示上面就是在与门和或门的输出的地方加个小圆圈。

看得出来与非门的输出结果和与门的结果是相反的,或非门和或门的结果也是相反的。

上面各个门电路的不同输入对应的输出的表格叫做真值表,下面以与门的真值表来举例。

真值表要求包含所有的输入情况,以及每种输入情况只能有一种输出情况。

刚接触数字电路的小伙伴可能会说,难道我要把这五种门电路的真值表都背下来嘛。实际上是不需要的,我们只需要理解性记忆即可,就记住与门是两个输入都需要为逻辑1,输出才为1,或门是只要一个输入为逻辑1,输出就为1,非门就是翻转输入。剩下的与非和或非就是与门+非门和或门+非门。

组合逻辑电路

逻辑电路可以分为两种,一种是可以存储数据的,另一种是不能存储数据的。

不能存储数据的是组合逻辑电路,它的输出值只取决于当前的输入值。

LED数码管

数码管由多个LED发光二极管组成。

我们知道,LED发光二极管需要让其正向导通才会亮,因此要让这个数码管亮起来就需要让它内部的LED正向导通。

首先我们需要确认的是手上的数码管是共阳极还是共阴极。共阳极的意思就是数码管内所有LED的阳极都是固定接在一起,并且阳极给的是高电平,如果要让LED亮,只需要在特定的管脚接入低电平即可。

如果是共阴极,那么就代表着数码管内所有LED的阴极都是固定接在一起,并且阴极给的是低电平,如果要让LED亮,我们就给高电平。

低电平的驱动能力要强于高电平,因此一般来说共阳极的数码管用的比较多。

译码器

如果我们要驱动一个数码管的话,需要7个管脚(具体情况具体分析,上面举例的数码管是7管脚的)。如果我们使用单片机去驱动的话对应GPIO口有些浪费,那么有没有什么办法能省一些引脚呢?答案是译码器。

如果是使用二进制去表示8个数,只需要三个bit,因此我们省管脚的思路就在这里了,我们只需要三个管脚就可以去表示八个数,跟上面直接使用七个管脚相比省了一半还多。

译码器的原理就是将我们输入端的二进制翻译成十进制,比如上图,左边输入的逻辑电平是101,翻译成十进制就是5,因此右侧输出端的五号引脚就输出了低电平,其余为高电平,同理,如果我们要右侧7号引脚输出低电平,则只需要控制左侧的输入为111即可。

左侧下面三个管脚是使能信号,E1~3都需要高电平,译码器才会工作,由于E2和E3在输入端加了个小圆圈,是取非的意思,因此要使能译码器就是给E1逻辑1,给E2和E3逻辑0即可。

时序逻辑电路

可以存储数据的是时序逻辑电路,它的输出值不仅取决于当前的输入状态,还取决于存储单元中的值。

最经典的时序逻辑电路是触发器,触发器可以存储一个bit的二值信号。

触发器又分为电位触发方式触发器和边沿触发方式触发器。

我就不画了(protues不好用,而且我懒),直接从百度拿图了。

电位触发方式触发器

边沿触发方式触发器

不同去记这些触发器是如何构成的,感兴趣的小伙伴可以去研究研究它们是如何存储数据的,剩下我们就记住几个时序逻辑电路,就是能认出啥啥元器件是时序逻辑电路还是组合逻辑电路就行。

常见的时序逻辑电路有寄存器,移位器,计数器等。

其实很好分辨的,能存数据的就是时序逻辑电路,存不了数据的就是组合逻辑电路。

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

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

相关文章

c语言求100到999的水仙花数

/** 输出出100到999的水仙花数* 水仙花数:一个三位数的立方和等于它本身* 范围是三位数* 153 370 371 407*/#include <stdio.h>int main() {int i;int a;int b;int c;for (i 100; i < 1000; i){// * 取百位数a i / 100;//* 取十位数b (i % 100) / 10;// * 取个位数…

Qt框架中 MOC 与 Q_OBJECT 宏

MOC,全称为元对象编译器(Meta-Object Compiler),是 Qt 框架中的一个重要工具,用于处理包含了特定宏(如 Q_OBJECT、Q_PROPERTY 等)的头文件,并生成额外的 C++ 代码,以支持 Qt 的元对象系统。以下是关于 MOC 的详细解释: 1. 元对象系统(Meta Object System): 在 Qt…

【爬虫基础1.1课】——requests模块

目录索引 requests模块的作用&#xff1a;实例引入&#xff1a; 特殊情况&#xff1a;锦囊1&#xff1a;锦囊2: 这一个栏目&#xff0c;我会给出我从零开始学习爬虫的全过程。感兴趣的小伙伴可以关注一波&#xff0c;用于复习和新学都是不错的选择。 那么废话不多说&#xff0c…

Leetcode—394. 字符串解码【中等】

2024每日刷题&#xff08;131&#xff09; Leetcode—394. 字符串解码 实现代码 class Solution { public:string decodeString(string s) {string curstr;int curNum 0;stack<pair<string, int>> st; for(char c: s) {if(isdigit(c)) {curNum curNum * 10 (c…

【Linux网络编程】HTTPS协议

【Linux网络编程】HTTPS协议 目录 【Linux网络编程】HTTPS协议HTTPS介绍加密常见的加密方式HTTPS的工作过程探究&#xff08;重点&#xff09;常见问题完整流程总结 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.5.9 前言&#xff1a;本篇博客将会介绍HTTPS协议 HTTPS…

Spring Cloud原理详解和作用特点

当涉及到构建和管理分布式系统的微服务架构时&#xff0c;Spring Cloud 是一个备受欢迎的选择。它提供了一套强大的工具和组件&#xff0c;使开发者能够轻松地构建、部署和管理微服务应用程序。本文将深入探讨 Spring Cloud 的原理和作用特点。 1. Spring Cloud 的原理 Sprin…

proteus使用问题

1、无法和视频里面一样新建工程 2、实验效果和视频不也一样 自己的电路图(灯不亮)&#xff1a;

C语言—深入理解指针(1)

1.内存和地址 1.1 内存 计算机上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数据也会放回内存中&#xff0c;那我们买电脑的时候&#xff0c;电脑上内存是8GB/16GB/32GB 等&#xff0c;其实管理方式也…

Python从0到POC编写--实用小脚本02

爆破脚本&#xff1a; 爆破脚本也是我们经常使用的东西 这里就简单讲讲后台爆破脚本的编写吧 在编写之前&#xff0c;我们先通过访问网站去看看情况 首先我们可以先登录看看 输入账号 admin &#xff0c;密码 12345 后 登录失败&#xff0c;提示 用户名或密码错误 在输入…

探秘Tailwind CSS:前端开发的加速器(Tailwind CSS让CSS编写更简洁)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Tailwind CSS 📒📝 快速体验📝 深入学习⚓️ 相关链接 ⚓️📖 介绍 📖 在这个快速迭代的互联网时代,前端开发效率和设计质量的双重要求,使得开发者们不断寻求更高效的工具和方法。今天,我们要介绍的是一个能够极大…

java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节&#xff0c;所以加了些代码&#xff0c;使得交互更加的具体有趣! 效果 大家可以多运行几次代码&#xff0c;得到不同的战况&#xff01;&#xff01; 代码实现 1.bean类 import java.util.Random;public class TextGame {private Strin…

[性能优化] ScrollView视图优化为循环列表

问题描述&#xff1a; 原先商城的物品栏中的item 是load在一个scrollView 下&#xff0c;用于滑动查看。仅仅在父级panel下是使用了NGUI原生的scrollview 组件&#xff0c;随着商场物品列表中新物品的增多。panel下加载的实例也非常庞大。而大部分的实例用户也无法看到&#x…

python代码无法点击进入,如何破???

python代码无法点击进入&#xff0c;如何破&#xff1f;&#xff1f;&#xff1f; 举个栗子&#xff1a; model.chat是无法进入的&#xff0c;这时可以使用如下的命令进行操作&#xff1a; ?model.chat

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert&#xff1a;断言&#xff0c;一般用来比较是否相等&#xff0c;比如 Assert.assertEquals 在JUnit测试框架中&#xff0c;BeforeClass&#xff0c;Before&#xff0c;After和AfterClass是四个常用的注解&#xff0c;它们的作用如下&#xff1a; …

Vue--》从零开始打造交互体验一流的电商平台(一)

今天开始使用 vue3 ts 搭建一个电商项目平台&#xff0c;因为文章会将项目的每处代码的书写都会讲解到&#xff0c;所以本项目会分成好几篇文章进行讲解&#xff0c;我会在最后一篇文章中会将项目代码开源到我的github上&#xff0c;大家可以自行去进行下载运行&#xff0c;希…

LeetCode刷题笔记第190题:颠倒二进制位

LeetCode刷题笔记第190题&#xff1a;颠倒二进制位 题目: 颠倒输入的二进制数 想法&#xff1a; 通过位运算来实现&#xff0c;以下通过代码逐步说明 class Solution:def reverseBits(self, n: int) -> int:result 0for i in range(32):result (result << 1) |…

Pyserini

文章目录 关于 Pyserini安装&#x1f3ac;如何搜索&#xff1f;&#x1f64b;如何给我的语料集建立索引 关于 Pyserini github : https://github.com/castorini/pyseriniPyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Re…

第09章 局域网技术(拓扑结构设计+FDDI工作机制)

9.1 本章目标 了解IEEE 802局域网标准掌握局域网拓扑结构了解10Base以太网了解快速以太网熟悉交换式以太网了解千兆位以太网了解其它种类的局域网局域网中的常用技术 9.2 局域网概述 罗伯特梅特卡夫个人简介 罗伯特梅特卡夫&#xff08;Robert Metcalfe&#xff0c;1…

Dijkstra算法(C/C++简明注释详解版: 代码实现 测试数据)

算法思想简述&#xff08;From C知道&#xff09;&#xff1a; Dijkstra算法是一种求解最短路径的贪心算法&#xff0c;它能够找到两点之间的最短路径。C语言实现Dijkstra算法需要以下步骤&#xff1a; 1. 创建一个数组用于记录起始点到其他节点的距离&#xff0c;初始化为无…