找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4510|回復(fù): 24
打印 上一主題 下一主題
收起左側(cè)

16*16點陣proteus仿真沒有問題,但實物焊接后顯示的不成字是什么問題?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:846159 發(fā)表于 2020-12-17 15:52 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
100黑幣
程序和仿真圖如下#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,num;
uchar a,c,d,e,v,b,m,n,f;
uchar i,j,z,k;/*各變量值的初始化*/
uchar flag=0;
uchar code table1[]={
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
0xFF,0xFF,0x80,0x40,0x80,0x21,0xA0,0x12,
0x90,0x04,0x88,0x08,0x84,0x10,0x82,0x20,
0x80,0x20,0x80,0x40,0x80,0x40,0x00,0x00,
0x40,0x04,0x44,0x04,0x54,0x02,0x54,0x01,
0xD4,0xFE,0x54,0x92,0x74,0x92,0x5F,0x92,
0x54,0x92,0x54,0x92,0xD4,0xFE,0x54,0x01,
0x54,0x02,0x44,0x04,0x40,0x04,0x00,0x00,
0x04,0x20,0x84,0x60,0x84,0x20,0xFC,0x1F,
0x84,0x10,0x84,0x10,0x00,0x40,0xFE,0x44,
0x92,0x44,0x92,0x44,0xFE,0x7F,0x92,0x44,
0x92,0x44,0xFE,0x44,0x00,0x40,0x00,0x00,
0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00,
0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,
0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,
0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,
0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,
0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,
0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,
0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,
0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,
};
uchar code table2[]={
0x40,0x80,0x40,0x80,0x42,0x40,0x44,0x20,
0x58,0x18,0xC0,0x07,0x40,0x00,0x7F,0x00,
0x40,0x00,0xC0,0x3F,0x50,0x40,0x48,0x40,
0x46,0x40,0x40,0x40,0x40,0x78,0x00,0x00,
0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,
0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,
0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,
0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00,
0x24,0x08,0x24,0x06,0xA4,0x01,0xFE,0xFF,
0x23,0x01,0x22,0x06,0x00,0x40,0x3E,0x49,
0x22,0x49,0x22,0x49,0x22,0x7F,0x22,0x49,
0x22,0x49,0x3E,0x49,0x00,0x41,0x00,0x00,
0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,
0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,
0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,
0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,
0x00,0x00,0xFE,0xFF,0x22,0x04,0x5A,0x08,
0x86,0x07,0x10,0x80,0x0C,0x41,0x24,0x31,
0x24,0x0F,0x25,0x01,0x26,0x01,0x24,0x3F,
0x24,0x41,0x14,0x41,0x0C,0x71,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

void init();        /*主函數(shù)的初始化聲名*/                               
void init1();        /*左移顯示方式的初始化聲名*/
void disp1();        /*左移顯示子程序聲名*/       
void delay(uint z);/*延時函數(shù)聲名及定義*/
uchar keyscan();
void display1();
void display2();
void display3();
void display4();
void display5();
void display6();
uchar keyscan();
void main()
{

while(1)
{ flag=0;
flag=keyscan();
switch(flag){
case 0:break;
case 1:display1();break;
case 2:display2();break;
case 3:display3();break;
case 4:display4();break;
case 5:display5();break;
case 6:display6();break; }}
}
uchar keyscan()
{ uchar temp1,temp2,temp,num;
     P3=0xf0;
     temp=P3;
  if(temp!=0xf0)
  {  temp1=P3;
    P3=0x0f;
    temp=P3;
   if(temp!=0x0f)
   {  temp2=P3;
      temp=temp1^temp2;
   }
switch(temp)
   {  case 0x7e : num=1;  break;
      case 0x7d : num=2;  break;
          case 0x7b : num=3;  break;
          case 0x77 : num=4;  break;
          case 0xbe : num=5;  break;
          case 0xbd : num=6;  break;
          case 0xbb : num=7;  break;
          case 0xb7 : num=8;  break;
          case 0xde : num=9;  break;
          case 0xdd : num=10; break;
          case 0xdb : num=11; break;
          case 0xd7 : num=12; break;
          case 0xee : num=13; break;
          case 0xed : num=14; break;
          case 0xeb : num=15; break;
          case 0xe7 : num=16; break;
          }
  }
return num;}
void display1()
{       
init();
              init1();        //左移顯示初始化
                        {int c=96;
                        int e=96;
                                for(i=0;i<=c;i=i+16 )        //判斷左移的字符個數(shù)
                                        for(j=0;j<=b;j++)                //向左移動的速度由變量v控制
                                                for(k=i*2;k<(i*2+32);)        //顯示一幕
                                                        {  
                                                        flag=keyscan();
                                                        if(flag!=1)
                                                 { return ;         }
                                                        P0=table1[k];
                                                           k++;
                                                          P2=table1[k];
                                                          k++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }
                                for(i=0;i<=e;i=i+16 )        //判斷左移的字符個數(shù)
                                        for(j=0;j<=b;j++)                //向左移動的速度由變量v控制
                                                for(z=i*2;z<(i*2+32);)        //顯示一幕
                                                        {  
                                                        flag=keyscan();
                                                        if(flag!=1)
                                                 { return ;         }
                                                        P0=table2[z];
                                                           z++;
                                                          P2=table2[z];
                                                          z++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }                               
                        }
}       
void display2()
{
        init();
              init1();        //左移顯示初始化
                        {int d=176;
                                for(i=0;i<=d;i++)        //判斷左移的字符個數(shù)
                                        for(j=0;j<=v;j++)        //向左移動的速度由變量v控制
                                                for(k=i*2;k<(i*2+32);)        //顯示一幕
                                                        {
                                                        flag=keyscan();
                                                        if(flag!=2)
                                                 { return ;         }
                                                        P0=table2[k];
                                                           k++;
                                                          P2=table2[k];
                                                          k++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }                       
                        }
}       
void display3()
{       
        init();
           init1();        //左移顯示初始化
                        {int a=32;
                                for(i=0;i<=a;i++)        //判斷左移的字符個數(shù)
                                        for(j=0;j<=v;j++)        //向左移動的速度由變量v控制
                                                for(k=i*2;k<(i*2+32);)        //顯示一幕
                                                        {
                                                        flag=keyscan();
                                                        if(flag!=3)
                                                 { return ;         }
                                                        P0=table1[k];
                                                           k++;
                                                          P2=table1[k];
                                                          k++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }                       
                        }       
}       
void display4()       
{       
        init();
           init1();        //左移顯示初始化
                        {int a=32;
                                for(i=0;i<=a;i++)        //判斷左移的字符個數(shù)
                                        for(j=0;j<=v;j++)        //向左移動的速度由變量v控制
                                                for(k=i*2;k<(i*2+32);)        //顯示一幕
                                                        {
                                                        flag=keyscan();
                                                        if(flag!=4)
                                                 { return ;         }
                                                        P0=table1[k];
                                                           k++;
                                                          P2=table1[k];
                                                          k++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }                       
                        }       
}       
void display5()
{       
        init();
           init1();        //左移顯示初始化
                        {int a=32;
                                for(i=0;i<=a;i++)        //判斷左移的字符個數(shù)
                                        for(j=0;j<=v;j++)        //向左移動的速度由變量v控制
                                                for(k=i*2;k<(i*2+32);)        //顯示一幕
                                                        {
                                                        flag=keyscan();
                                                        if(flag!=5)
                                                 { return ;         }
                                                        P0=table1[k];
                                                           k++;
                                                          P2=table1[k];
                                                          k++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }                       
                        }       
}               
void display6()
{       
        init();
                init1();        //左移顯示初始化
                        {int a=32;
                                for(i=0;i<=a;i++)        //判斷左移的字符個數(shù)
                                        for(j=0;j<=v;j++)        //向左移動的速度由變量v控制
                                                for(k=i*2;k<(i*2+32);)        //顯示一幕
                                                        {
                                                        flag=keyscan();
                                                        if(flag!=6)
                                                 { return ;         }
                                                        P0=table1[k];
                                                           k++;
                                                          P2=table1[k];
                                                          k++;       
                                                          P1=m;
                                                          m++;
                                                          if(m==0x10)
                                                                m=0x00;
                                                          delay(1);
                                                        }                       
                        }
}       
void delay(uint z)/*延時函數(shù)聲名及定義*/
{
        uint x,y;
    for(x=z;x>0;x--)
            {
                        for(y=110;y>0;y--);
        }
}       
void init()        //主程序初始化
{
        v=15;        //設(shè)置移動速度的初值
        b=100;
}
void init1()        //左移顯示方式各變量的初始化
{
        P0=0;
        P2=0;
        m=0;
}

NZI}5AF8W7}5NS5]_MZOHEN.png (89.54 KB, 下載次數(shù): 55)

