1.原理:
1.我们常用的数码管有两种:共阴极数码管和共阳极数码管。
2.一般数码管有8个段,分别是a,b,c,d,e,f,g,dp(小数点)。
3.我们通过段选和位选来控制数码管的显示,段选来控制要显示的数据,
而位选是来选择让哪一个数码管显示。
4.动态数码管现实的原理就是:利用位选线不同时选择通断,改变段选数据来实现的。
5.数码管显示,仅靠单片机 IO 口来驱动是不行的,这里就需要增加外部驱动芯片74HC245
此外,还可以用138译码电路来控制位选。
?2.原理图:(普中A2开发板)
?
?
?3.程序说明:
我们使用4位数码管来动态显示数字2030
?4.源程序:
#include <reg51.h>
sbit LA=P2^2;
sbit LB=P2^3;
sbit LC=P2^4;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
/*延时函数*/
void delay(unsigned int i)
{
while(i--);
}
/*显示函数*/
void show(unsigned int n)
{
int i;
for(i=1;i<=4;i++){
switch(i)
{
case 1:
LA=0;LB=0;LC=0;P0=table[n%10];break;
case 2:
LA=1;LB=0;LC=0;P0=table[n%1000%100/10];break;
case 3:
LA=0;LB=1;LC=0;P0=table[n%1000/100];break;
case 4:
LA=1;LB=1;LC=0;P0=table[n/1000];break;
}
delay(100);
}
i=1;
}
void main()
{
unsigned int d=2030;
while(1)
{
show(d);
}
}
?5.开发板运行结果:
?光线太亮,看不太清,但的确地是数字2030
以上就是51单片机的数码管实验了?
想要了解更多的单片机实验,请查看我的51单片机专栏。
|