欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于12864畫點函數的問題(求教)
[打印本頁]
作者:
MHNMHN
時間:
2017-7-19 16:20
標題:
關于12864畫點函數的問題(求教)
這是一個常見的12864畫點函數
我完全看不懂switch那部分啊,為什么要左移動7減Tier_bit。
哪位大佬可以給我講講
void DrawPoint( unsigned char X, unsigned char Y, unsigned char Color )
{
unsigned char Row , Tier , Tier_bit ;
unsigned char ReadOldH, ReadOldL ;
Tier = X >> 4 ;
Tier_bit = X & 0x0f ;
if( Y < 32 )
{
Row = Y ;
}
else
{
Row = Y - 32 ;
Tier += 8 ;
}
wr_cmd(Row + 0x80); //寫入行坐標
wr_cmd(Tier + 0x80); //寫入列坐標
rd_dat();
ReadOldH = rd_dat() ; //讀出原始數據
ReadOldL = rd_dat() ;
wr_cmd(Row + 0x80);
wr_cmd(Tier + 0x80);
if( Tier_bit < 8 )
{
switch( Color)
{
case 0 : ReadOldH &=( ~( 0x01 << ( 7 - Tier_bit ))) ; break ; //不顯示
case 1 : ReadOldH |= ( 0x01 << ( 7 - Tier_bit )) ; break ; //顯示
case 2 : ReadOldH ^= ( 0x01 << ( 7 - Tier_bit )) ; break ; //翻轉
default : break ;
}
wr_dat(ReadOldH); //寫入新數據
wr_dat(ReadOldL);
}
else
{
switch(Color)
{
case 0 : ReadOldL &= (~( 0x01 << ( 15 - Tier_bit ))) ; break ;
case 1 : ReadOldL |= ( 0x01 << ( 15 - Tier_bit )) ; break ;
case 2 : ReadOldL ^= ( 0x01 << ( 15 - Tier_bit )) ; break ;
default : break ;
}
wr_dat(ReadOldH);
wr_dat(ReadOldL);
}
}
復制代碼
作者:
MHNMHN
時間:
2017-8-9 21:51
這個問題我自己已經解決了。感覺現在沒有任何生氣,提問題沒有一個回復,傷心
作者:
MHNMHN
時間:
2017-8-10 16:38
感謝管理員的回復,我現在來對自己提出的問題作出解答:
我當初不明白這句話的意思
case 1 : ReadOldH |= ( 0x01 << ( 7 - Tier_bit )) ; break ; //顯示
其實是樣的,12864每行有128個像素點,能夠顯示16個字節,即每個字節占8個像素點
假設我要第2個像素點亮,Tier_bit就會為1(因為第一位為0,故第二位為1),代入上面這句話,就會有0x01左移6位(由0000 0001變成0100 0000)
1當“或”上ReadOldH(這個為原來8位的情況),就會在原來的基礎上點亮第二個像素點
2當“與”上ReadOldH,就會只點亮第二個像素點,而其他7個點置0不亮
以上就是我的解答,如有錯誤或者不足,請大家指正
作者:
taoran
時間:
2017-8-11 00:47
謝謝樓主的無私分享,能幫到很多人。
作者:
醇酒美人醉修禪
時間:
2018-5-1 06:43
樓主你好,請問我使用該函數時會直接造成清屏是什么原因?
作者:
日冕星
時間:
2019-7-14 10:11
本帖最后由 日冕星 于 2019-7-14 11:24 編輯
MHNMHN 發表于 2017-8-10 16:38
感謝管理員的回復,我現在來對自己提出的問題作出解答:
我當初不明白這句話的意思
case 1 : ReadOldH |= ...
對樓主的解釋做點補充:
3.當其取反后“與”上ReadOldH,由0100 0000變為1011 1111,會在原來的基礎上熄滅第二個像素點(case 0);
4.當“異或”上ReadOldH,會在原來的基礎上使第二個像素點狀態反轉(case 2);
以上是Tier_bit<8(每行16個字節分為8個區域,每個區域的高字節部分)時的情況;至于Tier_bit>=8時,情況類似,(15-Tier_bit)的目的是使移位控制在0~7范圍內。
另外值得注意的是,傳入的參數x指水平像素點坐標(0~127),y指垂直像素點坐標(0~63)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1