好玩的单片机——数码管原理(一)

版权声明:本文为博主原创文章,转载请标明出处。http://blog.csdn.net/sum_tw https://blog.csdn.net/sum_TW/article/details/60466103

一:数码管内部构造

数码管也称LED数码管,晶美、光电、不同行业人士对数码管的称呼不一样,其实都是同样的产品。

数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;

按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

如图:


上图就是两个数码管。

让我们来看看它的内部结构:



这是i个数码管的内部以及接线图,我们再来看下4个数码管的接线图。




二:LED数码显示方式及电路 

1、  静态显示方式

LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

2、动态显示

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 


三:字符表

1、共阳极数码管字符表:
unsigned code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
};

四:代码实现;

#include<reg52.h>//包含头文件
sbit wei1=P1^0;
sbit wei2=P1^1;
sbit wei3=P1^2;
sbit wei4=P1^3;
sbit miao=P1^4;

unsigned code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
};//共阳数码管码表

void delay(int a)
{
	int b,c;
	for(b=a;b>0;b--)
	for(c=30;c>0;c--);	
}
void main()//主程序
{
	while(1)//循环
	{
		wei1=0;//选通第一个数码管的位选,关闭其他数码管位选
		wei2=1;
		wei3=1;
		wei4=1;
		miao=1;//打开秒针
		P0=table[1];//送入段选信号1
		delay(1);//延时

		wei1=1;//选通第二个数码管的位选,关闭其他数码管位选
		wei2=0;
		wei3=1;
		wei4=1;
		miao=1;//打开秒针
		P0=table[2];//送入段选信号2
		delay(1);

		wei1=1;//选通第三个数码管的位选,关闭其他数码管位选
		wei2=1;
		wei3=0;
		wei4=1;
		miao=1;//打开秒针
		P0=table[3];//送入段选信号 3
		delay(1);

		wei1=1;//选通第一个数码管的位选,关闭其他数码管位选
		wei2=1;
		wei3=1;
		wei4=0;
		miao=1;//打开秒针
		P0=table[4];//送入段选信号 1111 1001
		delay(1);

	}
}


猜你喜欢

转载自blog.csdn.net/sum_TW/article/details/60466103
今日推荐