Proteus仿真1616LED点阵显示汉字.docx
1616点阵汉字显示设计

单片机原理及接口技术设计报告设计的重点和难点重点和难点一、单片机I/O口或以扩展锁存器的方式控制点阵显示。
单片机I/O口和扩展锁存器相结合的方式控制16×16点阵显示汉字。
I/O口分别提供字形代码(列码)、扫描信号(行码),凡字形代码位为“1”、行扫描信号为“1”点亮该点,否则熄灭;通过逐行扫描循环点亮字形或曲线。
二、单片机与16×16点阵块之间接口电路设计及编程。
16×16点阵块共阳的接法:把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起。
点阵显示汉字的编程需要查表指令,也就是MOVC A,@A+DPTR指令,DPTR作为基址寄存器时,其值为16位。
编写查表程序时,首先把字模的首址送入DPTR中,再将要查找的数据序号送入A中,然后就可以使用该指令进行查表操作,并将结果送累加器A中。
使点阵显示器显示“绥化学院”四个字。
三、LED点阵显示系统显示汉字的取模。
一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
首先显示的是左上角的第一列的上半部分,亮的点为“1”,不亮的点为“0”由上往下排列组成了8位二进制数,将其转换为16进制。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,仍设计成由上往下扫描。
然后单片机转向上半部第二列。
这一列完成后继续进行下半部分的扫描。
依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出32个16进制数就是汉字字模。
2.设计工作原理16×16点阵显示的工作原理要显示文字或图形,控制与组成这些文字或图形的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。
16×16点阵LED汉字动态显示

a f g e d c h b
实验说明:
a a a a a a a a
a
h b
bitsel(0) bitsel(7)
segment[7..0]
bitout[7..0]
16×16点阵LED汉字动态显示
4学时 学时 实验内容: 实验内容: 点阵LED动态显示自己的名字 用16×16点阵 × 点阵 动态显示自己的名字
第1行,第1列 行 列
16×16点阵显示 × 点阵显示
第1行,第16列 行 列
r0-r3
第16行,第1列 行 列
第16行,第16列 行 列
点阵LED显示器的每一行发光管的阳极接在一起作为 显示器的每一行发光管的阳极接在一起作为 点阵 数据线D,每一列发光管的阴极接在一起作为列线B, 数据线 ,每一列发光管的阴极接在一起作为列线 , 因此,要使某一点亮, 因此,要使某一点亮,就必须让该点所在的行线为高 电平,同时让该点所在的列线为低电平。 电平,同时让该点所在的列线为低电平。 实验板上点阵的各行可分别控制, 实验板上点阵的各行可分别控制, 用16个行控制信号 个行控制信号 来控制16行,使用4个列控制信号来控制 列,实验 来控制 行 使用 个列控制信号来控制16列 个列控制信号来控制 板上已经提供了一个4- 译码器 因此只使用4 译码器, 板上已经提供了一个 -16译码器,因此只使用 个信号即可控制点阵的16列 个信号即可控制点阵的 列。由于不是一个控制信号 控制一个点阵点, 控制一个点阵点,因此需要将需将欲显示的字一列一 列的显示。 列的显示。 若列控制信号r0-r3等于 “0000”,则经过 -16 例:若列控制信号 等于 ,则经过4- 译 码器后,点阵的第一列会等于‘0’。此时若同时16 码器后,点阵的第一列会等于‘ 。此时若同时 行中的某些行为‘ ,则对应的点阵会亮。 行中的某些行为‘1’,则对应的点阵会亮。
16x16点阵LED滚动显示汉字

#include <iom8515v.h>#include <macros.h>/*RCS2--->PC0CCS1--->PC1CCS2--->PC2RCS1--->PC3'=1*/#define RCS1_1 PORTC |= BIT(PORTC3>#define RCS2_1 PORTC |= BIT(PORTC0>#define CCS1_1 PORTC |= BIT(PORTC1>#define CCS2_1 PORTC |= BIT(PORTC2>#define RCS1_0 PORTC &=~BIT(PORTC3>#define RCS2_0 PORTC &=~BIT(PORTC0>#define CCS1_0 PORTC &=~BIT(PORTC1>#define CCS2_0 PORTC &=~BIT(PORTC2>#define DOTLEDPORT PORTAunsigned int RollCount=0。
unsigned int SecondCount=0。
unsigned char SecondFlag=0。
const unsigned char DOTLEDBIT[]={0xfe ,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,}。
unsigned char ScanDOTLEDCount=0。
unsigned char DOTLEDBuffer[32]。
#pragma interrupt_handler timer1_ovf_isr:7void timer1_ovf_isr(void>{TCNT1H = 0xFE。
TCNT1L = 0x0C。
//点阵LED扫描过程if(ScanDOTLEDCount<8>{DOTLEDPORT=DOTLEDBIT[ScanDOTLEDCount%8]。
单片机的16X16LED点阵式汉字电子显示屏的

