久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1409|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

關(guān)于8x8點陣滾動原理,有沒有大神能給解釋一下單片機程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:978416 發(fā)表于 2022-1-23 20:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有沒有大神能給解釋一下void main 里邊的意思和具體的實現(xiàn)流程

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int

#define num1 5

sbit CLK = P2^0;
sbit CS  = P2^1;
sbit DIN = P2^2;

uchar code bytes[] = {
0x08,0x14,0x22,0x3E,0x22,0x22,0x22,0x22,//A
0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x00,//B
0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x00,//C
0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,//0
0x08,0x18,0x28,0x08,0x08,0x08,0x08,0x08,//1
0x7E,0x02,0x02,0x7E,0x40,0x40,0x40,0x7E,//2
0x3E,0x02,0x02,0x3E,0x02,0x02,0x3E,0x00,//3
0x08,0x18,0x28,0x48,0xFE,0x08,0x08,0x08,//4
0x3C,0x20,0x20,0x3C,0x04,0x04,0x3C,0x00,//5
0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x00,//6
0x3E,0x22,0x04,0x08,0x08,0x08,0x08,0x08,//7
0x00,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E,//8
0x3E,0x22,0x22,0x3E,0x02,0x02,0x02,0x3E,//9
};

uchar val[num1];
uchar character_len = sizeof(bytes) / 8;

void delay(uint x)
{
  uint i,j;
  for(i = 0; i < x; i++)
    for(j = 0;j < 112; j++);
}

void max7219_byte(uchar dat)
{
  uchar i;
  CS = 0;
  for(i = 8; i >= 1; i--)
  {
    CLK = 0;
    DIN = dat & 0x80; // &10000000, 取最高位
    dat = dat << 1;
    CLK = 1;
  }
}

void max7219_shuju1(uchar index, uchar addr, uchar dat)
{
  CS = 0;
  max7219_byte(addr);
  max7219_byte(dat);
  while(index--)
  {
    max7219_byte(0x00);
    max7219_byte(0x00);
  }
  CS = 1;
}

void max7219_shuju2(uchar addr, uchar len, uchar* dat)
{
  CS = 0;
  while(len--)
  {
    max7219_byte(addr);
    max7219_byte(*dat++);
  }
  CS = 1;
}

void max7219_init()
{
  uchar i;
  for (i = 0; i < num1; i++)
  {
    max7219_shuju1(i,0x0c,0x01);
    max7219_shuju1(i,0x09,0x00);  
    max7219_shuju1(i,0x0a,0x03);  
    max7219_shuju1(i,0x0b,0x07);  
    max7219_shuju1(i,0x0f,0x00);
  }
}
void main(void)
{
  // pos:點陣右沿對應(yīng)的val數(shù)組元素編號. 因為要無縫滾屏, 用右沿做求余不會產(chǎn)生跳變
  // lpos: 點陣左沿對應(yīng)的val數(shù)組元素編號, 每次根據(jù)點陣右沿和點陣寬度計算得到
  uint pos = 0, lpos = 0;
  // cpos: 點陣左沿對應(yīng)的文字編號
  // bpos: 在這個文字中, 當(dāng)前移動到第幾個bit, 值從0-7
  uchar i, j, cpos = 0, bpos = 0, tcpos = 0;
  max7219_init();
  while(1)
  {
    lpos = pos + sizeof(bytes) - num1 * 8;
    cpos = lpos / 8; // 第幾個字
    bpos = lpos % 8; // 字的第幾個bit
    for (i = 0; i < 8; i++) // 對每一行, 對val的每個元素賦值
    {
      // 從第cpos個字的bpos位開始, 填滿每個點陣對應(yīng)的byte
      for (j = 0; j < num1; j++)
      {
        // 高位部分
        tcpos = (cpos + j) % character_len;
        val[j] = bytes[tcpos * 8 + i] << bpos;
        // 低位部分
        tcpos = (cpos + j + 1) % character_len;
        val[j] |= bytes[tcpos * 8 + i] >> (8 - bpos);
      }
      max7219_shuju2(i+1, num1, val);
    }
    // 每處理完一屏, pos右移一位
    pos = (pos + 1) % sizeof(bytes);
    delay(150);
  }
}

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

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2022-1-28 08:31 | 只看該作者
所謂點陣滾動原理,就是將最邊的一列在下次顯示時去掉,用相鄰的一列填充,最后空出來的用新數(shù)據(jù)填充,兩次顯示的延時得當(dāng)?shù)脑挘瑫谝曈X上給人以滾動的感覺。
顯示屏只會一屏一屏地播放,滾動效果和電影播放一樣由相鄰的兩個畫面有位移感經(jīng)視覺錯覺腦補出的。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美jizzhd精品欧美巨大免费 | 成人小视频在线观看 | 9久9久9久女女女九九九一九 | 中文字幕亚洲一区二区va在线 | 中文字幕一区二区三区四区五区 | 亚洲一区二区三区免费在线观看 | 久久精品国产一区二区电影 | 人操人免费视频 | 日韩精品一区二区三区在线播放 | 日韩毛片在线观看 | 久久三区 | 欧美成人精品一区二区男人看 | 91视频在线网站 | 国产成人免费视频网站高清观看视频 | 国产日韩欧美在线 | 久久久久久久久久久福利观看 | 日日噜噜夜夜爽爽狠狠 | 男女av| 中文字幕在线免费观看 | 色婷婷一区二区三区四区 | 亚洲人成免费 | 欧美精品在线播放 | 二区中文| 欧洲一级视频 | 亚洲在线高清 | 亚洲第一区久久 | 在线看片国产 | 国产在视频一区二区三区吞精 | 国产91av视频在线观看 | 天天干天天操 | 久草资源在线视频 | 99热碰 | 欧美日韩国产精品激情在线播放 | 国产区视频在线观看 | 国产精品亚洲一区 | 欧美群妇大交群中文字幕 | 九九精品视频在线 | 久久伊人免费视频 | 美国av毛片 | 亚洲精品电影网在线观看 | 精品国产久 |