文章转自:http://blog.csdn.net/yunfeiyang62/article/details/48225697
作者:云飞扬_
数码管(Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
数码管原理图:
数码管共阴极接法:
数码管共阳极接法:
数码管中有位选和段选,位选就是选择哪个数码管,段选就是被选择的数码管要显示什么数字!
根据数码管的段选,可以总结出数码管的显示数据表:
符号 | 不显示 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | . |
编码 | 0x00 | 0x3F | 0x06 | 0x5B | 0x4F | 0x66 | 0x6D | 0x7D | 0x07 | 0x7F | 0x6F | 0x77 | 0x7C | 0x39 | 0x5E | 0x79 | 0x71 | 0x80 |
数码管的静态显示:
/*======================================================*/
/* 时间:2015年8月3日 21:19:03 */
/* 功能:数码管的静态显示 */
/* 目的:51单片机学习 */
/* ^_^……! */
/*======================================================*/
#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>
效果截图:
数码管的动态显示:
/*======================================================*/
/* 时间:2015年8月6日 20:45:09 */
/* 功能:数码管的动态显示 */
/* 目的:51单片机学习 */
/* ^_^……! */
/*======================================================*/
#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>
效果截图:
本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!
广告
关于立创商城
立创商城(WWW.SZLCSC.COM)成立于2011年,致力于为客户提供一站式电子元器件线上采购服务,成交量全国领先。拥有10000多平方米现代化元器件仓库,现货库存超100000种,集团电子全产业链自营服务涵盖:在线EDA(LCEDA)+行业领先的PCB打样/中小批量+元器件商城+钢网制造+SMT贴片+电子设计教育及方案。作为一家品种齐全、自营库存、质量有保障的电子元器件垂直商城,立创商城所有元器件均从原厂或代理商正规渠道采购,保证原装正品,为您提供专业的一站式元器件采购服务。