单片机的16X16LED点阵式汉字电子显示屏的武汉理工大学《单片机课程设计》实验报告学号:0121018700318课程设计题目4个8x8点阵LED电子显示屏的设计学院物流学院专业物流工程班级物流ZY1001姓名宋金龙指导教师朱宏辉2013 年 6 月25 日武汉理工大学《单片机课程设计》报告武汉理工大学《单片机课程设计》实验报告摘要本设计是基于MCS-51的16x16点阵LED电子显示屏的设计,16x16的点阵共有256个发光二极管,我们采用动态扫描的显示方法,更节省锁存器也就节省了成本。
扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(即我们采用共阳极的接法)。
采用扫描方式进行显示时,每一行和每一列都有一个行驱动器和列驱动器,各行的同名列和各列的同名行共用一个驱动器。
我们采用四个74LS273锁存器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
编写点阵显示程序,利用proteus画出电路原理图并装入程序仿真调试,仿真成功后完成电路焊接并装入程序完成实物设计。
整个设计过程让我们学到许多实践知识!LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息,由点阵LED组成的汉字显示屏在工工程所应用非常广泛。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。
本文设计的是一个室内用16x16的点阵LED图文显示屏,图形或文字显示有静止、移入移出等显示方式。
本设计是基于MCS-51单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
16×16LED点阵汉字分批显示器的Proteus软件仿真

O引言Proteus是目前最先进、最完整的多种型号微处理器系统的仿真设计平台,由ISIS和ARES两个构成,其中ISIS是一款智能电路原理图输入系统软件,可作为电子系统仿真平台,ARES是一款高级布线编辑软件,用于制作PCB印制电路板。
开发者可以在无硬件条件下直接使用Pro-teus进行电路设计和仿真调试,真正实现了在计算机中完成电路原理图设计、电路分析与仿真、系统测试到形成印制电路板的完整电子设计、研发过程。
因此,本课题利用AT89C5l单片机作为主控制器,采用Proteus软件实现对16×16LED点阵汉字的分批显示.仿真运行通过后再进行点阵显示电路制作,大大缩减实际开发周期,节约了开发成本。
1硬件电路设计在很多LED显示的场合,需要实现一系列LED点阵汉字的分批显示,为简化设计,每批只显示2个汉字,分若干次完成全部显示。
利用ProteusISIS平台画出的硬件电路如图l所示。
该硬件电路的核心是利用单片机读取显示字型码,通过驱动电路对16×16共阴极LED点阵进行动态列扫描,以实现点阵汉字的分批显示。
设计选用的单片机为Atrnel公司的AT89C51,它是一种低功耗,高性能CMOS8位单片机,片内含4KB可反复擦写的FLASHROM,采用Atmel公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及8051引脚结构,内置看门狗电路。
功能强大的AT89C5l可为许多嵌入式控制应用系统提供高性价比的解决方案。
时钟电路用于产生单片机工作时所必需的时钟信号,其中晶振频率为12MHz。
上电复位电路可保证单片机的在程序运行出错或操作错误使系统处于死锁状态时,重启运行。
显示单元是LED汉字显示屏,由2片16×16LED点阵模块组成。
但由于Proteus软件目前版本中还没有16×16点阵模块,设计中采用Pro-teus软件中的4个8×8点阵模块组合成1个16×16点阵模块。
16×16点阵LED显示汉字

以下程序在16×16点阵LED上依次显示“梅川酷子”四个字,分别用正向显示和反向显示,间隔两秒钟变换一次,电路图和效果图下图所示。
AT89 c52晶振频率为24MHz,用T0定时,改变变量flag值,从而让程序确定显示哪个汉字和显示方式(正向or反向)。
#include <atmel\regx52.h>或者#include <reg51.h>#define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag;/*flag变量MSB 7 6 5 4 3 2 1 0 LSB× ××Bit5=1,Bit4=0 时,负向显示Bit5=0,Bit4=1 时,负向显示Bit[2..0]74HC138的片选信号*/int8 n;int8 code table[][32]={{0x88,0x00,0x88,0x00,0x88,0x7F,0x48,0x00,0xDF,0x1F,0xA8,0x10,0x9C,0x1 2,0xAC,0x14,0xEA,0x7F,0x8A,0x12,0x89,0x14,0x88,0x10,0x88,0x7F,0x08,0x 10,0x08,0x14,0x08,0x08},/*"梅",0*/{0x08,0x20,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x2 1,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x04,0x 21,0x04,0x20,0x02,0x00},/*"川",1*/{0x00,0x08,0xFE,0x08,0x28,0x0A,0x28,0x7E,0xFE,0x0A,0xAA,0x09,0xAA,0xF F,0xEA,0x00,0x86,0x00,0x82,0x7E,0xFE,0x42,0x82,0x42,0x82,0x42,0xFE,0x 7E,0x82,0x42,0x00,0x00},/*"酷",2*/{0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x0 1,0x00,0x41,0xFE,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x 01,0x40,0x01,0x80,0x00}/*"子",3*/};void delay(void);void main(void){int8 i;int8 j;int8 index;flag=0x10;n=0;//定时器T0初始化TMOD=0x01;TH0=0xb1;TL0=0xe0;ET0=1;EA=1;TR0=1;while(1){index=flag&0x03;if((flag&0x30)==0x10){ //正向显示for(i=0;i<8;i++){ //显示上半屏P0=table[index][2*i];//左上P2=i|0x08;delay();P0=table[index][2*i+1];//右上P2=i|0x10;delay();}for(i=8;i<16;i++){ //显示下半屏P0=table[index][2*i];//左下P2=(i-8)|0x20;delay();P0=table[index][2*i+1];//右下P2=(i-8)|0x40;delay();}}if((flag&0x30)==0x20){ //反向显示for(i=0;i<8;i++){P0=~(table[index][2*i]);//左上P2=i|0x08;delay();P0=~(table[index][2*i+1]);//右上P2=i|0x10;delay();}for(i=8;i<16;i++){P0=~(table[index][2*i]);//左下P2=(i-8)|0x20;delay();P0=~(table[index][2*i+1]);//右下P2=(i-8)|0x40;delay();}}}}void delay(void){int16 i;for(i=0;i<50;i++);}void timer0() interrupt 1 using 3{TF0=0;TH0=0xb1;TL0=0xe0;//10ms中断一次if(n<200){n++;}else{ //2秒改变一次switch(flag){case 0x10:{flag=0x11;//下次显示正向“川”break;}case 0x11:{flag=0x12;//下次显示正向“酷”break;}case 0x12:{flag=0x13;//下次显示正向“子”break;}case 0x13:{flag=0x20;//下次显示负向“川”break;}case 0x20:{flag=0x21;//下次显示负向“梅”break;}case 0x21:{flag=0x22;//下次显示负向“酷”break;}case 0x22:{flag=0x23;//下次显示负向“子”break;}case 0x23:{flag=0x10;//下次显示正向“梅”break;}}n=0;}}。
电子综合设计-16X16汉字点阵显示设计

