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

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

3天内不再提示

数码管驱动电路讲解

CHANBAEK 来源:透析之眼 作者:AdamChen 2023-11-01 17:34 次阅读

根据项目需求可以用I/O外部上拉,用来驱动数码管;也可以74HC138(38译码器)+74HC245(8路信号收发器)驱动数码管。本文会以后者为数码管驱动电路,在代码上实现数码管的显示。

驱动电路:

图片

图片

电路讲解:

1)数码管元件采用共阴数码管,如果需要某位数码管被点亮,位选引脚需要被拉成电平;

2)八个数码管有8个位选引脚,8个段选引脚。为了将节省I/O口,使用74HC138将3位(CBA)选择,转换为8位二值代码,例如CBA值为000时,Y0输出低电平,其余为高电平,由于Y0连接到数码1位选引脚(图中的LED1网络标号),数码管1被选中。

图片

3)74HC138控制的是位选引脚,而74HC245控制的是段选引脚,增强驱动能力。电路原理图中将DIR接高电平,OE接GND,使得其工作状态为An输入Bn输出。当P0输出0x00时,Bn端也会输出0x00;

图片

代码实现:

图片

1)数码管显示数值,有对应的编码(编码对应段选被点亮或不亮);

2)数码管编码按照一定的关系(一般为顺序0~F),存储在一维数组里面;

3)74HC245收发器,主要用来驱动数码管,根据数码管显示可以看做P0数据直接到达数码管;

4)调用一维数的元素,将编码值通过I/O口输出,控制段选信号,显示对应数值;

5)数字选择数码管,数字转换为38译码器的3路输入信号,选中某个数码管显示。

实现数码管显示函数:

void showsmg(uchar selsmg,uchar num){
  //选择显示数码管第几个,拆解为38译码器对应编码
  smg0 = selsmg&0x01;
  smg1 = (bit)((selsmg >>1)&0x01);
  smg2 = (bit)((selsmg >>2)&0x01);
  //将数码管编码(一维数组)赋值给P0口,显示对用数字
  P0 = table[num];


}

具体显示代码:

功能:8个(7~0)数码管,从高到底显示7~0;
/********************************************************************************
* @File name: main.c
* @Author: AdamChen
* @Version: 1.1
* @Date: 2020-08-07
* @Description: LED display 
* @contact:975805363@qq.com
********************************************************************************/


#include "reg52.h"


typedef unsigned char uchar;
typedef unsigned int uint;


uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};
sbit smg2 = P2^4;
sbit smg1 = P2^3;
sbit smg0 = P2^2;


/*******************************************************
* Function name :delay
* Description        : 延时函数
* Parameter         :
  @ms        millisecond(毫秒)    
* Return          :None 
**********************************************************/
void delay(unsigned int ms) // ms代表需要延时的毫秒数
{
  uint x,y;
  for(x=ms;x >0;x--)
  for(y=110;y >0;y--);


}


/*******************************************************
*
* Function name :showsmg
* Description        : 数码管显示
* Parameter         :
  @selsmg      选择数码管第几个
  @num      显示数值
*        
* Return          :None 
**********************************************************/
void showsmg(uchar selsmg,uchar num){
  //选择显示数码管第几个,拆解为38译码器对应编码
  smg0 = selsmg&0x01;
  smg1 = (bit)((selsmg >>1)&0x01);
  smg2 = (bit)((selsmg >>2)&0x01);
  //将数码管编码(一维数组)赋值给P0口,显示对用数字
  P0 = table[num];


}


/*******************************************************
*
* Function name :main
* Description        : 8数码管,从高到低显示7到0。
* Parameter         :None
* Return          :None 
**********************************************************/
void main(){
  uchar i;
  while(1){
  //循环选中,8个数码管,显示7~0
    for(i=0;i< 8;i++)
    {
     showsmg(i,i);
      delay(1);
    }         
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 收发器
    +关注

    关注

    10

    文章

    2968

    浏览量

    104775
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89946
  • 译码器
    +关注

    关注

    4

    文章

    310

    浏览量

    49906
  • 驱动电路
    +关注

    关注

    151

    文章

    1470

    浏览量

    107664
  • 引脚
    +关注

    关注

    16

    文章

    1044

    浏览量

    48957
收藏 人收藏

    评论

    相关推荐

    数码管驱动程序是数码管扫描电路程序么?

    做课设《基于EDA的数字频率计的设计与实现》,现在遇到的问题是数码管模块的驱动程序怎么写,在网上找的都是c语言的,但是我需要用VHDL,所以想问问大家,这个数码管驱动程序是不是
    发表于 04-22 14:34

    为啥数码管需要驱动呢????

    1.为啥数码管需要驱动电路,感觉不用也行啊??2.还有共阴和共阳数码管驱动电路有啥不同??3.
    发表于 06-16 18:54

    数码管显示电路

    选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个
    发表于 03-12 15:13

    FPGA数码管动态扫描附件详细讲解

    数码管常用段数一般为7段,如上图中的abcdefg,有的还会有一个小数点,如图中的h。数码管要正常显示,就要用驱动电路驱动
    发表于 09-29 10:30

    【梦翼师兄今日分享】 数码管显示设计讲解

    做好准备。项目需求设计一个数码管驱动电路,使数码管能够同时显示出任意的六位数字(梦翼师兄使用的开发板集成的数码管为六位连体
    发表于 12-05 11:51

    数码管驱动

    数码管,反之。2、数码管驱动 数码管的公共端需要使用三极驱动,因为当8端
    发表于 12-21 12:13

    静态数码管的初步驱动

    【朱老师课程总结 侵删】第一部分、章节目录1.7.1.什么是数码管1.7.2.静态数码管的初步驱动1.7.3.静态数码管显示数字1.7.4.让数码管
    发表于 11-22 07:36

    通过三极驱动数码管

    文章目录数码管驱动单位数码管数码管数码管分为共阴数码管和共阳
    发表于 11-30 07:38

    数码管显示原理是什么

    原理都是一样的,都是靠点亮内部的发光二极来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从图(a)可看出,一位
    发表于 12-08 07:47

    数码管的结构和功能,如何使用数码管

    )打好基础。二、实验器材:C8051F330单片机,0.5K电阻八个,10K电阻六个,9013三极(NPN型)六个,三个共阳极双数码管,稳压电源,跳线,插槽,电烙铁,锡丝若干三、实验电路图:
    发表于 01-10 07:42

    数码管驱动电路分享

    根据项目需求可以用I/O外部上拉,用来驱动数码管;也可以74HC138(38译码器)+74HC245(8路信号收发器)驱动数码管。本文会以后者为数码
    发表于 01-24 06:27

    数码管的原理是什么?如何对数码管进行仿真呢

    数码管的原理是什么?如何对数码管进行仿真呢?怎样去设计一种数码管的静态驱动电路呢?
    发表于 01-25 07:44

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

    目录一,什么是数码管二,静态数码管驱动三,动态数码管四,动态数码管显示编程实战五,使用38译码器驱动
    发表于 02-24 06:21

    数码管驱动方式

    数码管驱动方式   数码管要正常显示,就要用驱动电路驱动
    发表于 11-06 11:42 3755次阅读

    数码管驱动电路的作用、分类及驱动电路设计

    本文为您介绍数码管驱动电路的作用,数码管驱动电路有什么作用,
    发表于 08-05 17:50 5.3w次阅读
    <b class='flag-5'>数码管</b><b class='flag-5'>驱动</b><b class='flag-5'>电路</b>的作用、分类及<b class='flag-5'>驱动</b><b class='flag-5'>电路</b>设计