用单片机实现数码管从左到右1到8,再从8到1依次回来。要求第几位显示时,其前面的数字也必须显示。

用单片机实现数码管从左到右1到8,再从8到1依次回来。要求第几位显示时,其前面的数字也必须显示。我的能显示过去但是回不来。代码如下,请各位大佬帮忙看看错在哪?#inclu... 用单片机实现数码管从左到右1到8,再从8到1依次回来。要求第几位显示时,其前面的数字也必须显示。我的能显示过去但是回不来。代码如下,请各位大佬帮忙看看错在哪?
#include<reg52.h>
sbit n0=P2^0;
sbit n1=P2^1;
char number[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
char space[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;
int m,count=0,k,flage=0;

void delay(int i)
{
int j;
for(;i>0;i--)
for(j=110;j>0;j--);
}

void interrupt_T0(void) interrupt 1
{
count++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(count==20)
{
count=0;
while(flage)
{m++;}
while(!flage)
{ m--;}
if(m==9){m=0;flage=1;}
if(m==0){flage=0;}
}
}

void printf(void)
{
switch(m)
{
case 1 : for(k=0;k<m;k++)
{
n1=1;
P1=space[k];
n1=0;

n0=1;
P1=number[k];
n0=0;
delay(10);
}
break;
case 2:for(k=0;k<m;k++)
{

n1=1;
P1=space[k];
n1=0;

n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 3:for(k=0;k<m;k++)
{
n1=1;
P1=space[k];
n1=0;

n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 4:for(k=0;k<m;k++)
{

n1=1;
P1=space[k];
n1=0;

n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 5:for(k=0;k<m;k++)
{

n1=1;
P1=space[k];
n1=0;

n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 6:for(k=0;k<m;k++)
{

n1=1;
P1=space[k];
展开
 我来答
lycdl
高粉答主

2018-05-20 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4980万
展开全部
你这程序很长,没有发上来吧?连个主程序都没有发上来。
是仿真的,还是实物开发板,是8位共阴数码管吗?
其实,程序很简单,没有你写得那么长,修改如下,可以来回显示的。
#include<reg52.h>
sbit n0=P2^0;
sbit n1=P2^1;
unsigned char code number[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
unsigned char code space[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;
unsigned char count,flage;
char m;
void delay(unsigned char i)
{
unsigned int j;
for(;i>0;i--)
for(j=110;j>0;j--);
}
void display(void)
{
unsigned char k;
for(k=0;k<=m;k++)
{
P1=space[k];
n1=1;
n1=0;
P1=number[k];
n0=1;
n0=0;
delay(5);
}
}
void main()
{
TMOD=0x01;
TH0 =0x3C;
TL0 =0xB0;
IE =0x82;
TR0 =1;
while(1)
{
display();
}
}
void interrupt_T0(void) interrupt 1
{
TH0=0x3C;
TL0=0xB0;
count++;
if(count==20)
{
count=0;
if(flage==0)
{
m++;
if(m>7)
{
m=6;
flage=1;
}
}
else
{
m--;
if(m<0)
{
m=1;
flage=0;
}
}
}
}
浮腾逸56
2020-10-09
知道答主
回答量:1
采纳率:0%
帮助的人:572
展开全部
楼主这个程序你会了么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式