嵌入式学习 day45:51单片机基础

一、数码管显示

1.1 数码管是什么

数码管是一种显示数字的电子元件,由多个LED段组成。常见的数码管有7段 (显示数字)和8段(多一个小数点)。每一段对应一个LED,通过控制不同段的亮灭,就能组合出不同的数字。

text

复制代码
    a
   ───
  │   │
 f│   │b
  │   │
   ───
  │   │
 e│   │c
  │   │
   ───  · dp
    d

每个数字对应一段组合,比如数字 0 需要点亮 a、b、c、d、e、f 六段,数字 1 只需要点亮 b、c 两段。

1.2 段码表

为了显示数字,需要给每一段分配一个二进制位。共阴极数码管(低电平点亮)的段码表如下:

数字 段码(十六进制)
0 0x3F
1 0x06
2 0x5B
3 0x4F
4 0x66
5 0x6D
6 0x7D
7 0x07
8 0x7F
9 0x6F

1.3 多位数码管的显示原理

一块开发板上通常有4位或8位数码管,但它们的段选线是共用的,只有位选线是独立的。这意味着:

  • 位选:选择当前要点亮哪一位数码管

  • 段选:决定这一位显示什么数字

  • 动态扫描:由于不能同时显示多位,需要快速轮流点亮每一位,利用人眼视觉暂留效应,看起来就像同时显示了

显示逻辑

  1. 选中第m位数码管(位选)

  2. 送入该位要显示的数字段码(段选)

  3. 延时一小段时间

  4. 切换到下一位,重复以上步骤

当扫描速度足够快(每秒50次以上),人眼就感觉不到闪烁。

1.4 显示多位数字的思路

要把一个整数(比如 1234)拆成每一位显示出来:

  1. num % 10 取出当前最低位

  2. num / 10 去掉最低位

  3. 循环4次,依次显示个、十、百、千位

  4. 每显示一位前先清空P0,避免残影

二、按键输入

2.1 按键的电路原理

按键本质上是一个开关,按下时接通,松开时断开。在单片机中,按键通常接在I/O口上,通过检测引脚电平来判断是否按下。

常见接法:按键一端接地,另一端接I/O口,I/O口通过上拉电阻保持高电平。按键按下时,引脚被拉低(0),松开时恢复高电平(1)。

2.2 按键检测思路

  1. 初始化:将按键对应的引脚设为输入模式(输出高电平)

  2. 检测:读取引脚电平,为0表示按下,为1表示松开

  3. 识别:多个按键对应不同引脚,哪个引脚为0就是哪个按键被按下

代码逻辑

c

复制代码
if ((P1 & (1<<4)) == 0)  ret = 1;   // 第4位按下
else if ((P1 & (1<<5)) == 0)  ret = 2;   // 第5位按下
// ...

三、中断

3.1 什么是中断

中断是单片机处理突发事件的一种机制。当某个事件发生时(比如按键按下、定时器溢出),CPU暂停当前正在执行的程序,转去执行对应的处理函数(中断服务函数),处理完之后再回到原来的位置继续执行。

3.2 中断的处理流程

  1. 中断请求:外设或内部事件发出中断信号

  2. 中断响应:CPU检测到中断请求,暂停当前程序

  3. 保护现场:保存当前程序的返回地址和状态

  4. 执行中断服务函数:跳转到对应的处理函数

  5. 恢复现场:中断处理完毕,恢复之前保存的状态

  6. 返回主程序:回到中断发生的位置继续执行

3.3 外部中断的配置

以外部中断0(INT0)为例,需要配置三个寄存器:

寄存器 作用
IE 中断允许寄存器,开启总中断和INT0中断
TCON 定时器控制寄存器,设置INT0触发方式(下降沿/低电平)
P3 将P3.2引脚设为输入模式

配置步骤

  1. P3 \|= (1<<2):P3.2设为高电平(输入模式)

  2. IE \|= (1<<0) \| (1<<7):开启INT0中断和总中断

  3. TCON \|= (1<<0):设置INT0为下降沿触发

3.4 中断服务函数

中断服务函数是中断发生时自动执行的函数,语法比较特殊:

c

复制代码
void eint0_handler(void) interrupt 0
{
    // 处理代码
}

interrupt 0 表示这是外部中断0的服务函数,编译器会自动把它放到中断向量表对应的位置。

四、今日总结

今天学了数码管显示、按键输入和外部中断,核心要点如下:

数码管

  1. 段码表把数字转换成段选信号

  2. 多位显示靠动态扫描------轮流点亮每一位,利用视觉暂留

  3. 显示多位数字用 %10/10 循环拆位

按键

  1. 按键就是开关,按下为低电平,松开为高电平

  2. 通过检测引脚电平判断哪个按键按下

  3. 实际项目需要按键消抖

中断

  1. 中断是CPU响应突发事件的机制

  2. 处理流程:请求→响应→保护现场→处理→恢复现场→返回

  3. 外部中断需要配置 IETCONP3 寄存器

  4. 中断服务函数用 interrupt 0 声明

相关推荐
彧azz3 小时前
Java学习语法篇:变量
java·学习
Yanjun2i3 小时前
Agent学习记录五:Pydantic验证
人工智能·python·学习
Horn Still Sounds3 小时前
51单片机入门:硬件基础、位运算、数码管动态显示完整梳理
嵌入式硬件·mongodb·51单片机
xqqxqxxq5 小时前
AI Agent学习:Agent协作工具技术笔记(李博杰《深入理解 AI Agent》4.6观后总结)
笔记·学习
白猫不黑5 小时前
大学网安方向学习路线:零基础与有基础的学习顺序整理
学习·web安全·计算机·网络安全·信息安全·编程·src漏洞
工业HMI实战笔记6 小时前
玩具制造HMI:注塑成型的快速换模与质量监控界面
人工智能·学习·交互·制造
你在我身后7 小时前
发展路线建议
学习
彧azz7 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
苦猿的大模型日记7 小时前
Day57|从0学习 Claude Code(七):我没把说明书全塞给它,用到哪本才翻哪本
学习