51单片机的内部结构:
1、内核(kernel)
2、串口(UART)
3、内存(RAM)
4、只读存储器(ROM)
5、定时器(TIMER)
6、输入输出口(GPIO)
RAM和ROM的区别
RAM: RandomAccessMemory, 随机访问内存,存放程序中的变量、临时数据
掉电数据丢失,读写速度快(256byte)
ROM: Read-OnlyMemory,只读存储器,存放单片机程序、代码、指令,掉电
数据不丢失(只在程序运行时只读)
51单片机最小系统组成:
电源、晶振、复位 是能让单片机正常工作的最小硬件系统
部分概念:
MCU: MicroControllerUnit,微控制器,集成度高,将所有功能集成到一块芯片里
(CPU、RAM、ROM、GPIO、TIMER、UART),成本低,简单控制。
MPU: Micro ProcessingUnit,微处理器,集成度低,只有一块单独的CPU,需要外接
一些功能模块(RAM、ROM、控制器芯片),成本高,应用处理复杂任务,可以跑
Linux操作系统。
GPU: GraphicsProcessingUnit,图形处理单元,处理图形数据,图像渲染。
NPU: NeuralProcessingUnit,神经网络处理单元,AI推理、硬件加速(Mate60达芬奇NPU
AI拍照优化)。
FPU: FloatPointUnit,浮点数运算单元,完成浮点数运算。
**SOC:**SystemOnChip,片上系统,将多个芯片集成到一起。
内存和外存的区别:
程序运行时:代码从外存 加载到内存 ,CPU从内存 读取执行,临时数据存在内存 ,需要永久保存的数据才写回外存。
位运算:指定位置1和指定位清零
C语言 位运算:
&:按位与:将对应位的bit进行比较,若两个bit都为1,结果为1,若有一个bit为0
结果为0
|:按位或:将对应位的bit进行比较,若有一个bit为1,结果为1,若两个bit都为
0, 结果为0
^:按位异或:将对应位的bit进行比较,若两个bit相同,结果为0;不相同为1
(相同为0,相异为1)
其余位不变,指定位置1:使用按位或 t |= (1<<n);
其余位不变,指定位清0:使用按位与 t&=~(1<<n)
寄存器的概念:
能够操作硬件 具有固定地址的空间(往寄存器里写数据,寄存器能立刻作出反应)
数码管动态显示的原理:
在某位数码管上显示一位数值,快速刷新,再下一位数码管再去显示另一位数值,利用人眼视觉暂留效应。
38译码器工作原理

用三个输入脚(A、B、C)的二进制组合,决定8个输出脚中的哪个输出低电平。
GPIO
GPIO输入:检测引脚的电平变化
GPIO输出:给定引脚高电平/低电平,控制引脚输出高电平/低电平
中断系统
中断的概念:
当CPU去执行一个任务时,此时外界来了一个更为紧急的任务,要求CPU能够暂停当前的任务,转而去执行更为紧急的任务,执行完之后再回到刚才被打断的地方继续向下执行
中断源:
能够打断CPU执行当前任务源头/事件叫做中断源。
51单片机5个中断源 :外部中断0 、外部中断1、 定时器0、 定时器1、 串口(外部中断:引脚电平的变化所引发的中断)
中断优先级:
CPU处理中断任务时,需要比较中断优先级,优先去处理优先级更高的
中断嵌套:
CPU再处理一个中断任务时,嵌套处理其他优先级更高的中断任务(51单片机最多允许嵌套两层)
中断处理流程:
-
中断源发起中断请求
-
检查CPU是否允许中断及中断源是否被屏蔽
-
比较中断优先级
-
保护现场
-
执行中断服务函数
-
恢复现场
中断向量表:本质上是一个数组,数组中存放的是中断服务函数的入口地址。
中断向量:中断向量表中各中断服务函数的标号。
定时器
概念 :能够产生一个精准的定时,对时序要求严格(高电平和低电平的时间必须是
精准的)
51单片机使用的是16位自增型定时器/计数器,从初值开始++,+到65535溢出后向CPU发起定时器中断请求
TL0:定时器初值低位
TH0:定时器初值高位

PWM: 脉冲宽度调制,能够产生一个方波,能够让引脚电平周期性发生变化
PWM周期: 一个方波所经历的时间(从上升沿/下降沿到下一个上升沿/下降沿 )
**PWM占空比:**高电平在一个周期内所占的比例
计算初值:

蜂鸣器
有源蜂鸣器 :存在震荡源,通电后会持续发出固定频率声音
无源蜂鸣器:不存在震荡源,通电后不会发出声音,需要给定一个震荡