NZI}5AF8W7}5NS5]_MZOHEN.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

24#
ID:811405 發(fā)表于 2021-2-6 14:36 | 只看該作者
proteus仿真中,各芯片的電源接地等引腳并未標(biāo)出,在電路焊接時要注意不要接漏了
回復(fù)

使用道具 舉報

23#
ID:811405 發(fā)表于 2021-2-6 14:31 | 只看該作者
仿真沒有問題,應(yīng)該是電路焊接出現(xiàn)了問題,線路焊接錯誤或者虛焊導(dǎo)致系統(tǒng)不能正常運行
回復(fù)

使用道具 舉報

22#
ID:875484 發(fā)表于 2021-2-5 00:20 來自手機 | 只看該作者
可能是買的點陣屏和仿真軟件里面的元件引腳沒有對上。
回復(fù)

使用道具 舉報

21#
ID:546335 發(fā)表于 2020-12-24 11:27 | 只看該作者
程序沒出錯,電路實物出錯了
回復(fù)

使用道具 舉報

20#
ID:337139 發(fā)表于 2020-12-21 16:49 | 只看該作者
看一下點陣的真值表,連接成16*16時位與列的對應(yīng)關(guān)系。如果連錯就會有亂碼。

dianzheng8-8.jpg (132.44 KB, 下載次數(shù): 96)

