单片机课程设计——16x16LED滚动显示
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结束语
本文设计的16x16的点阵LED图文显示屏,能够在目测条件 下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示的 图形和文字较稳定、清晰。图形或文字向上滚动显示。本系统 具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等 特点。 在此次设计中,我得到以下体会: 1.在这次点阵设计的过程让我进一步熟悉KEIL及 Proteus的使用。 2.本次设计结果仍有缺陷,有一行总是全亮,干扰显示。 3.通过这次点阵设计,重新复习并进一步学习了MCS55单片机的优点,明确了学习和研究目标。 4.本文设计的LED显示屏能够实现在目测条件下LED显示 屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字 应稳定、清晰无串扰。图形或文字以移入移出方式显示。 5.本次设计在老师的指导下完成的,在设计过程中培养 了我们的科学研究的严谨态度和创新精神,对我们以后的学习 和工作有很大的帮助,对此向老师表示衷心的感谢!
74LS595介绍
74595的数据端: Q1--Q7:八位并行输出端,可以直接控制数 码管的8个段。 Q7':级联输出端。我将它接下一个595的SI 端。 DS:串行数据输入端。 STcp:存储寄存器的时钟脉冲输入口 SHcp:移位寄存器的时钟脉冲输入口 OE:的非输出使能端 MR:的非芯片复位端
74LS164介绍
当清除端(CLEAR)为低电平时,输出端(QA- QH)均为低电平。 串行数据输入端(A,B)可控制 数据。当 A、B任意一个为 低电平,则禁止新数据输入, 在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。 当A、B 有一个为高电平,则另一个就允许输入数据, 并在CLOCK 上升沿作用下决定Q0 的状态。 引脚功 能: CLOCK :时钟输入端 CLEAR: 同步清除输入端(低电平有效) 1,2 :串行数据输入端 Q8-Q15: 输出端
16x16LED滚动显示
小组成员:
来自百度文库设计时间:2014年12月 指导老师:
设计概要
本设计使用AT89C55系列高速单片机作为主控制模块,利用简单 的外围电路来驱动16×16的点阵LED显示屏。利用AT89C55系列高速 单片机本身强大的功能,可以很方便的实现单片机与PC机间的数据 传输及存储,并能利用软件方便的进行显示内容的多样变化,另一 方面点阵显示屏广泛的应用于医院、机场、银行等公共场所,所以 本设计具有很强的现实应用性。 本LED显示屏能够以动态扫描的方式同时显示4个8×8点阵汉字, 并能通过上位机软件修改显示内容和显示效果等等。把字符内码存 储在空闲的单片机程序存储器空间,使本LED显示系统能掉电存储 1024个字符。设计中采用了SPI接口的GB2312标准字库,支持所有的 国标字符和ASCII标准字符的显示。因为采用串行传输方式,使本系 统的可扩展性得到提升,便于多个显示单元的级联。 本文从LED的显示原理入手,详细阐述了LED动态显示的过程, 以及硬件电路的设计、计算和软件的算法
软件设计
本软件要求实现如下要求:汉字要稳定、明亮并且文字要以一定速度上升滚动显 示。 显示屏软件模块:初始化程序、主程序、多字滚动、显示程序、扫描程序。显示 程序的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求 显示。软件设计中,显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第 二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫 描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定 时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等 工作,由主程序来实现。 显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率 的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下: 刷频率(帧频)=1/16×T0溢=1/16×f/12(65536-t) 其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。 然后显示驱 动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发 送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭 显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打 开显示。
系统调试
软件调试:软件为网络所提供,其原理在上一模块已 作说明,在这里再作说明,软件经调试无误,直接将其下 再到单片机中,看是否达到所要的效果软件部分是先参考 书上的例子,然后自己根据硬件电路写程序,由于以前所 学是单片机汇编语言,所以这个系统在编写程序过程中都 采用汇编语言编写。刚刚开始,编写不会一次性通过,经 过仔细分析修改最后编译成功。但是,在实际写如 C55 中, LED 显示屏出现各种各样的乱码,通过再次认真仔细分析 多次修改程序后,程序能够正常运行。 硬件调试:在对各个硬件模块进行调试时,要保证软 件正确情况下去测试软 件,要不然会发生错误,硬件仿 真前要认真检验点阵及线路的好坏,检查无误后才下载主 程序。
图为字模提取软件提取16x16LED汉字显示代码
系统主程序流程图
开始
系统初始化
行驱动器
列驱动器
左滚屏显示效果 上滚屏显示效果 右滚屏显示效果 下滚屏显示效果
总电路连线图
用4个8×8LED点阵构成16×16LED点阵
Proteus中只有5×7和8×8等LED点阵,并没 有16×16LED点阵,而在实际应用中,要良好地 显示一个汉字,则至少需要16×16点阵。下面我 们就首先介绍使用8×8点阵构建16×16点阵的方 法,并构建一块16×16LED点阵,用于本例的显 示任务。 从Proteus的元件库中找到“MATRIX-8X8RED”元器件,并将四块该元器件放入Proteus文 档区编辑窗口中。此时需要注意,如果该元器件保 持初始的位置(没有转动方向),我们要首先将其 左转90°,使其水平放置,那么此时它的左面8个 引脚是其行线,右边8个引脚是其列线(当然,如 果你是将右转,则右边8个引脚是行线)。然后我 们将四个元器件对应的行线和列线分别进行连接, 使每一条行线引脚接一行16个LED,列线也相同。 并注意要将行线和列线引出一定长度的引脚,以便 下面我们使用。连接好的16×16点阵如右图。
实验结果
实验电路及连线
电路主要由单片机和一些外部设备连接而成, 利用4个8*8LED显示组装成16*16LED显示,2个R*8 排电阻,一个74HC154组成。该显示器采用 AT89C55单片机作为控制器, 12MHz 晶振,其中 P0 口作为字符数据输出口, P2 口作为显示器扫描输 出口,第 31 管脚( EA )接电源。电路包括单片机、 电源电路、时钟电路、复位电路、驱动电路和LED 点阵电路等。本设计的核心是利用单片机读取显 示字型码,通过驱动电路对16×16LED点阵进行动 态扫描,以实现汉字的滚动显示。
关键词:LED动态显示 AT89C55 点阵汉字显 示 仿真
论证设计
图文显示一般有静态和动态显示两种方案,静态方案虽然设计简 单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二 极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口, 按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。这个数 字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往 往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此 在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为 动态扫描的显示方法。 动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路 就可以实现多行(比如16行)的同名列共用一套驱动器。具体就16x 16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列 的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光 管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭; 再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然 后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这 样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象, 就能够看到显示屏上稳定的图形了。
系统框图
74LS595 列驱动器
AT89C55 单片机
7 4行 L驱 S动 1器 6 4
16x16LED点阵
硬件设计
一.主要芯片资料
AT89C55介绍
AT89C55为8 位通用微处理器,采用工业标准的C51 内核,在内部功能及管脚排布上与通用的 8xc52 相同, 其主要用于会聚调整时的功能控制。功能包括对会聚主 IC 内部寄存器、数据RAM及外部接口等功能部件的初始 化,会聚调整控制,会聚测试图控制,红外遥控信号 IR 的接收解码及与主板CPU通信等。主要管脚有:XTAL1 (19 脚)和XTAL2(18 脚)为振荡器输入输出端口, 外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口, 外接电阻电容组成的复位电路。VCC(40 脚)和VSS (20 脚)为供电端口,分别接+5V电源的正负端。 P0~P3 为可编程通用I/O 脚,其功能用途由软件定义, 在本设计中,P0 端口(32~39 脚)被定义为N1 功能控 制端口,分别与N1的相应功能管脚相连接,13 脚定义 为IR输入端,10 脚和11脚定义为I2C总线控制端口,分 别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、 27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进 入的控制功能。
实验原理
16×16扫描LED点阵的工作原理同8位扫描数码管类似。 它有 16 个共阴极输出端口,每个共阴极对应有 16 个 LED 显 示灯。所以其扫描译码地址需 4 位信号线。要使 16 点阵上 某个点亮,如第10行第4列的LED点亮,只要让列选信号为 “ 0100 ”,从而选中第 4 列,再给第 10 行一个高电平,即 可点亮该LED 。本实验通过 74LS164和74LS595芯片写入字 形,产生扫描信号。为了显示整个汉字,首先分布好汉字 的排列,以行给汉字信息;然后以大于 24HZ的频率扫描列, 即每行逐一加高电平,根据人眼的视觉残留特性,使之形 成整个汉字的显示。
16×16LED点阵显示制作
以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。 即国家标准汉字库中的每一个字均由256点阵来表示。我们可以把每一个点 理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏 不仅可以显示汉字,也可以显示在256像素范围内的任何图形。这里我们以 “魏”字说明,如下图所示: