求高手帮我解决一个5个16x16LED点阵的问题?主要是后面四排不对

这是代码
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit STTP=P2^7;
void delay(uint c); //延时函数
void out_rxd(uchar *d); //汉字输出
unsigned char code led[32][32]={
0x08,0x20,0x06,0x20,0x40,0x3E,0x30,0xC0,0x03,0x04,0x20,0x04,0x20,0x04,0x20,0x04,
0x20,0x04,0x3F,0xFC,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0x00,0x00,/*"江",0*/

0x20,0x00,0x22,0x08,0x22,0x71,0x22,0x02,0xFA,0x04,0x22,0x18,0x2F,0xE0,0x22,0x00,
0x22,0x02,0x22,0x01,0xFA,0x02,0x23,0xFC,0x20,0x00,0x20,0x80,0x20,0x70,0x00,0x00,/*"苏",1*/

0x08,0x20,0x06,0x20,0x40,0x3E,0x30,0xC0,0x03,0x00,0x08,0x80,0x10,0xB8,0xEF,0xC8,
0x28,0x88,0x2A,0xAA,0x29,0x99,0x28,0x8A,0x2F,0xFC,0x20,0x88,0x00,0x80,0x00,0x00,/*"海",2*/

0x00,0x00,0x7F,0xFF,0x44,0x20,0x5A,0x10,0x61,0xE0,0x08,0x01,0x30,0x82,0x24,0x8C,
0x24,0xF0,0xA4,0x80,0x64,0x80,0x24,0xFC,0x24,0x82,0x28,0x82,0x30,0x8E,0x00,0x00,/*"院",3*/

0x20,0x08,0x24,0x10,0x22,0x60,0x21,0x80,0x26,0x41,0x39,0x32,0x02,0x04,0x0C,0x18,
0xF0,0x60,0x13,0x80,0x10,0x60,0x10,0x18,0x14,0x04,0x18,0x02,0x00,0x01,0x00,0x00,/*"欢",4*/

0x02,0x00,0x02,0x02,0x42,0x04,0x33,0xF8,0x00,0x04,0x00,0x02,0x3F,0xF2,0x20,0x22,
0x40,0x42,0x00,0x02,0x3F,0xFE,0x20,0x42,0x20,0x22,0x3F,0xC2,0x00,0x02,0x00,0x00,/*"迎",5*/

0x04,0x02,0x08,0x0C,0x10,0x00,0x3F,0xEE,0xC4,0x01,0x08,0x81,0x11,0x11,0xE6,0x4D,
0x20,0x21,0x2F,0xC1,0x20,0x01,0x24,0x07,0x2A,0x00,0x31,0x88,0x00,0x06,0x00,0x00,/*"您",6*/

0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",7*/
};
void main()
{
uchar i,j,k; //i:每个字的显示循环;j每个字的显示码除以2;k每列刷新次数
uint b=0; //显示偏移控制,char类型最多只能显示14个汉字+一个空白位字符
uchar a; //控制移动间隔时间
SCON=0x00;
while(1)
{
j=0;
if(a>1) //移动间隔时间;取值0--255
{
a=0;
b+=2;
if(b>=8*32)//显示到最后一个字,回头显示,判断值=字数*32
{
b=0;
}
}
for(i=0;i<16;i++)
{
P1=i;
for(k=0;k<1;k++)
{
STTP=0;
out_rxd(&led[5][j+b+1]);
out_rxd(&led[5][j+b]);
out_rxd(&led[4][j+b+1]);
out_rxd(&led[4][j+b]);
out_rxd(&led[3][j+b+1]);//注意:如果led[][]的第二个下标超过32责会直接读下一个数组的值
out_rxd(&led[3][j+b]);
out_rxd(&led[2][j+b+1]);
out_rxd(&led[2][j+b]);
out_rxd(&led[1][j+b+1]);
out_rxd(&led[1][j+b]);
out_rxd(&led[0][j+b+1]);
out_rxd(&led[0][j+b]);
STTP=1; //ST产生一个上升沿将一组数据送出
delay(15);
}
j=j+2;
}
a++;
}
}
void delay(uint c)
{
int i,j;
for(i=0;i<c;i++)
for(j=0;j<10;j++);
}
void out_rxd(uchar *d)
{
SBUF=*d; //启动串行口传送
while(TI==0); //等待串口传送结束
TI=0; //将串口中断标志位置0
}

第1个回答  2010-12-15
试一下把
uchar a; //控制移动间隔时间
中的a赋一个初值.
如果不赋,a中是随机数.

求高手帮我解决一个5个16x16LED点阵的问题?主要是后面四排不对
uchar a; \/\/控制移动间隔时间 中的a赋一个初值.如果不赋,a中是随机数.

大家帮我看一下程序哪里有问题,16x16点阵,字符总是闪烁
原因可能是你while循环的时间太小了 很短的时间就运行了一次 你可以在while循环里的最后面加一个比较长的延时试下

在protues中做16x16点阵试验时仿真中的一些错误。求助,帮忙解决这个...
程序写的有点乱,你的程序既然可以黑屏,也可以显示字符,说明你在移动的这部分程序有点问题,你自己在好好修改看,最好采用断点检测,不要直接就全部输出

点阵是什么?16乘16字库中储存一个汉字要多少个字节?
一个字节是8位,一个汉字编码两个字节是十六位。16x16点阵是汉字字模,长宽各16位,所以是256点,存储需要32个字节。汉字点阵越大,如24x24,48x48,占用的存储字节越大,这可以从不同汉字点阵文件的大小看出来。

求一LED点阵书写显示屏。16x16的,仿真图加c51源程序,原理图,谢谢...
以下是以前写的一个程序,希望能帮到你,有问题交流下的 include <atmel\\regx52.h> define int8 unsigned char define int16 unsigned int define int32 unsigned long define CTRL_PORT P2 define DATA_PORT P0 define ADDR_PORT P1 int8 flag;int8 n;int8 zzz;int8 yyy;int8 code ...

存储一个16×16点阵汉字,需要 字节存储空间?怎么算的?●_●
字节8bit即表示8点16×16汉字点阵共256所换算字节32 16X16÷8=32 点阵LED用位表示(单色情况)8位即字节 16×16点阵说要16×2(×8)字节说字32字节 需要32字节存储空间。使用符合GB2312标准的16×16点阵字库,存储每个汉字需要32字节(16*16\/8=32字节)。HZK16中的一个汉字的偏移地址计算公式(...

一个16X16点阵的汉字字模需要多少个字节表示?谁能告诉我这道题目该...
16*16\/8=32

跪求16X16LED点阵汉字显示的原理图,s51单片机汇编源程序,汉字字摸提取...
1、一片AT89S51单片机2、由4个8*8点阵LED模块组成一个16X16点阵LED3、4个按键开关(功能预留)4、一个REST手动复位按键 注意:本电路板耗电较大,正常工作时LM7805稳压器比较烫手,有条件的客户可以加装散热器或者直接用5V\/1A开关电源供电(跳过7805稳压器) 工作原理分析: 从理论上说,不论显示图形还是文字,只要控制与...

想做一个16x16点阵,仿真时行驱动用的138 列驱动用的595
用154,138管脚不够,仿真时,可以不用放大器

先谢谢各位老师了,我想要做一个16X16LED的点阵,是用51单片机的,希望能...
51单片机就是0和1的问题,为了更容易进步请先做8*8的点阵,具体怎么做很简单,就是看你有没有心情去想

相似回答
大家正在搜