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

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

QQ登錄

只需一步,快速開始

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

關(guān)于led點(diǎn)陣文字移動(dòng)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:837401 發(fā)表于 2022-12-17 19:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本人做了一款led點(diǎn)陣32x32的,掃描方式是逐行掃描,那么在代碼實(shí)現(xiàn)靜態(tài)文字或者文字上下移沒什么難點(diǎn),靜態(tài)顯示無非就是開一個(gè)顯存把文字?jǐn)?shù)據(jù)寫進(jìn)顯存然后掃描就完了,上下移也就多了一步字節(jié)推擠寫一個(gè)用定時(shí)器數(shù)據(jù)推擠,推擠顯存中的數(shù)據(jù)一個(gè)字節(jié)一個(gè)字節(jié)跟可以完美實(shí)現(xiàn)上下移,到了左右移那么問題來了由于pcb設(shè)計(jì)掃描結(jié)構(gòu)為逐行掃描,上下移可以推入整個(gè)字節(jié)達(dá)到目的,左右移總不能直接移一個(gè)字節(jié)吧8個(gè)點(diǎn)顯然不行,所以怎么將字節(jié)左移到高位通過算法接入下一個(gè)字節(jié)的低位呢,辦法我是有的但是有點(diǎn)太笨了所以來請(qǐng)教大神們,如下代碼。typedef unsigned char u8;
typedef unsigned int u16;

sbit SDI =  P6^0;
sbit CLK =  P6^1;
sbit LE  =  P6^2;
u8 xdata Byte[4];
u8 xdata Byte_cache[4];

void Delay_ms(u16 l)                //@30.000MHz 1ms
{
        unsigned char i, j;
        u16 h;
        for(h=0;h<l;h++)
        {
                _nop_();
                i = 32;
                j = 40;
                do
                {
                        while (--j);
                } while (--i);
        }

}
void HC595_Init()
{
        SDI =  0;
        CLK =  0;
        LE  =  0;
}

void HC595_Write_Data(u16 op)
{
        u16 i,k;
        for(i=0;i<8;i++)
        {
                CLK=0;
                SDI=op&0x80;
                CLK=1;
                op<<=1;
        }
       
}
/*0000 0000 0001 */
void main()
{
        u8 ii;
       
        HC595_Init();

        while(1)
        {
               
                Byte[1]=0x00;Byte[2]=0x00;Byte[3]=0x00,Byte[4]=0x01;
                for(ii=0;ii<32;ii++)
                {       

                       
                        if((Byte[1]&0x80)==128){Byte_cache[1]=0x01;} else{Byte_cache[1]=0x00;} //如果字節(jié)高位等于1那么字節(jié)緩存等于1
                        Byte[1]=Byte[1]+Byte_cache[2];                                                                //下一個(gè)字節(jié)加上上一個(gè)字節(jié)的緩存
                       
                        if((Byte[2]&0x80)==128){Byte_cache[2]=0x01;} else{Byte_cache[2]=0x00;}
                        Byte[2]=Byte[2]+Byte_cache[3];
                       
                        if((Byte[3]&0x80)==128){Byte_cache[3]=0x01;} else{Byte_cache[3]=0x00;}
                        Byte[3]=Byte[3]+Byte_cache[4];
                       
                       
                       
                        HC595_Write_Data(Byte[1]);       
                        HC595_Write_Data(Byte[2]);
                        HC595_Write_Data(Byte[3]);
                        HC595_Write_Data(Byte[4]);

                        LE =1;
                        _nop_();
                        LE =0;

                        Delay_ms(100);

                        Byte[1]<<=1;
                        Byte[2]<<=1;
                        Byte[3]<<=1;
                        Byte[4]<<=1;
                }       
        }       
}

