仿真链接: http://t.csdnimg.cn/QAPhx
目录
一.引脚位置
二.多个显示
三 扩展
一.引脚位置
注意P00 - >A ; 这个多个的在左边,右边的A到B是控制最右边那个单个的.
接下来上显示单个的代码
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned intuchar code leddata[]={0x3F, //"0"0x06, //"1"0x5B, //"2"0x4F, //"3"0x66, //"4"0x6D, //"5"0x7D, //"6"0x07, //"7"0x7F, //"8"0x6F, //"9"0x77, //"A"0x7C, //"B"0x39, //"C"0x5E, //"D"0x79, //"E"0x71, //"F"0x76, //"H"0x38, //"L"0x37, //"n"0x3E, //"u"0x73, //"P"0x5C, //"o"0x40, //"-"0x00 //熄灭};void DelayMS(uint x)
{uchar t;while(x--)for(t=120;t>0;t--);
}void main()
{uchar i=0;P0=0x00;while(i<24){P0=leddata[i];i++;DelayMS(400);}
}
二.多个显示
再加上控制引脚: P22->A P23->B P24->C 引脚位置,主要看代码里面的定义.定义的是哪个就插在哪个引脚上.
代码奉上
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code leddata[]={0x3F, //"0"0x06, //"1"0x5B, //"2"0x4F, //"3"0x66, //"4"0x6D, //"5"0x7D, //"6"0x07, //"7"0x7F, //"8"0x6F, //"9"0x77, //"A"0x7C, //"B"0x39, //"C"0x5E, //"D"0x79, //"E"0x71, //"F"0x76, //"H"0x38, //"L"0x37, //"n"0x3E, //"u"0x73, //"P"0x5C, //"o"0x40, //"-"0x00 //熄灭};//定义数码管位选信号控制脚
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;void DelayMS(uint x)
{while(x--);
}
void delay(unsigned int t)
{unsigned int i, j;for (i = 0; i < t; i++) {for (j = 0; j < 1275; j++) {; // 空循环,等待时间过去}}
}
void main()
{uchar i=0;P0=0x00;while(1){for (i = 0; i < 8; i++){switch (i){case 0: LSC=1;LSB=1;LSA=1;break;case 1: LSC=1;LSB=1;LSA=0;break;case 2: LSC=1;LSB=0;LSA=1;break;case 3: LSC=1;LSB=0;LSA=0;break;case 4: LSC=0;LSB=1;LSA=1;break;case 5: LSC=0;LSB=1;LSA=0;break;case 6: LSC=0;LSB=0;LSA=1;break;case 7: LSC=0;LSB=0;LSA=0;break;}P0 =leddata[i];DelayMS(100);P0=0x00;}}
}
三 扩展
既然基础的可以写了,就可以自定义了,比如显示当前时间.
比如动态时间,加上两个变量,随时间++,到60,前进一位,自身归零.