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

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

    关注

    31

    文章

    1827

    浏览量

    89950
  • 共阳数码管
    +关注

    关注

    0

    文章

    14

    浏览量

    11201
收藏 人收藏

    评论

    相关推荐

    数码管引脚图

    数码管引脚图两位:三位数码管引脚图以及封装尺寸四位数
    发表于 03-14 14:37

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

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

    个四一体数码管怎么并在

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

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

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

    求助51驱动数码管问题

    `51驱动数码管,我有片573,是接段选还是选啊?还需要三极
    发表于 04-07 13:50

    一体数码管

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

    基于51单片机,矩阵键盘,四一体数码管的简单计算器的...

    器件:51单片机,四一体数码管,矩阵键盘来实现简单的加减乘除运算
    发表于 08-01 23:06

    单片机矩阵键盘及四一体数码管显示。。。。急!...

    求c程序枚:如何使矩阵键盘按下123,四数码管同时显示123.。。。。。。。。求救啊!!!1
    发表于 08-05 15:09

    Multisim中8一体数码管

    `看到有人用到8一体数码管,但是自己找不到,到底在哪里啊?`
    发表于 11-22 09:45

    TM1617能驱动数码管么?

    需要驱动个 七段三数码管。TM1617很合适。但是它的datasheet里面的电路和
    发表于 01-06 15:46

    两位数码管

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

    两位数码管

    各位大神有两位数码管的显示程序吗?套用函数那种,我写的就是个个列出来的那种,太长了。。。所以想优化下,拜托,嘿嘿嘿(抱拳)
    发表于 07-17 15:28

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

    是否显示小数点。如图 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