0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

掌握段式数码管的工作原理和如何通过动态驱动的方法设计电路以及程序

GReq_mcu168 来源:未知 作者:李倩 2018-05-23 09:34 次阅读

一、本文内容提要

介绍了单片机外接键盘的原理,并给出了应用实例。本期将介绍单片机动态驱动段式数码管。通过该讲,读者可以掌握段式数码管的工作原理和如何通过动态驱动的方法设计电路以及程序。

二、原理简介

常用的段式数码管有七段式和八段式,八段比七段多了一个小数点,其他的基本相同。所谓的几段就是指数码管里有相应的几个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形(见图1(a))。从各发光二极管的电极连接方式又可以分为共阳极和共阴极两种类型。共阴极则是所有的二极管的阴极连接在一起,而阳极是分离的(见图1(b));而共阳极就是所有二极管的阳极是公共相连,而阴极则是分离的(见图1(c))。本学习板采用的是八段共阴极数码管,型号为LG3641AH。

图1 数码管内部结构图

前文所述,数码管与发光二极管的工作原理相同,共阳极时,所有正端接电源正极,当负端有低电平时,该段有电流流过,发光管亮,当负端为高电平时,该段无电流流过,发光管不亮。要显示什么数字,就使对应的段为低电平(见表1)。共阴极与共阳极的电平变化状态相反。当每个段的驱动电流为2~20mA,电流越大,发光越亮。

表1 显示的数字和七段码各位的对应关系表

常用的七段式数码管的硬件驱动设计方法有:静态驱动与动态驱动。

静态驱动即指每个数码管的数据线都有一个单独的数据锁存器,数据锁存器输入的数据由使能端控制,当使能端为高电平时,数据线上的数据(要显示的七段码)进入显示器,使能端与地址译码器的输出相连,要显示那位,则选通那位的地址,在软件设计上不要求程序循环,也不存在显示数字发生闪烁。但是这样会占用很多口线。

动态显示是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而节省了口线,地简化了硬件电路。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

三、电路详解

此讲的电路图如图2。从图2 中可以看出,驱动八个八段数码管总共用了6 个单片机IO 口,其中三个IO通过控制74HC595 来实现对数码管中的各段驱动,另外三个IO 通过控制74HC138 来实现对8 个数码管中的公共端驱动。此外为了增加74HC595 输出的驱动能力,在其输出后接了一级74HC245 芯片,以提高驱动能力,增加数码管的亮度。在这里对这三个芯片进行介绍说明。

图2 数码管动态驱动电路

74HC138 是常用的3-8 线译码器, 即具有3 个输入端( 管脚1,2,3) 与8 个输出端( 管脚15,14,13,12,11,10,9,7),作用为完成3 位二进制数据到8 位片选的译码。也就是说,3 个输入端对应8 个二进制数据(000,001,010,011,100,101,110,111),对于每个输入的数据,输出端相应位输出低电平,其他7 位输出高电平。74HC138 具有2 个低电平使能端(管脚4,5)与1 个高电平使能端(管脚6), 当低电平使能端接低电平且高电平使能端接高电平时74HC138 才能正常工作,否则8 个输出端全部输出高电平。因此在本学习板上设置一个跳线,如图2 中所示中的SM-EN 短路块,跳上时表示接低电平,74HC138 正常工作,跳开时表示接高电平,74HC138 不工作。74HC138 的真值表如表2 所示:H 代表高电平,L 代表低电平,X 代表不定的状态。

表2 74HC138输入输出真值表

74HC595 是8 位串行输入/ 输出或者并行输出移位寄存器芯片,可以将串行的数据,转为并行的输出,这样可以节约控制器的IO 口资源,因而广泛应用。

