自学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
    }
}
相关推荐
清风66666610 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
azwsm11 小时前
电路元器件和GPIO控制器
单片机·嵌入式硬件
kebidaixu14 小时前
FreeRTOS 移植到 STM32F407VETX 记录(一)
stm32·单片机·嵌入式硬件
CSDN官方博客15 小时前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
点灯小铭15 小时前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
云栖梦泽16 小时前
玩转RK3506SDK
linux·嵌入式硬件
数智工坊17 小时前
机器人四大主控板系统分层选型指南:树莓派、ESP32、STM32与Arduino的能力边界与实战定位
stm32·嵌入式硬件·机器人
进击的小头18 小时前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习
点灯小铭18 小时前
基于单片机的多模式智能洗衣机设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
项目題供诗18 小时前
STM32-AD单通道&AD多通道(十九)
stm32·单片机·嵌入式硬件