微机接口实验16x16点阵显示Word格式文档下载.docx

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

微机接口实验16x16点阵显示Word格式文档下载.docx

《微机接口实验16x16点阵显示Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机接口实验16x16点阵显示Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。

微机接口实验16x16点阵显示Word格式文档下载.docx

•RCK(12脚):

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

•-G(13脚):

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

实验内容:

在16×

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

两个实验部分的电原理图是相同的,如下所示:

静态方式:

流程图:

程序代码:

L_DAT_HBITP1.0

L_DAT_LBITP1.1

L_STRBITP1.2

L_CLKBITP1.3

L_OEBITP1.4

ROWHEQU40H;

字模信号(顺向取膜,高位在前)

ROWLEQU41H

SELHEQU42H;

行扫描信号

SELLEQU43H

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVR1,#01H;

配合字模信号

MOVR2,#01H;

高字节在后,故从01开始

MOVR3,#10H;

循环16次

LOAD:

MOVDPTR,#SEL_DATA;

存储行扫描信号

MOVA,R1

MOVCA,@A+DPTR

MOVSELH,A;

存储高字节

DECR1;

R1-1,指向低字节

MOVSELL,A;

存储低字节

INCR1

INCR1

INCR1;

指向下一个高字节

MOVDPTR,#ROW_DATA;

存储字模数据,过程同上

MOVA,R2

MOVROWH,A

DECR2

MOVCA,@A+DPTR

MOVROWL,A

INCR2

LCALLLATCH;

运行锁存自程序

LCALLDELAY;

延时

DJNZR3,LOAD;

重复执行16次,显示所有行

LJMPMAIN;

静态显示

LATCH:

CLRL_OE;

允许输出

CLRL_STR;

为上升沿将移位寄存器数据锁存入数据寄存器

MOVR4,SELH;

做准备

MOVR5,ROWH;

高位行扫描型号和字模信号

MOVR6,#08H;

高低位分开读,每次读8位

LATCH1:

CLRL_CLK;

为上升沿读入移位寄存器做准备

MOVA,R4

RRCA;

移出最高位

MOVR4,A

MOVL_DAT_H,C;

由P1.0输出准备进入移位寄存器

MOVA,R5

RRCA

MOVR5,A

MOVL_DAT_L,C;

由P1.1输出准备进入移位寄存器

SETBL_CLK;

CLK上升沿,P1.0和P1.1数据进入移位寄存器

DJNZR6,LATCH1

;

MOVR4,SELL

MOVR5,ROWL

MOVR6,#08H

LATCH2:

;

同上

CLRL_CLK

MOVL_DAT_H,C

MOVL_DAT_L,C

SETBL_CLK

DJNZR6,LATCH2

SETBL_STR;

STR上升沿移位寄存器数据所存入数据寄存器

显示

RET

DELAY:

延迟程序

MOVR6,#02H

LOOP1:

MOVR7,#0F8H;

估算:

1us*2*(1+2*248+2)=998us≈1ms

LOOP2:

DJNZR7,LOOP2

DJNZR6,LOOP1

SEL_DATA:

;

SELECTROW

DB80H,00H

DB40H,00H

DB20H,00H

DB10H,00H

DB08H,00H

DB04H,00H

DB02H,00H

DB01H,00H

DB00H,80H

DB00H,40H

DB00H,20H

DB00H,10H

DB00H,08H

DB00H,04H

DB00H,02H

DB00H,01H

ROW_DATA:

DB0FFH,0FFH,80H,03H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0C0H,07H;

DB0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,00H,01H,0FFH,0FFH;

"

王"

0

END

实验效果:

字模效果:

LED显示效果:

滚屏方式:

ROWHEQU40H

SELHEQU42H

WAITEQU44H;

负责控制滚动速度

MOVR0,#01H;

每次重新滚动时初始化

NEXT:

MOVWAIT,#0AH;

滚动速度设置,数字越大滚动越慢

ROLL:

MOVA,R0;

变换显示的第一行以完成滚动

MOVR1,#01H;

行扫描信号不变

MOVR2,A

MOVR3,#10H

MOVSELH,A;

LOADHIGHBYTE

DECR1;

OFSELECTSIGNAL

MOVSELL,A;

LOADLOWBYTE

INCR1;

MOVDPTR,#ROW_DATA

MOVROWH,A

LCALLLATCH

LCALLDELAY

DJNZR3,LOAD

以上与第一部分相同

DJNZWAIT,ROLL;

循环以延时

INCR0

INCR0;

R0指向下一行,以实现滚动

CJNER0,#61H,NEXT;

所有字符显示完毕后开始新的一轮

以下与第一部分相同

CLRL_OE

CLRL_STR

MOVR4,SELH

MOVR5,ROWH

SETBL_STR

MOVR7,#0F8H

DB80H,00H

DB40H,00H

DB20H,00H

DB10H,00H

DB08H,00H

DB04H,00H

DB02H,00H

DB01H,00H

DB00H,80H

DB00H,40H

DB00H,20H

DB00H,10H

DB00H,08H

DB00H,04H

DB00H,02H

DB00H,01H

DB0FFH,0FFH,80H,03H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0C0H,07H;

DB0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,00H,01H,0FFH,0FFH;

DB0F7H,0DFH,0F7H,0DFH,81H,03H,0F7H,0DFH,0E3H,8FH,0D5H,57H,37H,0D9H,0FBH,0FFH;

DB0F8H,0FH,0F7H,0EFH,0EBH,0DFH,0DDH,0BFH,0FEH,7FH,0FDH,0FFH,0F3H,0FFH,8FH,0FFH;

梦"

1

