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

QQ登錄

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

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

單片機(jī)+LCD1602第二排總顯示錯(cuò)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
如題,做一個(gè)環(huán)境檢測(cè)系統(tǒng),用了SHT31和GY39,一時(shí)興起,就把兩個(gè)溫濕度拿來(lái)比比,然后發(fā)現(xiàn)LCD1602第二排顯示錯(cuò)誤,濕度的%RH后面多出了兩個(gè)HH,在按下按鍵(顯示大氣壓力和光照時(shí))第二排變成了KPaaa,多了兩個(gè)aa但是程序里應(yīng)該是沒(méi)有寫入重復(fù)字符的啊求教
下面是主程序部分的LCD部分程序
                LcdInit();
                if(count==1)
           {
                LcdWriteData(Bme.Temp/1000+0X30);
                LcdWriteData(Bme.Temp%1000/100+0X30);
                LcdWriteData('.');
                LcdWriteData(Bme.Temp%100/10+0X30);
                LcdWriteData(0xdf);
                LcdWriteData('C');
            LcdWriteData(' ');
                LcdWriteData(' ');
                LcdWriteData(' ');                          
                LcdWriteData(Bme.Hum/1000+0x30);
                LcdWriteData(Bme.Hum%1000/100+0x30);
                LcdWriteData('%');
                LcdWriteData('R');
                LcdWriteData('H');
                LcdWriteCom(0x40+0x80);
                LcdWriteData(a/10+0X30);
                LcdWriteData(a%10+0X30);
                LcdWriteData('.');
                LcdWriteData(b%10+0X30);
                LcdWriteData(0xdf);
                LcdWriteData('C');
                LcdWriteData(' ');
                LcdWriteData(' ');
                LcdWriteData(' ');                          
                LcdWriteData(c/10+0X30);
                LcdWriteData(c%10+0X30);
                LcdWriteData('%');
                LcdWriteData('R');
                LcdWriteData('H');
                delay(50000);
                }
                else if(count==2)
                {
                LcdWriteData('L');
                LcdWriteData('u');
                LcdWriteData('x');
                LcdWriteData(':');
                LcdWriteData(Lux/100000+0X30);
                LcdWriteData(Lux%100000/10000+0X30);
                LcdWriteData(Lux%10000/1000+0X30);
                LcdWriteData(Lux%1000/100+0X30);
                LcdWriteData('.');
                LcdWriteData(Lux%100/10+0X30);
                LcdWriteData(Lux%10+0X30);                          
                LcdWriteCom(0x40+0x80);
                LcdWriteData('P');
                LcdWriteData(':');
                LcdWriteData(Bme.P/100/100000+0x30);
                LcdWriteData(Bme.P/100%100000/10000+0x30);
                LcdWriteData(Bme.P/100%10000/1000+0x30);
                LcdWriteData('.');
                LcdWriteData(Bme.P/100%1000/100+0x30);
                LcdWriteData(Bme.P/100%100/10+0x30);
                LcdWriteData(Bme.P/100%10+0x30);
                LcdWriteData('k');
                LcdWriteData('p');
                LcdWriteData('a');
                delay(50000);}

圖1.jpg (721.92 KB, 下載次數(shù): 35)

第二排那個(gè)后面多兩個(gè)H

第二排那個(gè)后面多兩個(gè)H

圖2.jpg (3.2 MB, 下載次數(shù): 33)

多了兩個(gè)a

多了兩個(gè)a
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2020-5-27 17:11 來(lái)自手機(jī) | 只看該作者
建議將顯示函數(shù)寫成帶行列和內(nèi)容的格式,那樣找問(wèn)題容易書(shū)寫更直觀。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2020-5-27 17:20 | 只看該作者
這類問(wèn)題主要容易發(fā)生在刷新字符個(gè)數(shù)不一。關(guān)鍵是LCD定位不準(zhǔn),原來(lái)字符沒(méi)有清除干凈。實(shí)際就是程序有不易察覺(jué)的漏洞。有一個(gè)方法可以避免此毛。憾x兩個(gè)長(zhǎng)度16的緩存數(shù)組,一個(gè)用于上排,一個(gè)用于下排。把固定字符按序排列,其它用空格或0填充,程序運(yùn)行中要改變的顯示內(nèi)容以字符形式寫進(jìn)數(shù)組。更新LCD顯示內(nèi)容時(shí)一次把緩存16個(gè)字符全部刷新。
回復(fù)

使用道具 舉報(bào)

地板
ID:326333 發(fā)表于 2020-5-27 17:55 | 只看該作者
每次寫之前加個(gè)清屏指令試一下
回復(fù)

使用道具 舉報(bào)

5#
ID:277948 發(fā)表于 2020-5-28 19:31 | 只看該作者
跟樓上,在清屏后建議延時(shí)一段時(shí)間,充分清除。也可以讀取BF標(biāo)志位(看單片機(jī)是不是忙)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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