当前位置: 首页 > web >正文

硬件开发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. 中断处理流程

  1. 中断源发出中断请求。
  2. 检查 CPU 是否响应中断及该中断源是否被屏蔽。
  3. 比较中断优先级。
  4. 保护现场。
  5. 执行中断服务函数(回调函数)。
  6. 恢复现场。

8、单片机中断源分类及对应引脚 / 功能:

中断源对应引脚 / 模块触发方式 / 功能
外部中断 0P3.2(INT0)电平触发(低电平)或边沿触发(下降沿)
外部中断 1P3.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 产生中断。

配置流程

  1. 配置 TMOD 模式选择寄存器:低四位清 0,bit0 置 1(16 位定时器模式)。
  2. 向 TH0 和 TL0 装入初值(1ms 定时对应 64535)。
  3. TCON 寄存器 bit6 置 1:允许定时器开始计数。
  4. IE 寄存器 bit7 和 bit1 置 1:开启中断总开关和定时器 0 子开关。
  5. 编写定时器 0 的中断服务函数。

七、PWM 与蜂鸣器

PWM(脉冲宽度调制)

        让引脚产生方波,使引脚电平周期性翻转。

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

蜂鸣器

        通过震荡源产生声音,音调由频率决定(高频→高音,低频→低音),音量由振幅决定(能量)。

  • 有源蜂鸣器:自带震荡源,通电后发出固定频率声音。
  • 无源蜂鸣器:无震荡源,需外部提供震荡信号才发声。
http://www.xdnf.cn/news/20018.html

相关文章:

  • 域名不做网站使用,还需要备案吗
  • 这才是真正懂C/C++的人,写代码时怎么区分函数指针和指针函数?
  • Qt + windows + Linux+QtInstallerFramework打包教程
  • RabbitMQ相关知识
  • 基于 STM32N6-AI Image Classification 使用 git bash 命令行示例 LAT1552
  • 单片机点灯
  • 【C++上岸】C++常见面试题目--算法篇(第十八期)
  • 网络:tcp
  • 关于稳定币的一些问答
  • 封装一个redis获取并解析数据的工具类
  • FPGA学习笔记——SDR SDRAM简介
  • 【golang长途旅行第37站】Redis连接池
  • OCR 发票识别与验真接口:助力电子化发票新时代
  • 融云:当我们谈论 AI 重构业务时,我们到底在谈论什么
  • 【Android】SharedPreferences轻量级持久化存储
  • 【题解】洛谷P1776 宝物筛选 [单调队列优化多重背包]
  • C++----模板特化以及模板声明与定义分离问题
  • AT32网线拔插下,modbus tcp断线重连
  • Linux awk命令完全指南:从原理到实战,搞定文本处理难题
  • 【AI】人工智能 传统和现代 架构和算法的演变历史
  • windows安装谷歌浏览器地址
  • TypeScript `infer` 关键字详解(从概念到实战)
  • AGV 搬运小车路径规划:从地图构建到路径决策的技术全解析
  • 打通 Flutter 与原生状态管理:Android ViewModel 的运用
  • SpringBoot+PDF.js实现按需分片加载(包含可运行样例源码)
  • C++小游戏
  • 腾讯开源HunyuanWorld-Voyager突破性原生3D重建与视频扩散框架
  • 计算机大数据毕业设计选题:基于Spark+hadoop的全球香水市场趋势分析系统
  • 优思学院|5个为什么(5 Whys)分析法一文讲清楚
  • AI编写自动点击器 - 毫秒级精准鼠标连点器