初学单片机 跟着江协科技走的
数字中的0-9依次显示为:0X3F,0X06,0X5b,0X4F,0X66,0X6D,0X7D,0X07,0X7f,0X6D
#include <REGX52.H>
#include <INTRINS.H>
void Delay(unsigned xms)
{
unsigned char data i;
while(xms--)
{
_nop_();
i = 47;
while (--i);
}
}
unsigned char Table[] = {0X3F,0X06,0X5b,0X4F,0X66,0X6D,0X7D,0X07,0X7f,0X6D};
void Chose(unsigned char x,unsigned char num)
{
switch (x)
{
case 1:
P2_2 = 1;
P2_3 =1;
P2_4 =1;
break;
case 2:
P2_2 = 0;
P2_3 =1;
P2_4 =1;
break;
case 3:
P2_2 = 1;
P2_3 =0;
P2_4 =1;
break;
case 4:
P2_2 = 0;
P2_3 = 0;
P2_4 = 1;
break;
case 5:
P2_2 = 1;
P2_3 =1;
P2_4 =0;
break;
case 6:
P2_2 = 0;
P2_3 =1;
P2_4 =0;
break;
case 7:
P2_2 = 1;
P2_3 =0;
P2_4 =0;
break;
case 8:
P2_2 = 0;
P2_3 = 0;
P2_4 =0;
break;
}
P0= Table[num];
Delay(1);
P0 = 0X00;
}
void main()
{
// Chose(1,5);
// Chose(2,2);
// Chose(3,0);
// Chose(4,1);
// Chose(5,1);
// Chose(6,3);
// Chose(7,1);
// Chose(8,4);
while(1)
{
Chose(1,5);
// Delay(5);
Chose(2,2);
// Delay(5);
Chose(3,0);
// Delay(5);
Chose(4,1);
// Delay(5);
Chose(5,1);
// Delay(5);
Chose(6,3);
// Delay(5);
Chose(7,1);
// Delay(5);
Chose(8,4);
// Delay(5);
}
}
这期间数码管会产生 位选 段选 如果不在选择中延时并把数码管清0的话,数码管就会产生串位。需要消影
下面展示没有消影的效果
当加上下面两行代码后就完成了消影的效果
Delay(1);//延时
P0 = 0X00; //数码管清0
最后显示的数字为52011314
记录旅程