单片机数码管静态显示学号1830508,用keil 最好有过程,在图上的过程上修改

这是静态数码管最后一位的显示
#include<reg51.h>
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main()
{
LSA=1;
LSB=0;
LSC=0;
P0=smgduan[8];
while(1);
}

// 单片机数码管动态显示学号1830508(注多位数码管用静态显示电路会很复杂,所以一般多用动态显示),方法有多种,下面是一个仿真例程可以参考。

#include<reg51.h>

#define uchar unsigned char

// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

void delay(uchar z)

{

uchar i,j;

for(i=0;i<120;i++)

for(j=0;j<z;j++);

}

void main()

{

while(1)

{

P0=0xff;

P2=LED7Code[0];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[1];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[8];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[3];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[0];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[5];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[0];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[8];

P0=0x7f;

delay(5);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-24
你这程序只能显示一位数。看你的程序,是8位数码管显示电路的程序,P0输出段码,而P2.2,P2.3,P2.4接一片138译码器,再由译码器实现位选。是这样吧?这是实物开发板吧?要在你程序基础上改,你就别发截图,而应该发源代码,才能复制再修。这截图怎么复制程序?那全部需要现敲的,太费劲了。追问

那稍微说下怎么写这个呗

追答

问你是开发板和电路,却不回答,就不能发程序代码吗?

是你要程序,却又不愿意做一点事,就该别人为你做事吗?

追问

其实我只是想要问下思路,我现在还没学这个,只是提前在自学而已,不是很懂才问的,是要发手打的代码吗,等一下,麻烦了

追答

看你的程序,应该是8位共阴数码管动态扫描显示电路,只不过是你只显示了一个。

程序如下

#include<reg51.h>

typedef unsigned char u8;

typedef unsigned int  u16;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

u8 num[]={1,8,3,0,5,0,8};//显示的学号

void delay(u8 x)

{

u16 j;

while(x--)

for(j=1000;j>0;j--);

}

void main()

{

u8 j;

P0=smgduan[num[j]];

LSA=0;

LSB=0;

LSC=0;

while(1)

{

for(j=0;j<7;j++)

{

P0=smgduan[num[j]];//显示7个学号

delay(50);//延时

}

}

}

仿真结果

手机APP有问题,在追答里看不全程序,用电脑上网看程序吧

本回答被提问者和网友采纳
第2个回答  2019-02-26
#include<reg51.h>
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
LSA=1;LSB=1;LSC=1;P0=smgduan[1];
LSA=0;LSB=1;LSC=1;P0=smgduan[8];
LSA=1;LSB=0;LSC=1;P0=smgduan[3];
LSA=0;LSB=0;LSC=1;P0=smgduan[0];
LSA=1;LSB=1;LSC=0;P0=smgduan[5];
LSA=0;LSB=1;LSC=0;P0=smgduan[0];
LSA=1;LSB=0;LSC=0;P0=smgduan[8];
while(1);
}

相似回答