微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 16X16点阵横向扫描是如何实现左移的?

16X16点阵横向扫描是如何实现左移的?

时间:10-02 整理:3721RD 点击:
下面是一个静态现实的,,如何改为左移?附有图片#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit SH_CP = P3^0;
sbit DS = P3^1;
sbit ST_CP = P3^2;
uchar temp;
uchar code hang[]={
       
/*-- 好  --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x10,0x00,0x10,0xFC,0x10,0x04,0x10,0x08,0xFC,0x10,0x24,0x20,0x24,0x20,0x25,0xFE,
0x24,0x20,0x48,0x20,0x28,0x20,0x10,0x20,0x28,0x20,0x44,0x20,0x84,0xA0,0x00,0x40,
/*-- 好--*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x10,0x00,0x10,0xFC,0x10,0x04,0x10,0x08,0xFC,0x10,0x24,0x20,0x24,0x20,0x25,0xFE,
0x24,0x20,0x48,0x20,0x28,0x20,0x10,0x20,0x28,0x20,0x44,0x20,0x84,0xA0,0x00,0x40,
/*--  学 --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
/*--  习  --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x00,0x00,0x7F,0xF8,0x00,0x08,0x00,0x08,0x08,0x08,0x04,0x08,0x02,0x08,0x02,0x08,
0x00,0x68,0x01,0x88,0x0E,0x08,0x70,0x08,0x20,0x08,0x00,0x08,0x00,0x50,0x00,0x20,
/*--  天 --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,
/*-- 天  --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,
/*--  向 --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x02,0x00,0x04,0x00,0x08,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x47,0xC4,0x44,0x44,
0x44,0x44,0x44,0x44,0x44,0x44,0x47,0xC4,0x44,0x44,0x40,0x04,0x40,0x14,0x40,0x08,
/*--  上 --*/
/*--  Trebuchet MS12;  ?:?x?=16x16   --*/
0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF8,0x02,0x00,
0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xFE,0x00,0x00,
};
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void In_595()
{
        uchar i;
        for(i=0;i<8;i++)
        {
                 temp <<= 1;
                DS   = CY;
                SH_CP = 1;
                _nop_();
                _nop_();
                SH_CP = 0;
        }
}
void out_595()
{
        ST_CP = 0;
        _nop_();
        ST_CP = 1;
        _nop_();
        ST_CP = 0;
}
void out_5951()
{
        ST_CP = 0;
        _nop_();
        ST_CP = 0;
        _nop_();
        ST_CP = 0;
}
void main()
{
        uint i;
        while(1)
        {
                for(i=0;i<16;i++)
                        {
                                P2 = (P2+1)%16;
                                temp = hang[i*2];
                                In_595();
                                temp = hang[i*2+1];
                                In_595();
                                out_595();
                                delay(1);
                        }
        }
}


如果能有个显示缓冲区就好了,直接用算法移位

动态扫描,算法位移。

怎么个移位法? 求指教

怎么个算法移位? 求指教

位选++就好了。

具体程序

好东西支持!学习学习!小编给力!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top