硬件: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. 声音特性

    • 音调:由频率决定(高频为高音,低频为低音)
    • 音量:由振幅决定(振幅越大,音量越大)
相关推荐
wydxry4 小时前
Linux 系统上配置 GitHub 账号并克隆私有仓库
linux·github
世微 如初4 小时前
AP5414:高效灵活的LED驱动解决方案,点亮创意生活
单片机·嵌入式硬件
青草地溪水旁5 小时前
66多路复用 I/O 函数——`select`函数
linux·socket编程·i/o复用
轻松Ai享生活6 小时前
5 天学习 Linux Kernel 主要原理 | Day 2:Linux 进程管理与调度
linux
茯苓gao6 小时前
变频器实习DAY42 VF与IF电机启动方式
笔记·嵌入式硬件·学习
轻松Ai享生活6 小时前
5 天学习 Linux Kernel 主要原理 | Day 1:Linux 内核基础与架构总览
linux
7yewh6 小时前
STM32 IIC SPI 驱动 LPS22HB LPS系列通用
stm32·单片机·嵌入式硬件
小憩-6 小时前
【stm32】定时器中断与定时器外部时钟
stm32·单片机·嵌入式硬件
哈喽H7 小时前
centos系统的linux环境不同用户,环境变量不同如何配置?
linux·centos