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

单片机:GPIO、按键、中断、定时器、蜂鸣器

一、GPIO

Genral Purpose IO:GPIO是51单片机和外界交互的最基本方式

(一)输出模式:单片机给定引脚一个电平(高电平5V,低电平0V),控制引脚实现高低电平

(二)输入模式:检测引脚电平变化

二、按键

(一)原理图

(二)按键被按下时,对应引脚与GND短路变为低电平

(三)按键是否被按下,判断对应引脚是否为低电平

三、中断

(一)概念

        1.中断概念:CPU在执行一个任务时,被外界一个紧急任务打断,然后去处理这个紧急任务,处理完后回到原来任务继续工作。

        2.中断源:打断CPU当前任务的事件/源头(51单片机中有5个)

        3.中断源分类:外部中断0与1,定时器中断0与1,UART(串口)

        4.外部中断:单片机的引脚电平变化引发中断(INT0(P3-2),INT1(P3-3))

        5.中断优先级:CPU处理中断任务时,会比较优先级,优先处理优先级高的任务(可配置优先级)

        6.中断嵌套:处理一个中断时,里面再嵌套一个中断,51单片机只允许嵌套两层

        7.中断处理流程:

                ①中断源发出中断请求

                ②检查CPU是否响应中断及该中断源是否被屏蔽

                ③比较中断优先级

                ④保护现场

                ⑤执行中断服务函数(回调函数)

                ⑥恢复现场

(二)中断寄存器配置(参考手册)

        1.IE:中断允许寄存器

                ①EA:将IE寄存器中的bit7,EA置1,表示CPU允许中断

                ②EX0:将IE寄存器中的bit0,EX0置1,代表允许外部中断0产生中断        

        2.IPH:中断优先级控制寄存器(默认外部中断最高)

        3.TCON:定时器/计数器中断控制寄存器

                ①IE0:将TCON寄存器的bit1,IE0置1,代表向CPU发起中断请求,CPU响应完中断请求后,硬件清“0”

                ②IT0:将TCON寄存器的bit0,IT0置1,代表外部中断0下降沿触发中断

(三)中断向量表:一组指向函数的函数指针

                中断处理函数后必须加上对应中断向量

四、定时器

(一)定时器:能够产生一个精准的定时,不同外设对时序要求高(高电平和低电平是精准的)

(二)51单片机内有两个定时器,Timer0,Timer1,自增型定时器(16位)

(三)定时的时间-->溢出(65535)

        51单片机达不到12MHZ,将12MHZ进行12分频,12MHZ/12 = 1MHZ

51单片机完成一条指令运算:1/1MHZ = 1us

通过定时器0实现1ms定时:

1ms = 1000us

定时器初值:64535

(四)晶振:晶体振荡器(12MHZ        11.0592MHZ)

(五)定时器相关寄存器配置

        1.TCON寄存器:bit4置1,TMOD寄存器中Gate位清零,代表允许定时器开始计数

        2.TMOD寄存器

                (1)定时器0-->低四位清零

                (2)将TMOD寄存器中的M0,bit0置1,代表定时器0工作在16位定时器/计数器模式

        3.8位自动重装载定时器:分为TL0和TH0两部分,1byte,实际参与计数的只有TL0,当TL0中的值加到255溢出后,再将TH0中的值重新装入到TL0中

        4.流程

        ①先配置TMOD模式选择寄存器,将低四位清0,再将bit0置1代表工作在16位定时器

        ②向TH0和TL0中装入定时器的初值(1ms -> 64535)

        ③将TCON寄存器中的bit6置1,代表允许定时器开始计数

        ④将IE寄存器中的bit7和bit1置1,开启中断总开关和定时器0的子开关

        ⑤编写定时器0的中断服务函数

五、PWM、蜂鸣器

(一)概念

        1.PWM:脉冲宽度调制,能够让引脚产生一个方波,周期性的让引脚发生翻转

        2.PWM周期:一个方波所经历的周期(上升沿到上升沿或者下降沿到下降沿)

        3.PWM占空比:高电平在一个周期内所占的比例

(二)蜂鸣器

震荡源:-> 声音(波)-> 音调不同 -> 波的频率发生变化 -> 高音 高频  低音 低频   音量不同 -> 波的振幅 -> 能量

        1.有源蜂鸣器:存在震荡源,通电后蜂鸣器会持续发出持续频率的声音

        2.无源蜂鸣器:不存在震荡源,通电后蜂鸣器不会持续发出持续频率的声音,通过电平周期性变化产生声音。

http://www.xdnf.cn/news/1440145.html

相关文章:

  • 知微传感Dkam系列3D相机SDK例程篇:CSharp连接相机及保存数据
  • Debezium日常分享系列之:Debezium 3.3.0.Alpha2发布
  • Gemini CLI源码解析:Agent与上下文管理实现细节
  • Airsim 笔记:Python API 总结
  • ESXI8多网卡链路聚合
  • 渗透测试中的常见误区与最佳实践
  • 【LeetCode 热题 100】72. 编辑距离——(解法一)记忆化搜索
  • DBSCAN 密度聚类分析算法
  • 【ProtoBuf 】C++ 网络通讯录开发实战:ProtoBuf 协议设计与 HTTP 服务实现
  • 构建下一代互联网:解码Web3、区块链、协议与云计算的协同演进
  • 【微信小程序预览文件】(PDF、DOC、DOCX、XLS、XLSX、PPT、PPTX)
  • 机器学习进阶,一文搞定模型选型!
  • 智能高效内存分配器测试报告
  • 根据fullcalendar实现企业微信的拖动式预约会议
  • Linux 用户的 Windows 改造之旅
  • Web端最强中继器表格元件库来了!55页高保真交互案例,Axure 9/10/11通用
  • 使用langgraph创建工作流系列3:增加记忆
  • 100种高级数据结构 (速查表)
  • 【NVIDIA B200】1.alltoall_perf 单机性能深度分析:基于 alltoall_perf 测试数据
  • 如何评价2025年数学建模国赛?
  • Debezium系列之:Flink SQL消费Debezium数据,只消费新增数据,过滤掉更新、删除数据
  • 计算机毕业设计选题推荐:基于Python+Django的新能源汽车数据分析系统
  • AI随笔番外 · 猫猫狐狐的尾巴式技术分享
  • Networking Concepts
  • 超越马力欧:如何为经典2D平台游戏注入全新灵魂
  • vue 手动书写步骤条
  • 用Blender制作Rat Rod风格汽车
  • MySQL 8.0.40 主从复制完整实验总结(基础搭建 + 进阶延时同步与误操作恢复)
  • 智能电视小米电视浏览器兼容性踩坑电视黑屏或者电视白屏,Vue项目从Axios到Fetch的避坑指南
  • GitHub每日最火火火项目(9.3)