8乘88x8点阵汉字显示.docx

上传人:b****4 文档编号:3925169 上传时间:2022-11-26 格式:DOCX 页数:20 大小:442.96KB
下载 相关 举报
8乘88x8点阵汉字显示.docx_第1页
第1页 / 共20页
8乘88x8点阵汉字显示.docx_第2页
第2页 / 共20页
8乘88x8点阵汉字显示.docx_第3页
第3页 / 共20页
8乘88x8点阵汉字显示.docx_第4页
第4页 / 共20页
8乘88x8点阵汉字显示.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

8乘88x8点阵汉字显示.docx

《8乘88x8点阵汉字显示.docx》由会员分享,可在线阅读,更多相关《8乘88x8点阵汉字显示.docx(20页珍藏版)》请在冰豆网上搜索。

8乘88x8点阵汉字显示.docx

8乘88x8点阵汉字显示

 

单片机课程设计

 

题目:

8*8点阵汉字显示器

专业班级:

******

姓名:

******

学号:

*********

 

一.摘要:

用TOP-23088DH-U8*8点阵块设计制作一个8*16点阵汉字显示器。

通过51单片机作为控制系统,由8255的A口为段数据口向两块点阵提供行数据,C口提供扫描列信息,通过74LS154译码后进行扫描,当点阵的行接高电平,列为低电平时,同时选通,则在该点的LED点亮。

由于实验箱上所提供的驱动电流太低,不足以点亮二极管,所以在电路中增加一个74LS254芯片,以提供点亮LED所需的驱动电流。

同时在P1.0-P1.2口接3个开关,形成按键控制功能选择。

点阵模块图如下:

如上图所示,本实验通过列扫描方式,扫描同时给行线送显示数据。

当扫描到某列,则该列选通,其他列截止,选通瞬间送显示数据,则所对应的二极管亮。

点阵依靠循环点亮每一列(或行),快速循环形成一屏图像,而每一屏快速交替,可进一步形成动画的效果。

二.设计任务和要求:

(1)基本要求:

1.能显示8*8的汉字,用两个8*8点阵,显示“大连”。

2.通过键盘控制可以改变显示的汉字与图形。

3.通过键盘控制,可以实现彩灯控制功能,发光管从内向外周期显示和相反显示。

(2)发挥要求:

1.增加驱动电路,提高显示亮度。

三.方案选择和论证:

3.1:

方案论证:

控制模块由8051、74LS154,8255组成,其中,采用51单片机制做一个最小系统,包含有时钟信号电路、复位电路等,154是4线转16线译码器,4线端接8255的PC.0-PC.3口,16线端低电平有效,控制点阵的16列,245是对列的驱动,8255的PA.0-PA.7用于将行扫描数据进行高速串-并转换,实验箱内部便可提供较大电流总够控制点阵的8行,这样,点阵的128个点中被选通的就亮。

显示模块由2块8×8点阵组成,通过相互并联转换成16×8点阵。

3.2:

方案选择:

(1).实验仪器

名称

数量

8051

1

74LS154

1

8255

1

8X8点阵

2

74LS245

1

面包板

2

导线

若干

万用表

1

 

(2).流程图:

 

Y

N

N

Y

N

 

Y

N

 

(3).硬件连接

四.实际操作与调试:

(1)实际制作

使用keil先对软件程序进行编译测试并进行proteus仿真,调试成功后开始硬件部分。

(2).软件调试:

编程思路为:

先对相关变量进行初始化,循环扫描点亮16列LED,一帧图像扫描完毕后,列指针向右移动一位,再扫描下一帧图像。

依此类推,列指针共向右移动16位,这样主观上就感觉向左滚动,移动一个汉字(列指针右移16位)后,字指针指向下一个汉字,这样就能在显示屏上看到汉字滚动。

(3).实验程序:

ORG0000h

LJMPSTART

ORG0030H

START:

