2026/2/11 7:03:45
网站建设
项目流程
网上做图赚钱的网站,自己开发一个网站多少钱,广西网站建,网站建设的心得与体会51单片机学习笔记整理一、GPIO#xff08;通用输入输出#xff09;概念#xff1a;GPIO是与外界交互最基本的形式#xff0c;可以独立配置引脚为输入或输出模式1. 输出模式#xff1a;控制引脚输出高电平/低电平开漏输出#xff1a;只能输出低电平或高阻态#xff0c;需…51单片机学习笔记整理一、GPIO通用输入输出概念GPIO是与外界交互最基本的形式可以独立配置引脚为输入或输出模式1.输出模式控制引脚输出高电平/低电平开漏输出只能输出低电平或高阻态需外接上拉电阻推挽输出可输出高/低电平驱动能力强复用开漏外设功能使用开漏输出复用推挽外设功能使用推挽输出2.输入模式检测引脚电平上拉输入内部上拉电阻默认高电平下拉输入内部下拉电阻默认低电平浮空输入无内部上下拉电平不确定模拟输入用于ADC采样二、独立按键1.原理图VCC | 按键 | GPIO---→ CPU | GND2.工作原理按键未按下GPIO通过上拉电阻接VCC呈高电平按键按下GPIO直接接地呈低电平判断方法检测GPIO是否为低电平3.注意需要软件消抖延时10-20ms再次检测三、中断系统1.中断概念当CPU执行任务时发生紧急事件要求CPU暂停当前任务转去处理紧急事件处理完再返回原任务继续执行2.中断源能打断CPU执行的事件源51单片机中断源分类外部中断0INT0 → P3.2引脚外部中断1INT1 → P3.3引脚定时器0中断定时器1中断串口中断3.中断优先级多个中断同时发生时CPU优先处理优先级高的中断4.中断嵌套51单片机最多允许两层中断嵌套5.中断处理流程1. 中断源发出请求 2. 检查CPU是否允许中断 3. 比较中断优先级 4. 保护现场压栈 5. 执行中断处理函数 6. 恢复现场出栈6.中断相关寄存器1IE寄存器中断允许寄存器位名称功能EA总中断允许1允许所有中断0禁止所有中断EX0外部中断0允许1允许0禁止ET0定时器0中断允许1允许0禁止2TCON寄存器定时器控制位名称功能IT0外部中断0触发方式1下降沿触发0低电平触发IE0外部中断0标志位1有中断请求0无请求四、定时器1.定时器数量51单片机有2个定时器Timer0和Timer12.定时器类型自增型定时器3.工作原理定时器内部有16位计数器0-65535给定计数器初值按1μs速率自增12MHz晶振计数到65535溢出时产生中断请求4.定时器相关寄存器1TMOD寄存器定时器模式TMOD ~(0x0F 0); // 清0低4位Timer0 TMOD | (1 0); // 设置Timer0为16位模式M10, M012TCON寄存器TCON | (1 4); // TR01启动Timer03计算定时器初值初值 65536 - (所需定时时间 / 机器周期) 例12MHz晶振定时1ms 初值 65536 - (1000μs / 1μs) 64536五、PWM脉冲宽度调制1.PWM概念通过控制引脚周期性翻转产生方波2.PWM周期从一个上升沿或下降沿到下一个上升沿或下降沿的时间3.占空比高电平在一个PWM周期内所占的比例占空比 (高电平时间 / 总周期时间) × 100%4.应用示例控制LED亮度、电机速度六、蜂鸣器1.声音原理音调由频率决定 → 高音高频、低音低频音量由振幅决定 → 能量大小2.蜂鸣器类型类型特点驱动方式有源蜂鸣器内部有震荡源直流电压即可发声无源蜂鸣器内部无震荡源需要PWM方波驱动3.无源蜂鸣器控制// 通过PWM控制无源蜂鸣器音调 void beep_tone(unsigned int frequency) { // 根据频率计算PWM周期 // 控制引脚产生相应频率的方波 }重点内容总结序号问题答案1GPIO的输入模式有哪些上拉输入、下拉输入、浮空输入、模拟输入2GPIO的输出模式有哪些开漏输出、推挽输出、复用开漏、复用推挽3独立按键工作原理按下时GPIO接地呈低电平释放时上拉呈高电平4中断概念CPU暂停当前任务处理紧急事件再返回原任务5中断源概念能打断CPU执行的事件源651单片机中断源分类外部中断0/1、定时器0/1、串口中断7中断处理流程请求→检查允许→比较优先级→保护现场→执行→恢复851单片机有几个定时器2个Timer0和Timer19定时器是自增还是自减自增型定时器10定时器工作原理16位计数器按1μs自增溢出产生中断11PWM相关概念脉冲宽度调制产生可调方波12PWM周期方波一个完整周期的时间13PWM占空比高电平时间占总周期的比例14有源/无源蜂鸣器区别有源内部有震荡源无源需要外部PWM驱动实用代码示例1.中断初始化void int0_init(void) // 外部中断0初始化 { IT0 1; // 下降沿触发 EX0 1; // 允许外部中断0 EA 1; // 开总中断 }2.定时器初始化void timer0_init(void) // 定时1ms { TMOD 0xF0; // 清除Timer0模式位 TMOD | 0x01; // Timer0模式116位 TH0 0xFC; // 定时1ms初值高位 TL0 0x66; // 定时1ms初值低位 ET0 1; // 允许Timer0中断 TR0 1; // 启动Timer0 EA 1; // 开总中断 }3.按键检测unsigned char key_scan(void) { if(KEY 0) // 按键按下 { delay_ms(10); // 消抖 if(KEY 0) // 确认按下 { while(!KEY);// 等待释放 return 1; } } return 0; }这份笔记系统整理了51单片机的核心知识点适合复习和快速查阅。每个部分都有理论说明和代码示例便于理解和实践。