74HC595 最多需要5 根控制线, 即SDIPin14)、SCK(Pin11)、RCK(Pin12)、 (Pin10)和(Pin13)。图2 中将 直接接到高电平, 用软件来实现寄存器清零; 直接接到低电平, 一直输出有效。把其余三根线和单片机的I/O 口相接, 即可实现对74HC595 的控制。数据从SDI 口送入74HC595 , 在每个SCK 的上升沿, SDI 口上的数据移入寄存器, 在SCK 的第9 个上升沿, 数据开始从SDO 移出。如果把第一个74HC595的SDO 和第二个74HC595 的SDI 相接, 数据即移入第二个74HC595 中, 照此一个个接下去, 可接任意多个。数据全部送完后, 给RCK 一个上升沿, 寄存器中的数据即置入锁存器。此时为低电平, 数据即从并口Q0 ~ Q7 输出。

74HC245 为八总线收发器芯片,即可以将数据从A 总线端口传送到B 总线端口,也可将数据从B 总线端口传送到A 总线端口。传送方向由方向控制管脚DIR(芯片1 脚)输入的逻辑电平而定。其真值表如表3 所示:

表3 74HC245输入输出真值表

H 代表高电平,L 代表低电平,X 代表不定的状态。

四、程序设计

本讲设计实例核心程序如下:

……

#define SDI P2_7 ( 1)

#define SCLK P2_6 ( 2)

#define RCLK P2_5 ( 3)

……

void dat_in(unsigned char dat) ( 4)

{

unsigned char i; ( 5)

for(i=0;i<8;i++) ( 6)

{

SCLK=0; ( 7)

SDI=dat&0X80; ( 8)

dat《=1; ( 9)

SCLK=1; ( 10)

}

RCLK=0; ( 11)

RCLK=1; ( 12)

}

程序详细说明:

(1)将数据输出端定义为P2.7 管脚。

(2)将数据时钟输出端定义为P2.6 管脚。

(3)将寄存器时钟输出端定义为P2.5 管脚。

(4)数据传入函数,传入一字节。

(5)定义一个无符号字符型变量。

(6)要因为要传送一个字节,故要8 次。

(7)数据时钟先输出低。

(8)让数据管脚输出传入字节的最高位。

(9)传入字节左移一位。

(10)数据时钟输出高,上升沿将数据所存储至74HC595 数据寄存器中。

(11)寄存器时钟先输出低。

(12)寄存器时钟输出高,上升沿将数据所存储至74HC595 数据寄存器中。

以上字程序的作用, 当发送一个字节的显示数据的时候, 通过74HC595 进行串行转并行的控制,每次从单片机IO发送1Bit出去, 循环8次, 完成发送一个字节,之后再的输出端以一个字节的方式传输给数码管, 实现显示。

五、调试要点与实验现象

接好硬件电路,通过冷启动方式将程序所生成的。hex 文件下载到单片机运行后,复位单片机,就可以观察到板上8 个数码管都点亮(见图3),并从数字0 到9 变化闪烁。调试的时候需要注意的是,数码管的使能控制端(见图2)必须用跳线帽跳上,从而让74HC138 能工作输出。不需要用到数码管时可以, 反之,跳开以节省系统电流损耗。

图3 数码管显示效

另外动态扫描过程中, 数码管显示的亮度与驱动电流、点亮时间和关断时间有关, 所以应当适当调整驱动电流大小和扫描频率, 从而控制显示所需要的亮度。这在驱动尺寸较大的数码管组时更是如此,为了稳定显示,硬件方面必须达到该有的驱动能力,如在驱动端再接达林顿管等。软件方面,应在实际的调试过程中不断的尝试(见本讲程序中所扫描次数的经验值),找到一个最佳临界点,即要注意动态扫描的延时间隔和扫描次数。

六、总结

本讲介绍了单片机动态驱动数码管的原理并给出了实例,通过该讲,我们可以总结如下:

动态扫描驱动数码管的优点:当显示位数较多时,采用动态显示方式比较节省I/O 口,硬件电路也较静态显示简单;缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。

总的来说,无论是动态还是静态显示,其显示更新的速率不能太快,如数据不停变化,太快则无法看清楚显示的内容,在软件设计是必须注意的。另外,在同等条件下动态显示的亮度比静态显示要差一些,所以在适当提高驱动电流,例如使用限流电阻,就应略小于静态显示电路中的,或者使用缓冲驱动芯片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5999

    文章

    43968

    浏览量

    620744
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89945

