找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4890|回復: 14
打印 上一主題 下一主題
收起左側(cè)

無字庫LCD12864的顯示問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:419842 發(fā)表于 2020-5-5 22:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
如果接到單片機的IO口是按照 D7對應P0.7 D6-P0.6 按照這個順序接到D0-P0.0 LCD12864就能正常顯示
如果是 反過來的話 D7接到P0.0 D6-P0.1 一直接到D0-P0.7 那么就不能正常顯示了



我想問下這個問題怎么解決,因為自己想做塊板,自己焊,第一種接線能正常顯示但是很亂,飛線太多了,第二種接法就好看多。
下面是程序,這也是參考網(wǎng)上的資料的。


先提前謝謝各位大佬幫忙解答問題


1正面.png (36.94 KB, 下載次數(shù): 119)

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

使用道具 舉報

沙發(fā)
ID:96682 發(fā)表于 2020-5-6 07:39 來自手機 | 只看該作者
美不美觀,關(guān)鍵是看各元器件如何布局排版
回復

使用道具 舉報

板凳
ID:97554 發(fā)表于 2020-5-6 08:28 | 只看該作者
重新取模吧,重新取高位生成字模再試試
回復

使用道具 舉報

地板
ID:592807 發(fā)表于 2020-5-6 08:31 | 只看該作者
并口的液晶屏,如果你將接口順序反過來的話,指令和數(shù)據(jù)也要反過來,比如0x01 你要換成0x80,0x01其實就時D7-D0分別取值 0 0 0 0 0 0 0 1
回復

使用道具 舉報

5#
ID:584814 發(fā)表于 2020-5-6 11:09 | 只看該作者
1、成品打板后并不存在所說的美觀就是亂成一團放在盒子里也木有問題除非搭棚;
2、如果非得要這樣“好看”,做個小程序?qū)0要口輸出的數(shù)據(jù)(程例中Lcd_date鏡像)從高到低轉(zhuǎn)成從低到高再輸出相當于反過來接。網(wǎng)上抄的程例加進去后只要改Lcd_date那句就可以。
unsigned char swap (unsigned char pData)
{
unsigned char value=0,tmp=0;
unsigned char ii,jj;
for (ii=0x80,jj=0;ii!=0;ii=ii>>1,jj++)
{
if (pData & ii) tmp=1;
else tmp =0;
value |= tmp << jj;
}
return value;
}
回復

使用道具 舉報

6#
ID:419842 發(fā)表于 2020-5-6 13:02 | 只看該作者
man1234567 發(fā)表于 2020-5-6 11:09
1、成品打板后并不存在所說的美觀就是亂成一團放在盒子里也木有問題除非搭棚;
2、如果非得要這樣“好看” ...

想問下這個函數(shù)具體要怎么使用呢?請大佬指點一下
回復

使用道具 舉報

7#
ID:584814 發(fā)表于 2020-5-7 09:41 | 只看該作者
Li.Chi 發(fā)表于 2020-5-6 13:02
想問下這個函數(shù)具體要怎么使用呢?請大佬指點一下

Lcd_date(swap(Chinese[flag++]));
俺能力有限還不清楚就沒法幫了。
回復

使用道具 舉報

8#
ID:732506 發(fā)表于 2020-5-7 10:31 | 只看該作者
無須更改線路或軟件,將顯示屏旋轉(zhuǎn)180度即可。
回復

使用道具 舉報

9#
ID:282850 發(fā)表于 2020-5-7 15:48 | 只看該作者
man1234567 回答的方法正確,重新取模不行,因為指令數(shù)還沒有反轉(zhuǎn)。
Lcd_com(0x3f); -----------全改成Lcd_com(swap(0x3f));也可以寫入反轉(zhuǎn)交換后的數(shù),不用swap
Lcd_date( aa  )-------------全改成Lcd_date(swap(aa));也可以重新取模,高位在下改高位在上
回復

使用道具 舉報

10#
ID:282850 發(fā)表于 2020-5-7 15:51 | 只看該作者
另外,贊同你對調(diào),美觀與方便焊接線第一,軟件服從硬件。也可以說,硬件不足軟件補。
回復

使用道具 舉報

11#
ID:584814 發(fā)表于 2020-5-7 15:51 | 只看該作者
hotpet 發(fā)表于 2020-5-7 10:31
無須更改線路或軟件,將顯示屏旋轉(zhuǎn)180度即可。

其實走到桌子對面更便捷
回復

使用道具 舉報

