找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2932|回復: 3
打印 上一主題 下一主題
收起左側

單片機驅動8*8點陣顯示出現(xiàn)錯誤

[復制鏈接]
跳轉到指定樓層
樓主
ID:239318 發(fā)表于 2018-2-8 21:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
又來寫一遍,好煩啊。大家可以看一下圖片和程序,按照正常的思路數(shù)字“0”在8*8點陣第一行應該是0x00,第二行應該是0x18,我按照這種思路用delay函數(shù)寫過一遍結果是正常的,用定時器就出現(xiàn)上面這中情況,先謝謝大家了。



單片機源程序如下:
  1. #include<reg52.h>
  2. unsigned char lie[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  3. unsigned char hang[3][8]={0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00, //數(shù)字0
  4.                           0x00,0x3c,0x20,0x38,0x04,0x24,0x38,0x00, //數(shù)字5
  5.                           0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}; //數(shù)字8
  6. int  a,i,j;
  7. void main()
  8. {
  9.   TMOD=0x01;
  10.   TH0=(65536-50000)/256;        
  11.   TL0=(65536-50000)%256;
  12.   TR0=1;
  13.   while(1)
  14.   {
  15.            P2=hang[j][i];
  16.      P1=lie[i];

  17.          i++;
  18.          if(i==8)
  19.          {
  20.            i=0;
  21.          }
  22.          if(TF0==1)
  23.          {
  24.                    TF0=0;
  25.                    a++;
  26.                  
  27.                  if(a==10)
  28.                  {
  29.                            a=0;
  30.                            j++;
  31.                         
  32.                          if(j==3)
  33.                          {
  34.                            j=0;
  35.                          }
  36.                  }
  37.      }
  38.   }
  39. }
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:284230 發(fā)表于 2018-2-16 21:36 | 只看該作者
1 把輸出語句放到時間標識內(nèi),
2 增加消隱處理。
3 更新的速度不能太快,一般在100Hz左右就可以了。

#include<reg52.h>
unsigned char lie[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char hang[3][8]={0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00, //數(shù)字0
                          0x00,0x3c,0x20,0x38,0x04,0x24,0x38,0x00, //數(shù)字5
                          0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}; //數(shù)字8
int  a,i,j;
void main()
{
  TMOD=0x01;
  TH0=(65536-5000)/256;        
  TL0=(65536-5000)%256;
  TR0=1;
  while(1)
  {

         if(TF0==1)
         {
                P1=0xff;
                P2=hang[j][i];
                P1=lie[i];

                i++;
                if(i==8)
                {
                        i=0;
                }
               
                TF0=0;
                a++;
                         
                if(a==100)
                {
                        a=0;
                        j++;

                        if(j==3)
                        {
                                j=0;
                        }
                }
     }
  }
}
回復

使用道具 舉報

板凳
ID:272269 發(fā)表于 2018-2-17 01:35 | 只看該作者
你的t呢????
TMOD=0x01
你的屬于t0的定時器的中斷函數(shù)呢????

改過來

上面的定時器初始化
EA=1;ET0=1;
t0的中斷函數(shù)
void t0()interrupt 1
{
   TR0=0;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   a++;
   if(a==10)
   {
       a=0;
       j++;
       if(j==3)
           j=0;
   }
   TR1=1;               
   
}

大哥還是回去多看看書先吧
尤其是中斷部分
回復

使用道具 舉報

地板
ID:111634 發(fā)表于 2018-2-17 19:03 | 只看該作者
板凳說得有理:還是回去多看看書先吧 尤其是中斷部分
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表