数码管(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
#include"commLib.h"
sbitWLE=P2^7;//位选
sbitDLE=P2^6;//段选
#defineDIGITAL_ARR_NUM18
unsignedcharcodedigital[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
};
intmain(void)
{
unsignedinti;
//位选
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
}
}
return0;
}
效果截图:
数码管的动态显示:
/*======================================================*/
/*时间:2015年8月6日20:45:09*/
/*功能:数码管的动态显示*/
/*目的:51单片机学习*/
/*^_^……!*/
/*======================================================*/
#include
#include"commLib.h"
sbitWLE=P2^7;//位选
sbitDLE=P2^6;//段选
#defineDIGITAL_ARR_NUM18
unsignedcharcodedigital[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
};
intmain(void)
{
unsignedinti;
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);
}
}
return0;
}
效果截图:
-
单片机
+关注
关注
6032文章
44526浏览量
633370 -
数码管
+关注
关注
32文章
1876浏览量
90983
原文标题:51单片机:数码管的静态显示和动态显示
文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论