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

嵌入式硬件 - 51单片机2

一、工作模式

输出模式

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

输入模式

        检测引脚电平变化

二、按键

        按键K1,两个引脚被接到GND和P1_4引脚,当K1按键被按下时,P1_4引脚会和GND短路到一起,P1_4引脚会呈现低电平

        判断按键是否被按下:只需要检测对应的引脚是否为低电平

独立按键模块

检测哪个按键被按下

三、中断

1. 相关概念

1. 中断

        CPU在执行一个任务时,被外界更为紧急的事件打断,转而去执行更为紧急的任务,执行完后再回到刚才的地方继续向下执行,这一过程叫做中断

2. 中断源

        打断CPU执行当前任务的事件源头叫做中断源,51单片机中5个中断源

3. 中断源分类(51单片机)

        外部中断0、外部中断1、定时器/计数器0、定时器/计数器1、串口中断

4. 外部中断

        单片机上的引脚电平变化所引发的中断(INT0(P3-2)、INT1(P3-3))

外部中断:低电平触发,下降沿触发

串口中断:由发送完成或接收完成触发

定时器中断:定时器溢出时触发

5. 中断优先级

        CPU再去处理中断任务时候,会去比较多个中断的优先级,优先去处理优先级高的中断

高优先级中断可打断正在执行的低优先级中断

统计终端或低优先级中断不能相互打断

同时发生时,按自然优先级顺序响应

6. 中断嵌套

        处理一个中断时,再嵌套另外的中断;

        51单片机只允许嵌套2层

        同级中断无法嵌套

2. 中断步骤

中断源发出中断请求        =>        检查CPU是否响应中断及该中断源是否被屏蔽        =>

比较中断优先级        =>        保护现场        =>        执行中断服务函数(回调函数)        =>

恢复现场

3. 中断相关寄存器

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

2.TCON寄存器(定时器寄存器)

通过中断实现低电平触发时数码管变化

四、定时器

1. 相关概念

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

        51单片机内部有两个定时器,分别为timer0、timer1,所使用自增型定时器(计数器 16位)

2. 工作模式

        定时器/计数器0有4种工作模式:

                模式0(13位定时器/计数器),        模式1(16位定时器/计数器模式),

                模式2(8位自动重装模式),         模式3(两个8位定时器/计数器)。

定时器/计数器1除模式3外,其他工作模式与定时器/计数器0相同,T1在模式3时无效,停止计数。

3. 定时步骤

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

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

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

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

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

4. 定时器相关寄存器

1. TCON寄存器

(1)bit4置1,TMOD寄存器中的Gate位清0, 代表允许定时器开始计数

2. TMOD寄存器

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

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

3. IE寄存器(中断)

(1)将IE寄存器中的bit7置1,代表CPU能够响应所有中断

(2)将IE寄存器中的bit1置1,代表允许定时器0产生中断

5. 计算初值

晶振有12MHZ / 11.0592KHZ

计算步骤:

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

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

        通过定时器0实现1ms定时:1ms = 1000us

        定时器初值:65535 - 1000 = 64535

计算初值(11.0592KHZ)

实现隔 1s LED翻转一次

五、PWM控制蜂鸣器

1. 相关概念

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

PWM周期:一个方波所经历的周期(从上升沿到上升沿所经历的时间/从下降沿到下降沿所经历的时间)

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

2. 蜂鸣器

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

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

无源蜂鸣器:不存在震荡源,通电后蜂鸣器不会发出声音,需要给蜂鸣器一个震荡

计算初值:(11.0592KHZ)

实现定时器溢出中断时通过PWM控制蜂鸣器


文章转载自:

http://H5yxxg96.zsrdp.cn
http://iK5MdPp1.zsrdp.cn
http://QvqAgSCd.zsrdp.cn
http://ZR5KA3E1.zsrdp.cn
http://AHU7945P.zsrdp.cn
http://8o1GiIzX.zsrdp.cn
http://C2lS4fme.zsrdp.cn
http://ejWm1cy2.zsrdp.cn
http://OmyIbKkd.zsrdp.cn
http://7hFpVlik.zsrdp.cn
http://olUNXsvU.zsrdp.cn
http://ZvMnQWFn.zsrdp.cn
http://DuOf5THP.zsrdp.cn
http://76iePqtR.zsrdp.cn
http://pBa7qQHF.zsrdp.cn
http://W5tODtTX.zsrdp.cn
http://mTx8n4br.zsrdp.cn
http://EKwsT4S5.zsrdp.cn
http://WJ2W0oVb.zsrdp.cn
http://UGJ8L2Yr.zsrdp.cn
http://hK5qVPCZ.zsrdp.cn
http://fKZLt6ed.zsrdp.cn
http://nfDsG1aF.zsrdp.cn
http://ykExROLk.zsrdp.cn
http://1ao9pUjo.zsrdp.cn
http://8DKxqqfY.zsrdp.cn
http://sE9OdNne.zsrdp.cn
http://nSMz3PXK.zsrdp.cn
http://HHRsokKu.zsrdp.cn
http://p9BnCWGd.zsrdp.cn
http://www.dtcms.com/a/364720.html

相关文章:

  • BlueZ 学习之GATT Server开发
  • 使用PHP对接印度股票数据API实战指南
  • LeetCode 524.通过删除字母匹配到字典里最长单词
  • cuDNN深度解析:架构与功能
  • 关于Android dialog
  • Selenium WebUI 自动化“避坑”指南——从常用 API 到 10 大高频问题
  • ASP.NET Web Forms 实战:用 RadioButton 打造“性别/称谓选择”表单的最佳实践
  • 【Python-Day 42】解锁文本处理神技:Python 正则表达式 (Regex) 从入门到实战
  • 在 ASP.NET 8 WebAPI 中使用不同的提供程序验证多个令牌(Token)及常见问题解答
  • 前端开发基础必备——操作系统、计网、数据结构与算法编译原理
  • SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序
  • [TryHackMe]Oh My WebServer(nday漏洞+容器逃逸)
  • Archlinux KDE 下 Fcitx5 输入法的配置与美化
  • 重新测试所有AI代码生成器(2025年更新):GPT-5 vs Claude 4.1 vs Gemini 2.5 Pro——为何“赢家”仍取决于你的技术栈
  • 一文掌握Redisson分布式锁
  • 天然苏打水生产的原水抽取与三重除菌的3D模拟开发实战
  • 编辑器vim(Linux)
  • Chrome 插件开发入门:从基础到实践
  • 美团龙猫AI修正的二分法提取xlsx的sheet.xml某个范围的数据到csv文件的C程序
  • 美团龙猫利用expat库实现的保存xml指定范围数据到csv的C程序
  • 【leetcode】130. 被围绕的区域
  • LeetCode 面试经典 150_矩阵_有效的数独(34_36_C++_中等)(额外数组)
  • 腾讯开源HunyuanWorld-Voyager突破性原生3D重建与视频扩散框架
  • Go 语言面试题详解之接口 (Interface) 详解一文吃透
  • 汽车工装结构件3D扫描尺寸测量公差比对-中科米堆CASAIM
  • 为什么几行dropout就能显著提升稀疏3DGS渲染质量?
  • 网格图--Day04--网格图DFS--2684. 矩阵中移动的最大次数,1254. 统计封闭岛屿的数目,130. 被围绕的区域
  • Linux 系统上配置 GitHub 账号并克隆私有仓库
  • python类的内置属性
  • awk命令