微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一位数码管驱动

一位数码管驱动

时间:11-28 来源:互联网 点击:

*******************************过程**********************************

先认识下数码管管脚图

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

共阳数码管: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口P1M0P1M1 模式
P1.000准双向/弱上拉
P1.101强推挽输出
P1.210高阻输入
P1.311开漏输出
P1.401强推挽输出
P1.501强推挽输出
P1.601强推挽输出
P1.701强推挽输出

举例(C代码):

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top