当前位置: 代码迷 >> 单片机 >> 本人写一个LED点阵显示屏的程序,有行干扰是咋回事
  详细解决方案

本人写一个LED点阵显示屏的程序,有行干扰是咋回事

热度:27   发布时间:2016-04-28 15:10:51.0
本人写一个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;
         }
         
       } 
    }

}

------解决方案--------------------
这个主要得靠自己了,外人看明白不容易
------解决方案--------------------
  相关解决方案