標題:
疑問:網(wǎng)上的單片機12864顯示漢字程序為什么顯示是從右到左?
[打印本頁]
作者:
Maxrix
時間:
2019-7-6 15:35
標題:
疑問:網(wǎng)上的單片機12864顯示漢字程序為什么顯示是從右到左?
主程序調(diào)用部分:
Lcd12864_Write16CnCHAR(0, i, "司公限有技科中普");
這個顯示程序其實我能大概理解,但是對于顯示順序卻不理解,
1.為什么是從右到左呢?
2.如果是LCD鏡像顯示所以導(dǎo)致從右到左,但是這個程序是向?qū)?yīng)的頁以及列數(shù)地址去寫數(shù)據(jù),這也有點說不通
希望各位幫幫我,有時并不需要太多的解釋,一兩句金言便能解開困擾小弟許久的問題,多謝大家
先上程序:
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坐標的值
//--設(shè)置Y坐標--//
LcdSt7565_WriteCmd(y);
while ( *cn != '\0') //在C語言中字符串結(jié)束以‘\0’結(jié)尾
{
//--設(shè)置Y坐標--//
LcdSt7565_WriteCmd(y);
x1 = (x >> 4) & 0x0F; //由于X坐標要兩句命令,分高低4位,所以這里先取出高4位
x2 = x & 0x0F; //去低四位
//--設(shè)置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時,切換坐標
{
//--設(shè)置Y坐標--//
LcdSt7565_WriteCmd(y + 1);
//--設(shè)置X坐標--//
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2); //低4位
}
LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);
}
x += 16;
}//if查到字結(jié)束
} //for查字結(jié)束
cn += 2;
} //while結(jié)束
return 1;
}
作者:
Maxrix
時間:
2019-7-6 16:59
懂了,是字模和屏幕的排列問題
作者:
YoungYang
時間:
2019-7-6 18:12
這個好像跟st7565驅(qū)動中的行列掃描的方向設(shè)置有關(guān)
作者:
Maxrix
時間:
2019-7-8 08:38
不同驅(qū)動IC對字模的掃描是不同的,UC1701X和ST7565有略微的差別
作者:
acd1024
時間:
2019-7-18 12:25
普中的開發(fā)板子不錯。 但提供的程序代碼寫得很一般, 還有不少錯誤的注釋。
那個代碼的字模確實是反的。 但是不改字模,改代碼也可以反回來的:
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] 讓字模左右對調(diào)
3. 調(diào)用時, "司公限有技科中普" 就不用反過來了。
測試發(fā)現(xiàn),顯示過快過多的文字可以會亂碼。 只能添加一些delay。 具體原因未知。
另:最頂上的一排圖標也是可以操作顯示的,只要把y坐標移到8,x坐標0~127一個個坐標發(fā)數(shù)據(jù)過去就可以試出來了,發(fā)送0清除,發(fā)送0xff顯示
作者:
acd1024
時間:
2019-7-19 02:24
你用的開發(fā)板是em3 v3, 還是v2.2 的?
作者:
Y_G_G
時間:
2019-7-19 08:32
這個程序嚴格上來說是用沒有漢字字庫的12864來顯示漢字
實際上就是用X軸Y軸來掃描顯示一個完整的漢字,每8個點對應(yīng)一個8位的地址空間,你看數(shù)據(jù)手冊就知道了
那地址和二進制數(shù)都是從右向左按低位到高位排列的,那么顯示也是這么顯示了,不只是st7565,其它的驅(qū)動IC都是這么排列的了
作者:
梟奇電子
時間:
2020-2-23 16:22
看看顯示屏的數(shù)據(jù)手冊,是不是初始化設(shè)置不太對,也可以修改顯示函數(shù)解決問題
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1