首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2013-12-04 
本人写一个LED点阵显示屏的程序,有行干扰是怎么回事?具体就是灯亮情况如下时:--@------*---*---@---------

本人写一个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;
         }
         
       } 
    }

}

[解决办法]
这个主要得靠自己了,外人看明白不容易
------解决方案--------------------


定时去扫描,显示的数据搞个缓冲区,时间一到把缓冲区数据打出去
[解决办法]
请教一下什么是行列干扰?

如何确定是行列干扰呢?
[解决办法]
你这个代码风格。。。本人写一个LED点阵显示屏的程序,有行干扰是咋回事
[解决办法]

代码风格有什么问题?
[解决办法]
情况复杂,首先是不是拉线实验就是那种用直接接,以前实验碰到过,后来制板后注意屏蔽后问题自然解决方

热点排行