8个数码管静态显示_数码管的动态显示

沈丹 发表于 2018-01-16 16:37:13 收藏 已收藏
赞(0) •  评论(0

8个数码管静态显示_数码管的动态显示

沈丹 发表于 2018-01-16 16:37:13

数码管(Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。

数码管原理图:

8个数码管静态显示_数码管的动态显示

数码管共阴极接法:

8个数码管静态显示_数码管的动态显示

数码管共阳极接法:

8个数码管静态显示_数码管的动态显示

数码管中有位选和段选,位选就是选择哪个数码管,段选就是被选择的数码管要显示什么数字!

根据数码管的段选,可以总结出数码管的显示数据表:

8个数码管静态显示_数码管的动态显示

数码管的静态显示:

#include 《reg52.h》

#include “commLib.h”

sbit WLE = P2^7; // 位选

sbit DLE = P2^6; // 段选

#define DIGITAL_ARR_NUM 18

unsigned char code digital[DIGITAL_ARR_NUM] = { // 数码管显示数据表

/* 0, 1, 2, 3, 4, 5, 6, 7, 8, */

0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,

/* 9, A, B, C, D, E, F, 。, 不显示 */

0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x80, 0x00

};

int main(void)

{

unsigned int i;

// 位选

WLE = 1; // 位选端锁存器置高,送数据

P0 = 0xC0; // 送数据

WLE = 0; // 位选端锁存器置低,保存数据

while(1)

{

for (i = 0; i 《 DIGITAL_ARR_NUM; i++)

{

// 段选

DLE = 1; // 段选端锁存器置高,送数据

P0 = digital[i]; // 送数据

DLE = 0; // 位选端锁存器置低,保存数据

delay(500); // 延时500ms

}

}

return 0;

}《/reg52.h》

效果截图:

8个数码管静态显示_数码管的动态显示

数码管的动态显示:

#include 《reg52.h》

#include “commLib.h”

sbit WLE = P2^7; // 位选

sbit DLE = P2^6; // 段选

#define DIGITAL_ARR_NUM 18

unsigned char code digital[DIGITAL_ARR_NUM] = { // 数码管显示数据表

/* 0, 1, 2, 3, 4, 5, 6, 7, 8, */

0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,

/* 9, A, B, C, D, E, F, 。, 不显示 */

0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x80, 0x00

};

int main(void)

{

unsigned int i;

while (1)

{

for (i = 0; i 《 6; i++)

{

P0 = 0xFF; // 消影(必须有)

WLE = 1; // 位选端锁存器置高,送数据

P0 = ccCrol(0xFE, i); // 送数据

WLE = 0; // 位选端锁存器置低,保存数据

DLE = 1; // 段选端锁存器置高,送数据

P0 = digital[i]; // 送数据

DLE = 0; // 位选端锁存器置低,保存数据

delay(1);

}

}

return 0;

}《/reg52.h》

效果截图:

8个数码管静态显示_数码管的动态显示

收藏

相关话题
文章来源栏目
+关注

评论(0)

加载更多评论

参与评论

相关文章

分享到

QQ空间 QQ好友 微博
取消