16*64点阵该如何实现左移,

2020-02-04 09:22发布

两个138做的行选,595做的列线,现在我只能向上滚动,请问一下该如何实现左移,麻烦高手赐教一下思路或者程序,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
qilujie
1楼-- · 2020-02-05 11:06
1楼4楼人才
xxqxiao
2楼-- · 2020-02-05 12:24
给你个8*8的这是左移的思路!定义一个要显示的数组:例如a[]={};将a[0]的元素赋值给a[7];a[1]的赋值给a[0];a[2]的赋值给a[1];a[3]的赋值给a[2];一次类推!反过来右移动的是将a[0]的赋值给a[1];a[1]的赋值给a[2];a[2]的赋值给a[3]给你个程序看看!
#include <reg52.H>
unsigned char dis[][8]={                                //注:不同的硬件电路,字模也不一样                               
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//黑屏
{0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x3C},//0
{0x18,0x1C,0x18,0x18,0x18,0x18,0x18,0x3C},//1
{0x1C,0x3E,0x36,0x30,0x18,0x0C,0x3E,0x3E},//2
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//黑屏
};

unsigned char ROW[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};        //选通行

void delay(unsigned int time)
{
while(time>0)
        time--;
}

main()
{       
        unsigned char x=0,speed,j,k,n=0;
        speed=5;//修改这里可以改变移动速度;值越大越慢
        while(1){
                for(k=0;k<speed;k++){
                        for(j=0;j<8;j++){
                                P2=~((dis[n][j]>>x)|(dis[n+1][j]<<(8-x)));//实现移动主要是这句话
                                P0=ROW[j];
                                delay(300);
                        }
                }
                x++;
                if(x==8){
                        x=0;       
                        n++;
                        if(n>3)
                                n=0;
                }         
        }
}
hepday
3楼-- · 2020-02-05 14:05
 精彩回答 2  元偷偷看……
format
4楼-- · 2020-02-05 15:19
我以前搞的

不知道能不能帮上忙

点击此处下载 ourdev_639793SBYWBZ.rar(文件大小:809K) (原文件名:16乘64点阵01.rar)
wg2700209
5楼-- · 2020-02-05 17:10
以前在网上找的左移还有上移的16_64程序,行用的154,列也是595
点击此处下载 ourdev_639839P48CH5.rar(文件大小:45K) (原文件名:16_64点阵程序.rar)
woshigeshuai
6楼-- · 2020-02-05 22:20
你想想,595送列数据,,列数据发送完毕,,这时候,我给595多移一位,再点亮会是什么结果?

多移俩位呢? 反之,给595少送一位或俩位,或三位数据,字会怎么显示?

一周热门 更多>