真值表

真值表
回復(fù)

使用道具 舉報

19#
ID:755556 發(fā)表于 2020-12-21 14:37 | 只看該作者
應(yīng)該是點陣順序的問題吧,要不就是虛焊
回復(fù)

使用道具 舉報

18#
ID:337139 發(fā)表于 2020-12-21 14:31 | 只看該作者
本帖最后由 長風(fēng)007 于 2020-12-21 16:50 編輯

你需要檢驗一下使用的點陣是否與仿真的一致!看一下使用的器件的真值表腳位聯(lián)接。

dianzheng8-8.jpg (132.44 KB, 下載次數(shù): 111)

真值表

真值表
回復(fù)

使用道具 舉報

17#
ID:844772 發(fā)表于 2020-12-21 09:20 | 只看該作者
13樓說的對,你引腳搞錯了,點陣引腳順序不同,我給你發(fā)個圖。另外,估計不是虛焊問題,否則不會完全亂碼。

51hei圖片_20201221091350.jpg (204.63 KB, 下載次數(shù): 104)

51hei圖片_20201221091350.jpg
回復(fù)

使用道具 舉報

16#
ID:18297 發(fā)表于 2020-12-21 08:38 | 只看該作者
這個仿真的硬件電路和實際的硬件短路會不同,我之前也遇見同樣的問題,可能需要軟件取模過程要修改。
你這個問題需要結(jié)合你的硬件電路進行調(diào)試。
回復(fù)

使用道具 舉報

