【硬件学习入门】--嵌入式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 寄存器控制。给对应段引脚高电平,这个段就被点亮了。

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

相关推荐
别动我齐刘海3 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
一直C3 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
承渊政道4 小时前
Linux网络学习【传输层协议UDP】
linux·网络·网络协议·学习·ubuntu·udp
andrsted4 小时前
练题簿免费刷题小程序:和学习搭子共用一份题库,一起刷题复习
学习·面试·微信小程序·小程序·学习方法·刷题
fqbqrr4 小时前
2610学习,ahk学习技巧
学习
fengci.4 小时前
BUUCTF(困难部分)
android·开发语言·前端·学习·php
有Li5 小时前
基于超高分辨率CT智能分割与测量的单侧梅尼埃病内耳解剖特征定量研究文献速递/医学智能体前沿
大数据·人工智能·学习·文献·医学生
Дерек的学习记录5 小时前
Unreal Engine 5:开关门实现和流程控制
开发语言·学习·ue5
辣知6 小时前
辣知·化智87 两千年前庄子的高维智慧
学习
xian_wwq6 小时前
【学习笔记-一文读懂系列】读懂GBZ-195-2026《人工智能 工业智能体参考架构》
笔记·学习