51单片机-数码管显示.ppt
文本预览下载声明
项目二 数码管显示 数码管实物 一 LED显示器(数码管)的结构与原理 1.数码管的结构 LED显示器(数码管)系发光器件的一种。常用的LED发光器件有两类:数码管和点阵。 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见数码管有10根管脚。管脚排列如下图所示。其中COM为公共端,根据内部发光二极管的接线形式可分为共阴极和共阳极两种。 使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需5~10mA的驱动电流才能正常发光,一般需加限流电阻控制电流的大小。 一 LED显示器的结构与原理 管脚排列 共阴极数码管 共阳极数码管 一 LED显示器的结构与原理 2. 数码管显示原理 LED数码管的a~g七个发光二极管。加正电压的发光,加零电压的不能发光,不同亮暗的组合就能形成不同的字型,这种组合称为字型码。共阳极和共阴极的字型码是不同的,下面我们分析一下。 如下图所示,把一个共阳极的数码管接到STC89C52RC单片机的P0口上,思考,怎样让此数码管显示数字0? 分析:共阳极的数码管,COM端为高电平,数据段为低电平时,对应的段亮。则 p0.7 p0.6 p0.5 p0.4 p0.3 p0.2 p0.1 p0.0接 dp g f e d c b a对应电平为 1 1 0 0 0 0 0 0 接下来让我们编程实现这个显示。 #include reg51.h /*包含头文件reg51.h*/ void main() /*无返回值的主程序*/ { P0=0xc0; } 但是若数码管如链接图中的接法,怎样修改程序呢? 思考:1.如果是共阴极的数码管怎样显示0呢? 2.大家能不能把所有数码管能显示的字符的字型码分析出来? 3.怎样实现令一个数码管连续显示0—9十个字符。 一个数码管显示0、1、2的程序 #include reg51.h void delay(int); void main() { P2=0x00; P0=0x03; delay(400); P0=0x9f; delay(400); P0=0x25; delay(400); } void delay(int x) { int i,j; for(i=0;ix;i++) for(j=1;j120;j++); } LED字型显示代码表 二 LED显示器静态显示及应用实例 1. 静态显示的特点 静态显示就是单片机将所要显示的数据送出去后,数码管始终显示该数据(不变),到下一次显示时,再传送一次新的显示数据。 静态显示的接口电路采用一个并行口接一个数码管,数码管的公共端按共阴极或共阳极分别接地或接VCC。这种接法,每个数码管都要单独占用一个并行I/O口,以便单片机传送字形码到数码管控制数码管的显示。显然其缺点就是当显示位数多时,占用I/O口过多。 静态显示方式的优点是显示的数据稳定,无闪烁,占用CPU时间少。其缺点是由于数码管始终发光,功耗比较大。 二 LED显示器静态显示及应用实例 2. 静态显示应用实例 【例】 用三位数码管分别显示1,2,3。电路如下图所示,STC89C52RC的P0\P1\P2口经74LS373接三个共阴极数码管,数码管的公共端接地。 3.串行静态显示 为了解决静态显示I/O口占用过多的问题,可采用串行接口扩展LED数码管的技术。 利用串入并处移位寄存器74LS164可以实现串行接口的扩展。 注意:74LS164的CLK端每产生一个下降沿,输出端的数据左移一位。 思考:用下图电路显示1、2的程序怎样编写? 三 LED显示器动态显示及应用实例 1. 动态显示的特点 动态扫描方法是用一个接口电路把所有数码管的8个笔划段a~g和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受一条I/O线控制。CPU向字段输出口送出字形码时,所有数码管接收到相同的字形码。但究竟是哪个数码管亮,则取决于COM端,COM端与单片机的I/O口相连接,由单片机输出位码到I/O控制何时哪一位数码管亮。 动态扫描用分时的方法轮流控制各个数码管的COM端,使各个数码管轮流点亮。在轮流点亮数码管的扫描过程中,每位数码管的点亮时间极为短暂。
显示全部