基于51单片机的16×32点阵显示设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的16×32点阵显示设计
————————————————————————————————作者: ————————————————————————————————日期:
单片机原理及接口技术课程设计报
告
题目:基于51单片机的16*32点阵显示设计
学院:
专业班级:
学生姓名:
学号:
指导教师:
日期:
一、设计题目与要求
点阵屏以其醒目、快速换字等特点,已经进入了我们的生活,大街小巷每个地方都能看到点阵式广告屏,本课题设计一个基于51单片机的16*32点阵屏,能够实现2个字的静态显示、滚屏显示等。
二、总体设计方案
本设计以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54、74HC04)、行驱动电路(74HC245)、键盘、16×16LED点阵7部分组成。将LED点阵的16条行线经行驱动电路与P2口和P3口连接,而LED点阵的32条列线则与5—32线译码器相连,列扫描信号由P1输出到译码器,P0号与键盘相连。这样,单片机89C51按照设定的程序在P2和P3口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4,P1.5接口输出列选扫描信号(低电平驱动),从而选中相应的像素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
三、各模块电路设计
1、16×32LED点阵
16×32LED点阵可以用2个16×16LED点阵拼成,把2个16×16LED点阵相同的行连在一起就是1个16×32LED点阵。LED点阵结构图如下:
2、单片机最小系统
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。
3、列扫描驱动电路
列扫描驱动电路是由反相器、译码器组成的5线—32线译码器。译码器采用74HC1544线—16线译码器,74HC154译码器可接受4位高电平有效二进制地址输入,并提供16个互斥的低有效输出。反相器采用74HC04。电路图如下:
4、行驱动电路
由于单片机的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。本设计需要同时点亮多个LED,因此需要很大的电流输出,但51单片机的输出电流有限且不足以点亮多个LED,可能会导致LED亮度不足,所以用74HC245来放大电流。
四、总体设计电路图
五、程序设计
以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
汉字可拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。利用字模提取软件得到汉字的代码,汉字的一列代码的上下两部分分别由P 2、P3口输出,P1口同时输出列扫描代码,使该列的LED亮。依照这个方法转向第2列、第3列……,直至第16列的扫描,16列的LED快速连续地点亮,因为人眼的视觉暂留,LED显示屏会显示出一个汉字。
六、硬件实物图
七、心得体会
通过本次的课程设计制作,我熟悉了仿真软件Protues和Keil的基本操作与功能,同时也学会了利用单片机动手制作出复杂的电子作品。在设计方案的时候,我遇到了不少麻烦,特别是设计硬件电路图这一部分,因为我要制作16×32LED点阵,如果用书本上传统的方法会不够I/O口,因此我想出了列扫描采用5线—32线译码器的方法。因为没有5线—32线译码器的芯片,于是我在网上找到了利用74HCl54、74HC04连接成5线—32线译码器的方法。而在程序设计方面,因为我的设计运行的程序并不复杂,因此我很快就把程序编出来了,没有碰到什么难题。这次的课程设计大大增加了我对电子技术的兴趣和提高了我相关方面的技术。
附:单片机程序
ORG 0000H
START:MOV P2,#00H ;清除画面
MOV P3,#00H
KEY1:MOV P0,#0FFH ﻩ;扫描开关
MOV A,P0
CPL A
ANLA,#0FFH
JZ KEY1
LCALL DELAY3
MOV A,P0
CPLA
ANL A,#0FFH
JZ KEY1
JB ACC.0,AMOD1
JB ACC.1,AMOD2
JB ACC.2,AMOD3
AMOD1:LJMP MOD1 ﻩ;转到子程序
AMOD2:LJMP MOD2
AMOD3:LJMP MOD3
MOD1:MOV P0,#0FFHﻩ;静态显示
MOV A,P0
CPL A
ANL A,#0FFH
JZ L2
LCALLDELAY3
MOV A,P0
CPL A
ANL A,#0FFH
JZ L2
JB ACC.0,BMOD1
JB ACC.1,BMOD2
JB ACC.2,BMOD3
BMOD1:LJMPMOD1
BMOD2:LJMPMOD2
BMOD3:LJMP MOD3
L2:MOV R6,#32
MOV R4,#00H
MOVR0,#00H
L3:MOVDPTR,#TABLE1
MOVA,R4
MOV P1,A
INC R4
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
INC R0
MOV A,R0
MOVC A,@A+DPTR
MOV P3,A
INC R0
MOV R3,#128
DJNZ R3,$ﻩ;延时
MOVP2,#00H ;清除画面
MOV P3,#00H
DJNZR6,L3
JMP MOD1
MOD2:MOV 20H,#00H ;滚屏显示
MOV R4,#00H