51单片机—数码管显示

发布时间:
来源: 电子工程世界

1.静态数码管显示


对数码管所在管口输入,然后根据二进制计算出6的二进制对应输入101,数码管中输入引脚是7D,这里需要有数码管的显示位置的管口参照,不同单片机可能不同


#include


void main()

{

P2_4=1;

P2_3=0;

P2_2=1;

P0=0x7D;//显示数字6

while(1)

{

}

}

由于引脚冲突,led也会亮

然后设置函数。用Switch来定义所有的输入


#include

void Num(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=0x7D;

}


void main()

{

Num(6);

while(1)

{

}

}

也可以对数字进行设置,在上面的代码中,number没有定义,所以还是显示6

可以用数组的形式,对每个数字的显示形式放在数组中,在函数中调用


#include


char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F};

void Num(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=NumTable[Number];

}


void main()

{

while(1)

{Num(4,2);

}

}

2.动态数码管显示


加入延迟函数,不然的话在显示上会有重影,对应位置的显示,也可以用循环语句


#include


void Delay(unsigned int xms)

{

unsigned char i, j;

  while(xms--)

{i = 12;

j = 169;

do

{

while (--j);

} while (--i);}

}


char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F};

void Num(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=NumTable[Number];

}


void main()

{

while(1)

{ Num(1,1);

Delay(200);

Num(2,2);

Delay(200);

Num(3,3);

Delay(200);

}

}


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。