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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于點陣屏滾動單片機C語言函數理解

[復制鏈接]
跳轉到指定樓層
樓主
ID:978416 發表于 2023-7-2 21:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
uint8_t val[BLOCKS];
uint8_t character_len = sizeof(table1) / 8;


// pos:點陣右沿對應的val數組元素編號. 因為要無縫滾屏, 用右沿做求余不會產生跳變
  // lpos: 點陣左沿對應的val數組元素編號, 每次根據點陣右沿和點陣寬度計算得到
                uint16_t pos = 0, lpos = 0;
  // cpos: 點陣左沿對應的文字編號
  // bpos: 在這個文字中, 當前移動到第幾個bit, 值從0-7
                uint8_t i, j, cpos = 0, bpos = 0, tcpos = 0;



               
               
   lpos = pos + sizeof(table1) - BLOCKS * 8;
    cpos = lpos / 8; // 第幾個字
    bpos = lpos % 8; // 字的第幾個bit
    for (i = 0; i < 8; i++) // 對每一行, 對val的每個元素賦值
    {
      // 從第cpos個字的bpos位開始, 填滿每個點陣對應的byte
      for (j = 0; j < BLOCKS; j++)
      {
        // 高位部分
        tcpos = (cpos + j) % character_len;
        val[j] = table1[tcpos * 8 + i] << bpos;
        // 低位部分
        tcpos = (cpos + j + 1) % character_len;
        val[j] |= table1[tcpos * 8 + i] >> (8 - bpos);
      }
                        //                                                        地址1-8   共幾塊  寫入數據
      Max7219_multiWrite(i+1, BLOCKS, val);
    }
    // 每處理完一屏, pos右移一位
    pos = (pos + 1) % sizeof(table1);
    HAL_Delay(70);


這段程序看了好久沒看懂,各位有沒有理解的麻煩給講一下每段的意思

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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