仿真链接: http://t.csdnimg.cn/QAPhx
目录
[三 扩展](#三 扩展)
一.引脚位置
注意P00 - >A ; 这个多个的在左边,右边的A到B是控制最右边那个单个的.
接下来上显示单个的代码
cpp
#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 //熄灭
};
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 引脚位置,主要看代码里面的定义.定义的是哪个就插在哪个引脚上.
代码奉上
cpp
#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,前进一位,自身归零.