蓝桥杯单片机笔记:数码管驱动与程序设计

1.数码管驱动原理

数码管由8个LED灯组成,称为8段数码管。操作分为段选和位选。段选用于控制显示的数字,位选用于控制显示的位置。

数码管分为共阳和共阴两种类型,本文以共阳数码管为例。

共阳极数码管是将所有发光二极管(LED)的阳极连接在一起作为公共端,这个公共端通常接高电平(一般是电源正极)。在共阳极数码管中,阳极已经接高电平,所以当给某段对应的阴极引脚输入低电平时,该段的发光二极管就会因为两端存在正向电压而导通发光;当输入高电平时,二极管两端没有正向电压,处于截止状态,该段就不会发光。(即0亮1不亮)。

2.数码管位选和段选

如图,Y6C控制位选的锁存器,Y7C控制段选的锁存器。数据端A’代表低电平有效,即低电平亮。

数码管位选的作用是确定点亮哪一个数码管。数码管有8个位置,分别由COM1到COM8控制。当选择COM1时,第一个数码管被点亮;选择COM2时,第二个数码管被点亮,以此类推。

在电路原理图中,数码管位选的输入端是通过74HC573锁存器来实现的,且需要控制Y6C口(110)。所以为了将锁存器的通道指向数码管位选,需要将P2.5、P2.6设置为1,P2.7设置为0。通过代码实现如下:

P2 = (P2 & 0x1F) | 0xC0; // 将P2.5和P2.6置1,P2.7置0,指向数码管位选

这样设置后,锁存器的通道就会指向数码管位选。接下来,通过控制P0端口的输出,就可以选择点亮哪一个数码管。

数码管段选的作用是控制数码管显示的内容。每个数码管有ag和dp共8个段,通过控制这些段的亮灭来显示不同的数字或字符。我们使用的数码管是共阳极数码管,段选引脚需要输入低电平才能点亮对应的段。

例如,要显示数字“1”,只需要让数码管的“b”和“c”两个段亮起来,其他段熄灭。此时,数码管的段选信号为1111 1001(从dp到a),其中“b”和“c”对应的位为0,其他位为1。

在电路原理图中,数码管段选的输入端同样是通过74HC573锁存器来实现的,但需要控制Y7C口。为了将锁存器的通道指向数码管段选,需要将P2.5、P2.6和P2.7都设置为1。通过代码实现如下:

P2 = (P2 & 0x1F) | 0xE0; // 将P2.5、P2.6和P2.7都置1,指向数码管段选

设置完成后,锁存器的通道就会指向数码管段选。接下来,通过控制P0端口的输出,就可以选择点亮数码管的哪些段,从而显示不同的内容。

3.数码管动态扫描

数码管动态扫描显示是一种通过快速切换显示内容,利用人眼的视觉暂留效应来实现多个数码管同时显示不同数字。虽然看起来所有数码管都在同时显示数字,但实际上它们是逐个快速切换显示的。在动态扫描中,数码管的显示内容是通过单片机控制动态更新的。

首先我们可以定义一个数组来存储每个数码管要显示的数字对应的段码(即数码管段选信号)。可参考官方资源包

Seg.c

                                 main.c假如要在第2位数码管显示8,即Seg_Buf[1] = 8;

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值