毕节市网站建设_网站建设公司_VS Code_seo优化
2026/1/13 18:02:23 网站建设 项目流程

51单片机学习笔记整理

一、GPIO(通用输入输出)

概念:GPIO是与外界交互最基本的形式,可以独立配置引脚为输入或输出模式

1.输出模式:控制引脚输出高电平/低电平

  • 开漏输出:只能输出低电平或高阻态,需外接上拉电阻

  • 推挽输出:可输出高/低电平,驱动能力强

  • 复用开漏:外设功能使用开漏输出

  • 复用推挽:外设功能使用推挽输出

2.输入模式:检测引脚电平

  • 上拉输入:内部上拉电阻,默认高电平

  • 下拉输入:内部下拉电阻,默认低电平

  • 浮空输入:无内部上下拉,电平不确定

  • 模拟输入:用于ADC采样

二、独立按键

1.原理图

VCC | 按键 | GPIO---→ CPU | GND

2.工作原理

  • 按键未按下:GPIO通过上拉电阻接VCC,呈高电平

  • 按键按下:GPIO直接接地,呈低电平

  • 判断方法:检测GPIO是否为低电平

3.注意:需要软件消抖(延时10-20ms再次检测)

三、中断系统

1.中断概念

当CPU执行任务时,发生紧急事件要求CPU暂停当前任务,转去处理紧急事件,处理完再返回原任务继续执行

2.中断源:能打断CPU执行的事件源

51单片机中断源分类:
  1. 外部中断0(INT0 → P3.2引脚)

  2. 外部中断1(INT1 → P3.3引脚)

  3. 定时器0中断

  4. 定时器1中断

  5. 串口中断

3.中断优先级

多个中断同时发生时,CPU优先处理优先级高的中断

4.中断嵌套

51单片机最多允许两层中断嵌套

5.中断处理流程

1. 中断源发出请求 2. 检查CPU是否允许中断 3. 比较中断优先级 4. 保护现场(压栈) 5. 执行中断处理函数 6. 恢复现场(出栈)

6.中断相关寄存器

(1)IE寄存器(中断允许寄存器)
名称功能
EA总中断允许1=允许所有中断,0=禁止所有中断
EX0外部中断0允许1=允许,0=禁止
ET0定时器0中断允许1=允许,0=禁止
(2)TCON寄存器(定时器控制)
名称功能
IT0外部中断0触发方式1=下降沿触发,0=低电平触发
IE0外部中断0标志位1=有中断请求,0=无请求

四、定时器

1.定时器数量:51单片机有2个定时器(Timer0和Timer1)

2.定时器类型自增型定时器

3.工作原理

  • 定时器内部有16位计数器(0-65535)

  • 给定计数器初值,按1μs速率自增(12MHz晶振)

  • 计数到65535溢出时产生中断请求

4.定时器相关寄存器

(1)TMOD寄存器(定时器模式)
TMOD &= ~(0x0F << 0); // 清0低4位(Timer0) TMOD |= (1 << 0); // 设置Timer0为16位模式(M1=0, M0=1)
(2)TCON寄存器
TCON |= (1 << 4); // TR0=1,启动Timer0
(3)计算定时器初值
初值 = 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和Timer1)
9定时器是自增还是自减?自增型定时器
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模式1(16位) 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单片机的核心知识点,适合复习和快速查阅。每个部分都有理论说明和代码示例,便于理解和实践。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询