【硬件学习入门】--嵌入式51单片机点灯与延迟效应

1.计算机组成

(只要包含这些部件,就可以构成一台计算机)计算机的组成:控制器、运算器、存储器(内存和外存)、输出设备、输入设备。

2.最小系统

最小系统是指能够让单片机正常工作所需要的最少器件组合。

晶振:控制单片机的运行频率和节拍。

CPU:Central Processing Unit,中央处理器,负责完成数据运算和指令执行。

MCU:Micro Controller Unit,微控制器,集成度高,将所有的功能集成到同一块芯片中,成本低。

GPU:图像处理器,负责图形处理。

NPU:神经网络处理器,用于 AI 推理加速。

FPU:浮点数运算单元,负责完成浮点数运算。

SoC:片上系统,将多个功能芯片集成在一块芯片上(体积小、功耗低)。

存储器的一些概念

内存:存放程序运行时的变量,掉电数据丢失,读写速度快。

外存:存放代码指令,掉电数据不丢失,价格相对便宜。

3.CPU 与 RAM 交互的三大总线

RAM:随机访问存储器,存放单片机运行过程中的变量。

ROM:只读存储器,存放程序运行中不变的代码和常量。

CPU 与 RAM 交互依赖三大总线:

  1. 地址总线,一共有 8 根:CPU 通过地址总线寻找 RAM 中的变量地址,2^8 = 256(方向是单向的,CPU → RAM)。

  2. 数据总线,一共有 8 根:CPU 与 RAM 进行数据交换传输(可以双向传输)。

  3. 控制总线,一共有 8 根:负责传输控制信号,协调读写操作。

下面是我在运行代码时 CPU 与 RAM 进行数据交换的过程(通过三大总线进行控制操作):

外设寄存器:能够操作硬件,具有固定的地址空间。

比如说,这里我用的是 P2 系列寄存器。连接电源的一方是共阳极,GND 连接的一边是共阴极。

位运算:在单片机中进行点灯与灭灯操作就需要用到这一点。

下面我通过几个例子来讲解常用的位运算符:

1. | 按位或:将两个二进制数对应位进行比较,如果全为 0,则结果为 0;如果有一个 bit 为 1,则结果为 1。

2. & 按位与:将两个二进制数对应位进行比较,如果全为 1,则结果为 1;如果有一个 bit 为 0,则结果为 0。

3. ~ 按位取反:将二进制数的每一位进行翻转(0 变 1,1 变 0)。

4. ^ 按位异或:将两个二进制数对应位进行比较,相同为 0,相异为 1。

5. << 按位左移:将二进制数左移 n 位,低位补 0。

6. >> 按位右移:将二进制数右移 n 位(分为逻辑右移和算术右移)。

举个例子,假设我有一个变量 a = 0b00001111(即十进制的 15):

c 复制代码
unsigned char a = 0x0F;   // 二进制:0000 1111
unsigned char b;

b = a << 2;   // 左移 2 位:0011 1100,即 0x3C
b = a >> 1;   // 右移 1 位:0000 0111,即 0x07
b = ~a;       // 按位取反:1111 0000,即 0xF0
b = a | 0x30; // 按位或:0011 1111,即 0x3F
b = a ^ 0x0F; // 按位异或:0000 0000,即 0x00

4.共阴极数码管(四位)

数码管每一次只能单独显示一个数值。

同一时刻只能显示一位数字。

在开始之前,我们需要完成以下步骤:

1. 位选

通过 4 个 NPN 型三极管控制。给三极管基极对应的引脚高电平,三极管导通,对应位的数码管就被选中(使用 P1 寄存器的低 4 位)。

2. 段选

通过 P0 寄存器控制。给对应段引脚高电平,这个段就被点亮了。

动态显示:快速轮询,利用人眼视觉暂留效应。先在第一位数码管显示一个数值,快速刷新;再在第二位数码管显示下一位数值,如此循环,人眼看起来就像同时点亮了多位。

相关推荐
优化Henry13 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
xiaomu0012313 小时前
高湿环境床垫湿度管理技术框架:湿度阈值、排湿结构与材料选型
经验分享·学习·学习方法
zhangrelay13 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
probex_13 小时前
学习笔记:知识图谱是什么,在测试里能干什么
笔记·学习·知识图谱
每天题库16 小时前
危险货物道路运输从业资格证题库刷题重点与错题梳理
学习·安全·考试·题库·考证
m4Rk_17 小时前
【论文阅读】Agent 记忆机制(86):Skill-Pro——用 Non-Parametric PPO 将交互经验演化为可复用技能
论文阅读·人工智能·学习·开源·github
AOI小白新手上路17 小时前
从 Keil 调试视角看 51 指针,到 Cortex-M 内存映射访问寄存器 · 学习笔记
笔记·学习
Joe_Wang517 小时前
【从0到1学习JVM · 15】对象在堆里来回倒腾,究竟怎样才会进老年代?
java·jvm·学习·垃圾回收
软件开发技术深度爱好者19 小时前
中学生学习工具:多学科自学启导者(轻量版)实现
学习·ai·技术实践
Joe_Wang519 小时前
【从0到1学习JVM · 13】点进JDK源码只有一个分号?搞懂本地方法栈与JNI机制
java·jvm·学习·本地方法栈