欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請教大家一個單片機+OLED屏幕顯示程序的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:691676 發表于 2020-3-7 10:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我在寫stc15單片機的OLED顯示程序的時候,想參考別的程序,有一個顯示字符的子程序有點看不懂,那個y一會加2,一會加1,
//在指定位置顯示一個字符,包括部分字符
//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);
}
                          

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

使用道具 舉報

沙發
ID:687694 發表于 2020-3-7 14:18 | 只看該作者
        if(x>Max_Column-1)
        {
                x = 0;
                y = y + 2;
        }
應該是行尾判斷,轉入下一行。。。
回復

使用道具 舉報

板凳
ID:695062 發表于 2020-3-16 22:01 | 只看該作者
lovexulu 發表于 2020-3-7 14:18
if(x>Max_Column-1)
        {
                x = 0;

為什么不是y=y+1呀?
回復

使用道具 舉報

地板
ID:419968 發表于 2020-3-17 11:22 | 只看該作者
因為寫的是8*16的在字符,字符占2行高所以y=y+2,接下來
  for(i=0;i<8;i++)
                 OledWriteByte(CharF8x16[c*16+i],OLED_DATA);這里寫字符的上半部分 占一行

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

使用道具 舉報

5#
ID:707815 發表于 2020-3-17 16:12 | 只看該作者
你的字符取模是8*16的,而點陣屏,8行算一頁,比如你打一個字符占用了第0頁,第1頁,那么這一行打印完,下一行要從第2頁開始打印,所以這個行數加的是2
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表