1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3732|回復(fù): 4
收起左側(cè)

請(qǐng)教大家一個(gè)單片機(jī)+OLED屏幕顯示程序的問(wèn)題

[復(fù)制鏈接]
ID:691676 發(fā)表于 2020-3-7 10:21 | 顯示全部樓層 |閱讀模式
我在寫(xiě)stc15單片機(jī)的OLED顯示程序的時(shí)候,想?yún)⒖紕e的程序,有一個(gè)顯示字符的子程序有點(diǎn)看不懂,那個(gè)y一會(huì)加2,一會(huì)加1,
//在指定位置顯示一個(gè)字符,包括部分字符
//x:0~127
//y:0~6
//chr:要顯示的字符                        
void OledShowChar(uchar x,uchar y,uchar chr)
{              
        uchar c = 0, i = 0;        
        c = chr-' ';//得到偏移后的值                        
        if(x>Max_Column-1)
        {
                x = 0;
                y = y + 2;
        }
        OledSetPos(x,y);        
        for(i=0;i<8;i++)
                OledWriteByte(CharF8x16[c*16+i],OLED_DATA);

        OledSetPos(x,y+1);
        for(i=0;i<8;i++)
                OledWriteByte(CharF8x16[c*16+i+8],OLED_DATA);
}
                          

回復(fù)

使用道具 舉報(bào)

ID:687694 發(fā)表于 2020-3-7 14:18 | 顯示全部樓層
        if(x>Max_Column-1)
        {
                x = 0;
                y = y + 2;
        }
應(yīng)該是行尾判斷,轉(zhuǎn)入下一行。。。
回復(fù)

使用道具 舉報(bào)

ID:695062 發(fā)表于 2020-3-16 22:01 | 顯示全部樓層
lovexulu 發(fā)表于 2020-3-7 14:18
if(x>Max_Column-1)
        {
                x = 0;

為什么不是y=y+1呀?
回復(fù)

使用道具 舉報(bào)

ID:419968 發(fā)表于 2020-3-17 11:22 | 顯示全部樓層
因?yàn)閷?xiě)的是8*16的在字符,字符占2行高所以y=y+2,接下來(lái)
  for(i=0;i<8;i++)
                 OledWriteByte(CharF8x16[c*16+i],OLED_DATA);這里寫(xiě)字符的上半部分 占一行

         OledSetPos(x,y+1);  寫(xiě)字符的下半部分, y+1
         for(i=0;i<8;i++)
                 OledWriteByte(CharF8x16[c*16+i+8],OLED_DATA);
回復(fù)

使用道具 舉報(bào)

ID:707815 發(fā)表于 2020-3-17 16:12 | 顯示全部樓層
你的字符取模是8*16的,而點(diǎn)陣屏,8行算一頁(yè),比如你打一個(gè)字符占用了第0頁(yè),第1頁(yè),那么這一行打印完,下一行要從第2頁(yè)開(kāi)始打印,所以這個(gè)行數(shù)加的是2
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表