硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器

一、GPIO(通用输入输出口)

基本概念

GPIO(General Purpose Input/Output)是 51 单片机与外部设备交互的最基础接口,通过引脚的电平变化实现数据的输入和输出。

工作模式

  1. 输出模式:单片机通过引脚输出高电平(5V)或低电平(0V),实现对外部设备的控制。
  2. 输入模式:单片机通过检测引脚的电平状态,获取外部设备的信息。

形象比喻

可以将 GPIO 比作 "水龙头":

  • 输出模式如同控制水龙头开关,决定水流(电平信号)的通断
  • 输入模式如同观察水龙头是否有水流,检测外部是否有信号输入

二、按键

按键的原理

以按键 K1 为例,其两个引脚分别连接到 GND 和 P1_4 引脚。当按键被按下时,P1_4 引脚与 GND 短路,呈现低电平;未按下时,P1_4 引脚呈现高电平。

按键检测方法

判断按键是否被按下,只需检测对应引脚是否为低电平。对于 P1_4 引脚,判断逻辑为:

复制代码
P1 & 00010000 == 0

即当 P1 端口与 0x10(二进制 00010000)进行与运算结果为 0 时,说明 P1_4 为低电平,按键被按下。

典型应用场景

在实时性要求高的车载中控系统中,按键可用于:

  • 油温、水温等参数的查看切换
  • 发动机转速显示控制
  • 仪表盘数据刷新
  • 安全座椅状态确认
  • 刹车信号检测

三、中断

中断基本概念

  1. 中断:CPU 在执行当前任务时,被更紧急的事件打断,转而去执行紧急任务,完成后再返回原任务继续执行的过程。
  2. 中断源:引发中断的事件或源头,51 单片机有 5 个中断源。
  3. 中断优先级:多个中断同时发生时,CPU 优先处理优先级高的中断。
  4. 中断嵌套:处理一个中断时,可被更高优先级的中断打断,51 单片机最多支持 2 层嵌套。

中断源分类

中断源类型 对应引脚 / 模块 说明
外部中断 0 INT0(P3_2) 由 P3_2 引脚电平变化触发
外部中断 1 INT1(P3_3) 由 P3_3 引脚电平变化触发
定时器 0 定时器 0 模块 由定时器 0 溢出触发
定时器 1 定时器 1 模块 由定时器 1 溢出触发
串口 串口模块 由串口收发完成触发

中断处理流程

  1. 中断源发出中断请求
  2. 检查 CPU 是否允许响应中断及该中断源是否被屏蔽
  3. 比较中断优先级,选择最高优先级中断
  4. 保护现场(保存当前执行状态)
  5. 执行中断服务函数(回调函数)
  6. 恢复现场,返回原任务继续执行

中断寄存器配置

  1. IE 寄存器(中断允许寄存器)

    • EA(bit7)= 1:CPU 允许响应所有中断(总开关)
    • EX0(bit0)= 1:允许外部中断 0 产生中断
  2. TCON 寄存器(定时器控制寄存器)

    • IE0(bit1)= 1:外部中断 0 向 CPU 发起中断请求(CPU 响应后自动清 0)
    • IT0(bit0)= 1:外部中断 0 采用下降沿触发

四、定时器

定时器基本概念

定时器是产生精准定时的模块,51 单片机内部有两个定时器(timer0、timer1),均为 16 位自增型计数器。

时钟与定时关系

  • 51 单片机通常使用 12MHz 或 11.0592MHz 晶振
  • 经过 12 分频后,实际工作频率为 1MHz(12MHz/12)
  • 完成一条指令的时间为 1μs(1/1MHz)

定时器 0 实现 1ms 定时

1ms = 1000μs,需要计数 1000 次

定时器初值 = 65535 - 1000 = 64535(0xFC67)

定时器寄存器配置

  1. TMOD 寄存器(模式选择寄存器)

    • 低四位清 0
    • M0(bit0)= 1:定时器 0 工作在 16 位模式
  2. TCON 寄存器

    • TR0(bit4)= 1:允许定时器 0 开始计数
  3. IE 寄存器

    • EA(bit7)= 1:开启总中断
    • ET0(bit1)= 1:允许定时器 0 产生中断

配置流程

  1. 配置 TMOD 寄存器,设置为 16 位定时器模式
  2. 向 TH0 和 TL0 装入初值 64535(0xFC67)
  3. 置位 TR0,启动定时器计数
  4. 开启总中断和定时器 0 中断
  5. 编写定时器 0 中断服务函数

五、PWM 与蜂鸣器

PWM(脉冲宽度调制)

  • PWM 周期:一个方波的完整周期(从上升沿到下一个上升沿的时间)
  • PWM 占空比:一个周期内高电平所占的比例
  • 作用:通过产生周期性的电平翻转,实现对外部设备的精确控制

蜂鸣器

  1. 有源蜂鸣器:内置震荡源,通电后发出固定频率的声音

  2. 无源蜂鸣器:无内置震荡源,需要外部提供震荡信号才能发声

  3. 声音特性

    • 音调:由频率决定(高频为高音,低频为低音)
    • 音量:由振幅决定(振幅越大,音量越大)
相关推荐
雪碧聊技术29 分钟前
linux(centos7)如何执行python脚本
linux·python3·爬虫脚本·linux安装python3·linux运行爬虫脚本
lbb 小魔仙30 分钟前
Ubuntu 22.04 安装 Docker 完整步骤(附镜像加速配置)
linux·ubuntu·docker
Full Stack Developme3 小时前
Linux 多种压缩格式,优缺点和适用场景
linux·运维·服务器
旖旎夜光4 小时前
Linux(4)(下)
linux·学习
Shanxun Liao8 小时前
Cenots 7.9 配置多台 SSH 互信登陆免密码
linux·运维·ssh
j_xxx404_8 小时前
Linux:第一个程序--进度条|区分回车与换行|行缓冲区|进度条代码两个版本|代码测试与优化
linux·运维·服务器
looking_for__8 小时前
【Linux】Ext系列文件系统
linux
OliverH-yishuihan9 小时前
开发linux项目-在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”
linux·c++·windows
禾仔仔11 小时前
USB MSC从理论到实践(模拟U盘为例)——从零开始学习USB2.0协议(六)
嵌入式硬件·mcu·计算机外设
南棱笑笑生11 小时前
20251224给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时确认ssh服务【内置dropbear】
linux·c语言·ssh·rockchip