自学linuxday46

一、GPIO(通用输入输出)

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

二、独立按键

  1. 硬件原理

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

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

三、中断

  1. 中断流程

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

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

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

四、定时器

  1. 定时器初值计算

    若需定时T(微秒),晶振频率f=12\\text{MHz},则:

    \\text{初值} = 65536 - \\frac{T \\times f}{12}

  2. 定时器0模式配置

    c 复制代码
    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})


综合应用示例

按键控制蜂鸣器音调

c 复制代码
#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
    }
}
相关推荐
Dr.kangder2 小时前
嵌入式面试总结(十五)——异常处理
单片机·面试·职场和发展·系统架构·嵌入式
zlinear数据采集卡4 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛139246256734 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
Rocktech_ruixun6 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界6 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件
Lzh编程小栈7 小时前
【嵌入式底层】SPI超透彻详解:通信原理、四线结构、四种模式、寄存器底层 + 面试全集
c语言·stm32·单片机·面试·职场和发展
Rocktech_ruixun7 小时前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
水果里面有苹果7 小时前
28-DRV8825PWPR步进电机驱动器
单片机
恒锐丰科技韩生7 小时前
率能 SS6625E|3.0~20V 单通道 H 桥直流电机驱动 SOP8 电子锁玩具机器人分享
嵌入式硬件·硬件工程
zlinear数据采集卡7 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#