MOVDPTR,#8003H;控制口地址

MOVA,#80H;8255初始化,A.B.C口均输出

MOVX@DPTR,A

MOVP1,#0ffH;P1口在输入前要先置1

LJMPKEY1;跳到KEY1

K2:

LCALLKEY2

KEY1:

JNBP1.0,K2;当为0时(P1.0未按下),则跳转K2,转判P1.1

MOVR0,#00H;列号

MOVR1,#00H;字型码偏移地址

MOVR3,#10H;计数(扫描16列)

A1:

MOVDPTR,#8002H;C口地址

MOVA,R0;将列号给出

MOVX@DPTR,A

INCR0;加1,为下一列做准备

MOVDPTR,#TAB5;取字型码首地址

CLRA

ADDA,R1;字型码偏移量

MOVCA,@A+DPTR

INCR1;为下一个字型码准备

MOVDPTR,#8000H

MOVX@DPTR,A;字型码从A口输出

LCALLDELAY

DJNZR3,A1;判断16列是否扫描完,未结束则继续扫描

MOVDPTR,#8000H;清零

MOVA,#00H

MOVX@DPTR,A

LJMPKEY1

RET

CLEAR:

MOVDPTR,#8000H;清零

MOVA,#00H

MOVX@DPTR,A

LCALLDELAY1

RET

K3:

LCALLKEY3

KEY2:

JNBP1.1,K3;当为0时(P1.1未按下),则跳转K3,转判P1.2

LD1:

MOVR5,#7FH

CD1:

LCALLS1;调用S1

JNBP1.1,CLEAR;当P1.1未按下(运行过程中中断),则清零

DJNZR5,CD1

LD2:

MOVR5,#44H;LD2-LD16均与LD1类似

CD2:

LCALLS2

JNBP1.1,CLEAR

DJNZR5,CD2

LD3:

MOVR5,#3FH

CD3:

LCALLS3

JNBP1.1,CLEAR

DJNZR5,CD3

LD4:

MOVR5,#34H

CD4:

LCALLS4

JNBP1.1,CLEAR

DJNZR5,CD4

LD5:

MOVR5,#2FH

CD5:

LCALLS5

JNBP1.1,CLEAR

DJNZR5,CD5

LD6:

MOVR5,#24H

CD6:

LCALLS6

JNBP1.1,CLEAR

DJNZR5,CD6

LD7:

MOVR5,#1FH

CD7:

LCALLS7

JNBP1.1,CLEAR

DJNZR5,CD7

LD8:

MOVR5,#14H

CD8:

LCALLS8

DJNZR5,CD8

LD9:

MOVR5,#7FH

CD9:

LCALLS16

JNBP1.1,CLEAR

DJNZR5,CD9

LD10:

MOVR5,#44H

CD10:

LCALLS15

JNBP1.1,CLEAR

DJNZR5,CD10

LD11:

MOVR5,#3FH

CD11:

LCALLS14

JNBP1.1,CLEAR

DJNZR5,CD11

LD12:

MOVR5,#34H

CD12:

LCALLS13

JNBP1.1,C1

DJNZR5,CD12

LD13:

MOVR5,#2FH

CD13:

LCALLS12

JNBP1.1,C2

DJNZR5,CD13

LD14:

MOVR5,#24H

CD14:

LCALLS11

JNBP1.1,C3

DJNZR5,CD14

LD15:

MOVR5,#1FH

CD15:

LCALLS10

JNBP1.1,C4

DJNZR5,CD15

LD16:

MOVR5,#14H

CD16:

LCALLS9

DJNZR5,CD16

LJMPKEY2

RET

C1:

LCALLCLEAR

C2:

LCALLCLEAR

C3:

LCALLCLEAR

C4:

LCALLCLEAR

S1:

MOVDPTR,#8002H;C口

MOVA,#07H;列号

MOVX@DPTR,A

MOVA,#00H;字型码

MOVDPTR,#8000H

