新闻中心

EEPW首页>嵌入式系统>设计应用> 一位数码管驱动

一位数码管驱动

作者: 时间:2016-11-28 来源:网络 收藏
*******************************过程**********************************

先认识下数码管管脚图

本文引用地址://m.amcfsurvey.com/article/201611/323032.htm

共阳/共阴数码管脚管图:

共阳数码管:VCC(位选)连接在一起,外部(段选)低电平点亮

这种7段数码管其实其实里面有7个LED,共阳管就把7个LED的“+”级接在一起上图中的公共脚就是他们的“+”级,剩下的8个脚就是7个LED的“-”级,“-”级就等于脚管:a、b、c、d、e、f、g、h 他们是分开的,没接在一起。

共阴数码管:GND(位选)连接在一起,外部(段选)高电平点亮

共阴管就跟上面的反过来,“-”级接在一起,“+”级等于a、b、c、d、e、f、g、h

将a、b、c、d、e、f、g、h八个引脚接到单片机

P1口:P1.0←a、P1.1←b、P1.2←c、P1.3←d、P1.4←e、P1.5←f、P1.6←g、P1.7←h

如图:

**************************************************************************************
点亮数码管只需"P1"调用字形码数组"tab"
P1包括了:P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7
"b"代表"tab"数组的元素,元素就是下面的字形码
程序因为"while (1)"的作用下不断循环,每循环一次,"b"的值自动"+1",循环10次
后"b"的值自动归"0"

0x3F对应的元素是0、0x06对应元素是1、..........................0x71对应的元素是15

**************************************************************************************

字形码

h

g

f

e

d

c

b

a

共阳

1

0

0

1

0

0

0

0

共阴

0

1

1

0

1

1

1

1

字形码“9”编码示例:

共阴极:0x6F“0”熄灭“1”点亮

共阳极:0x90“1”熄灭“0”点亮



**************************************************************************************

因为单片机I/O口输出电流很小,所以同时驱动一个七段的数码管则需要加强端口的输出能力

方法:(1)使用三极管(2)接上拉电阻(3)设置端口推挽输出

下面只介绍推挽输出:

推挽输出:一般用于需要更大驱动电流的情况

I/O口各种不同工作模式及配置

P1M0 P1M1 I/O口模式(P1.x如做A/D使用,需要将其设置成开漏或者高阻输入

0

0

准双向(传统8051 I/O口模式)

灌电流可达20mA,拉电流为230μA

由于制造误差,实际为250μA~150μA

0

1

推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻),如果该I/O口需要作为A/D使用,可选此模式

1

1

开漏(Open Drain),如果该I/O口需要作为A/D使用,可选此模式

举例:

I/O口 P1M0 P1M1 模式
P1.0 0 0 准双向/弱上拉
P1.1 0 1 强推挽输出
P1.2 1 0 高阻输入
P1.3 1 1 开漏输出
P1.4 0 1 强推挽输出
P1.5 0 1 强推挽输出
P1.6 0 1 强推挽输出
P1.7 0 1 强推挽输出

举例(C代码):

P1M0 = 0x30;//转换二进制后:0011 0000

P1M1 = 0x5F;//转换二进制后:01011111

所以,主函数的这两句代码的作用就是把单片机所有P1的I/O口(包括:P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7)设置为强推挽模式输出



关键词:数码管驱

评论


技术专区

关闭