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

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

3天内不再提示

如何驱动两位一体的共阳数码管?

h1654155282.3538 来源:魔道电子 作者:魔道电子 2021-03-14 14:43 次阅读

LED数码管的显示和驱动原理是电子工程师必需熟练撑握的,对于单个数码管来说,点亮不同的LED段,就能形成相对应的数字,比如下图中,点亮BC两个段就是显示的数字1,点亮abdeg这几个段就是显示数字2,这个很容易理解。

7段数码

而对于两位一体的数码管有共阴和共阳之分,共阳的内部电路结构如下图所示,这种就需要控制器对这两个数码管进行不同时间段的轮流显示,而轮流显示的频率要大于人眼能感觉到的闪烁频率。

这种两位一体的数码管我在专栏“数字电子技术”的第66节视频进行了详细讲解,并用proteus软件进行了仿真,之后还在真实电路上运行了程序进行测试。

下图是proteus的电路原理

下面是C语言程序源代码

//用AT89C52实现的两位共阳数码管显示程序

#include 《reg52.h》

#include 《type_def.h》

#include 《intrins.h》

extern void Delay10ms(void);

extern void display(UINT8 number);

sbit SW = P1^7;

sbit LED_GREEN = P2^3;

sbit BUZZER = P2^4;

sbit WEI_SHI = P2^5;

sbit WEI_GE = P2^6;

int tcount = 0;//记录经过的10ms区间段个数

UINT8 add_cnt = 0;

UINT8 num = 0;

UINT8 code num_table[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void T0_INT() interrupt 1 //timer0中断, 每10ms触发一次

{

TR0 = 0;//关闭timer0

TH0 = 0xD8;

TL0 = 0xF0;//65536 - 10000 = 55536

if(tcount 》 0)

{

tcount ++;

}

if(tcount 》 11) //10ms * 10 = 100ms

{

tcount = 0;

BUZZER = 1;

LED_GREEN = 1;

}

display(num);

TR0 = 1;//重新开启timer0

}

void display(UINT8 num)

{

if (!add_cnt)

{

P0 = 0xff; //关8个段码

WEI_SHI = 1; //打开十位的数码管共阳极公共端

WEI_GE = 0;

P0 = num_table[num/10]; //显示的十位数字

add_cnt = 1;

}

else

{

P0 = 0xff; //关8个段码

WEI_SHI = 0; //关十位的数码管

WEI_GE = 1; //打开个位的数码管共阳极公共端

P0 = num_table[num%10]; //显示的个位数字

add_cnt = 0;

}

}

void Delay10ms(void) //@12.000MHz

{

unsigned char i, j;

i = 20;

j = 113;

do

{

while (--j);

} while (--i);

}

main()

{

BUZZER = 1;

LED_GREEN = 1;

TMOD = 0x01;

TH0 = 0xD8;

TL0 = 0xF0; //65536 - 10000 = 55536

IE = 0x82; //EA + ET0 --》 1000 0010

TR0 = 1; //开启timer0

while(1){

if(0 == SW){

Delay10ms();

if(0 == SW){

while(0 == SW){}

BUZZER = 0;

LED_GREEN = 0;

tcount = 1;

num++;

if (num 》 99)

{

num = 0;

}

}

}

}

return 1;

}
责任编辑人:CC

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

    关注

    32

    文章

    1874

    浏览量

    90923
  • 共阳数码管
    +关注

    关注

    0

    文章

    14

    浏览量

    11275
收藏 人收藏

    评论

    相关推荐

    TM1617能驱动数码管吗?

    需要驱动个 七段三数码管。TM1617很合适。但是它的datasheet里面的电路和
    发表于 05-11 07:18

    两位一体数码管动态显示程序

    小弟现在想做个利用51单片机(at89s52)做个倒计时定时器,为节约io口,我想采用两位一体数码管(十脚),还希望通过按键设定初始值,
    发表于 08-05 16:25

    个四一体数码管怎么并在

    请问个四一体数码管怎么并在起,怎么跟单片机连接起来显示时钟程序,谢谢啦!
    发表于 10-31 22:42

    两位一体阳极数码管显示驱动代码表是什么?

    `急急急!两位一体阳极数码管显示驱动代码表是什么?`
    发表于 01-12 23:50

    一体数码管

    连接51单片机时,阳极四一体数码管阴极的接法有何不同?分别该如何接?还有显示数字的程序应该是相反的吧。求大侠指教!!!!!!
    发表于 06-20 19:47

    两位数码管

    哪位朋友有两位数码管封装图,我下载了很多封装图库但都是一位或四的,求资源,谢谢
    发表于 01-09 11:27

    一体数码管介绍、扫描原理、应用电路和阴码段编写和示例

    是否显示小数点。如图 2,为四一体数码管的内部结构,在使用时12、9、8、6分时接高电平,11、7、4、3、1、10、5、3引脚对应于
    发表于 08-12 21:31

    一体数码管的引脚图介绍

    上的四一体数码管般都没有datasheet,所以掌握他们管脚的分布是很重要的个环节。下面是
    发表于 07-19 06:03

    芯片动态显示两位数码管

    求助,如何利用ne555,lm393,74ls47芯片实现两位数码管的动态显示。
    发表于 12-23 19:37

    数码管引脚图

    数码管引脚图 两位
    发表于 12-11 10:44 2.3w次阅读

    数码管引脚图

    数码管引脚图 两位
    发表于 12-11 10:46 6.5w次阅读

    数码管引脚图

    数码管引脚图 两位: 三位数码管引脚图以及封
    发表于 03-14 15:07 3.8w次阅读
    <b class='flag-5'>数码管</b>引脚图

    51黑论坛_2个两位数码管时钟

    51黑论坛_2个两位数码管时钟。
    发表于 05-10 11:24 6次下载

    单片机对两位数码管驱动设计

    P2.6和P2.7端口分别控制数码管的十和个位的供电,当相应的端口变成低电平时,驱动相应的三极会导通,+5V通过IN4148二极
    发表于 08-21 14:39 1.4w次阅读
    单片机对<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>设计

    数码管电机驱动对应表A

    数码管-电机驱动-对应表A 电机驱动数码管作为参数显示,表明相关特征!下表为简单整理的
    发表于 03-21 15:29 0次下载
    <b class='flag-5'>共</b><b class='flag-5'>阳</b><b class='flag-5'>数码管</b>电机<b class='flag-5'>驱动</b>对应表A