AVR162的数码管显示问题
时间:10-02
整理:3721RD
点击:
4为数码管显示问题为什么不能显示啊
#include <avr/io.h>
#define uchar8 unsigned char
const uchar8 LedNum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
delay()
{
int i,j;
for(j=0;j<1;j++)
for(i=0;i<600;i++)
;
}
void LEDShow(int num)
{
uchar8 i,tmp,curnum;
int tmpnum;
tmp=0xef;
tmpnum=num;
for(i=0;i<4;i++)
{
curnum=tmpnum%10;
tmpnum=tmpnum/10;
PORTA=tmp;
PORTC=LedNum[curnum];
delay();
tmp=(tmp<<1)+0x1;
}
}
int main(void)
{
int num=5316;
DDRC=0xff;
DDRA=0xff;
while(1)
{
LEDShow(num);
}
}
我自己试了下静态显示就没有问题,只要动态显示就是乱码。
我也试过74hc595来驱动也是一样的结果。这个程序是书上的摘抄下来。
完全不知道什么原因的求给具体解决方法。怎么改程序啊
#include <avr/io.h>
#define uchar8 unsigned char
const uchar8 LedNum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
delay()
{
int i,j;
for(j=0;j<1;j++)
for(i=0;i<600;i++)
;
}
void LEDShow(int num)
{
uchar8 i,tmp,curnum;
int tmpnum;
tmp=0xef;
tmpnum=num;
for(i=0;i<4;i++)
{
curnum=tmpnum%10;
tmpnum=tmpnum/10;
PORTA=tmp;
PORTC=LedNum[curnum];
delay();
tmp=(tmp<<1)+0x1;
}
}
int main(void)
{
int num=5316;
DDRC=0xff;
DDRA=0xff;
while(1)
{
LEDShow(num);
}
}
我自己试了下静态显示就没有问题,只要动态显示就是乱码。
我也试过74hc595来驱动也是一样的结果。这个程序是书上的摘抄下来。
完全不知道什么原因的求给具体解决方法。怎么改程序啊
我已经解决了 是延时的问题。我会发个ATMEGA162的数码管显示的 有兴趣看看