单片机LED点阵显示图形和汉字
单片机点阵汉字显示_
淮安信息职业技术学院电子实训目录摘要 (1)引言 (1)1、背景介绍 (1)1.1 LED及LED显示屏 (1)2 、MCS-51系列单片机简介 (2)2.1 MCS-51系列单片机及其特点 (2)2.2 单片机的发展历史简介 (2)3、功能要求 (3)4、方案实现 (3)4.1 系统硬件电路的设计 (4)4.1.1单片机系统及外围电路 (4)4.1.2列驱动电路 (5)4.1.3行驱动器 (5)4.2.系统程序的设计 (6)4.2.1显示驱动程序 (6)4.2.2系统主程序 (7)5、性能分析与仿真调试 (7)5.1 性能分析 (7)5.2 仿真结果 (7)5.3 焊接后实物效果图 (9)6、总结 (10)参考文献 ................................................ 错误!未定义书签。
附录A 四个8*8点阵构成的16x16的点阵LED汉字显示屏的硬件原理图 (10)附录 B 程序清单 (14)淮安信息职业技术学院电子实训摘要本设计是基于MCS-51的16x16点阵LED电子显示屏的设计,16x16的点阵共有256个发光二极管,我们采用动态扫描的显示方法,更节省锁存器也就节省了成本。
扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阴极连在一起,把所有同1列的发光管的阳极连在一起(即我们采用共阴极的接法)。
采用扫描方式进行显示时,每一行和每一列都有一个行驱动器和列驱动器,各行的同名列和各列的同名行共用一个驱动器。
我们采用四个74HC595驱动集成块。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
单片机的P2口低3位与行驱动器相连,高3位于列驱动器相连,P2.5(P2.0)为串行数据输入口,P2.6(P2.1)为移位时钟脉冲控制口,P2.7(P.2)为输出锁存器控制脉冲口。
单片机控制LED点阵显示屏
单片机控制LED点阵显示屏一、简介单片机控制LED点阵显示屏是一种常见的电子显示器件,可以用于显示各种文字、图形等信息。
本文将介绍如何利用单片机来控制LED 点阵显示屏,实现信息的显示功能。
二、材料准备在开始搭建单片机控制LED点阵显示屏系统之前,我们需要准备以下材料:•单片机开发板:例如STC89C52•LED点阵显示屏:常见的有8×8、16×16等不同尺寸•连接线:用于连接单片机和LED点阵显示屏•电源:用于为单片机开发板和LED点阵显示屏供电三、搭建电路将单片机开发板和LED点阵显示屏通过连接线进行连接。
具体连接方法如下:•将单片机的IO口与LED点阵显示屏的对应引脚相连。
根据具体的LED点阵显示屏型号和单片机开发板的引脚分配情况,选择合适的IO口进行连接。
•将单片机的VCC引脚与LED点阵显示屏的VCC脚相连,将GND引脚与LED点阵显示屏的GND脚相连,确保电源供电正常。
四、编程控制编写单片机程序,实现对LED点阵显示屏的控制。
本文以STC89C52单片机为例,演示如何利用C语言编写简单的程序实现LED点阵显示屏的控制。
首先,需要使用单片机开发工具(如Keil、IAR等)创建一个新的工程。
在工程中添加必要的头文件,并定义相关的引脚和变量。
#include <reg52.h>sbit DIN = P1^0; // 数据引脚sbit CS = P1^1; // 片选引脚sbit CLK = P1^2; // 时钟引脚unsigned char code ledData[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};void delay(unsigned int time) {unsigned int i, j;for(i = time; i > 0; i--)for(j = 110; j > 0; j--); // 空循环延时}void sendData(unsigned char dat) {unsigned char i;for(i = 0; i < 8; i++) {CLK = 0; // 上升沿时钟信号DIN = dat & 0x80;dat <<= 1;CLK = 1;}}void display(unsigned char *data) {unsigned char i;CS = 0; // 片选信号有效for(i = 0; i < 8; i++) {sendData(data[i]);}CS = 1; // 片选信号无效}void mn() {while(1) {display(ledData);delay(2000);}}上述代码中,我们定义了三个引脚(DIN、CS、CLK)和一个缓存数组(ledData),分别用来控制LED点阵显示屏的数据引脚、片选引脚和时钟引脚。
基于单片机的LED点阵显示屏的设计
基于单片机的LED点阵显示屏的设计LED点阵显示屏是一种常见的显示设备,它通过控制各个LED的亮灭来显示文字、图形或动画。
在这篇文章中,我们将介绍基于单片机的LED 点阵显示屏的设计。
一、设计目标设计一个基于单片机的LED点阵显示屏,使其能够显示各种文字、图形和动画。
同时,要求显示屏的显示效果清晰、稳定,能够满足日常使用的需求。
二、设计方案1.硬件设计(1)点阵屏:选择合适的点阵屏作为显示屏的输出设备。
点阵屏的种类有很多,常见的有8x8、16x16和32x32等不同尺寸的点阵屏。
根据实际需求选择合适的尺寸。
(2)单片机:选择一块适合的单片机作为控制器。
单片机的选择需要考虑其计算能力、扩展性和易用性等因素。
(3)扩展模块:根据需要,可以选择添加一些额外的扩展模块,如按键模块、声音模块等,以增加显示屏的功能。
(4)电源模块:为显示屏提供稳定的电源,以保证其正常工作。
2.软件设计(1)驱动程序:编写驱动程序,通过单片机控制各个LED的亮灭。
根据点阵屏的不同类型,编写相应的驱动程序。
(2)显示程序:编写显示程序,将要显示的文字、图形或动画转换成相应的点阵数据,然后通过驱动程序显示在点阵屏上。
(3)用户界面:设计一个用户界面,使用户能够方便地输入要显示的文字、选择图形或动画等,然后通过单片机控制显示屏显示出来。
三、实施步骤1.硬件部分(1)按照设计方案选择合适的点阵屏、单片机和扩展模块,并连接它们。
(2)根据点阵屏的引脚定义,设计相应的电路板,并进行制作。
(3)将单片机和扩展模块焊接到电路板上,并连接好相应的引脚。
(4)连接电源模块,为整个系统提供电源。
2.软件部分(1)根据点阵屏的类型,编写相应的驱动程序。
(2)编写显示程序,将要显示的文字、图形或动画转换成点阵数据。
(3)设计用户界面,编写相应的程序,将用户输入的内容转换成可显示的数据。
(4)将驱动程序、显示程序和用户界面程序上传到单片机。
四、测试与调试完成硬件和软件的设计后,进行测试与调试。
基于单片机的LED点阵汉字显示
理工大学《单片机应用与仿真训练》设计报告题目:LED点阵显示屏设计姓名:吴 2宋发旺 8专业班级:电信08-3班指导老师:高如新、珊所在学院:电气工程与自动化学院2011年11月26 日摘要此次设计是基于AT89S52的16×16 LED点阵显示,要求分时切换显示“理工学电气学院”。
此次设计应用Proteus设计硬件电路原理图并进行仿真调试,实现了在计算机中完成电路原理图设计、电路分析与仿真及系统测试。
由于Proteus元件库中没有AT89S52,本次仿真用AT89C51单片机作为主控制器,来实现对16×16 LED点阵汉字的分时切换显示。
软件采用C51,由Keil uVision3来编写。
此次设计所需硬件有:AT89S52单片机一个、3线-8线译码器74HC138芯片一片、数据传送器74HC574芯片四片、MATRIX-8X8-RED芯片四片、按键五个以及晶振等。
此次设计利用四片MATRIX-8X8-RED芯片构成16×16 LED点阵,一片3线-8线译码器74HC138芯片同时作为四片MATRIX-8X8-RED芯片的行扫描,四片数据传送器74HC574芯片分别作为四片MATRIX-8X8-RED芯片的列扫描,来驱动四片MATRIX-8X8-RED芯片分时切换显示“理工学电气学院”。
此次设计有五个按键,一个复位按键,四个功能键,分别为暂停、下一个、上一个和黑屏。
目录1 概述 (1)1.1 LED电子显示屏 (1)1.2 Proteus (2)1.3 AT89S52 (2)2 系统总体方案及硬件设计 (5)2.1 系统总体方案及功能 (5)2.2 硬件设计 (5)3 软件设计 (8)3.1 设计方案 (8)3.2 程序流程图 (9)4 Proteus软件仿真 (10)4.1 仿真步骤 (10)4.2 仿真结果 (10)5课程设计体会 (10)参考文献 (12)附1:源程序代码 (14)附2:系统原理图 (19)1 概述1.1 LED电子显示屏近年来,LED显示屏由于具有亮度高,寿命长,功耗小,性能稳定,驱动简单以及可视距离远等优点,已经成为新一代的信息传播媒体工具。
基于C51单片机的8×8 LED点阵屏汉字显示资料
单片机课程设计报告—8×8 LED点阵屏显示“大”字第一章设计内容及要求 (3)第二章总体设计 (3)2.1 系统框图.........................................................3、4 2.2 设计步骤 (4)第三章各部分电路设计 (4)3. 1 复位电路………………………………………………4 、5 3.2时钟电路……………………………………………5、 63.3显示电路.........................................................6、7 3. 4大字取模 (7)3.5 LED 引脚连接方式..........................................8、9 3.6总体电路 (9)第四章程序设计 (9)4.1软件流图......................................................9、10 4.2大字的模 (10)4.2主程序......................................................10、11 4.3 C51单片机开发工具:keil 4 Proteus使用方法...11、16 第五章仿真结果 (16)第六章总结与体会................................................17、18 第七章参考文献 (18)附录程序清单……………………………………………19、20基于C51单片机的8×8 LED点阵屏汉字显示一设计要求1、设计一个8*8点阵LED电子显示屏2、要求在目测条件下LED显示屏各点亮度均匀、充足,可静态显示一个大字。
二总体方案设计2.1系统框图根据设计要求与设计方案,硬件电路的设计框图如图1所示。
硬件电路结构由8个部分组成:时钟电路、复位电路、按键接口电路、电源电路、点阵显示阳极电路、点阵显示阴极电路和8*8点阵显示电路。
51单片机控制LED显示汉字
用51单片机控制led显示汉字,电路中行方向由p0口和p2口完成扫描,由于p0口没有上拉电阻,因此接一个4.7k*8的排阻上拉。
如没有排阻,也可用8个普通的4.7k 1/8w电阻。
为提供负载能力,接16个2n5551的NPN三极管驱动。
列方向则由4—16译码器74LS154完成扫描,它由89C51的P1.0---P1.3控制。
同样,驱动部分则是16个2N5401的三极管完成的。
电路的供电为一片LM7805三端稳压器,耗电电流为100ma左右。
采用一块12*20cm的万能电路板,应当选用质量好些的发光管,(否则有坏点现象,更换起来较麻烦)首先将256个发光管插入电路板,注意插入方向,同时使高度一致,行方向直接焊接起来,列方向则搭桥架空焊接,完成后用万用表测试一下如有不亮的更换掉。
然后找一个电脑硬盘的数据线,截取所需的长度,分别将行,列线引出至电路的相关管脚即可。
原理图为了简洁,故只画出了示意图,行列方向只画出了2个三极管,屏幕只画出4个发光管,实际上发光管为256只,三极管行列方向各16只,一共32只。
焊接过程认真仔细一天时间即可完成全部制作。
将程序编译后烧写入89c51, 插入40pin Ic座,即可看到屏幕轮流显示:“倚天一出宝刀屠龙”。
当然,你可将程序的汉字代码部分更换为您所需要的代码即可显示你所需要的汉字。
程序清单:ORG 00HLOOP: MOV A,#0FFH ;开机初始化,清除画面MOV P0,A ;清除P0口ANL P2,#00 ;清除P2口MOV R2,#200D100MS: MOV R3,#250 ;延时100毫秒DJNZ R3,$DJNZ R2,D100MSMOV 20H,#00H ;取码指针的初值l100: MOV R1,#100 ;每个字的停留时间L16: MOV R6,#16 ;每个字16个码MOV R4,#00H ;扫描指针清零MOV R0,20H ;取码指针存入R0L3: MOV A,R4 ;扫描指针存入AMOV P1,A ;扫描输出INC R4 ;扫描指针加1,扫描下一个MOV A,R0 ;取码指针存入AMOV DPTR,#TABLE ;取数据表的上半部分的代码MOVC A,@A+DPTRMOV P0,A ;输出到P0INC R0 ;取码指针加1,取下一个码。
3.3 单片机控制LED点阵显示器显示
5.4.2 控制16×16 LED点阵显示屏的案例
//汉字“术”的16×16点阵的列码 0x7F,0xFF,0x7F,0xFB,0x7F,0xF7,0x7F,0xFF,0x00,0x8 0,0x7F,0xFF,0x3F,0xFE,0x5F,0xFD, 0x5F,0xFB,0x6F,0xF7,0x77,0xE7,0x7B,0x8F,0x7C,0x DF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF, }; void main() {
5.4.2 控制16×16 LED点阵显示屏的案例
单片机控制16×16点阵显示屏显示字符案例。 【例5-8】如图5-14,利用单片机及 74LS154(4-16 译码器)、74LS07、16×16 LED点阵显示屏来实现字符显 示,编写程序,循环显示字符“电子技术”。 图中16×16 LED点阵显示屏16行行线R0~R15电平, 由 P1 口 低 4 位 经 4-16 译 码 器 74HC154 的 16 条 译 码 输 出 线 L0~L15经驱动后的输出来控制。16列列线C0~C15的电平 由P0口和P2口控制。剩下问题是如何确定显示字符的点阵 编码,以及控制好每一屏逐行显示的扫描速度(刷新频 率)。
uchar i,j,n; while(1) {
for( j=0;j<4;j++) //共显示4个汉字 {
5.4.2 控制16×16 LED点阵显示屏的案例
for(n=0;n<40;n++)
//每个汉字整屏扫描40次
{
for(i=0;i<16;i++) {
//逐行扫描16行
out1=i%16;
//输出行码,
LED点阵显示器分为图文显示器和视频显示器,有单色 显示,还有彩色显示。下面仅介绍单片机如何来控制单色 LED点阵显示器的显示。
单片机LED点阵汉字显示应用设计方案
单片机LED点阵汉字显示应用设计方案1.1 引言近几年,LED显示屏的发展非常迅速,大街小巷到处充斥的LED的广告流动字幕。
这与它本身所具有的优点分不开的。
这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
LED显示屏采用了低电压扫描驱动,具有耗电省、使用寿命长、成本低、亮度高、视角大、可视距离远、防水、规格品种多等优点,可以满足各种不同应用场景的需求,发展前景非常广阔,被公认为最具增长潜力也是发展最快的的LED应用市场。
随着北京奥运会、上海世博会、广州亚运会等重大赛会的举办,体育场馆、车站、机场、医院、银行、商业场所、公共广场、居民社区的大面积应用,LED显示屏的市场应用空间不断扩大。
LED显示最早的设计方案为点阵模块方案,由室内伪彩点阵屏发展而来。
它的优势是原材料成本较低,且生产加工工艺简单,质量稳定。
缺点是色彩一致性差,马赛克现象较严重,显示效果较差。
1.2 LED显示屏的特点组合型led点阵显示器以发光二极体为图素,它用高亮度led芯片进行阵列组合后,再透过环氧树脂和塑模封装而成。
具有高亮度、功耗低、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。
点阵显示器有单色和双色两类,可显示红,黄,绿,橙等。
led点阵有4×4、14×8、5×7、5×8、8×8、16×16、24×24、40×40等多种;根据图素的数目分为等,双原色、三原色等,根据图素顏色的不同所显示的文字、图像等内容的顏色也不同,单原色点阵只能显示固定色彩如红、绿、黄等单色,双原色和三原色点阵显示内容的顏色由图素内不同顏色发光二极体点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极体的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。
89S51单片机的16×16点阵汉字显示的设计
• 134•针对LED 点阵显示汉字需要占用单片机多个并行口的问题,提出了基于89S51单片机的16×16点阵汉字显示设计,利用74HC138和74HC595对单片机并行口进行扩展,从硬件设计、软件设计方案等关键环节,分别进行了详细讨论。
随着单片机技术的发展,LED 点阵屏作为文字和图形显示的新型媒体,由于亮度高、耗能低、色彩鲜艳、寿命长等特点,迅速出现在学校、医院、车站等场所。
但LED 点阵显示需要占用单片机多个并行口,而通用移位寄存器74HC595T 和译码器74HC138,可以实现对单片机IO 的扩展,从而节约了大量的并口资源。
本设计详细介绍了74HC138和74HC595芯片在1616×16点阵LED 显示屏的应用。
1 电路总体设计16×16点阵汉字显示电路如图1所示,它由一片16×16点阵LED 显示屏、两片74HC138构成的行控制单元、两片74HC595构成的列控制单元及AT89S51单片机构成。
列控制单元用于输入数据,而行控制单元用于逐行扫描。
图1 系统总体结构1.1 16×16点阵工作原理本设计采用的是共阴16×16点阵显示模块。
它由256只发光二极管按一定规律安装成方阵,从内部结构如图2所示,可以看出,总共有16行和16列,每行的发光二极管阴极相连,每列的发光二极管阳极相连。
在行和列的交叉处有一个发光二极管,要使其中任一个二极管发光,则其对应行为低电位,而对应的列为高电位即可。
1.2 行控制单元行控制单元的控制原理是:先使第一行Y 0为低电平,其余行为高电平,显示第一行数据;然后第二行Y 1为低电平,其余行电平,显示第二行数据。
按照这个规律每行以较快的速度不断进行刷新,由于发光二极管的余辉效应和人的视觉暂留现象两个因素,给人的印象就是一组静态的数据,不会产生闪烁感。
动态显示能够节省I/O 端口,且功耗低。
本设计采用74HC138三位译码器。
单片机控制LED点阵显示屏
LED工作时应合理选定LED的工作电流,LED的正向极限电 流IFm多在50mA左右。实践验证,LED的发光强度仅在一 定范围内与IF成正比,当IF>20mA时,亮度的增强已无法 用肉眼分辨,实际亮度已经没有增加了。因此,LED的工作 电流一般选在10~20mA较为合理。
——兴趣小组活动 第2次 闫晓东
单片机控制LED 点阵显示屏
主要内容— LED点阵显 示 03 动态显示的考虑 05 单片机最小系统
02 LED电路设计 04 电源设计 06 功能设置相关
LED与LED点阵显示 发光二极管简称为LED。由镓(Ga)与砷
1. 点阵原理 点阵内部结构及外形如上,8X8点阵共由64个发 光二极管组成,且每个发光二极管是放置在行线 和列线的交叉点上,当对应的某一行置1电平,某 一列置0电平,则相应的二极管就亮;如要将第一 个点点亮,则9脚接高电平13脚接低电平,则第一 个点就亮了;如果要将第一行点亮,则第9脚要接 高电平,而(13、3、4、10、6、11、15、16) 这些引脚接低电平,那么第一行就会点亮;如要 将第一列点亮,则第13脚接低电平,而(9、14、 8、12、1、7、2、5)接高电平,那么第一列就 会点亮。
一般我们使用点阵显示汉字是用的16*16的点阵宋体字库,所谓16*16,是每一 个汉字在纵、横各16点的区域内显示的。也就是说得用四个8*8点阵组合成一个 16*16的点阵。
如下图所示,要显示“你”则相应的点就要点亮,由于我们的点阵在列线上是低 电平有效,而在行线上是高电平有效,所以要显示“你”字的话,它的位代码信 息要取反,即所有列(13~16脚)送,0xF7,0x7F),而第一行(9脚)送1信 号,然后第一行送0;再送第二行要显示的数据(13~16脚)送,0xF7,0x7F), 而第二行(14脚)送1信号。依此类推,只要每行数据显示时间间隔够短,利用 人眼的视觉暂停作用,这样送16次数据扫描完16行后就会看到一个“你”字;
基于单片机的Led点阵广告牌设计
基于单片机的Led点阵广告牌设计在当今数字化的时代,广告宣传的方式多种多样,而 Led 点阵广告牌以其独特的显示效果、灵活的设计和广泛的应用场景,成为了广告领域的重要组成部分。
基于单片机的 Led 点阵广告牌更是凭借其低成本、高可靠性和易于控制的特点,受到了广泛的关注和应用。
一、Led 点阵广告牌的基本原理Led 点阵广告牌是由多个 Led 灯按照一定的排列方式组成的矩阵。
通过控制每个Led 灯的亮灭状态,可以显示出各种文字、图形和图像。
Led 点阵广告牌通常分为单色、双色和全彩三种类型,其中单色 Led点阵广告牌最为常见,成本也相对较低。
在基于单片机的 Led 点阵广告牌中,单片机作为核心控制器,负责接收外部输入的信息,并根据预设的程序控制 Led 点阵的显示内容。
单片机通过向驱动电路发送控制信号,来实现对每个 Led 灯的精确控制。
二、单片机的选择在设计基于单片机的 Led 点阵广告牌时,单片机的选择至关重要。
常见的单片机有 51 系列、AVR 系列和 STM32 系列等。
51 系列单片机是经典的 8 位单片机,具有成本低、开发简单的优点,但处理能力相对较弱。
AVR 系列单片机具有较高的性能和丰富的功能,适用于对性能要求较高的应用。
STM32 系列单片机是 32 位的单片机,具有强大的处理能力和丰富的外设资源,适用于复杂的系统设计。
对于一般的 Led 点阵广告牌设计,51 系列单片机通常能够满足需求。
例如,STC89C52 单片机具有 8K 的 Flash 存储器和 512 字节的 RAM,能够存储一定规模的显示数据和程序代码。
三、Led 点阵模块Led 点阵模块是组成 Led 点阵广告牌的基本单元。
常见的 Led 点阵模块有 8×8、16×16 和 32×32 等规格。
在选择 Led 点阵模块时,需要考虑显示效果、分辨率和成本等因素。
8×8 的Led 点阵模块结构简单,成本较低,但显示的内容相对较少。
基于单片机的点阵LED显示屏的原理
基于单片机的点阵LED显示屏的原理一、介绍点阵LED显示屏点阵LED(Light Emitting Diode)显示屏是一种用于显示文字、图形和动画的设备。
它由许多小型LED灯组成,可以亮灭来显示不同的信息。
点阵LED显示屏通常是由多行多列的LED灯组成,每个LED灯代表一个像素点。
二、点阵LED显示屏的组成点阵LED显示屏主要由以下部分组成:1.LED灯:点阵LED显示屏的核心,每个LED灯代表一个像素点,可以控制亮灭状态。
2.驱动芯片:用于控制和驱动LED灯的芯片,常用的有常数电流驱动芯片、常数电压驱动芯片、串行驱动芯片等。
3.控制电路:用于接收外部信号,并通过驱动芯片控制LED灯的亮灭状态,常用的控制电路有单片机、独立逻辑门电路等。
4.单片机:也称为微控制器(MCU),主要用于对点阵LED显示屏进行编程控制。
5.电源:为点阵LED显示屏提供工作电压。
三、控制原理点阵LED显示屏的控制原理主要包括以下几个步骤:1.数据输入:通过外部设备(如计算机、传感器等)获取需要显示的数据,并发送给控制电路。
2.数据处理:控制电路接收到数据后,通过单片机进行处理。
单片机根据不同的编程算法,将数据转换为控制信号。
3.信号输出:单片机将控制信号发送给驱动芯片,驱动芯片根据控制信号来控制LED灯的亮灭状态。
4.显示效果:根据驱动芯片的控制,LED灯按照一定的规律亮灭,从而形成文字、图形或动画的显示效果。
四、编程控制编程控制是实现点阵LED显示屏的关键。
单片机通常通过IO口来控制LED灯的亮灭状态,具体控制流程如下:1.设置IO口模式:将单片机的IO口设置为输出模式,以便控制LED 灯的亮灭。
2.设置IO口电平:根据需要控制的LED灯的位置,设置对应IO口的电平,例如高电平表示LED灯亮,低电平表示LED灯灭。
3.控制时序:根据点阵LED显示屏的刷新频率和亮灭规律,通过适当延时控制LED灯的亮灭间隔和持续时间。
4.循环控制:通过循环语句,控制所有需要亮灭的LED灯按照指定的规律进行显示。
51单片机驱动16×16LED点阵显示动画汉字汇编程序
51单片机驱动16×16LED点阵显示动画汉字汇编程序这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.ORG0000HST:MOVA,#0FFH;初始化MOVP1,AMOVP2,AMOVP3,AMOVP0,ACLRA;正文显示CHINESE:MOVDPTR,#TAB1;查表指针指向TAB1LCALLHZ;结束动画SCREE: MOVDPTR,#TAB2;查表指针指向TAB2ACALLDDMOVDPTR,#TAB3;查表指针指向TAB3ACALLDDMOVDPTR,#TAB4;查表指针指向TAB4ACALLDDLJMPCHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD:MOVB,#00HMOVR0,#08H;显示8幅画面AJMPCCCC0:MOVA,BADDA,#20H;指向下一幅画面MOVB,ACC:MOVR7,#08H;画面停留时间MOVR3,BMOV37H,R0LCALLENTERDIS00:LCALLDISPLAYDJNZR7,DIS00MOVR0,37HDJNZR0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ:MOVR3,#00H;查表偏移量MOVR5,#81H;查表128次MOVBACK:MOVR4,#10H;使显示完一个汉字MOVBACK0:MOVR7,#02H;一桢画面显示时间MOVR0,#6DH;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOVR1,#6CH;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOVR2,#10H;内存后移的次数DJNZR5,MOVBACK1RET;显示完该表,返回MOVR0,AMOVA,R3;指向下一字节INCAMOVR3,AMOVA,R3;指向下一字节INCAMOVR3,AMOV30H,R3;保护数据MOV31H,R4MOV32H,R5DISMOV:LCALLDISPLAY;显示当前数据DJNZR7,DISMOVMOVR3,30HMOVR4,31HMOVR5,32HDJNZR4,MOVBACK0MOV30H,R3;保护数据MOV32H,R5MOVR7,#24H;显示当前数据延时DISMOV0:LCALLDISPLAYDJNZR7,DISMOV0MOVR3,30HMOVR5,32HLJMPMOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R3,影响R1,R2,R3ENTER:MOVR1,#50H;从50H单元起把表存入MOVR2,#20H;查表次数MOVA,R3MOVR3,A;将指针修改结果存入R3DJNZR2,CLLOOP_;没查完转CLLOOP_RETMOVR6,#7FH;赋扫描字初值,左移后初值为0FEHMOVR5,#00H;列扫描低8位控制MOVR0,#50H;行的高8(p1)位要显示的数据起始地址MOVR1,#10H;扫描次数CPLA;数据取反以适合显示MOVP0,A;送入行的低8(p0)位要显示的数据INCR0;R0指向下一个高8(p0)位要显示的数据LCALLNE某T;调用列扫描程序LCALLDELAY1MS;显示延时DJNZR1,DISLOOP;一桢显示完返回MOVP3,#0FFH;全灭RET ;列扫描子程序DISLOOP专用NE某T:JNCNE某T1;C=0转扫描高8(p3)位行MOVA,R6;修改扫描字RLAMOVR6,AINCR5CJNER5,#09H,NE某T0;R6=#0FEH时C=0AJMPNE某T1BACK:RETNE某T0:MOVP2,R6;扫描低8(p2)位行AJMPBACKNE某T1:MOVP2,#0FFHMOVP3,R6;扫描高8(p3)位行MOVA,R6;修改扫描字工作方式1;16位方式TR0=1;//启动定时器T0P1=0某3f;//P1端口初值,允许接收,缓存,显示IE=0某87;//允许定时器T0中断IT0=1;IT1=1;PT0=1;while(1){delay(1000);for(i=0;i<32;i++)//显示效果:卷帘出{dipram[i]=Bmp[5][i];huancun[i]=Cmp[5][i];if(i%2)delay(70);}dela y(100);for(i=0;i<6;i++)//显示效果:上滚屏{for(j=0;j<16;j+ +){for(k=0;k<15;k++){huancun[k某BLKN]=huancun[(k+1)某BLKN];huancun[k某BLKN+1]=huancun[(k+1)某BLKN+1];dipram[k某BLKN]=dipram[(k+1)某BLKN];dipram[k某BLKN+1]=dipram[(k+1)某BLKN+1];}huancun[30]=Bmp[i][j某BLKN];huancun[31]=Bmp[i][j某BLKN+1];dipram[30]=Bmp[i][j某BLKN];dipram[31]=Bmp[i][j某BLKN+1];delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果半屏卷帘{dipram[i]=Bmp[5][i];huancun[i]=Cmp[5][i];if(i%2)delay(70);}for( i=0;i<6;i++)//显示效果,左跑马{for(j=0;j<2;j++)for(k=1;k<9;k++){for(l=0;l<16;l++){huancun[l某BLKN]=huancun[l某BLKN]<<1|huancun[l某BLKN+1]>>7;huancun[l某BLKN+1]=huancun[l某BLKN+1]<<1|Cmp[i][l某BLKN+j]>>(8-k);dipram[l某BLKN]=dipram[l某BLKN]<<1|dipram[l某BLKN+1]>>7;dipram[l某BLKN+1]=dipram[l某BLKN+1]<<1|Bmp[i][l某BLKN+j]>>(8-k);}delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果:半屏卷帘{dipram[i]=Bmp[5][i];huancun[i]=Cmp[0][i];if(i%2)delay(70);}for( i=1;i<7;i++)//显示效果:向下滚屏{for(j=16;j>0;j--){for(k=15;k>0;k--){huancun[k某BLKN]=huancun[(k-1)某BLKN];huancun[k某BLKN+1]=huancun[(k-1)某BLKN+1];dipram[k某BLKN]=dipram[(k-1)某BLKN];dipram[k某BLKN+1]=dipram[(k-1)某BLKN+1];}huancun[0]=Bmp[i-1][(j-1)某BLKN];huancun[1]=Bmp[i-1][(j-1)某BLKN+1];dipram[0]=Bmp[i-1][(j-1)某BLKN];dipram[1]=Bmp[i-1][(j-1)某BLKN+1];delay(70);}}delay(1000);for(i=0;i<6;i++)//显示效果,右跑马{for(j=2;j>0;j--)for(k=1;k<9;k++){for(l=0;l<16;l++){/某for(m=0;m<32;m++)//显示效果:卷帘出{dipram[m]=Bmp[5][m];}某/huancun[l某BLKN+1]=huancun[l某BLKN+1]>>1|huancun[l某BLKN]<<7;huancun[l某BLKN]=huancun[l某BLKN]>>1|Bmp[i][l某BLKN+j-1]<KN+1]=dipram[l某BLKN+1]>>1|dipram[l某BLKN]<<7;dipram[l某BLKN]=dipram[l某BLKN]>>1|Bmp[i][l某BLKN+j-1]<+)//显示效果:卷帘入{huancun[i]=0某00;dipram[i]=0某00;if(i%2)delay(70);}}}//延时函数voiddelay(unignedintdt){regiterunignedcharbt;for(;dt;dt--)for(b t=0;bt<255;bt++);}//显示屏扫描(定时器T0中断)函数voidleddiplay(void)interrupt1uing1{regiterunignedchari,j=BLKN;TH 0=0某f8;//设定显示屏刷新率每秒62.5TL0=0某30;i=P1;//读取当前显示的行号i=++i&0某0f;//行号加一,屏蔽高四位do{j--;SBUF=huancun[i某BLKN+j];//送显示数据while(!TI);TI=0;}while(j);j=2;do{j--;SBUF=dipram[i某BLKN+j];//送显示数据while(!TI);TI=0;}while(j);//完成一行数据的发送G=1;//消隐(关闭显示)P1&=0某f0;//行号端口清零RRCLK=1;//显示数据打入输出锁存2022-5-712:10回复肥肠炒饭器P1|=i;//写入行号RRCLK=0;//所存显示数据G=0;//打开显示}3楼voide某ter0(void)interrupt0{//unignedchardatadipram[32];unignedcharcodeDmp[][32]={{0某40,0某00,0某20,0某00,0某FC,0某3F,0某04,0某20,0某04,0某20,0某E4,0某27,0某24,0某24,0某24,0某24, 0某24,0某24,0某24,0某24,0某E4,0某27,0某24,0某24,0某04,0某20,0某04,0某28,0某04,0某10,0某00,0某00},/某\向\ {0某40,0某00,0某40,0某10,0某FE,0某3F,0某40,0某10,0某40,0某08,0某40,0某04,0某FF,0某7F,0某80,0某01, 0某40,0某00,0某30,0某0C,0某2C,0某03,0某E3,0某00,0某20,0某20,0某20,0某20,0某C0,0某3F,0某00,0某00},/某\老\ {0某10,0某00,0某D0,0某7F,0某12,0某04,0某12,0某04,0某D2,0某7F,0某52,0某44,0某52,0某44,0某52,0某44, 0某52,0某44,0某4A,0某44,0某4A,0某54,0某48,0某24,0某04,0某04,0某02,0某04,0某01,0某04,0某00,0某04},/某\师\{0某50,0某00,0某90,0某00,0某88,0某3D,0某88,0某20,0某2C,0某20,0某24,0某20,0某26,0某20,0某25,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某28,0某24,0某10,0某00,0某00},/某\们\ {0某00,0某02,0某FE,0某06,0某08,0某02,0某28,0某02,0某44,0某7F,0某FE,0某11,0某50,0某12,0某10,0某12, 0某FE,0某12,0某10,0某0A,0某10,0某04,0某10,0某04,0某F0,0某0A,0某1E,0某11,0某80,0某60,0某40,0某20},/某\致\ {0某48,0某04,0某48,0某04,0某FF,0某05,0某48,0某04,0某04,0某7E,0某FC,0某22,0某82,0某23,0某81,0某12, 0某BC,0某14,0某A4,0某14,0某A4,0某08,0某BC,0某08,0某80,0某14,0某80,0某72,0某A0,0某21,0某40,0某00},/某\敬\};regiterunignedchari,j,k;delay(1000);for(i=0;i<32;i++)//显示效果:卷帘出{dipram[i]=Dmp[0][i];if(i%2)delay(70);}delay(100);for(i=1;i<6;i++)//显示效果:上滚屏{for(j=0;j<16;j++){for(k=0;k<15;k++){dipram[k某BLKN]=dipram[(k+1)某BLKN];dipram[k某BLKN+1]=dipram[(k+1)某BLKN+1];}dipram[30]=Dmp[i][j某BLKN];dipram[31]=Dmp[i][j某BLKN+1];delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果:卷帘入{dipram[i]=0某00;if(i%2)delay(70);}}voide某ter1(void)interrupt2{unignedcharcodeEmp[][32]={{0某40,0某00,0某40,0某10,0某FE,0某3F,0某40,0某10,0某40,0某08,0某40,0某04,0某FF,0某7F,0某80,0某01, 0某40,0某00,0某30,0某0C,0某2C,0某03,0某E3,0某00,0某20,0某20,0某20,0某20,0某C0,0某3F,0某00,0某00},/某\老\ {0某10,0某00,0某D0,0某7F,0某12,0某04,0某12,0某04,0某D2,0某7F,0某52,0某44,0某52,0某44,0某52,0某44, 0某52,0某44,0某4A,0某44,0某4A,0某54,0某48,0某24,0某04,0某04,0某02,0某04,0某01,0某04,0某00,0某04},/某\师\ {0某50,0某00,0某90,0某00,0某88,0某3D,0某88,0某20,0某2C,0某20,0某24,0某20,0某26,0某20,0某25,0某20, 0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某28,0某24,0某10,0某00,0某00},/某\们\{0某40,0某00,0某80,0某00,0某FE,0某3F,0某00,0某00,0某08,0某08,0某10,0某04,0某20,0某02,0某FF,0某7F, 0某80,0某00,0某80,0某00,0某FE,0某1F,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00},/某\辛\ {0某20,0某04,0某20,0某04,0某FE,0某7F,0某20,0某04,0某A0,0某04,0某80,0某00,0某FF,0某7F,0某80,0某00, 0某80,0某00,0某F8,0某0F,0某08,0某08,0某08,0某08,0某08,0某08,0某F8,0某0F,0某08,0某08,0某00,0某00},/某\苦\ {0某00,0某00,0某FE,0某3F,0某00,0某18,0某00,0某06,0某80,0某01,0某80,0某00,0某80,0某00,0某80,0某00, 0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某A0,0某00,0某40,0某00},/某\了\};regiterunignedchari,j,k;delay(1000);for(i=0;i<32;i++)//显示效果:卷帘出{huancun[i]=Emp[0][i];if(i%2)delay(70);}delay(100);for(i=1;i<6;i++)//显示效果:上滚屏{for(j=0;j<16;j++){for(k=0;k<15;k++){huancun[k某BLKN]=huancun[(k+1)某BLKN];huancun[k某BLKN+1]=huancun[(k+1)某BLKN+1];}huancun[30]=Emp[i][j某BLKN];huancun[31]=Emp[i][j某BLKN+1];delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果:卷帘入{huancun[i]=0某00;if(i%2)delay(70);}}单片机16某16点阵显示你好程序2022年05月10日星期日16:49 //测试硬件:at8951+16某16点阵LED//16某16点阵LED显示中文程序//本程序逐个显示中文,从右至左流动显示//使用横向,流动只有字节间操作//--------------------------------#include#defineSELP3//行选线,P3低四位#defineUP8P0//点阵文字上8行IO#defineDOWN8P2//点阵文字下8行IOunignedcharcodeFontData[5][32]={/某--文字:你--某//某--宋体12;此字体下对应的点阵为:宽某高=16某16--某/0某09,0某00,0某09,0某80,0某11,0某04,0某13,0某FE,0某22,0某04,0某34,0某48,0某68,0某40,0某A2,0某50, 0某23,0某48,0某22,0某48,0某24,0某44,0某24,0某46,0某28,0某44,0某21,0某40,0某20,0某80,0某00,0某00/某--文字:好--某//某--宋体12;此字体下对应的点阵为:宽某高=16某16--某/0某10,0某00,0某11,0某FC,0某10,0某08,0某10,0某10,0某FC,0某20,0某24,0某20,0某24,0某20,0某27,0某FE, 0某44,0某20,0某64,0某20,0某18,0某20,0某08,0某20,0某14,0某20,0某26,0某20,0某44,0某A0,0某80,0某40};voidDelay_50u(unignedchart)//50u延时程序{unignedcharj;for(;t>0;t--)for(j=19;j>0;j--);}voidDiNFont(unignedchar某FontBufferStart,unignedcharN,unignedcharTime)//流动显示N个汉字{//参数三个:字符串字模首地址、字数、显示流动速度unignedcharFontNum,i,j,row;//循环变量,字数计数、16次流动、16列扫描for(FontNum=0;FontNumfor(i=0;i<16;i++)//字到字流动16次左移才能完成{for(j=0;jfor(row=0;row<16;row++)//显示16某16屏幕一次{SEL=row;//选通显示列UP8=某(FontBufferStart+FontNum某32+(i+row)某2+1);//获取显示数据循环显示关键算法DOWN8=某(FontBufferStart+FontNum某32+(i+row)某2);//以移动偏移为基础获取新数据Delay_50u(15);//适当延时UP8=0某00;//关闭显示DOWN8=0某00;//关闭显示防止花屏}}}}}voidmain(void){while(1){DiNFont(FontData[0],5,20);}求16某16点阵C程序悬赏分:200-解决时间:2022-11-918:17P1口接154做列扫描P0P2直接接点阵高分求一c程序谢谢~!问题补充:谢谢了·!还可以继续追分就没有人能帮帮我吗哪怕是给我点提示也好是单片机的C程序提问者:milegh-三级最佳答案/某某某某某某某某某某某某某某某点阵字模工具编程辅助效果示例某某某某某某某某某某某某某某某//某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某该示例中的字模数组均由“点阵字模工具”生成,你可以用你自己需要的点阵信息来替换示例中的字模信息,注意字模大小要一致,否则显示会出问题。
单片机点阵显示的原理
单片机点阵显示的原理
单片机点阵显示是一种使用单片机控制LED点阵模块显示图形、字符、数字等内容的技术。
其基本原理如下:
1. 点阵模块:点阵模块是由一组LED灯组成的矩阵,每个
LED灯都可以独立控制。
常见的点阵模块有8x8、16x16等不
同大小。
2. 接口电路:单片机与点阵模块之间需要通过接口电路进行连接。
接口电路包含输出与输入端,用于将单片机的控制信号传递给点阵模块,并将点阵模块的状态传递回单片机。
3. 数据传输:单片机通过接口电路向点阵模块传输要显示的数据。
通常使用串行通信协议(如SPI、I2C)或并行通信协议(如8080、6800等)进行数据传输。
4. 驱动方式:点阵模块的驱动方式主要有静态驱动和动态驱动两种。
静态驱动是指单片机直接控制每个LED灯的亮灭状态。
动态驱动是指通过单片机逐行或逐列扫描控制,使得LED灯
在人眼中呈现稳定的亮度。
5. 刷新频率:点阵模块的刷新频率决定了显示内容的稳定性和流畅性。
常见的刷新频率为50Hz或以上,即每秒刷新50次
以上。
6. 显示内容:单片机可以根据需求将要显示的内容存储在内部存储器中,然后通过点阵模块进行显示。
单片机可以根据输入
信号、内部计算结果或外部触发信号来实时更新显示内容。
7. 控制算法:单片机需要通过一定的控制算法来驱动点阵模块显示。
常见的控制算法有逐行扫描、逐列扫描、多路复用等。
通过以上原理,单片机可以通过控制LED点阵模块的亮灭状态来显示图形、字符、数字等内容,实现各种视觉效果。
单片机8031基于单片机的LED点阵显示
单片机8031基于单片机的LED点阵显示在当今的电子技术领域,单片机的应用无处不在,而基于单片机的LED 点阵显示更是一项引人注目的技术。
本文将重点探讨以单片机8031 为核心的 LED 点阵显示系统。
单片机 8031 是一款经典的 8 位单片机,虽然在如今众多高性能单片机中它可能显得有些“古老”,但在一些特定的应用场景中,其简单易用、成本低廉等特点仍然使其具有一定的价值。
LED 点阵是由多个发光二极管按照一定的排列方式组成的显示模块。
常见的有 8×8、16×16 等规格。
通过控制这些发光二极管的亮灭,可以显示出各种文字、图形和图像。
在基于单片机 8031 的 LED 点阵显示系统中,首先需要解决的是硬件电路的设计。
硬件电路主要包括单片机最小系统、LED 点阵驱动电路以及电源电路等部分。
单片机最小系统是整个系统的核心,它包括单片机 8031 芯片、时钟电路和复位电路。
时钟电路为单片机提供工作所需的时钟信号,确保其能够按照预定的节奏运行。
复位电路则用于在系统出现异常时将单片机恢复到初始状态。
LED 点阵驱动电路的作用是将单片机输出的信号进行放大和转换,以驱动LED 点阵正常工作。
由于LED 点阵需要较大的电流才能点亮,所以驱动电路通常采用三极管或者专门的驱动芯片来实现。
电源电路则为整个系统提供稳定的电源供应。
一般来说,单片机8031 工作在 5V 电压下,而 LED 点阵的驱动电压则根据其类型和规格有所不同,可能需要更高的电压。
在软件设计方面,主要任务是编写控制程序,实现对 LED 点阵的显示控制。
程序的编写通常使用汇编语言或者 C 语言。
以显示一个简单的字符为例,首先需要将字符转换为对应的点阵数据。
比如要显示字母“A”,就需要将其对应的 8×8 点阵数据存储在程序的数组中。
然后,通过单片机的 I/O 口将这些数据依次输出到驱动电路,从而控制 LED 点阵的亮灭,显示出字符“A”。
单片机课程设计---16×16点阵式汉字显示
目录摘要 (1)Abstract (2)1设计原理 (3)1.1 MCS-51单片机的结构及编程方法 (3)1.2 16*16点阵LED原理 (5)1.3 3-8译码器原理 (6)2.设计方案介绍 (7)2.1 设计总体思路 (7)2.2 与题目相关的具体设计 (7)2.3程序设计流程图 (8)3.源程序,原理图和仿真图 (9)3.1程序清单(见附录) (9)3.2电路图 (9)3.2.1电路原理图 (9)3.2.2电路图分析 (9)3.3仿真图 (10)4性能分析 (11)5.总结和心得 (12)6.参考文献 (13)附录:程序代码 (14)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机AbstractAs a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system etc. This paper introduces a kind of simple 16x16 LED display screen design process based on MCS-51 single chip minicomputer . The detail hardware scheme, software flow and assemble language programmer design and so on is followed. The display part can be cascaded to meet the need. The practice proves the design is low-cost and effective.Key words: MCS-51;LED;MCU1设计原理1.1 MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。
在线系统编程单片机控制LED点阵显示文字图形
路 。在线编程控制单片机硬件可作 为独立模块带其它单元电路 ,L D点阵屏显示驱动控制 电路可以扩 E
展 。4 软件 模块 化 。软 件使 用子 程序 模块 化 编写 ,方 便 调 用 。可 以 根 据不 同显示 要 求 由子 程 序 调用 相 ) 应 显示 字表 和 图表程 序 即可 实现 。
0 引言
当前 ,控 制 L D点 阵显示 文 字 图形 主要 有 3种 控 制方 法 :单 片机控 制 、F G E P A控 制 、专用 集 成 电路 控制 。而单 片机 以其 体积 小 、重量 轻 、抗 干扰 能力 强 ,对 环境要 求 不高 ,价 格 低廉 ,可 靠性 高 ,灵活性
好 ,开发较为容易等优点 ,受到广大工程技术人员的青睐 ,所以现在市场上主要是单片机控制装置。然
On Co t o l g LED tie t s l y Ch r c e & Gr p n r ln i La t o Dip a a a t r c ah 、 h On i e S n l ・ h p P o r mm i g t l i g e c i r g a n n
维普资讯
第2 3卷 第 1期
20 0 7年 1 月
昆明冶金 高等专科学校学报
Jun lo n n tl ryC l g o ra fKu migMeal g ol e u e
Vo . No 1 123 .
Jn2 0 a .0 7
在 线 系统 编 程 单片 机 控 制 L D点 阵显 示 文 字 图形 E
而 ,由于常见 单 片机控 制装 置 不是 价格 较 高 ,就是 结 构复 杂 ,而又 不 能 在 线 编程 控 制 ,使 用 时 不 方便 , 所 以笔者 以在 线编 程控 制单 片机为 控制 核 心 ,提 出 了解 决 问题 的思 路 与方法 ,并 成 功完 成硬 件 到软件 的 设计 ,研 制 出一套 新装 置 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文基于单片机(AT89C51)讲述了16×16 LED汉字点阵显示的基本原理、硬件组成与设计、程序编译与下载等基本环节和相关技术。
2 硬件电路组成及工作原理本产品拟采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HC154)、16×16 LED点阵5部分组成,如图1所示。
其中,AT89C51是一种带4 kB闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1 000次写/擦循环,数据保留时间为10年。
他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此,在智能化电子设计与制作过程中经常用到AT89C51芯片。
时钟电路由AT89C51的18,19脚的时钟端(XTALl及XTAL2)以及12 MHz晶振X1、电容C2,C3组成,采用片内振荡方式。
复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51的RST复位输入端。
LED点阵显示屏采用16×16共256个象素的点阵,通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布,如图2所示。
我们把行列总线接在单片机的IO口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。
但是若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条IO口,这样会造成IO资源的耗尽,系统也再无扩充的余地。
因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4-16线译码器74HC154来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO 资源,为单片机系统扩充使用功能提供了条件。
考虑到P0口必需设置上拉电阻,我们采用4.7 kΩ排电阻作为上拉电阻。
汉字扫描显示的基本过程是这样的:通电后由于电阻R1,电容C1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P2接口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4接口输出列选扫描信号(低电平驱动),从而选中相应的象素LCD发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
3 汉字的点阵显示原理及字库代码获取方法
我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。
如查用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分,如图3所示。
为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。
汉字可拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
本例通过列扫描方法首先显示左上角的第一列的上半部分,即第0列的P00~P07口,方向为P00到P07,显示汉字“大”时,P05点亮,由上往下排列,为:P0.0灭,P0.1灭,P0.2灭P0.3灭,P0.4灭,P0.5亮,P0.6灭,P0.7灭。
即二进制00000100,转换为十六进制为04h。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从P27向P20方向扫描,从图3可以看到,这一列全部为不亮,即为00000000,十六进制则为00h。
依照这个方法转向第二列、第三列,…,直至第十六列的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。
上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情。
为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可,如图4所示。
可见,汉字点阵显示一般有点扫描、行扫描和列扫描3种。
为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64=1 024 Hz,周期小于1 ms即可。
行扫描和列扫描方法的扫描频率必须大于16×8=128 Hz,周期小于7.8 ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
4 元器件选择
本设计所需元器件如表1所示。
5 PCB设计与元件装配
本作品采用通用的Protel 99SE板级EDA软件完成PCB图的设计,详细设计过程略。
考虑到本设计用到的元件数量不多,我们基本采用单面布线策略,只使用了少量的顶层跨接导线,以便于业余设计制作。
已设计好的PCB图见图5所示。
本电路对元件参数没有苛刻要求,只要元器件选择正确,无损坏,电路板制作工艺良好,把所有电子元件正确焊接装配后即可进入程序下载和调试工作阶段。
制作与调试时,在
AT89C2051的位置应安装20脚的IC座,以便使单片机可以从电路板中拿下去烧写程序。
6 程序设计、烧录与调试
软件程序主要由开始、初始化、主程序、字库组成。
其中主程序和子程序的流程图如图6和图7所示。
下面的程序能够用来实现“为中华之崛起而学习”等汉字的显示。
程序清单如下:
在完成编写程序的编译和仿真之后,准备一台可以烧写AT89C51的编程器并与电脑主机硬件连接后即可对AT89C51芯片进行程序烧录下载,然后,将烧录好程序的AT89C51单片机装入到40脚的IC座上,通电即可调试和运行,由于本例电路对元件参数的要求不是很高,只要元件较好,参数基本符合要求,焊接装配后即可正常工作。
7。