這組代碼可以實(shí)現(xiàn)字節(jié)的按位推擠這是組測試代碼跑的流水燈剛好達(dá)到了的目的左移,稍加修改放進(jìn)點(diǎn)陣移屏代碼也就實(shí)現(xiàn)了左移了,但是代碼中可以看到我給了每一個(gè)字節(jié)都加了字節(jié)緩存位有沒有什么辦法去掉這些緩存位,畢竟32x32的點(diǎn)陣后續(xù)還要級(jí)聯(lián)那么xdata屬實(shí)有點(diǎn)太大了一塊屏加上字節(jié)緩存就是256字節(jié)每加一塊就會(huì)翻倍,雖然主控是stc8h8k容量完全夠了,或者有大佬知道其他逐行掃描左移代碼執(zhí)行效率高的方法。謝謝各位了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2022-12-18 13:41 | 只看該作者
不用緩存
Byte[1]=ZiMo[0+i*128+j*4]<<x | ZiMo[1+i*128+j*4]>>(7-x);
Byte[2]=ZiMo[1+i*128+j*4]<<x | ZiMo[2+i*128+j*4]>>(7-x);
Byte[3]=ZiMo[2+i*128+j*4]<<x | ZiMo[3+i*128+j*4]>>(7-x);
Byte[4]=ZiMo[3+i*128+j*4]<<x | ZiMo[4+i*128+j*4]>>(7-x);
ZiMo是字模數(shù)組
i是第幾個(gè)字(一個(gè)字是4char x 32 =128)
j是第幾行
x是位移
回復(fù)

使用道具 舉報(bào)

板凳
ID:824490 發(fā)表于 2022-12-18 16:13 | 只看該作者
同樣的道理,把你之前的“字節(jié)”頂改為“位”頂就可以了。
以下是6個(gè)點(diǎn)陣塊(48*8)的移列操作,你參考 一下。
u8 i;
     for(i=0;i<8;i++) //8行,6個(gè)點(diǎn)陣塊
     {
          dis_buf[i+40]<<=1; if(dis_buf[i+32]&0x80) dis_buf[i+40]|=0x01;//         第六個(gè)點(diǎn)陣塊
          dis_buf[i+32]<<=1; if(dis_buf[i+24]&0x80) dis_buf[i+32]|=0x01;//         第五個(gè)點(diǎn)陣塊
          dis_buf[i+24]<<=1; if(dis_buf[i+16]&0x80) dis_buf[i+24]|=0x01;//         第四個(gè)點(diǎn)陣塊
          dis_buf[i+16]<<=1; if(dis_buf[i+8]&0x80) dis_buf[i+16]|=0x01;//         第三個(gè)點(diǎn)陣塊
          dis_buf[i+8]<<=1;  if(dis_buf[i]&0x80) dis_buf[i+8]|=0x01;//         第二個(gè)點(diǎn)陣塊
          dis_buf[i]<<=1; //         第一個(gè)點(diǎn)陣塊
    }
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久国产精品 | 成人在线观看中文字幕 | 伦理片97 | 欧美日日 | 欧美日韩一二三区 | 99热首页 | 一级aaaaaa毛片免费同男同女 | 欧美精品在线观看 | av一级久久| 国产精品美女久久久 | 欧美激情 亚洲 | 91精品在线播放 | 免费黄色a视频 | 国产成人精品av | 九色porny自拍视频 | aa级毛片毛片免费观看久 | 毛片区 | 日韩精品在线看 | 狠狠操狠狠干 | 亚洲九色 | 91视频在线看 | 九九综合九九 | 久久精品com | 午夜丁香视频在线观看 | 欧美精品在线免费 | 精品一区二区免费视频 | 精品一区二区在线视频 | 久久久久久久av麻豆果冻 | 日韩综合网 | 91免费福利在线 | 日韩a v在线免费观看 | 一区二区三区在线免费观看 | 午夜精品福利视频 | 国产在线区 | 欧美日韩免费一区二区三区 | 日韩免费| 久久久激情视频 | 黄色免费av | 日本一区二区三区精品视频 | 91麻豆产精品久久久久久夏晴子 | 日韩二三区 |