硬件入门——51单片机

一、基本概念

1. 核心处理器类

CPU(Central Processing Unit):中央处理器。运算、控制、指挥整个系统,是核心大脑。

MCU(Micro Ctronller Unit):微控制器。集成度高,将所有功能集成到一块芯片上(CPU、RAM、ROM、timer、UART)。成本低,价格便宜,适合简单控制操作。

MPU(Micro Processing Unit):微处理器。集成度低,只有一块单独的CPU,需要外接功能模块。成本高,能够实现较复杂的功能,可以搭配Linux操作系统。

GPU(Graphics Processing Unit):图像处理单元。处理图形数据,图形渲染。

NPU(Neutal Processing Unit):神经网络处理器。AI推理,硬件加速。

FPU(Float Point Unit):浮点数单元。完成对浮点数运算。

SOC(System on Chip)::片上系统,将多个芯片集成到一起。

2. 存储器

RAM(random access memory):随机访问内存。存放程序运行中的临时变量,掉电数据丢失,读写速度快,价格贵。

ROM(Read-Only Memory):只读存储器。存放单片机程序、代码、指令,掉电数据不丢失,读写数据速度慢,价格便宜。

3. 内部功能模块

timer:定时器。

interrupt:中断。

UART:串行口。用于和其他芯片通信。

晶振:提供时钟频率。

4. 位运算

  • |(按位或)
  • &(按位与)
  • ~(按位取反)

t|=(1<<n); 用途:指定位置一,其余位不变。

t&=~(1<<n);用途:指定为置零,其余位不变。

5. GPIO

GPIO(Genral Purpose Input Output):通用目的输入输出。

输出模式:给定引脚电平,控制引脚高低电平的变化。

  • 推挽输出
  • 开漏输出
  • 复用推挽
  • 复用开漏

输入模式:检测引脚电平变化。

  • 上拉输入
  • 下拉输入
  • 浮空输入
  • 模拟输入

二、51单片机的硬件结构

51单片机是一个8位微处理器,片内RAM有256字节。

PDIP40:芯片封装方式,表示双列直插40引脚。

40个引脚分为四组,P0~P3组,每一个组有8个引脚。

网络编号:通过网络编号的引脚在实际电路中彼此连通,代替复杂的连接。

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

三、外部输出设备

1. LED灯

led灯由P2组控制。

核心是发光二极管,阳极接高电平,阴极置低电平led灯亮,置高电平灭。

2. 数码管

51单片机上常用4个数码管,同一时间只能控制一个数码管。

P1组低四位 控制位选(选哪个数码管亮),P0组控制段选(显示什么数字)。

cs 复制代码
//断码表
unsigned char seg_table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//位选
void Bit_Select(unsigned int n)
{
    P1&=~(0x0F<<0);
	P1|=(1<<n);
}
//段选
void Seg_Select(unsigned int n)
{
    P0=seg_table[n];
}

3. 独立按键

前四个按键由P1高四位控制,最后一个按键有P35控制。

按键初始化:

cs 复制代码
P1|=(0x0F<<4);
P3|=(1<<5);

4. 蜂鸣器

频率影响音调,振幅影响音量。

有源蜂鸣器:内部会存在震荡源,上电后蜂鸣器会发出固定频率的声音。

无源蜂鸣器:内部不存在震荡源,上电后不会发出声音,需要给定P21一个震荡源(例如PWM)。

四、中断系统

1. 定义

当中央处理器CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前任务,转而去执行这个更为紧急的事件,执行完紧急事件后再回到原来被中断的地方,继续原来的工作,称为中断。

2. 中断源

中断源:打断CPU执行当前任务的源头/事件。

51单片机提供了5个中断源:外部中断0、外部中断1、定时器0、定时器1、串口。

外部中断:引脚电平的变化所引发的中断。

  • P32对应外部中断0。
  • P33对应外部中断1。

中断优先级:CPU去执行中断时,会去比较优先级,优先去执行优先级更高的中断。

51单片机最多中断嵌套两层。

3. 中断处理流程

  • 中断源发出中断请求
  • 检查CPU是否响应中断(总开关)及该中断源是否被屏蔽(子开关)
  • 比较中断优先级
  • 保护现场
  • 执行中断服务函数
  • 回复现场

4. 中断寄存器

4.1 中断允许寄存器IE

控制对中断源的开放和屏蔽。