电子综合设计方案题目:16*16点阵汉字显示屏显示设计年级专业:电气学生姓名:2011年12 月10 日第一章课题简介1.1 LED显示简介LED显示屏:它是一种通过控制半导体发光二极管的显示方式,其大概的样子就是由很多个通常是红色的发光二极管组成,靠灯的亮灭来显示字符。
用来显示文字、图形等各种信息的显示屏幕。
LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券所、运动场馆、交通干道及各种室内/外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。
单片机控制系统程序采用单片机汇编语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
所显示字符的点阵数据可以自行编写,也可从标准字库中提取。
第二章课题系统整体方案2.1 需要实现的功能本设计是一16×16点阵LED电子显示屏的设计。
整机以40脚单片机AT89C51为核心,通过该芯片控制列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字。
显示可以采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
开关控制显示“矿大电气五班”、“电子综合设计”的字幕。
同时还要实现的功能:5V的电压输入,时钟电路的设置,复位电路的设置,单片机给74HC154芯片同时给E1和E2低电平,74LS154才能正常的工作。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y,16*16LED 点阵如图2.1.1所示。
图 2.1.116X16点阵LED 工作原理说明 : 16X16点阵共需要256个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
16-16点阵LED显示汉字汇编语言

LED16X16点阵显示课程设计报告学院专业班级学生姓名指导老师二0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。
二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED点阵显示。
要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。
三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。
该电路可静态显示1个16*16位的汉字,也可循环显示。
1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。
可由程序来改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。
其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。
3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例.利用Proteus仿真一块16×16LED点阵,并在其上循环显示汉字“郑州大学”。
Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。
下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵,用于本例的显示任务。
首先,从Proteus元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。
此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面8个引脚是其行线,右边8个引脚是其列线(当然,如果你是将右转,则右边8个引脚是行线)。
然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行16个LED,列线也相同。
并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。
连接好的16×16点阵如下图所示:
连接成如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。
组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢,如下图所示:
我们可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。
然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如下图所示:
可以看到,原来杂乱的连线现在已经几乎全部隐藏了,一块16×16的LED点阵做成了。
需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。
然后,我们将其保存,以便以后使用。
制作好16×16LED点阵,我们接下来来进行本例的实验。
由于本例的软件程序需要首先注意硬件连接,所以,我们首先来看一下本例的电路图。
电路图中用到了74159集成芯片,其效用是将4位输入译为16输出(低电平有效),刚好满足我们的要求。
电路图中的其他元器件我们在以前的仿真实例中都已介绍过,此处不再赘述。
最终完成的电路图如下所示:
绘制好电路图,下面我们来编辑程序源文件,如下图:
编辑好源文件,我们就可以编译、链接并产生源代码了,生成源代码以后,打开我们刚才在Proteus中绘制好的电路图,并将生成的源代码装入单片机进行仿真。
仿真中的一个画面如上面的电路图所示。
也可能你的画面和上图中的不同,可能会有红绿小点闪烁,事实上那是Proteus中实时显示的电平信号。
我们可以在“System”菜单下点击“Set Animation Options...”子菜单来打开“Animated Circuits Configuration”对话框,然后将“Animation Options”选项下面的“Show Logic State of Pins?”复选框去掉选中来改变设置。
如下图所示:
改变设置以后,重新仿真运行,是否就看到了和上图中一致的效果了
知识改变命运。