找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4028|回复: 6
收起左侧

16*16左移点阵怎么把列扫描换成行扫描

[复制链接]
ID:132987 发表于 2016-7-21 16:10 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<74HC595.h>
#define uchar unsigned char
#define uint unsigned int
#define h sizeof(table_H)
//列扫描数组
uchar code table_L[]={0xff,0x7f, 0xff,0xbf, 0xff,0xdf, 0xff,0xef, 0xff,0xf7, 0xff,0xfb, 0xff,0xfd, 0xff,0xfe,
                                          0x7f,0xff, 0xbf,0xff, 0xdf,0xff, 0xef,0xff, 0xf7,0xff, 0xfb,0xff, 0xfd,0xff, 0xfe,0xff};


//字模数组
uchar code table_H[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//uchar code table_H[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
                            // 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00,
0x04,0x28,0x08,0x24,0x32,0x22,0xC2,0x21,0xC2,0x26,0x34,0x38,0x04,0x04,0x08,0x18,0x30,0xF0,0xC0,0x17,0x60,0x10,0x18,0x10,0x0C,0x14,0x06,0x18,0x04,0x10,0x00,0x00,
0x02,0x02,0x04,0x82,0xF8,0x73,0x04,0x20,0x02,0x00,0xE2,0x3F,0x42,0x20,0x82,0x40,0x02,0x40,0xFA,0x3F,0x02,0x20,0x42,0x20,0x22,0x20,0xC2,0x3F,0x02,0x00,0x00,0x00,
0x00,0x01,0x04,0x02,0x1C,0x0C,0xC0,0x3F,
0x1C,0xC0,0x02,0x09,0x02,0x16,0x92,0x60,
0x4A,0x20,0x82,0x2F,0x02,0x20,0x0E,0x24,
0x00,0x22,0x90,0x31,0x0C,0x20,0x00,0x00,/*"您",2*/

0x00,0x00,0x0E,0xFC,0xEA,0x08,0xAA,0x08,
0xAA,0xE8,0xAA,0xA8,0xAC,0xA8,0xAA,0xA8,
0xAA,0xA8,0xAA,0xA8,0xEA,0xE8,0xAA,0xA8,
0x0C,0x08,0x08,0x08,0x08,0x28,0x08,0x10,

0x04,0x80,0x0E,0xA0,0x78,0x90,0x08,0x90,0x08,0x84,0xFF,0xFE,0x08,0x80,0x08,0x90,
0x0A,0x90,0x0C,0x60,0x18,0x40,0x68,0xA0,0x09,0x20,0x0A,0x14,0x28,0x14,0x10,0x0C,         

};
uchar L=0,H=0;
uint t=0,x=0;                                                                                                                                                                     

void main()
{
//        extern uint h;
        EA=1;
        ET0=1;
        TMOD=0x01;
        TH0=(65536-1000)/256;//1ms进一次中断刷新显示一列
        TL0=(65536-1000)%256;
        TR0=1;
//        h=sizeof(table_H);
        while(1)
        {
                if(L==32)
                {
                        L=0;
                        H=0;
                }
               
        }

}
void T0_time() interrupt 1
{
        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        Input(table_L[L]);
        Input(table_L[L+1]);
        Input(table_H[H+x]);
        Input(table_H[H+x+1]);
       
        Output();
    L=L+2;
        if(L==32)L=0;
        H=H+2;
        if(H==32)H=0;

        t++;
        if(t==100)//移动
        {
                t=0;
                x=x+2;
                if(x>=h-32)x=0;
        }
}

回复

使用道具 举报

ID:7485 发表于 2016-7-21 20:30 | 显示全部楼层
本帖最后由 ahshmj 于 2016-7-21 20:33 编辑

每次输出8个点,是列。
应该是硬件决定的,没法换。
如果你的16*16点阵可以转90度用,程序应该可以。但左移就困难了,也不是做不到。
回复

使用道具 举报

ID:132987 发表于 2016-7-22 09:27 | 显示全部楼层
我用的这个开发板电路图

EM3_V3.0 开发板原理图1.pdf

1.39 MB, 下载次数: 7, 下载积分: 黑币 -5

回复

使用道具 举报

ID:132987 发表于 2016-7-22 09:28 | 显示全部楼层
ahshmj 发表于 2016-7-21 20:30
每次输出8个点,是列。
应该是硬件决定的,没法换。
如果你的16*16点阵可以转90度用,程序应该可以。但左 ...

您看下我发的电路图,在下边的回复里。谢谢
回复

使用道具 举报

ID:132987 发表于 2016-7-22 09:29 | 显示全部楼层
ahshmj 发表于 2016-7-21 20:30
每次输出8个点,是列。
应该是硬件决定的,没法换。
如果你的16*16点阵可以转90度用,程序应该可以。但左 ...

您看下下边回复的电路图
回复

使用道具 举报

ID:132987 发表于 2016-7-22 09:30 | 显示全部楼层
苏鹏飞 发表于 2016-7-22 09:29
您看下下边回复的电路图

能不能改变啊?  谢谢指导
回复

使用道具 举报

ID:132987 发表于 2016-7-22 09:31 | 显示全部楼层
苏鹏飞 发表于 2016-7-22 09:29
您看下下边回复的电路图

能不能改变啊?谢谢指导
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表