博士
最后登录1970-1-1
在线时间 小时
注册时间2014-10-31
|
发表于 2015-4-13 19:16:10
|
显示全部楼层
本帖最后由 11kxmx 于 2015-4-13 19:55 编辑
我來給你解釋下:一個16*16的漢字,一行有16個點占兩個字節,16行就占32個字節,
CH_HEIGHT只有16,如果一次只讀寫一個字節,循環16次顯然總數是不夠32 的,乘2就 是這個道理
一行寫入時有16個點,只能一位一位寫,所以只能先取最高位,寫一次左移一次,次高位就被推到了最高位
16 次就 寫完了一行,再循環16 次,一個字就寫完了 你沒看是兩重FOR循環嗎
為什麼從高位開始寫呢,因取字模時我們約定,每一行從左至右,高位在先,寫LCD時順序還是從左至右,所以仍要先取高位
如果取字模時低位在先,我們寫入時也要先寫最低位,寫完之後右移一位
如果這樣寫不乘2也可以
for(page=0; page<32; page+=2)
{
tmp_char=buffer;
tmp_char=(tmp_char<<8);
tmp_char|=buffer[page+1];//把2个8位二进制数合成了1个16位二进制数
for (column=0; column< 16; column++)
{
if (( tmp_char &0x8000)==1) // 0x8000最高位是1
{
LCD_WR_Data(color);
}
else
{
LCD_WR_Data(BACKGROUND);
}
tmp_char <<= 1;
}
}
}
奇怪了tmp_char=buffer;打字时后面带大括号和page,发上去就不见了,让人越看越糊涂
|
|