找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

單片機(jī)+LCD1602液晶顯示問(wèn)題 中間有兩個(gè)黑點(diǎn)

查看數(shù): 3452 | 評(píng)論數(shù): 15 | 收藏 0
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2021-5-28 10:48

正文摘要:

問(wèn)題描述: 1602顯示如圖,中間有兩個(gè)黑點(diǎn)。如何解決,我貼下1602程序部分 #define yi 0x80 //LCD第一行的初始位置,因?yàn)長(zhǎng)CD1602字符地址首位D7恒定為1(100000000=80) #define er 0x80+0x40 //LCD第二行 ...

回復(fù)

ID:390416 發(fā)表于 2021-6-19 08:42
LCD1602顯示℃ 這種自定義符號(hào) http://www.torrancerestoration.com/bbs/dpj-200685-1.html
LCD1602液晶最新資料 說(shuō)明了具體的時(shí)間要求 http://www.torrancerestoration.com/bbs/dpj-205768-1.html
ID:97350 發(fā)表于 2021-5-31 15:48
man1234567 發(fā)表于 2021-5-29 22:01
直接用常量在相對(duì)的位置顯示一個(gè)字條,如果還是這樣就是硬件壞。
不過(guò)一般都是你送的數(shù)據(jù)有問(wèn)題,1602直接 ...

排除硬件故障了,還在軟件調(diào)試中
ID:97350 發(fā)表于 2021-5-31 15:47
rayin 發(fā)表于 2021-5-31 10:58
基本不認(rèn)為是1602的硬件問(wèn)題,99%是軟件寫(xiě)得有問(wèn)題才出現(xiàn)中間部位的顯示異常.

你說(shuō)的對(duì),就是軟件問(wèn)題,但是我還沒(méi)調(diào)通
ID:517951 發(fā)表于 2021-5-31 10:58
基本不認(rèn)為是1602的硬件問(wèn)題,99%是軟件寫(xiě)得有問(wèn)題才出現(xiàn)中間部位的顯示異常.
ID:584814 發(fā)表于 2021-5-29 22:01
直接用常量在相對(duì)的位置顯示一個(gè)字條,如果還是這樣就是硬件壞。
不過(guò)一般都是你送的數(shù)據(jù)有問(wèn)題,1602直接壞2個(gè)顯示位并且全顯的概率小。
ID:97350 發(fā)表于 2021-5-28 15:19
感謝各位出謀劃策,我再找找原因,有答案會(huì)和大家一起分享的。小弟在這里一并謝過(guò)
ID:366877 發(fā)表于 2021-5-28 14:58
應(yīng)該是顯示數(shù)據(jù)和待顯示的位置沒(méi)對(duì)上,前一屏幕信息殘留疊加的結(jié)果。
ID:451718 發(fā)表于 2021-5-28 14:42
讀卡的后數(shù)據(jù)如何傳輸?shù)模?nbsp; 問(wèn)題肯定出在傳輸上,  把讀到的數(shù)據(jù),用串口發(fā)送出來(lái)看看就知道了。
ID:97350 發(fā)表于 2021-5-28 14:09
wufa1986 發(fā)表于 2021-5-28 13:30
這很明顯是顯示數(shù)字沒(méi)有轉(zhuǎn)字符串