原文标题:跟我学51单片机

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    4 位动态显示数码管显示实验及电路

    4 位动态显示数码管显示实验一、实验目的数码管是单片机系统常用的输出显示器件,单个数码管可以显示0~F 和一些简单符号。本实验要求实现在单个数码管
    发表于 09-28 12:40

    可以用段码液晶屏的驱动方式驱动数码管屏吗?

    的。LED数码管驱动是比较简单也容易理解的,多位数码管一般是LED阵列的形式,每个数字使用一个公共端,不同数字的对应同笔段使用一个控制端;驱动采用分时扫描每个数字位,实现
    发表于 01-23 15:34

    数码管工作原理

    ,我们来做这样的一个小练习,Kevin也是想通过这样的一个小练习来让大家基本掌握数码管工作原理,同时也了解如何使用FPGA来驱动
    发表于 04-02 06:35

    动态数码管工作原理是什么?

    动态数码管工作原理是什么?
    发表于 10-11 07:11

    单片机是如何实现数码管动态扫描的

    在单片机作品中,我们常常能看到数码管的身影。现在通过这篇文章来介绍数码管工作原理,单片机是如何实现数码管
    发表于 11-18 06:38

    静态数码管的初步驱动

    动态数码管显示编程实战11.7.7.动态数码管显示编程实战21.7.8.38译码器介绍1.7.9.使用38译码器驱动动态
    发表于 11-22 07:36

    8位7段LED数码管动态扫描显示

    8位7段LED数码管动态扫描显示一、实验目的二、实验内容三、实验步骤四、C代码如下五、实验结果六、实验体会一、实验目的掌握数码管动态扫描显示
    发表于 11-23 07:29

    数码管工作原理及使用方法

    的易用性与易学性,特别是当自己第一次动手编程点亮一个发光时,相信对于初学者来说,一定很兴奋,很有成就感吧!现在我们就趁热打铁,再向上跨一步,一起来学习一下数码管工作原理及使用方法
    发表于 11-24 06:32

    动态数码管的使用方法

    历年的蓝桥杯单片机组比赛都会考到数码管模块;对于省赛以及国赛来说,动态数码管都是必考模块!现在来给大家介绍动态
    发表于 01-12 06:19

    静态数码管工作原理是什么

    目录静态数码管工作原理C51例程静态数码管工作原理LED数码管根据LED的不同接法可以分为2类:共阴和共阳共阴极:共阳极:LED显示器工作方式有两种:静态显示方式和
    发表于 02-23 06:16

    动态数码管的相关资料分享

    显现问题。那就是利用人眼视觉的暂留效应来实现这个功能也就是不停转换位选来显现不同位置上的数字,通过分流轮流控制各个数码管的com端,这就是动态驱动在一定时间范围内,尽管不是同时显示,但
    发表于 02-23 07:30

    什么是数码管?静态数码管驱动介绍

    (1位)、联排(2位、4位、8位)2、工作原理(1)亮灭原理(其实就是内部的照明LED)(2)显示数字(甚至文字)原理:利用内部的LED的亮和灭让外部的组成数字的笔画显示或者不显示,人看到的就是不同的数字。3、共阳极和共阴极数码管(1)
    发表于 02-24 06:21

    数码管静态显示和动态显示的实现方法

    数码管静态显示和动态显示数码管共阳和共阴段选和位选数码管静态显示原理代码实现数码管动态显示
    发表于 03-01 07:34

    动态数码管显示程序

    动态数码管显示程序动态数码管显示程序动态
    发表于 01-12 14:55 60次下载

    静态数码管动态数码管

    (1位)、联排(2位、4位、8位)2、工作原理(1)亮灭原理(其实就是内部的照明LED)(2)显示数字(甚至文字)原理:利用内部的LED的亮和灭让外部的组成数字的笔画显示或者不显示,人看到的就是不同的数字。3、共阳极和共阴极数码管(1)
    发表于 01-12 18:31 39次下载
    静态<b class='flag-5'>数码管</b>和<b class='flag-5'>动态</b><b class='flag-5'>数码管</b>