MOVX@DPTR,A;字型码从A口输出

LCALLDELAY

MOVDPTR,#8002H

MOVA,#08H;列号

MOVX@DPTR,A

MOVA,#0d1H;字型码

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET;SI功能为选通中间两列亮

S2:

LCALLS1

MOVDPTR,#8002H

MOVA,#06H

MOVX@DPTR,A

MOVA,#22H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#09H

MOVX@DPTR,A

MOVA,#6fH

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET;S2为让第6和9列亮,S3-S8以此类推

S3:

LCALLS2

MOVDPTR,#8002H

MOVA,#05H

MOVX@DPTR,A

MOVA,#24H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0AH

MOVX@DPTR,A

MOVA,#55H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S4:

LCALLS3

MOVDPTR,#8002H

MOVA,#04H

MOVX@DPTR,A

MOVA,#28H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0BH

MOVX@DPTR,A

MOVA,#75H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S5:

LCALLS4

MOVDPTR,#8002H

MOVA,#03H

MOVX@DPTR,A

MOVA,#0F0H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0CH

MOVX@DPTR,A

MOVA,#0d5H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S6:

LCALLS5

MOVDPTR,#8002H

MOVA,#02H

MOVX@DPTR,A

MOVA,#28H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0DH

MOVX@DPTR,A

MOVA,#7fH

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S7:

LCALLS6

MOVDPTR,#8002H

MOVA,#01H

MOVX@DPTR,A

MOVA,#24H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0EH

MOVX@DPTR,A

MOVA,#55H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S8:

LCALLS7

MOVDPTR,#8002H

MOVA,#00H

MOVX@DPTR,A

MOVA,#22H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0FH

MOVX@DPTR,A

MOVA,#55H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S9:

LCALLS10

MOVDPTR,#8002H

MOVA,#07H

MOVX@DPTR,A

MOVA,#00H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#08H

MOVX@DPTR,A

MOVA,#0d1H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET;中间两列亮

S10:

LCALLS11

MOVDPTR,#8002H

MOVA,#06H

MOVX@DPTR,A

MOVA,#22H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#09H

MOVX@DPTR,A

MOVA,#6fH

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET;S10-S16以此类推

S11:

LCALLS12

MOVDPTR,#8002H

MOVA,#05H

MOVX@DPTR,A

MOVA,#24H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0AH

MOVX@DPTR,A

MOVA,#55H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S12:

LCALLS13

MOVDPTR,#8002H

MOVA,#04H

MOVX@DPTR,A

MOVA,#28H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0BH

MOVX@DPTR,A

MOVA,#75H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S13:

LCALLS14

MOVDPTR,#8002H

MOVA,#03H

MOVX@DPTR,A

MOVA,#0F0H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0CH

MOVX@DPTR,A

MOVA,#0d5H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S14:

LCALLS15

MOVDPTR,#8002H

MOVA,#02H

MOVX@DPTR,A

MOVA,#28H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0DH

MOVX@DPTR,A

MOVA,#7fH

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S15:

LCALLS16

MOVDPTR,#8002H

MOVA,#01H

MOVX@DPTR,A

MOVA,#24H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0EH

MOVX@DPTR,A

MOVA,#55H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

S16:

MOVDPTR,#8002H

MOVA,#00H

MOVX@DPTR,A

MOVA,#22H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

MOVDPTR,#8002H

MOVA,#0FH

MOVX@DPTR,A

MOVA,#55H

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

RET

K1:

LCALLKEY1

KEY3:

JNBP1.2,K1;当为0时(P1.2未按下),则跳转K1,转判P1.0

MOVR0,#00H

MOVR1,#00H

MOVR3,#10H

A3:

MOVDPTR,#8002H

MOVA,R0

MOVX@DPTR,A

INCR0

MOVDPTR,#TAB4;KEY3与KEY1类似,只是调用字型码4

CLRA

