本人写一个LED点阵显示屏的程序,有行干扰是怎么回事?
具体就是灯亮情况如下时:
--@------*-
--*---@----
------*--@-
其实我只是想点亮@,结果*也亮了,明显被干扰了!!!求解啊。
(实行行扫描,然后再点亮各点!)
void data1(void)
{
int s;
if(reg1==1) //reg用来判断上下,共32行,分为16行控制
{
for(s=0;s<64;s++) //点灯时其他63写灭,只有一个亮
{
if(s==LIGHTTEMP1)
{
LIGHTTEMP1=0;
PDOR5&=~SCK;
SER1
PDOR5|=SCK;
}
else
{
PDOR5&=~SCK;
SER4
PDOR5|=SCK;
}
}
}
else
{
for(s=0;s<64;s++)
{
if(s==LIGHTTEMP1)
{
LIGHTTEMP1=0;
PDOR5&=~SCK;
SER2
PDOR5|=SCK;
}
else
{
PDOR5&=~SCK;
SER4
PDOR5|=SCK;
}
}
}
void Light(void)
{
unsigned int i,j,k;
for(i=0;i<2;i++) //32*64的点阵
for(j=0;j<16;j++ )
for(k=0;k<64;k++)
{
if(point_get[i][j][k]==1)
{ //Dely100um(10000);
if(i==0)
{
reg1=1;
LIGHTTEMP1=k;
scan(j);
data1();
PDOR3|=RCK;
PDOR3&=~RCK;
PDOR3|=RCK;
//ENIR|=0x1<<13;
}
else if(i==1)
{
reg1=0;
LIGHTTEMP1=k;
scan(j);
data1();
PDOR3|=RCK;
PDOR3&=~RCK;
PDOR3|=RCK;
//ENIR|=0x1<<13;
}
}
}
}