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

自学linuxday46

一、GPIO(通用输入输出)

  • 定义:单片机与外界交互的基础接口,引脚可独立配置为输入或输出模式。
  • 输出模式
    • 开漏输出:需外接上拉电阻输出高电平。
    • 推挽输出:直接输出高/低电平,驱动能力强。
    • 复用模式:引脚复用为外设功能(如串口、定时器)。
  • 输入模式
    • 上拉/下拉输入:内置电阻确保默认电平。
    • 浮空输入:无默认电平,易受干扰。
    • 模拟输入:用于连接模拟传感器(如ADC)。

二、独立按键

  1. 硬件原理

    • 未按下:引脚通过上拉电阻保持高电平($V_{CC}$)。
    • 按下:引脚与GND短路,电平拉低至$0$。
    • 判断逻辑:检测引脚是否为低电平($V < 0.3V_{CC}$)。
  2. 消抖处理

    if (KEY == 0) { // 检测低电平 delay_ms(10); // 延时消抖 if (KEY == 0) { // 执行按键动作 } }

三、中断

  1. 中断流程
    $$
    \text{中断请求} \rightarrow \text{优先级裁决} \rightarrow \text{保护现场} \rightarrow \text{执行ISR} \rightarrow \text{恢复现场}
    $$

  2. 寄存器配置示例(外部中断0):

    IT0 = 1; // 下降沿触发 EX0 = 1; // 允许外部中断0 EA = 1; // 全局中断使能

四、定时器

  1. 定时器初值计算
    若需定时$T$(微秒),晶振频率$f=12\text{MHz}$,则:
    $$
    \text{初值} = 65536 - \frac{T \times f}{12}
    $$

  2. 定时器0模式配置

    TMOD |= 0x01; // M1=0, M0=1 → 16位定时器 TR0 = 1; // 启动定时器0

五、PWM(脉冲宽度调制)

  • 参数定义
    • 周期$T$:高电平+低电平时间。
    • 占空比$D$:
      $$
      D = \frac{t_{\text{high}}}{T} \times 100%
      $$
  • 实现方法
    通过定时器中断调整引脚电平翻转时间。

六、蜂鸣器

  1. 驱动电路
    • 无源蜂鸣器需串联限流电阻(如$100\Omega$),避免过流。
  2. 音调生成
    音符频率$f$与定时器初值关系:
    $$
    \text{初值} = 65536 - \frac{10^6}{2f} \quad (\text{单位:}\mu\text{s})
    $$

综合应用示例

按键控制蜂鸣器音调

#include <REG52.H> sbit Buzzer = P1^0; // 蜂鸣器引脚 sbit KEY = P3^2; // 按键(外部中断0) void Timer0_Init() { TMOD = 0x01; // 定时器0,模式1 TH0 = 0xFC; TL0 = 0x18; // 1kHz中断初值 ET0 = 1; EA = 1; TR0 = 1; } void main() { Timer0_Init(); while(1); } void Timer0_ISR() interrupt 1 { TH0 = 0xFC; TL0 = 0x18; // 重载初值 Buzzer = !Buzzer; // 翻转电平 } void Key_ISR() interrupt 0 { if (KEY == 0) { TH0 = 0xF8; TL0 = 0x30; // 切换为500Hz } }
http://www.cnnetsun.cn/news/596583.html

相关文章:

  • 智能终端新体验 Orcaterm
  • PC3000(硬盘修复工具)
  • 3个AI产品的提示设计优化案例:如何用用户动机提升体验?
  • 自然语言驱动的 AD智能脚本助手:基于 DeepSeek Coder 的 AD 二次开发全维度实战指南(1)
  • A.每日一题——1266. 访问所有点的最小时间
  • 表的约束条件
  • 智能论文工具Top8榜单:从自动降重到一键生成,全方位功能对比测评
  • 基于SpringBoot的校园一卡通管理系统(源码+lw+部署文档+讲解等)
  • 救命!挖到宝了!2025 计算机就业全景分析,零基础也能冲的高薪岗 + 精通路径,收藏即通关!
  • 基于SpringBoot的以岗位胜任力为导向的医疗护理培训管理程序的构建及应用(源码+lw+部署文档+讲解等)
  • 基于 YOLOv8 的河道漂浮垃圾智能检测|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
  • 鸿蒙ArkTS开发实战-从零打造高可用待办事项App【QuickTodo】
  • ssh 远程服务器,permission deny
  • 想要高效改写文本?这十大高质量降重网站均支持免费试用,并运用AI智能技术提升改写效果
  • 【字符编码】UTF编码、字节序
  • Python系列Bug修复|如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘torchaudio’ 问题
  • 企业级CI/CD工具选型:Jenkins vs Tekton vs Arbess
  • 什么是PoE
  • 什么是PPP协议
  • 大数据与边缘计算:半结构化数据的分布式处理
  • 这十大降重平台凭借AI智能改写功能脱颖而出,并提供免费试用,满足用户对高质量文本的需求
  • SolidWorks许可证需求精准预测与容量优化规划方法论
  • 制造业ERP系统选型指南:适配全链路运营的数字化决策框架
  • 制造业ERP系统对比分析:7款主流产品的适配性与核心价值
  • 超细整理,python自动化测试面试题汇总(附答案)
  • ChatGPT与DeepSeek从入门到精通:大语言模型最新进展、提示词高级技巧、论文写作全流程、机器学习建模、深度学习应用、数据可视化、代码自动生成与优化等
  • css浮动
  • 通义深度搜索-生成对话
  • 刚入行Java如何快速提升自己的实力,让自己更有竞争力?
  • 【数据集】美国白宫赢学指数数据集(2025.1.20-2026.1.07)