|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法。有不足和疏忽的地方,请不吝指正。 f6 `3 P% @+ P& G2 W4 M+ r8 R
( o' J0 L7 Q5 T. d+ z) `9 ?) l a/ E/ z: F }$ z. s9 r* J2 |
4 W( u. \$ H) ?" @' P
, p& u3 t) ?, J& N一、工作原理/ q# C% S/ t& g& |& [1 p- O+ C- C7 F- k1 t' k
3 r! r0 p4 W( P3 h& a( H
# {" S) @8 u6 a( D数码管是一种半导体发光器件,其基本单元是发光二极管。能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。4 M# |6 b' B# `8 |" {5 B: Q
0 w9 k4 w' R2 I% F! B
+ X7 z3 B R$ b
& Z8 `- Q" u1 j3 s, A+ E# ^
' ]. V& M) h! H6 b, V- H" f & \) `+ l+ p: r/ }
, L. \# o+ r' x4 U; D. q0 C& k+ W5 z" Q9 Y
: x8 C0 L8 i9 s+ ^. E
二、电气特性) y6 T" H5 `, O z
2 W! |+ [2 H3 p7 {7 R* F: V1 z; z' o* Q
4 Q% ~* Q6 v( K8 X( e- A1 r: m
) Q# o& @6 P- Q& z) c% T" p u单位数码管有十个管脚,其中有8根是用来点亮a,b,c,d,e,f,dp 共8个发光二极管(原理中有介绍),3,8两个管脚为公共COM脚,它们相连通且作用相同,可接任意一根。为了更清楚介绍,贴图如下
* m# D8 v2 I: e1 J$ O4 c, n) @/ u
# P: s, u. x1 P2 t5 y8 A+ b( d' O. Z" b. M
; k! r& }) w/ Z9 J1 k5 s# a8 A8 `( \1 b! |2 ^# P
, z2 z. h* ~' q/ l5 U $ v6 I0 o$ ~+ W9 ]$ p
, [- Q9 r: j( u- n9 V2 T+ c# Z h# H/ a" K2 B4 x g. D
共阴数码管脚位对应图 7 P( w$ Q b; B# J* l) i% X, B' D
1 }0 I7 t7 ^" T1 F: |7 M
6 G% v6 l3 D1 T, p% r; V+ c" i. a& ?$ F+ P1 M! L6 [. d! ^
1 \# |4 ^% G) Q- i. ], I三、驱动方式
1 O5 z0 S7 [" {! F6 l, [1 o( N7 K" Y1 E7 z: |4 w
8 g6 [# g. k. S/ g. g5 W
1、静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
$ i5 D+ \; p, n F z: P8 R( |4 Y6 A6 w2 \( e) r5 L9 E
2 h5 h5 s2 B6 a# h' Y/ p$ W s9 l
: t& m! g: J; d2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
& ~2 l$ m& Y% s2 Z8 D( e4 I* ^6 m0 m. R( Q. u7 W% ]- U( {$ a6 @" U# K9 L* v4 X
$ s5 F2 P3 s+ W) O S( e* T) K0 n
四、开发实例' ]$ O/ \/ ^0 I& i" M6 n$ l9 V" q R' p1 b" n
2 \' g0 [3 m6 N0 A7 c4 Q& l6 n9 l& O
7 B$ I9 t" G" ~3 w4 W9 ]+ d0 o0 h- x8 I3 A# F, X3 B9 I
下面讲解一下四位数码管的动态驱动显示,首先看一下接线引脚图如下。' a! W. h$ S; K7 Q% m& U! w5 F! M+ b- R3 c2 |
) T0 u: Y2 X! b/ c4 a$ _- G# q( f' r3 c A& u
$ ]/ U$ k3 g6 c! ?4 H; `2 b
' Q' t6 l' f8 K) L% I" u+ i: ^! n+ H3 }5 a9 [
A2 C# d* d# P5 m# F% K- d5 p9 i2 m# W' K& [" Q
% G/ y: C7 Z2 d/ Y接下来用51单片机设计目标:通过编写c语言程序经编译连接后下载到单片机中,使四位数码管依次显示1,2,3,4. b" s6 a6 V6 U7 P# l/ K9 I4 s8 d- q$ N! R9 L2 ` ^. K
6 r5 g: K) G- _3 D. r1 q
! L1 - M1 `, S1 q* S3 U" [2 u# U
' z, E! X5 b5 u9 c. q. V #define uchar usigned char#define uint usigned int, P0 Y# l$ y) {4 U& T$ y$ a
6 k7 T) E* x4 O) ~% U4 p P' C) ?; {//位选控制端口sbit p20=P2^0;sbit p21=P2^1;sbit p22=P2^2;sbit p23=P2^3;. B8 @9 r- _- e* _+ a& Z+ Q2 p/ ~: j3 p [$ A6 U+ g5 d) d
//数码管段选编码数组,分别为显示:1,2,3,4的编码uchar code BianMa[] ={0x7,0xb,0xd,0xe};/ w3 _& D1 [% |( z; g) T3 m3 F
//延时1ms函数(用于数码管动态刷新)void Delay1ms(int time);9 s/ I% x) l% G7 p9 M6 J
) h3 @% q* r' Uvoid main(){while(1){ p20 =0; //共阴极数码管低位选有效,表示已选中第一位数码管 P0 =BianMa[0];//通过I/O口P0向数码管送段选编码 Delay1ms(500);//第一位数码管显示0.5秒,然后换到第二位,依次下去,由于视觉停留和数码管余辉,所以感觉四位都在显示 p20 =1; p21 =0; //第二位亮 P0 =BianMa[1]; Delay1ms(500); p21 =1; p22 =0; //第三位亮 P0 =BianMa[2]; Delay1ms(500); p22 =1; p23 =0; //第四位亮 P0 =BianMa[3]; Delay1ms(500); p23 =1;}# p1 [; r. X o9 V X3 R% Z$ i* h
//延时函数体void Delay1ms(int time{ int i,j; for(i =time;i>0;i--) for(j =110;j>0;j--)}8 K. w* w, w6 {/ N; y2 s& c# R# Q" a2 m2 [
+ _/ M9 o+ }1 w4 G# ?/ D, _/ Z
五、关于亮度和锁存器
3 x5 L) _" w- u. c2 b ~. y0 R5 a" A O; ^5 e; j# q
8 R9 i" N. z8 a* [/ B: ]5 E$ j* L- d4 O. s5 ?# V8 f: t% q9 j
一般来说静态驱动的亮度要高于动态驱动的亮度,但不影响使用。实际使用中为了达到更好的效果,会配合锁存器如74HC573一起使用,可以记忆先前状态数据直到有新数据覆盖。对做51单片机应用开发来说,相对LCD液晶,液晶模块编程更方便,样式更多样,但是其缺点亮度不够。这也恰恰是数码管的优势,如果做简单的计数显示,数码管是最好选择。
6 j$ x: E% K: ]0 ?+ G8 m* R% @& x' c3 h5 ~
, T1 ^, w. I1 C# c
( {0 k- p2 F3 \8 W4 H5 J ~六、使用中注意事项
6 N) ^! M. R# ?. x) L2 A. p5 D, q) @
3 ~* T: x. e/ q) y U/ R数码管的基本组成是发光二极管,因此其可以通过的电流只有几mA,接5V直流电源做测试的时候一定要串上一个几十K大小的电阻。否则,很容易烧掉,此外用万用表的测电阻档就可将其点亮,足以说明其电流之小。
) g% s) F9 a! K. @ n' U' f" a5 O |
|