
单片机编程初学者的小问题 帮忙看看吧 在线等
8位数码管共阴极接法本来想让这8个一起显示的但是运行的时候是一个一个显示的应该怎么改啊#include<reg52.h>#include<math.h>voiddelay...
8位数码管共阴极接法 本来想让这8个一起显示的 但是运行的时候是一个一个显示的 应该怎么改啊
#include <reg52.h>
#include <math.h>
void delay(void)
{
unsigned int i,ms=200;
while(ms--)
for(i=0;i<120;i++);
}
void main()
{
unsigned int k;
unsigned a[8];
a[0]=0x7f; //8
a[1]=0x07; //7
a[2]=0x5b; //2
a[3]=0x77; //A
a[4]=0x71; //F
a[5]=0x7D; //6
a[6]=0x4f; //3
a[7]=0x6d; //5
P0=0x00;
P1=0x3f;
delay();
for(k=0;k<8;k++)
{
P0=0xff-pow(2,k);
P1=a[k];
delay();
} 展开
#include <reg52.h>
#include <math.h>
void delay(void)
{
unsigned int i,ms=200;
while(ms--)
for(i=0;i<120;i++);
}
void main()
{
unsigned int k;
unsigned a[8];
a[0]=0x7f; //8
a[1]=0x07; //7
a[2]=0x5b; //2
a[3]=0x77; //A
a[4]=0x71; //F
a[5]=0x7D; //6
a[6]=0x4f; //3
a[7]=0x6d; //5
P0=0x00;
P1=0x3f;
delay();
for(k=0;k<8;k++)
{
P0=0xff-pow(2,k);
P1=a[k];
delay();
} 展开
2个回答
展开全部
看程序应该不是延时问题。
先改成这样测试一下看现象如何。
while(1)
{
for(k=0;k<8;k++)
{
P0=0xff-pow(2,k);
P1=a[k];
delay();
}
}
先改成这样测试一下看现象如何。
while(1)
{
for(k=0;k<8;k++)
{
P0=0xff-pow(2,k);
P1=a[k];
delay();
}
}
更多追问追答
追问
加上while函数还是会一个一个显示
追答
单片机时钟频率是多少?
void delay(void)
{
unsigned int i,ms=200;
while(ms--)
for(i=0;i<120;i++);
}
按道理,这样的延时应该在毫秒级别,不可能会一个一个显示哦。
显示的数据正常吗?
你是仿真还是在实际电路上跑程序?
加上WHILE(1)后,再将延时也减小些观察现象。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询