15#
ID:420836 發(fā)表于 2020-12-20 23:48 | 只看該作者
我可能是由于單芯片計算機的時鐘頻率,請在代碼中調(diào)整時鐘頻率,然后重試。 然后另一個原因可能是由于焊接。
回復(fù)

使用道具 舉報

14#
ID:748788 發(fā)表于 2020-12-20 21:17 | 只看該作者
palaceer 發(fā)表于 2020-12-17 16:18
因為怕焊錯,所以都用排針把那些接角引出來,然后用導(dǎo)線連接的

先將排針上的元件拔下,用萬用表的一個表筆接排針疑似有問題的一個點,另一個表筆接該點線路上的下一個點,如果線路有多個點,就逐點檢測一遍
回復(fù)

使用道具 舉報

13#
ID:160500 發(fā)表于 2020-12-20 19:30 | 只看該作者
把顯示正常的和有故障的圖發(fā)上來看看,只給一個程序有什么用
回復(fù)

使用道具 舉報

12#
ID:453974 發(fā)表于 2020-12-20 18:12 | 只看該作者
個人感覺應(yīng)該是引腳位置問題,實際的點陣引腳順序是亂的
回復(fù)

使用道具 舉報

11#
ID:864035 發(fā)表于 2020-12-20 17:19 | 只看該作者
是不是在焊接的時候虛焊,或者漏焊,程序看著好像沒有問題
回復(fù)

使用道具 舉報

10#
ID:864055 發(fā)表于 2020-12-20 17:01 來自手機 | 只看該作者
萬用表電阻檔測試是否短路,漏焊。
回復(fù)

使用道具 舉報

9#
ID:212797 發(fā)表于 2020-12-20 16:59 | 只看該作者
1、檢查焊接和電路圖是不是完全一樣的,看看有沒有焊接錯誤的地方;
2、用萬用便檢查各個關(guān)鍵點位的電壓對不對;
簡單點就是,寫一個電路檢查的小程序,在使用的引腳上發(fā)送固定的信號測量。
回復(fù)

使用道具 舉報

8#
ID:303207 發(fā)表于 2020-12-20 15:22 | 只看該作者
檢查一下焊接的問題,電路圖沒問題的話就是實物焊接硬件電路的問題
回復(fù)

使用道具 舉報

7#
ID:862566 發(fā)表于 2020-12-18 08:46 | 只看該作者
虛焊的可能性比較大,我們用32做的
回復(fù)

使用道具 舉報

6#
ID:843617 發(fā)表于 2020-12-17 19:12 | 只看該作者
可能出現(xiàn)虛焊、漏焊合作管腳焊錯了
回復(fù)

使用道具 舉報

5#
ID:852300 發(fā)表于 2020-12-17 17:07 | 只看該作者
先檢查點陣型號和引腳對不對?再查焊點吧
回復(fù)

使用道具 舉報

地板
ID:223946 發(fā)表于 2020-12-17 16:33 | 只看該作者
第一步檢查點陣的電源供電情況,最好用萬用表測量一下點陣的電源電壓。
第二步直接將電源加在點陣上面,查看是否是點陣元器件問題。
第三步,如果上面兩步都沒有問題的話,那就檢測單片機引腳輸出的電壓是否正確。
第四步,如果上面三步都沒有問題,那就是焊接出了問題。
回復(fù)

使用道具 舉報

板凳
ID:607298 發(fā)表于 2020-12-17 16:24 | 只看該作者
好好對比下實物和模擬的差異吧。
回復(fù)

使用道具 舉報

沙發(fā)
ID:846159 發(fā)表于 2020-12-17 16:18 | 只看該作者
wwh2382 發(fā)表于 2020-12-17 16:06
好好檢查一下有沒有虛焊、漏焊

因為怕焊錯,所以都用排針把那些接角引出來,然后用導(dǎo)線連接的
回復(fù)

使用道具 舉報

樓主
ID:748788 發(fā)表于 2020-12-17 16:06 | 只看該作者
好好檢查一下有沒有虛焊、漏焊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表