硬件开发1-51单片机2-按键、中断
一、GPIO(General Purpose Input/Output)
GPIO 是 51 单片机和外界交互最基本的方式。
工作模式:
- 输出模式:单片机给定引脚一个电平(高电平 (5V)、低电平 (0V)),通过控制引脚实现高低电平输出。
- 输入模式:检测引脚的电平变化。
GPIO 类比(水龙头):
- 输出模式:控制水龙头的水流(主动控制)。
- 输入模式:观察水龙头是否有水流(被动检测,如按键)。
二、按键
按键 K1 的两个引脚分别接到 GND 和 P1_4 引脚。当 K1 按键被按下时,P1_4 引脚会与 GND 短路,呈现低电平。
判断按键是否被按下:检测对应引脚是否为低电平。
P1_4 引脚是否为低电平的判断:P1 & 0001 0000 == 0
三、中断
1. 中断概念
CPU 在执行一个任务时,被外界更紧急的事件打断,转而去执行该紧急任务,完成后再返回原任务继续执行的过程。
2. 中断源
打断 CPU 执行当前任务的事件 / 源头(51 单片机有 5 个中断源)。
3. 中断源分类
外部中断 0、外部中断 1、定时器 0、定时器 1、串口。
4. 外部中断
由单片机引脚电平变化引发的中断(对应引脚:INT0(P3-2)、INT1(P3-3))。
5. 中断优先级
CPU 处理中断时,会比较多个中断的优先级,优先处理优先级高的中断。
6. 中断嵌套
处理一个中断时,可嵌套处理另一个中断;51 单片机最多允许嵌套 2 层。
7. 中断处理流程
- 中断源发出中断请求。
- 检查 CPU 是否响应中断及该中断源是否被屏蔽。
- 比较中断优先级。
- 保护现场。
- 执行中断服务函数(回调函数)。
- 恢复现场。
8、单片机中断源分类及对应引脚 / 功能:
中断源 | 对应引脚 / 模块 | 触发方式 / 功能 |
---|---|---|
外部中断 0 | P3.2(INT0) | 电平触发(低电平)或边沿触发(下降沿) |
外部中断 1 | P3.3(INT1) | 电平触发(低电平)或边沿触发(下降沿) |
定时器 0 中断 | 内部定时器 0 | 定时器计数溢出时触发 |
定时器 1 中断 | 内部定时器 1 | 定时器计数溢出时触发 |
串口中断 | 内部串口模块 | 串口接收 / 发送数 |
四、中断相关寄存器配置
1. IE 寄存器(中断允许寄存器)
将 IE 寄存器的 bit7(EA)置 1:CPU 允许响应所有中断。
将 IE 寄存器的 bit0(EX0)置 1:允许外部中断 0 产生中断。
2. TCON 寄存器(定时器寄存器)
将 TCON 寄存器的 bit1(IE0)置 1:向 CPU 发起中断请求,CPU 响应后由硬件清 “0”。
将 TCON 寄存器的 bit0(IT0)置 1:外部中断 0 由下降沿触发。
五、定时器
定时器用于产生精准定时,满足不同外设对时序的高要求(高 / 低电平时间精准)。
51 单片机内部有 2 个定时器:timer0、timer1,均为自增型 16 位计数器。
时钟与时间关系:
晶振频率:12MHZ / 11.0592MHZ(51 单片机需 12 分频,12MHZ/12=1MHZ)。
51 单片机一条指令运算时间:1/1MHZ = 1us。
通过定时器 0 实现 1ms 定时:1ms=1000us,定时器初值为 64535。
六、定时器相关寄存器配置
8 位自动重装载定时器:分为 TL0 和 TH0 两部分(各 1byte),仅 TL0 参与计数;TL0 加到 255 溢出后,TH0 的值会重新装入 TL0。
1. TCON 寄存器
- bit4 置 1,且 TMOD 寄存器的 Gate 位清 0:允许定时器开始计数。
2. TMOD 寄存器
- 定时器 0 的低四位清 0。
- 将 TMOD 寄存器的 M0(bit0)置 1:定时器 0 工作在 16 位定时器 / 计数器模式。
3. IE 寄存器
- bit7 置 1:CPU 允许响应所有中断。
- bit1 置 1:允许定时器 0 产生中断。
配置流程
- 配置 TMOD 模式选择寄存器:低四位清 0,bit0 置 1(16 位定时器模式)。
- 向 TH0 和 TL0 装入初值(1ms 定时对应 64535)。
- TCON 寄存器 bit6 置 1:允许定时器开始计数。
- IE 寄存器 bit7 和 bit1 置 1:开启中断总开关和定时器 0 子开关。
- 编写定时器 0 的中断服务函数。
七、PWM 与蜂鸣器
PWM(脉冲宽度调制)
让引脚产生方波,使引脚电平周期性翻转。
- PWM 周期:一个方波的周期(从上升沿到下一个上升沿 / 从下降沿到下一个下降沿的时间)。
- PWM 占空比:一个周期内高电平所占的比例。
蜂鸣器
通过震荡源产生声音,音调由频率决定(高频→高音,低频→低音),音量由振幅决定(能量)。
- 有源蜂鸣器:自带震荡源,通电后发出固定频率声音。
- 无源蜂鸣器:无震荡源,需外部提供震荡信号才发声。