各位麻烦帮我看看这道程序,我是用MAX7219来驱动8*8点阵的,但是在显示时会红一片。
#include
#define uint unsigned int
#define uchar unsigned char
***it CS=P2^1;
***it CLK=P2^2;
***it DIN=P2^0;
uchar code table[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00,
0x00,0x66,0x99,0x81,0x42,0x24,0x18,0x00,
0x00,0x42,0x42,0x42,0x42,0x24,0x18,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void writebyte(uchar sj)
{ uchar i;
CS=0;
for(i=0;i<8;i++)
{
CLK=0;
DIN=sj&0x80;
sj=sj<<1;
CLK=1;
}
}
void write_MAX7219(uchar address,uchar date)
{
CS=0;
writebyte(address);
writebyte(date);
CS=1;
}
void delay(uint x)
{
uint i,j;
for(i=0;i
for(j=0;j<112;j++);
}
void init()
{
write_MAX7219(0x09,0x00); //解码寄存器(地址:0x09,写0x00时,选ND,解码7~0数码管)
write_MAX7219(0x0a,0x01); //亮度寄存器
write_MAX7219(0x0b,0x07); //扫描寄存器(0x0_,_等于显示数码管的个数)
write_MAX7219(0x0c,0x01); //省电寄存器(写0x00进入掉电模式,写0x01进入正常模式)
write_MAX7219(0x0f,0x00); //测试寄存器(写0x01进入测试模式,写0x00进入正常模式)
}
void main()
{
uchar i,a,j,f;
uchar wo;
init();
while(1)
{
for(i=1;i<9;i++)
{
write_MAX7219(,);
write_MAX7219(i,table[wo++]);
delay(50);
}
j++;
i=1;
if(j>=32)
{
j=0;
}
wo=j;
}
}
已退回1积分
2015-4-13 13:11:39
没问题的啊,我调试了,还是一样全红。好像是没有消影的,但我不会消
没问题的啊,我调试了,还是一样全红。好像是没有消影的,但我不会消
举报
2015-4-13 15:35:32
应该是:delay(50)时间太短,显示切换过快,人眼看着就全红色!
应该是:delay(50)时间太短,显示切换过快,人眼看着就全红色!
举报
2016-12-20 18:44:20
楼主我现在也在做这个试验,遇到同样的问题,请问楼主你当初是怎么解决的呀?
楼主我现在也在做这个试验,遇到同样的问题,请问楼主你当初是怎么解决的呀?
举报