12#
ID:732506 發(fā)表于 2020-5-7 22:35 | 只看該作者
man1234567 發(fā)表于 2020-5-7 15:51
其實走到桌子對面更便捷

將顯示屏在線路板上的位置轉(zhuǎn)180度,是可以減少飛線的,成品做好后是無所謂上下方向的。
回復

使用道具 舉報

13#
ID:267719 發(fā)表于 2020-5-8 12:35 | 只看該作者
uchar Swap_uchar(uchar data)
{
        uchar i=0;
        uchar result=0;
        for (i=0;i<8;i++)
        {
                result>>1;
                if (data&0x80)
                {
                        result|=0x80;
                }
                data<<1;
        }
        return result;
}

void Lcd_com_N(uchar data)
{
        Lcd_com(Swap_uchar(data));
}

//LCD初始化函數(shù)
void lcd_init()
{
        Lcd_com_N(0x3f); //LCD開顯示
        Lcd_com_N(Oxc0); //LCD行初始地址,共64行
        Lcd_com_N(0xb8); //LCD頁初始地址,共3頁
        Lcd_com_N(0x40); //LCD列初始地址,共64列
        led_clear(0);        //清屏                                                                                     該函數(shù)led_clear內(nèi)的 Lcd_com 改為 Lcd_com_N
}

//************** 中文顯示 **************//
void zhongwen(uchar cslor2,uchar X,uchar Y,uint flag)
{
        int i;
        flag=flag*32;
        control(cslor2); // 選擇屏幕顯示                                                                                 該函數(shù)control內(nèi)的 Lcd_com 改為 Lcd_com_N
        Lcd_com_N(0xb8+(X*2));//選擇—個漢字的上部
        Lcd_com_N(0x40+(Y*16));
        for(i=0;i<16;i++)
        {
                Lcd_date(Chinese[flag++]) ;//先輸入一個漢上面 16列                                        該函數(shù)Lcd_date內(nèi)的 Lcd_com 改為 Lcd_com_N
        }
        Lcd_com_N(0xb8+(X*2)+1);//選擇一個漢字的下部|
        Lcd_com_N(0x40+(Y*16));
        for(i=0;i<16;i++)
        {
                Lcd_date(Chinese[flag++]);//輸入一個漢字的下部                                                該函數(shù)Lcd_date內(nèi)的 Lcd_com 改為 Lcd_com_N
        }
}


回復

使用道具 舉報

14#
ID:267719 發(fā)表于 2020-5-8 12:39 | 只看該作者
uchar Swap_uchar(uchar data)
{
        uchar i=0;
        uchar result=0;
        for (i=0;i<8;i++)
        {
                result>>1;
                if (data&0x80)
                {
                        result|=0x80;
                }
                data<<1;
        }
        return result;
}

void Lcd_com_N(uchar data)
{
        Lcd_com(Swap_uchar(data));
}

//LCD初始化函數(shù)
void lcd_init()
{
        Lcd_com_N(0x3f); //LCD開顯示
        Lcd_com_N(Oxc0); //LCD行初始地址,共64行
        Lcd_com_N(0xb8); //LCD頁初始地址,共3頁
        Lcd_com_N(0x40); //LCD列初始地址,共64列
        led_clear(0);        //清屏                                                                                                                                  該函數(shù)內(nèi)的 Lcd_com 改為 Lcd_com_N
}

//************** 中文顯示 **************//
void zhongwen(uchar cslor2,uchar X,uchar Y,uint flag)
{
        int i;
        flag=flag*32;
        control(cslor2); // 選擇屏幕顯示                                                                                 該函數(shù)control內(nèi)的 Lcd_com 改為 Lcd_com_N
        Lcd_com_N(0xb8+(X*2));//選擇—個漢字的上部
        Lcd_com_N(0x40+(Y*16));
        for(i=0;i<16;i++)
        {
                Lcd_date(Swap_uchar(Chinese[flag++])) ;//先輸入一個漢上面 16列       
        }
        Lcd_com_N(0xb8+(X*2)+1);//選擇一個漢字的下部|
        Lcd_com_N(0x40+(Y*16));
        for(i=0;i<16;i++)
        {
                Lcd_date(Swap_uchar(Chinese[flag++]));//輸入一個漢字的下部                       
        }
}
回復

使用道具 舉報

15#
ID:440553 發(fā)表于 2020-5-9 00:40 | 只看該作者
可能需要重新取模,或者在程序中改變一下,使其能夠?qū)?/td>
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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