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较多的时间。

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

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

    关注

    6037

    文章

    44558

    浏览量

    635263
  • 数码管
    +关注

    关注

    32

    文章

    1882

    浏览量

    91119

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

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

收藏 人收藏

    评论

    相关推荐

    数码管驱动芯片的使用方法

    数码管驱动芯片(也称为LED驱动芯片)是一种用于控制数码管显示的集成电路。它可以将微控制器产生的数字信号转换为适合
    的头像 发表于 12-08 16:24 1w次阅读

    数码管工作原理

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

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

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

    动态数码管的使用方法

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

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

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

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

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

    大尺寸数码管动态驱动和保护电路设计

    大尺寸数码管动态驱动和保护电路设计 引 言LED数码管是单片机系统常用的显示器件,1英寸以上的LED
    发表于 03-29 09:16 5554次阅读
    大尺寸<b class='flag-5'>数码管</b>的<b class='flag-5'>动态</b><b class='flag-5'>驱动</b>和保护<b class='flag-5'>电路</b>设计

    动态数码管显示程序

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

    实现动态显示效果,分析数码管驱动电路的作用及分类

    数码管驱动电路的作用主要是通过利用单片机控制LED数码管(发光二极)
    发表于 11-05 08:54 1w次阅读
    实现<b class='flag-5'>动态</b>显示效果,分析<b class='flag-5'>数码管</b><b class='flag-5'>驱动</b><b class='flag-5'>电路</b>的作用及分类

    共阴数码管与共阳数码管工作原理有什么不同

    本文主要介绍了数码管分类、数码管应用范围、数码管工作原理以及共阴数码管与共阳
    发表于 12-27 13:56 3.3w次阅读

    数码管工作原理是什么

    数码管由8个发光二极构成的,是一种可以显示数字和其他信息的电子设备。 数码管工作原理     数码管按段数分为七段和八段数码管,八段
    的头像 发表于 08-20 17:40 2.3w次阅读

    静态数码管动态数码管

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

    数码管的静态、动态显示原理及编程方法(1)

    掌握数码管的静态、动态显示原理及编程方法。--不是综合案例”
    的头像 发表于 06-28 11:40 2838次阅读
    <b class='flag-5'>数码管</b>的静态、<b class='flag-5'>动态</b>显示原理及编程<b class='flag-5'>方法</b>(1)

    数码管的静态、动态显示原理及编程方法(2)

    掌握数码管的静态、动态显示原理及编程方法。--综合案例”
    的头像 发表于 06-28 11:41 1747次阅读
    <b class='flag-5'>数码管</b>的静态、<b class='flag-5'>动态</b>显示原理及编程<b class='flag-5'>方法</b>(2)

    数码管工作原理和使用方法解析

    数码管是一种常见的显示元件,用于以数字形式显示数字、字母和特殊符号。它具有简单、可靠、易读等特点,在很多电子设备中应用广泛。本文将对数码管工作原理和使用方法进行细致的解析。 一、
    的头像 发表于 12-18 17:31 6772次阅读