DB0FFH,0FFH,0FCH,01H,03H,0DFH,0EFH,0BFH,0EEH,03H,0DEH,0FBH,0C2H,0FBH,9AH,0DBH;

DB9AH,0DBH,5AH,0DBH,0DAH,0DBH,0DAH,0BBH,0C3H,0AFH,0DBH,77H,0DEH,0FBH,0FDH,0FBH;

硕"

2

;

为了实现无间隙滚动,最后16行与最前十六行设置相同字模数据

END

字模效果:

LED点阵效果:

实验现象与记录:

静态显示:

正确地显示了“王”字,但是很明显地:

每一行的所有点亮的等亮度相同,并且对每一行而言,亮的灯越多,则每盏灯越暗。

如“王”字,每一横的亮度都很低,但三横中夹着的两短竖则很亮。

其中的原理见实验分析部分。

滚屏显示:

实际中采用了竖滚方式,重复“王梦硕”三个字,“硕”字后面紧跟着“王”字,实际实验中的效果与设计是一致的。

同样,也有静态显示中遇到的点阵亮暗不一的问题。

实验分析与改进:

点阵的亮暗不一:

根据点阵的工作原理(见实验原理部分),若要某一个坐标上LED点亮,则要求其所在列为低电平,而其所在行为高电平。

本次试验采用了行扫描模式,当一行有多盏灯被点亮时,每一盏LED并联,都通过同样电流。

因为每一行的得到的驱动电流恒定,点亮的LED越多,通过每一盏LED的电流就越小。

这就解释了为什么某一行中点亮的LED越多,这些LED的亮度就越小。

但是在列扫描中就不存在这种问题,因为同一时刻每一行只有一盏LED被点亮,所有的驱动电流都流经这个LED,故所有点亮的LED都处在亮度最大的状态。

但这也带来了问题:

每盏LED导通时都流过非常大的电流,LED的寿命因此大大减小。

解决点阵亮暗不一问题的两种方案:

方案一:

增加点亮LED数较多行的显示时间

假设一个字符显示完(16行扫描完成)的时间固定,并且每一行的点亮点数相同,则若一行点亮的时间所占比重越大,则这一行看上去亮度相对较大,因为有更充足的时间让LED施放能量;

反之,若一行点亮的时间所占比重越小,则这一行看上去亮度相对较小。

增加某一行的显示时间的最简单方法就是增加其循环次数,以我的程序为例,要增加某一行的点亮时间,只需在这一行的字模数据和行选通数据被锁存之后加长DELAY子程序的延迟时间,如循环执行X次原DELAY程序,X为这一行的点亮LED数。

获得X的子程序可如下编写:

GETX:

MOVC,#0

MOVR4,#8

MOVR5,#0

MOVA,ROWH

ROLL1:

JNCNEXTX1

INCR5

NEXTX1:

DJNZR4,ROLL

MOVR4,#8

MOVA,ROWL

ROLL2:

JNCNEXTX2

NEXTX2:

DJNZR4,ROLL2

RET

这样,X就会被保存在R5中,再如下修改DELY子程序:

MOVR6,R5

这样,DELAY子程序会根据每一行点亮LED数来更改其点亮时间,从而调整每一行显示时间占总显示时间的比重。

方案二:

逐点点亮

方案一有一个明显的缺点,即在提升了点亮LED数较多的行的显示时间的同时,减少了点亮LED数较少行的显示时间,虽然这可以保证所有行的亮度比较均匀,整体亮度并没有提升。

为了在保证亮度足够大的情况下,使所有行的亮度均匀,可以采用逐点点亮的方法,即:

将原来每次锁存一行字模数据改为每次锁存一行中某一点的字模数据,然后延时。

这样将一行分为16次显示,每次显示最多有一盏LED点亮,就保证了亮度。

具体实现的步骤是:

将原来对每一行字模数据和行选通数据锁存的步骤改为:

A、字模数据第一位以外,其余全部置1,将此处理过后的16位数据与行选通数据移入移位寄存器,再通过STR锁存显示并延时。

B、字模数据第二位以外,其余全部置1,将此处理过后的16位数据与行选通数据移入移位寄存器,再通过STR锁存显示并延时。

C、如此重复直到16位字模数据分别独自显示,开始扫描下一行。

这种方案有如下缺点:

A、程序复杂,可以看到原来的程序对每一行字模数据只需进行一次移位寄存器和锁存延时操作,但现在必须队一行字模数据重复16次上述操作,并且在操作时需要滤出一个有效位而将其它位置1。

程序复杂度有明显提高。

B、扫描速度明显减慢,这是很显而易见的,原来显示一行的时间现在只能用来显示一点。

C、LED寿命减短,理由同列扫描的缺点。

滚动显示的字模数据放置:

根据我的程序思路,一开始“王”字全部显示,然后开始向上滚动,在滚动显示完“王梦硕”三个字后,需等待“硕”字的最后一行移出点阵后才会开始新的一轮显示,如果在“硕”的字模数据后不放置其他数据,则在滚动的最后16x16的LED会全部点亮,因为程序取到的数据全是0000H。

为了避免这种情况,可以将“硕”字后的的8x32个储存单元全部设为0FFH,这样最后16x16的LED全部不亮,比较美观。

但我的想法是让“王梦硕”三个字无缝轮流滚动,故很自然地想到在“硕”字字模数据后再放置一次“王”字字模数据,这样在“硕”字显示完后“王”字会紧随其后,直到次“王”字的16行全部显示完毕后,切换到最初状态,即“王”字全部显示在16x16的点阵上,这种的切换是无法被察觉的,产生的效果就是无缝衔接的滚动。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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