EA:CPU的总中断允许控制位,B7------中断总开关

  • EA=1,CPU开放中断。
  • EA=0,CPU屏蔽所有中断申请。

EX0:外部中断0中断允许位,B0

  • EX0=1,允许中断。
  • EX0=0,禁止中断。

4.2 定时器/计数器控制寄存器TCON

TCON为定时器/计数器控制寄存器,也锁存外部请求中断源。

IE0:外部中断0请求源标志,硬件自动置位,用于查询,B1

  • IE0=1,说明有中断请求。
  • IE0=0,无中断。

IT0:中断源触发类型,B0

  • IT0=1,下降沿触发
  • IT0=0,低电平可触发

5.中断处理函数

中断向量表:本质就是一个数组,数组中存放的是中断服务函数入口地址。

中断向量:本质是一个标号,可以通过标号在中断向量表中找到中断服务函数的入口地址。

中断处理函数后面必须跟中断号(中断向量)。

cs 复制代码
void int0_handler(void)		interrupt 0;
void timer0_handler(void)	interrupt 1;

五、定时器/计数器

定时器的目的:精准的定时。

timer0(计数器T0),timer1(计数器T1)。16位模式定时器(最大值为65535),本质是一个自增型计数器,当定时器加到65535溢出会向CPU发出中断请求。

51单片机中的clock(时钟)控制CPU的工作频率。

以51单片机上12MHZ的晶振为例:

  • 12分频器:fs=12MHZ/12=10^6HZ
  • 时间:T=1/fs=1us

所以51单片机处理一次需要1us,如果希望单片机每隔1ms发送一次中断,可以让定时器计数1000次。

1.定时器相关寄存器

中断允许寄存器IE

  • TF0:定时器T0溢出标志,B5,由硬件自动置位。
  • TR0:控制定时器T0开始计数,B4。TR0=1,允许T0开始计数,TR0=0,禁止计数。

定时器/计数器工作模式寄存器TMOD

  • 高四位设置T1,低四位设置T0。

  • M1=0,M0=1,16位定时器,TH存高八位、TL存低八位的工作模式。

    cs 复制代码
    TMOD &= ~(0x0F << 0);
    TMOD |= (1 << 0);
    TMOD &= ~ (1 << 1);
    
    TH0 = 64535 >> 8;
    TL0 = 64535;

2. 定时器工作流程:

  • 配置定时器0工作模式(16位)。
  • 向TL0和TH0装入定时器初值。
  • 设置定时器0开始计数。
  • 允许CPU响应所有中断+开启定时器0中断。
  • 当定时器0产生溢出后,向CPU发起中断请求。
  • CPU执行定时器0中断服务函数。

3.PWM

PWM:脉冲宽度调制。

可以让引脚电平周期性进行翻转,使引脚产生一个方波。

PWM周期:一个PWM方波所经历的时间(从上升沿/下降沿到下一个上升沿/下降沿所经历的时间)。
占空比:高电平在一个周期内所占的比例。

定时器可给51单片机的无源蜂鸣器周期性的传递一个震荡。

  • 已知频率和占空比,由频率得出周期。
  • 高电平时间为周期的一半。
  • 高电平时间除以CPU工作一次的时间可得计数次数,由65535减去技术次数即为初值。
  • 每中断一次就重置初值并翻转电平。
相关推荐
2501_918126912 小时前
学习所有6502写游戏动作的语句
汇编·嵌入式硬件·学习·游戏·个人开发
2501_918126912 小时前
学习所有6502游戏的系统
java·汇编·嵌入式硬件·学习·游戏
LCMICRO-133108477466 小时前
长芯微LD9689完全P2P替代AD9689,是一款双通道、14位、2.0 GSPS/2.6 GSPS模数转换器(ADC)
网络·单片机·嵌入式硬件·网络协议·fpga开发·硬件工程·高速adc
逐步前行13 小时前
STM32_TIM_寄存器操作
stm32·单片机·嵌入式硬件
0南城逆流014 小时前
【STM32】知识点介绍七:PWM功能
stm32·单片机·嵌入式硬件
智者知已应修善业14 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
我是一棵无人问荆的小草15 小时前
单片机通电后延迟启动策略
单片机·嵌入式硬件
坏柠15 小时前
ESP32-S3 蓝牙 BLE 从零到一:广播、服务、特征,用一个智能灯的例子全讲透
嵌入式硬件
日更嵌入式的打工仔15 小时前
UART RX为什么要上拉
单片机