16x16 LED点阵实验Word文件下载.docx

上传人:b****3 文档编号:7817992 上传时间:2023-05-09 格式:DOCX 页数:16 大小:590.34KB
下载 相关 举报
16x16 LED点阵实验Word文件下载.docx_第1页
第1页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第2页
第2页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第3页
第3页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第4页
第4页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第5页
第5页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第6页
第6页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第7页
第7页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第8页
第8页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第9页
第9页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第10页
第10页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第11页
第11页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第12页
第12页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第13页
第13页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第14页
第14页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第15页
第15页 / 共16页
16x16 LED点阵实验Word文件下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

16x16 LED点阵实验Word文件下载.docx

《16x16 LED点阵实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《16x16 LED点阵实验Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。

16x16 LED点阵实验Word文件下载.docx

74HC595:

LD-QA~LD-QP:

点阵行控制信号

LD-1~LD-16:

点阵列控制信号

SER(14脚):

串行数据输入端

-SCLR(10脚):

低电平时将移位寄存器的数据清零。

通常将它接Vcc。

SCK(11脚):

上升沿时将串行数据移入移位寄存器。

RCK(12脚):

上升沿时移位寄存器的数据锁存入数据寄存器。

-G(13脚):

高电平时禁止输出(高阻态)

时序图:

实验内容:

在16×

16LED点阵上分别用静态方式和滚屏方式显示自己的姓(行扫描)。

实验步骤:

使用导线将A2区的P10~P14与C3区的L_DAT_H、L_DAT_L、L_CLK、L_OE、L_STR

 

实验设计:

电路图:

(修改后加上了74HC595输出端口与LED点阵相连的端口名称)

1、静态方式:

流程图:

代码及注释:

HLEQU70H;

行信号低位内存地址

LLEQU72H;

列信号低位内存地址

HDEQUP1.0;

p1.0口连行信号输入端

LDEQUP1.1;

P1.1口连列信号输入端

SCKEQUP1.2;

P1.2口连移位寄存器

OEEQUP1.3;

P1.3口连使能端

RCKEQUP1.4;

P1.4口连锁存器

ORG8000H;

硬件仿真程序

LJMPMAIN

ORG8100H;

MAIN:

MOVDPTR,#DISPLAY;

字模表地址

MOVR1,#00H;

字模表起始地址偏移量

MOVHL,#01H;

行扫描信号的初值0001H

MOVHL+1,#00H

LOOP:

MOVA,R1

MOVCA,@A+DPTR

MOVLL,A;

找到列低位数据,存入内存地址中

INCR1

MOVLL+1,A;

找到列高位数据,存入内存地址中

LCALLSENDD;

调用传输数据的程序

LCALLDELAY;

调用延时程序

CLRC;

位处理累加器清零

MOVA,HL

RLCA;

左移行扫描信号低8位

MOVHL,A

MOVA,HL+1

左移行扫描信号高8位

MOVHL+1,A

CJNER1,#20H,LOOP;

判断一轮扫描是否结束

LJMPMAIN

SENDD:

CLROE;

使能信号低电平有效

CLRRCK;

RCK信号置0

MOVR2,#08H

MOVR3,LL+1;

列信号高八位地址

MOVR4,HL+1;

行信号高八位地址

BACK:

CLRSCK;

SCK信号置0

MOVA,R3

RLCA

MOVR3,A

MOVLD,C;

列信号逐位传输

MOVA,R4

MOVR4,A

MOVHD,C;

行信号逐位传输

SETBSCK;

SCK信号上升沿到来,将串行数据移入移位寄存器

DJNZR2,BACK;

判断高8位信号是否传输完毕

MOVR3,LL;

列信号低8位地址

MOVR4,HL;

行信号低8位地址

BACK1:

DJNZR2,BACK1;

判断低8位信号是否传输完毕

SETBRCK;

RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器

RET

DELAY:

;

延时子程序

MOVR7,#50

DELAY1:

MOVR6,#10

DELAY2:

DJNZR6,$

DJNZR7,DELAY1

DISPLAY:

DB0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;

DB0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;

"

张"

END

2、滚屏方式

HLEQU70H;

LLEQU72H;

SCKEQUP1.2;

OEEQUP1.3;

RCKEQUP1.4;

LJMPMAIN

MOVR1,#00H

MOVR7,#00H;

R7用来表示字模表起始位置偏移量

MOVR5,#20;

R5用来表示延时,改变R5的值可改变滚屏速度

LOOP1:

MOVR6,#10H;

R6用来判断是否扫描完一轮

MOVA,R7;

将R7的值赋值给R1

MOVR1,A

MOVHL,#01H;

LOOP2:

MOVCA,@A+DPTR

左移行扫描信号低八位

MOVHL,A

左移行扫描信号高八位

DECR6

CJNER6,#00H,LOOP2;

通过R6判断是否扫描完一轮,R6减为0,一轮扫描结束

DJNZR5,LOOP1;

通过R5判断一帧的延时是否达到

INCR7;

改变字模表的偏移量

R7连续加2,相当于换行

CJNER7,#40H,LOOP;

判断字模表是否结束

列信号高8位地址

行信号高8位地址