ADDA,R1

MOVCA,@A+DPTR

INCR1

MOVDPTR,#8000H

MOVX@DPTR,A

LCALLDELAY

DJNZR3,A3

MOVDPTR,#8000H

MOVA,#00H

MOVX@DPTR,A

LJMPKEY3

RET

DELAY:

MOVR7,#0FH

D1:

MOVR6,#0FH

D2:

DJNZR6,D2

DJNZR7,D1

RET

DELAY1:

MOVR7,#0FFH

D3:

MOVR6,#0FFH

D4:

DJNZR6,D4

DJNZR7,D3

RET

TAB5:

DB22h,24h,28h,0f0h,28h,24h,22h,00h;大

DB0d1h,6fh,55h,75h,0d5h,7fh,55h,55h;连

TAB4:

DB00h,00h,00h,70h,88h,84h,42h,21h

DB21h,42h,84h,88h,70h,00h,00h,00h;“爱心形状”

END

(4).硬件调试:

将万用表打到二极管端,用红表笔接点阵的某个管脚,黑表笔接另一个管脚,若点亮,则选通。

依次测出每个管脚所担任的行和列,其中,低电平选通列,高电平选通行。

通过wave的软件将程序下载到实验箱中,初始为黑屏,因为没有按键被按下。

之后通过按键进行控制,看显示是否正确,若点阵全都不亮,则首先要仔细检查程序,很可能是程序出了问题,因为之前已经对硬件进行测试了,若确定程序没有问题,则很可能是连线出现了断线,或者是连线连错了,点阵实验的线较多,所以需要在实验之前对每根线路进行检测,检测的方法是使用万用表检测是否出现短路现象。

由于线较多,所以很容易接连错了,也有可能是前面对LED的能否正常工作没有测试到位导致部分电路问题被遗漏。

若测试时就只有几个点不亮,这时就能确定点阵极性及那些点是坏点。

(5).调试中的问题记录:

搭线的时候要细心,由于线较多,所以会插错管脚,或接触不良,注意不要带电操作,否则容易烧坏芯片。

面包板与线的接触,要注意每根导线均导通,且与面包板接触良好。

五.发挥部分设计与调试:

由于实验箱所能提供的驱动电流太低,所以程序下载后,可能导致LED亮度较暗,或者不亮。

因此,我们加入一个74LS245芯片,该芯片是对列的驱动,8255的PA.0-PA.7用于将行扫描数据进行高速串-并转换,实验箱内部便可提供较大电流总够控制点阵的8行,这样,点阵的128个点中被选通的就亮。

因此亮度提高。

其余部分调试,与基本任务中的调试相同。

六.实验数据记录与测试结果分析:

静态显示“大连”:

静态显示“爱心”(图案):

由内向外显示“大连”:

由外向内显示“大连”:

 

当点阵的行接高电平,列为低电平时,同时选通,则在该点的LED点亮。

通过程序传送,通过51单片机作为控制系统,由8255的A口为段数据口向两块点阵提供行数据,C口提供扫描列信息,通过74LS154译码后进行扫描。

七.实验总结:

1.实验过程中的问题与分析:

(1)程序关键之处在于串口发送列数据的延时控制,否则很难观测到扫描图像。

同时,行数据的延时控制也很重要,这决定整个画面是否闪烁。

(2)要注意与面包板接触问题,导线与面包板接触良好。

(3)为了是提高显示图形的亮度,加了一块74LS245对行进行驱动

2.收获与感想:

通过此次实验,我学到了许多实验上的知识,如利用单片机进行汉字点阵的扫描显示及控制的基本知识,使我对单片机有了更充分的认识;此外,又学会了部分芯片的使用,懂得了动态电子指示牌实现的原理,培养了兴趣,通过硬件的连接,让我在实验中提高了动手实践,硬件的多次连接让我提高了发现问题和处理问题的能力。

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

当前位置:首页 > PPT模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1