久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

疑問:網上的單片機12864顯示漢字程序為什么顯示是從右到左?

[復制鏈接]
跳轉到指定樓層
樓主
ID:192847 發表于 2019-7-6 15:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
主程序調用部分:
Lcd12864_Write16CnCHAR(0, i, "司公限有技科中普");

這個顯示程序其實我能大概理解,但是對于顯示順序卻不理解,
1.為什么是從右到左呢?
2.如果是LCD鏡像顯示所以導致從右到左,但是這個程序是向對應的頁以及列數地址去寫數據,這也有點說不通

希望各位幫幫我,有時并不需要太多的解釋,一兩句金言便能解開困擾小弟許久的問題,多謝大家

先上程序:
uchar Lcd12864_Write16CnCHAR(uchar x, uchar y, uchar *cn)
{
        uchar j, x1, x2, wordNum;

        //--Y的坐標只能從0到7,大于則直接返回--//
        if(y > 7)
        {
                return 0;
        }

        //--X的坐標只能從0到128,大于則直接返回--//
        if(x > 128)
        {
                return 0;
        }
        y += 0xB0;           //求取Y坐標的值
        //--設置Y坐標--//
        LcdSt7565_WriteCmd(y);
        while ( *cn != '\0')         //在C語言中字符串結束以‘\0’結尾
        {        
        
                //--設置Y坐標--//
                LcdSt7565_WriteCmd(y);

                x1 = (x >> 4) & 0x0F;   //由于X坐標要兩句命令,分高低4位,所以這里先取出高4位
                x2 = x & 0x0F;          //去低四位
                //--設置X坐標--//
                LcdSt7565_WriteCmd(0x10 + x1);   //高4位
                LcdSt7565_WriteCmd(0x04 + x2);        //低4位

                for (wordNum=0; wordNum<50; wordNum++)
                {
                    //--查詢要寫的字在字庫中的位置--//
                        if ((CN16CHAR[wordNum].Index[0] == *cn)
                             &&(CN16CHAR[wordNum].Index[1] == *(cn+1)))
                        {
                                for (j=0; j<32; j++) //寫一個字
                                {               
                                        if (j == 16)         //由于16X16用到兩個Y坐標,當大于等于16時,切換坐標
                                        {
                                                //--設置Y坐標--//
                                                   LcdSt7565_WriteCmd(y + 1);
                        
                                                //--設置X坐標--//
                                                LcdSt7565_WriteCmd(0x10 + x1);   //高4位
                                                LcdSt7565_WriteCmd(0x04 + x2);        //低4位
                                        }
                                        LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);
                                }
                                x += 16;
                        }//if查到字結束               
                } //for查字結束        
                cn += 2;
        }        //while結束
        return 1;
}

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

使用道具 舉報

沙發
ID:192847 發表于 2019-7-6 16:59 | 只看該作者
懂了,是字模和屏幕的排列問題
回復

使用道具 舉報

板凳
ID:579064 發表于 2019-7-6 18:12 | 只看該作者
這個好像跟st7565驅動中的行列掃描的方向設置有關
回復

使用道具 舉報

地板
ID:192847 發表于 2019-7-8 08:38 | 只看該作者
不同驅動IC對字模的掃描是不同的,UC1701X和ST7565有略微的差別
回復

使用道具 舉報

5#
ID:488962 發表于 2019-7-18 12:25 | 只看該作者
普中的開發板子不錯。  但提供的程序代碼寫得很一般, 還有不少錯誤的注釋。
  

那個代碼的字模確實是反的。 但是不改字模,改代碼也可以反回來的:
1. st7565.c ->  void Lcd12864_Init() ->  LcdSt7565_WriteCmd(0xA1)  :  0xA1改成0xA0  變成從左到右
2. st7565.c -> uchar Lcd12864_Write16CnCHAR(  ->  LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]) :  Msk[j]改成Msk[j<16?15-j:47-j]  讓字模左右對調
3.  調用時, "司公限有技科中普" 就不用反過來了。


測試發現,顯示過快過多的文字可以會亂碼。 只能添加一些delay。  具體原因未知。


另:最頂上的一排圖標也是可以操作顯示的,只要把y坐標移到8,x坐標0~127一個個坐標發數據過去就可以試出來了,發送0清除,發送0xff顯示

回復

使用道具 舉報

6#
ID:488962 發表于 2019-7-19 02:24 | 只看該作者
你用的開發板是em3 v3, 還是v2.2   的?
回復

使用道具 舉報

7#
ID:401564 發表于 2019-7-19 08:32 | 只看該作者
這個程序嚴格上來說是用沒有漢字字庫的12864來顯示漢字
實際上就是用X軸Y軸來掃描顯示一個完整的漢字,每8個點對應一個8位的地址空間,你看數據手冊就知道了
那地址和二進制數都是從右向左按低位到高位排列的,那么顯示也是這么顯示了,不只是st7565,其它的驅動IC都是這么排列的了
回復

使用道具 舉報

8#
ID:688062 發表于 2020-2-23 16:22 | 只看該作者
看看顯示屏的數據手冊,是不是初始化設置不太對,也可以修改顯示函數解決問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九热精品免费 | 自拍偷拍亚洲视频 | 久久精品手机视频 | 涩涩视频网站在线观看 | 夜夜骚 | 激情伊人网 | 日韩激情视频一区 | 成人h动漫精品一区二区器材 | 久久精品二区亚洲w码 | 久久久www成人免费无遮挡大片 | 日韩久久精品 | 中文字幕人成乱码在线观看 | 欧美淫| 亚洲人成人一区二区在线观看 | 99久9| 精品自拍视频 | 在线观看av免费 | 激情免费视频 | 特一级黄色毛片 | 国产亚洲一区二区三区 | 少妇av片| 伊人爽| 国产欧美一区二区三区在线播放 | 国产aaaaav久久久一区二区 | 亚洲一区二区三区在线观看免费 | 欧美日韩福利视频 | 国产精品国产a级 | 中文字幕一区二区三区四区五区 | 欧美free性 | 啪视频在线 | 亚洲精品成人网 | 亚洲精选久久 | 欧美精品福利视频 | 天天躁日日躁xxxxaaaa | 超碰人人人 | 色婷婷国产精品综合在线观看 | 国产精品日韩在线 | 99视频在线免费观看 | 久久亚洲免费 | 91在线资源 | 日韩成人 |