SCK信号置0

判断高八位信号是否传输完毕

MOVR2,#08H

列信号低八位地址

行信号低八位地址

判断低八位信号是否传输完毕

MOVR2,#50

MOVR3,#10

DJNZR3,$

DJNZR2,DELAY1

DB0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

DB0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;

预留空白

实验结果与分析:

1、程序正确运行后,可看到16x16LED点阵显示屏上显示“张”,LED灯的亮暗程度有些不均匀。

2、程序正确运行后,可看到16x16LED点阵显示屏上“张”滚动显示,方向由下至上,两个“张”字的显示间一段黑屏。

生成字模的设置为阳码,逐行式,逆向提取,十六进制。

刚开始做实验时,显示屏上显示的“张”字是暗的,而其余部分为亮。

因为最初用字模生成软件生成字模时选用的是阴码,故显示出的亮暗正好相反。

后将其改成了阳码,使所需显示的字点亮,而其余部分为暗。

由于实验中采用的是行扫描,字模生成时选择逐行式,每次扫描时将这一行置为高电平。

用于LED点阵每行的驱动能力有限,所以当某一行要点亮的LED灯的数量较多时,这一行点亮的LED灯的亮度会较暗;

反之,某一行要点亮的LED灯的数量较少时,被点亮的LED灯的亮度就会较亮。

因此,显示屏上显示的字的亮度会不均匀,且某些笔画较简单的字亮度的差别更为明显,而一些笔画较复杂的字亮度虽然差别不是特别大但整体显示较暗。

为使LED灯显示的亮度更均匀,需针对每行不同的情况外加驱动能力不同的驱动电路。

生成字模时选用逆向提取,故从第一行开始从左向右每取8个点作为一个字节,如果最后不足8个点就补满8位。

取模顺序为从低到高,即第一个点作为最低位。

如第一行第一列的点亮,则该点字模取为00000001。

实验中在实现静态显示时,行信号是用程序产生的,列信号则是通过字模提取软件自动生成的。

设置行信号的初值为0001H,每扫描完一行后,将其左移一位,扫描下一行。

当扫描到某一行时,将该行行信号的低位和高位分别存入两个内存地址70H和71H中,同时将列信号的低位和高位也存入两个内存地址72H和73H中。

然后调用传输数据的程序,将行列信号移入锁存移位寄存器中。

将使能端置0,开启锁存移位寄存器,将锁存信号RCK和移位信号SCK也置0,先将行列信号的高八位进行左移,左移一位后将SCK信号置1,产生上升沿,此时将信号移入移位寄存器;

当高八位信号都左移后再将行列信号的低八位进行左移,也在SCK信号上升沿到来时将其移入移位寄存器。

当行和列的16位信号都左移一次,即将这一行的扫描信号都存入移位寄存器中后,再将RCK信号置1,产生上升沿,此时将信号锁存进锁存器中。

而后调用一个延时程序,即每一行信号扫描完后经过一定的延时再进行下一行信号的扫描。

在实验中设置延时约为500us,若延时过短,显示时灯可能会有闪烁;

若延时过长,视觉上可能会觉得字的显示是一行一行的,而不是将字完整的显示出来。

扫描完一行后,只需将行信号左移一位,并将字模表的地址偏移量加1,即可进行下一行的扫描。

故可用字模表地址偏移量的累加次数来判断是否扫描完所有的行。

因为字模的高位和低位存在两个不同的内存地址中,从低位到高位的转换中,偏移地址也要加1,因此当地址偏移量为20H时,所有行的一轮扫描结束。

此时,再从头开始扫描,行信号从0001H开始,列信号从字模表首地址开始。

在滚屏显示中,单帧的扫描原理和静态扫描的时候是一样的。

但当扫描下一帧时,行信号还是左移一位,而列信号扫描完一帧后的首地址不再是字模表的首地址,而要将偏移地址加2,对显示信号进行换行。

即下一帧扫描的第一行相当于上一帧扫描的第二行,由此实现字向上滚动。

在滚屏时,除了每一行信号有延时外,每一帧也需要延时,这个延时用来控制滚屏的速度。

这个延时也是通过软件定时来完成的,即通过改变循环的次数来改变延时。

增加循环次数可以降低滚屏速度。

不过在实验中改变循环次数,速度的改变并不是很明显。

在实验中,我在字模表的前加入了预先留白,即在要显示的字的字模表前插入32字节的0FFH,用来表示黑屏。

这样滚屏的时候就不会字连着字,而是两个字显示的中间会有一段黑屏。

但需注意的是,加入黑屏后,判断所有帧是否扫描结束的参数也需做相应的改变。

因为插入了32个字节,所以用来判断字模表扫描是否结束的地址偏移量R7的累加次数应改为40H。

因为实验中使用的是行扫描,所以纵向滚屏会较容易实现。

这是因为在行扫描中列信号字模表可以以字节为单位进行移动;

若要实现横向扫描则需要以每个位为单位进行移动,实现的代码会复杂许多。

反之,若扫描方式为列扫描,则横向滚屏是以字节为单位进行移动,较容易实现。

这也是我在实验中用纵向滚屏的原因。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2