我覺(jué)得應(yīng)該不是,因?yàn)榈谝粡埧ǹ梢哉Wx取出來(lái),第二張卡就顯示兩個(gè)黑屏
ID:97350 發(fā)表于 2021-5-28 14:08
hhdsdy 發(fā)表于 2021-5-28 13:44
主函數(shù)都沒(méi)貼出來(lái),應(yīng)該是送的顯示數(shù)據(jù)錯(cuò)誤了
  1. void main()
  2. {
  3.          unsigned char KEY,NUM;
  4.         unsigned char i,j;
  5.          P1=0xFF;
  6.         EA=1;
  7.         TMOD=0x01;
  8.         IT1=1;//下降沿有效
  9.         EX1=1;//外部中斷1開(kāi)
  10.            
  11.         TH0=0;//T0賦初值
  12.         TL0=0;
  13.         TR0=1;//t0開(kāi)始計(jì)時(shí)
  14.          TL1=0x3c;
  15.          TH1=0xb0;
  16.          ET1=1;        
  17.          TR1=0;
  18.          Delay400Ms();         //啟動(dòng)等待,等LCM講入工作狀態(tài)
  19.          lcd_init();         //LCD初始化
  20.         write_1602com(yi);//日歷顯示固定符號(hào)從第一行第0個(gè)位置之后開(kāi)始顯示
  21.         init_rc522();
  22.         init_eeprom();
  23.         read_eeprom();
  24.         for(i=0;i<16;i++)
  25.         {
  26.                 write_1602dat(name[i]);//向液晶屏寫(xiě)日歷顯示的固定符號(hào)部分
  27.         }
  28.         write_1602com(er);//時(shí)間顯示固定符號(hào)寫(xiě)入位置,從第2個(gè)位置后開(kāi)始顯示
  29.         for(i=0;i<16;i++)
  30.         {
  31.                 write_1602dat(start_line[i]);//寫(xiě)顯示時(shí)間固定符號(hào),兩個(gè)冒號(hào)
  32.         }
  33.         write_1602com(er+9);        //設(shè)置光標(biāo)位置
  34.         write_1602com(0x0f);        //設(shè)置光標(biāo)為閃爍
  35.          Delay5Ms(); //延時(shí)片刻(可不要)

  36.          N=0;                                                                                                                //初始化數(shù)據(jù)輸入位數(shù)
  37.          while(1)
  38.          {
  39.            
  40.                 ctrl();
  41.                 if(key_disable==1)
  42.                         Alam_KeyUnable();
  43.                 else
  44.                         ALAM=1;                                                                //關(guān)報(bào)警

  45.                 KEY=keynum();
  46.                 if(KEY!=0||IrOK==1)
  47.                 {        
  48.                         if(key_disable==1)
  49.                         {
  50.                                 second=0;
  51.                         }
  52.                         else
  53.                         {
  54.                                 NUM=coding(Im[2],KEY);
  55.                                 {
  56.                                         switch(NUM)
  57.                                         {
  58.                                                 case ('A'): if(chushihua==1)
  59.                                                             {
  60.                                                              current_id++;
  61.                                                             if(current_id>5)
  62.                                                                          current_id=0;
  63.                                                                          }                                        break;
  64.                                                 case ('B'):        if(chushihua==1)
  65.                                                              write_eeprom_jj(current_id)        ;                                             break;
  66.                                                 case ('C'): if(chushihua==1)
  67.                                                              write_eeprom_j(current_id)        ;                                         break;
  68.                                                 case ('D'): chushihua=0;ResetPassword();                break;      //重新設(shè)置密碼
  69.                                                 case ('*'): chushihua=0;Cancel();                                break;      //取消當(dāng)前輸入
  70.                                                 case ('#'): chushihua=0; Ensure();                                 break;           //確認(rèn)鍵,
  71.                                                 default:
  72.                                                 {        
  73.                                                     chushihua=0;
  74.                                                         //DisplayListChar(0,1,Input);
  75.                                                         write_1602com(er);
  76.                                                         for(i=0;i<16;i++)
  77.                                                         {
  78.                                                                 write_1602dat(Input[i]);
  79.                                                         }
  80.                                                     operation=0;
  81.                                                         if(N<6)                                                           //當(dāng)輸入的密碼少于6位時(shí),接受輸入并保存,大于6位時(shí)則無(wú)效。
  82.                                                         {  
  83.                                                                 OneAlam();                                                                //按鍵提示音                                                
  84.                                                                 //DisplayOneChar(6+N,1,'*');
  85.                                                                  for(j=0;j<=N;j++)
  86.                                                                 {
  87.                                                                         write_1602com(er+6+j);
  88.                                                                         write_1602dat('*');
  89.                                                                 }
  90.                                                                 InputData[N]=NUM;
  91.                                                                 N++;
  92.                                                         }
  93.                                                         else                                                                                //輸入數(shù)據(jù)位數(shù)大于6后,忽略輸入
  94.                                                         {
  95.                                                                 N=6;
  96.                                                                  break;
  97.                                                         }
  98.                                                 }
  99.                                         }
  100.                                 }
  101.                         }
  102.                  }
  103.         }
  104. }
復(fù)制代碼
ID:824490 發(fā)表于 2021-5-28 14:07
用仿真器跑代碼
ID:88256 發(fā)表于 2021-5-28 13:44
主函數(shù)都沒(méi)貼出來(lái),應(yīng)該是送的顯示數(shù)據(jù)錯(cuò)誤了
ID:879348 發(fā)表于 2021-5-28 13:30
這很明顯是顯示數(shù)字沒(méi)有轉(zhuǎn)字符串
ID:97350 發(fā)表于 2021-5-28 12:55
名字不是重點(diǎn) 發(fā)表于 2021-5-28 11:41
這樣的問(wèn)題,在線(xiàn)跟蹤一下1602的輸入數(shù)據(jù),一般都能解決

感謝賜教,請(qǐng)問(wèn)怎么在線(xiàn)跟蹤?
ID:824490 發(fā)表于 2021-5-28 11:41
這樣的問(wèn)題,在線(xiàn)跟蹤一下1602的輸入數(shù)據(jù),一般都能解決

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

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

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