汉字LED点阵显示程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

efan 23:04:26

有对汉字LED点阵显示熟悉的朋友吗?

要下雨了23:04:51

什么问题

typhoon 23:04:54

efan 23:05:11

有段程序看不太懂

efan 23:05:26

#include

#define int8 unsigned char

#define int16 unsigned int

#define int32 unsigned long

int8 flag;

int8 n;

int8 code table[][32]={

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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},/*"欢",0*/

{0x02,0x02,0x04,0x82,0xF8,0x73,0x04,0x20,0x02,0x00,0xE2,0x3F,0x42,0x20,0x82,0x40,0x02,0 x40,0xFA,

0x3F,0x02,0x20,0x42,0x20,0x22,0x20,0xC2,0x3F,0x02,0x00,0x00,0x00},/*"迎",1*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}/*

" " */

};

void delay(void);

int16 offset;

void main(void)

{

int8 i;

int8 *p;

flag=0x10;

n=0;

TMOD=0x01;

TH0=0xb1;

TL0=0xe0;

ET0=1;

EA=1;

TR0=1;

p=&table[0][0];

while (1)

{

for (i=0;i<8;i++) //显示左半边屏幕

{

P0=*(p+offset+2*i);

P2=i|0x08; //P2.4=0,P2.3=1 选中U2, 输出扫描码给U6

delay();

P0=*(p+offset+2*i+1);

P2=i|0x10; //P2.4=1,P2.3=0 选中U3, 输出扫描码给U7

delay();

}

for (i=8;i<16;i++) //显示右半边屏幕

{

P0=*(p+offset+2*i);

P2=(i-8)|0x20; //P2.5=1 P2.4=0, P2.3=0 选中U4,输出扫描码U8

delay();

P0=*(p+offset+2*i+1);

P2=(i-8)|0x40; //P2.6=1 P2.5=0, P2.4=0 选中U5,输出扫描码U9

delay();

}

}

}

void delay(void)

{

int16 i;

for (i=0;i<50;i++)

;

}

void timer0() interrupt 1 using 3

{

TF0=0;

TH0=0xb1;

TL0=0xe0;

if (n<10)

{

n++;

}

else

{

offset+=2;

if (offset>1100)

offset=0;

n=0;

}

}

efan 23:05:57

程序有两个地方不太明白

1. P0=*(p+offset+2*i);

为什么要乘以2,原理是什么?

2.void timer0() interrupt 1 using 3

这个中断是为了产生offset的原理是什么,为什么能实现汉字的移动显示(从右至左) efan 23:07:31

这段程序实现汉字从左到右滚动显示

╄→狂人╰☆23:07:38

1 16*16的点阵

2 每扫一次偏移地址加2

efan(6939780) 23:08:35

能具体一点吗?

efan(6939780) 23:09:22

1。里面还加了个offset, 为什么能实现跑马显示

╄→狂人╰☆(63637313) 23:09:23

每行16个led,当然要用2个字节,这个明白吧

efan(6939780) 23:09:38

这个懂了

╄→狂人╰☆(63637313) 23:10:33

中断一次,数据整体下移一行,有问题吗?

efan(6939780) 23:10:51

我想想。。。

相关文档
最新文档