目录
数码管介绍:
数码管是一种显示设备,用于在电子设备中显示数字和一些字母。它由七个发光二极管(LED)组成,分别用于显示数字0到9。每个数字在数码管中的显示方式都不同,因此数码管可以显示各种数字和一些字母。数码管通常有两种类型:共阳极和共阴极。共阳极的数码管的阳极是共用的,而共阴极的数码管的阴极是共用的。数码管常用于计算器、时钟、计时器、电子游戏等电子设备中的显示部分。
而要讲的数码管内部是由8个发光二极管(包含一个点)组成,通过对所选二极管的点亮来实现数码管显示想要的数字。com端共阴极,则高电平点亮,即给所选的发光二极管置1,相反com端共阳极,则低电平点亮,即给所选的发光二极管置0.
原理图分析:
DIR接高电平就往右发数据/接低电平往左发数据。
低电平驱动能力强,所以74HC245(缓冲器)的作用是提高LCD驱动能力更好的传数据。
数据变为控制信号经过74HC245自带的VCC汲取能量,在输出数据。
CC2:(电容)(稳定电源,电源滤波):10 0000=100 000PF PF nF uF mF F (10^3)
RP4:排阻4个为一体(限流电阻,防止数码管电流过大)
138译码器:控制P22,P23,P24使LED1~8中一位选中。
再控制P00~P07选中段码端,显示数据。
原理及代码:
静态显示
1位数码管显示某个字符时,相应的发光二极管恒定的导通或截止。
优点:占用CPU时间少,显示便于检测和控制。缺点:占用IO口多,硬件电路比较复杂,成本较高。
代码:
#include <REGX52.H>
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//定义一个数组存储共阴极0~9显示的代码
void Nixie(unsigned char Location,Number)//显示数码管的位置及亮的数字
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;//com端选择8个位置
}
P0=NixieTable[Number];
}
void main()
{
Nixie(2,3);
while(1)
{
}
}
动态显示
轮流向各位数码管送出字形码(段码)和相应的位码,快速变化,利用发光二极管的余辉和视觉暂留作用,使人感觉各位数码管同时在显示。优点:节约IO口资源。缺点:控制复杂。
代码:
#include <REGX52.H>
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//段选
void Delay(unsigned int xms )//ms延时函数
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;//位选
}
P0=NixieTable[Number];
Delay(1);
P0=0x00;
}
void main()
{
while(1)
{
Nixie(1,1);
// Delay(20);
Nixie(2,2);
// Delay(20);
Nixie(3,3);
// Delay(20);
}
}
消影:动态数码管消影是一种常见的视觉效果,可以通过快速交替显示数码管的每个数字来实现。这种效果可以通过控制电流的开关和数码管显示的刷新频率来实现。具体来说,当数码管显示一个数字时,电流通过该数字的显示段,使其发光。下一个数字的段将在很短的时间内被打开,然后前一个数字的段将被关闭。这样快速交替的操作会使得每个数字只在屏幕上停留很短的时间,给人一种看起来数字正在动的感觉。要实现动态数码管消影效果,需要精确控制电流的开关和数码管刷新的频率。这可以通过微控制器或其他电子设备来实现。在控制电路中使用适当的定时器和计时器,可以确保数码管的每个数字仅显示一段时间,然后迅速切换到下一个数字。需要注意的是,动态数码管消影效果对于肉眼来说是可见的,但对于摄像机的录像可能会造成抖动或闪烁。因此,在拍摄视频或进行其他需要高质量图像的场合时,可能需要采取其他的措施来消除这些问题
位选 段选 清零 位选 段选 清零 位选 段选 (单片机太快会篡位,加个清零解决(上面代码:P0=0x00))