PROTEUS16X16点阵制作教程详解版
- 格式:doc
- 大小:709.00 KB
- 文档页数:14
【新提醒】Proteus制作16x16点阵详细教程大家有没有只做过点阵模块呢,对于喜欢动手的小伙伴们来说制作前仿真一下很有必要,但是Proteus中只有5×7,8×8的,如果想要16*16或者16*32的怎么办?是不是你们会说用几块8*8的连接在一起,连接在一起是可以额,但是整体效果差,这里呢,本人经过参考相关的资料和反复练习制作了一个整体16*16的教程供大家一起学习交流,由于时间仓促本人能力有限希望大家指出来不足之处。
在教程中我使用的是Proteus8.6版本Proteus制作 16x16点阵教程设置栅格距离为50th。
打开Proteus软件选择“View”,鼠标点击’Snap 50th F2’选择一个8*8点阵的元器件。
在版面里面点击“P”打开元器件库,并在”keywores”框中输入“matrix”,之后在出现的元器件里面任意选择一个8*8点阵拖拉至面板中。
分解8*8点阵并移走背景板将光标移动到点阵上点阵随之变为“压进去”状点击鼠标右键选择”Decompose”进行分解分解后如下图所示,点阵右边出现 “NAME=MATRIX-8×8-BLUE”的字样光标移动到点阵的边缘(一定是边缘)边缘出现暗红色影印点击鼠标右键选择“拖动对象”(Drag Object),将背景板子移动到一旁。
选择二维图形模式。
鼠标单击最右边功能框状的图标,LEDMATRIX_B_0_0中LEDMATRIX是点阵的名字,“B”代表BLUE,0-0代表着点阵的第一行“关闭”的意思,如LEDMATRIX_B_6_1,代表了第七行“打开的意思”,而LEDMATRIX_B_C代表了背景板对角线放点阵的点。
选择逻辑为“1”的亮点呈对角线状放置,之后鼠标分别移动到放置的点上鼠标右键点击Decompose进行逐个分解,在面板上代表着“位置”,鼠标右键点击它,点击“Drag Object”将代表位置的移动至点阵“位置”同一水平线的位置给添加逻辑为1的红点进行定义。
自制LED点阵器件(9X9)版本V0.9 日期:2010-04-23 系统自带的8X8LED点阵很多时候不能满足仿真要求,为此自行制作16X16LED点阵,经测试效果良好。
Step01:为了方便讲述选系统自带的器件“MATRIX-8X8-RED”基础上进行修改,也可以自己用图形工具绘制,已经验证通过。
Step02:分解器件“MATRIX-8X8-RED”以得到相关符号。
Step03:点击,2D Graphics Symbols Mode,在符号库中将看到用到的相关符号。
Step04:制作新的符号,为了方便讲述在原来符号基础上修改,放置“LEDMATRIX_R_7_0”、“LEDMATRIX_R_7_1”,分别对应点阵显示时暗态、亮态的样式Step05:分解符号“LEDMATRIX_R_7_0”、“LEDMATRIX_R_7_1”,以得到相关的图形,注意观察坐标原点位置Step06:复制这两个图形符号,以方便制作新的符号Step07:向下拖动这两个符号Step08:分别选择暗态、亮态的图形,包含上方原点,生成新的符号,名称规则与原来的一致Step09:符号库里显示新增了两个符号Step10:修改原图形变成“MATRIX-9X9-RED”的样式,上端右侧引脚“9”,下端右侧“I”、属性与原来的引脚属性保持一致Step11:编辑元件的脚本,描述类的可根据自己的需要修改,注意观察修改的部分{*DEVICE}NAME=MATRIX-9X9-RED{ACTIVE=LEDMATRIX_R,9,BITWISE,DLL} {HELP=DISPLAYS>POPUP,1}{*PROPDEFS}{MODDLL="VSM Model",READONLY STRING} {PRIMITIVE="Primitive Type",HIDDEN STRING} {INVERT="INVERT",HIDDEN STRING} {PACKAGE=PCB Package,HIDDEN PACKAGE} {TTRIGMIN="Minimum Trigger Time",FLOAT,PNZ} {*INDEX}{CAT=Optoelectronics}{SUBCAT=Dot Matrix Displays}{DESC=9x9 Red LED Dot Matrix Display}{*COMPONENT}{MODDLL=LEDMPX}{PRIMITIVE=DIGITAL,LEDMPX}{INVERT=A,B,C,D,E,F,G,H,I}{TTRIGMIN=1ms}Step11:选择图形元素以及脚本语句,制作元件,选择Next,直到OKStep12:元件库里显示新生成的元件Step13:测试一下自己的成果注:16X16的点阵制作过程类似,符号名称需修改短一些。
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点阵模块。
//proteus仿真论坛:#include <AT89X52.H>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define BLKN 2 /*列存贮器数,表示8*8led组合的行数*/sbit E1 =P3^4; //74HC154(18)-E1 为0开列(col)输出显示允许控制信号端口sbit ST_CP =P3^2; //74HC595(12)-ST_CP 上升沿--移位寄存器的数据进入数据存储寄存器输出锁存器的时钟信号端口sbit MR =P3^3; //74HC595(10)-MR 为0将移位寄存器的数据清0void delay(unsigned int); //延时函数uchar data dispram[32]; //显示缓存uchar code bmp[][32]={ //字模表//{//0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" " //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//},{0x00,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",2*/},{0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",3*/},{0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00,/*"机",4*/},{0x40,0x00,0x20,0x00,0x10,0x00,0xEC,0x7F,0x07,0x40,0x0A,0x20,0x08,0x18,0x08,0x06,0xF9,0x01,0x8A,0x10,0x8E,0x20,0x88,0x40,0x88,0x20,0xCC,0x1F,0x88,0x00,0x00,0x00,/*"仿",5*/},{0x00,0x10,0x04,0x90,0x04,0x90,0x04,0x50,0xF4,0x5F,0x54,0x35,0x5C,0x15,0x57,0x15,0x54,0x15,0x54,0x35,0x54,0x55,0xF4,0x5F,0x04,0x90,0x06,0x90,0x04,0x10,0x00,0x00,/*"真",6*/} };void main( ){uchar num,cur,tmp,nums=sizeof(bmp)/32;//num:当前显示的文字块指针//cur:当前文字块的断码指针(bmp)//tmp:临时变量//nums:总文字块数SCON = 0x00; //串口工作模式0;移位寄存器方式TMOD = 0x01; //定时器T0工作方式1:16位方式TR0 = 1; //T1P1 = 0x3f; //IE = 0x82; //中断允许设置while (1){delay(1000); //2种效果之间的停顿// for(tmp=0;tmp<1;tmp++) //让卷动效果只显示一次{//delay(2000); //延时2s 一条标语滚动一次前的延时时间delay(100);for(num=0;num<nums;num++){for(cur=0;cur<32;cur++) //显示效果:卷帘出{dispram[cur]=bmp[num][cur];if((cur % 2)==1)delay(100);}delay(100);}}delay(1000); //2种效果之间的停顿// for(tmp=0;tmp<1;tmp++) //让卷动效果只显示一次{//delay(2000); //延时2s 一条标语滚动一次前的延时时间delay(100);for(num=0;num<nums;num++){for(cur=31;cur<0xff;cur--)//显示效果:卷帘入当cur为0时,再循环一次就为0xff{dispram[cur]=bmp[num][cur];if((cur % 2)==0)delay(100);}delay(100);}}}}///////延时函数void delay(uint dt){uchar bt;for(;dt;dt--)for(bt=0;bt<255;bt++);}//////////显示屏扫描(定时器T0中断)函数void leddisplay(void) interrupt 1 using 1{static uchar col=0;TH0 = 0xF8; //设定显示屏刷新率62.5帧/STL0 = 0x30;MR=0; //清理行输出,将移位寄存器的数据清0 MR=1;SBUF = dispram[col*2]; //送显示数据while(TI==0); //等待发送完毕T1 = 0;SBUF = dispram[col*2+1]; //送显示数据while(TI==0); //等待发送完毕T1 = 0;E1 = 1; //消隐(关闭显示)P1 = 0xF0; //行号端口清0 多余2行,但是去掉后不行P1 = 0xF0; //行号端口清0E1 = 0; //打开显示ST_CP =1; //显示数据打入输出锁存器ST_CP = 0; //锁存显示数据P1 = col; //写入行号col=(col+1)%16;}。
16×16LED点阵汉字分批显示器的Proteus软件仿真O引言Proteus是目前最先进、最完整的多种型号微处理器系统的仿真设计平台,由ISIS和ARES两个构成,其中ISIS是一款智能电路原理1硬件电路设计在很多LED显示的场合,需要实现一系列LED点阵汉字的分批显示,为简化设计,每批只显示2个汉字,分若干次完成全部显示。
利用ProteusISIS 平台画出的硬件电路如该硬件电路的核心是利用单片机读取显示字型码,通过驱动电路对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点阵模块。
点阵汉字的阳极驱动是由单片机的PO口和P2口各自经过一片输出缓冲器74LS273向4个8乘以8LED点阵输出字型码作为行驱动信号;点阵的阴极驱动由P1.0~P1.3 经过4-16线译码器74HCl54译码后输出列选信号,对4个8乘以8点阵进行列扫描,从而控制LED点阵的相应像素点亮。
2个LED点阵汉字中的列选信。
精品文档用74LS154设计的16x16点阵屏一、实验内容本设计采用4个8×8LED点阵构成16×16的LED点阵显示器,以STC89C52单片机为核心,控制显示器移动显示任意字符及部分自定义图案,显示器通过74HC138位驱动,74HC595移位寄存器为段驱动使其可以移动显示出动态画面,达到动态显示的效果。
二、实验原理本系统采用AT89C52单片机作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。
为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。
而在PC机上编辑汉字和字符显示信息,并将其转换为相应的点阵显示数据,然后通过串口(采用RS-232通信标准)送给单片机存储并进行显示处理。
本系统由AT89C52构成单片机最小应用系统.同时配有11.0592 MHz晶振和按键复位电路等。
三、16x64点阵显示器的设计图2是一种8x8的LED点阵单色行共阳模块的内部结构图,其单点工作电压Uf为1.8 V,正向电流IF为8~10 mA。
当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。
用四个8x8点阵显示可构成16x16点阵显示器,其连接方法如图3所示。
图中,将(A)和(B)的8列、(C)和(D)的8列分别对应相连,同时将(A)和(C)的8行、(B)和(D)的8行分别对应相连。
即可形成一个16行(每一行有16个LED)、16列(每一列也有16个LED)的16x16点阵显示器,可将这256个点称为一页,这样,显示字符时。
只要对一页中对应的亮灭进行控制即可。
精品文档.精品文档精品文档.精品文档点阵显示器的扫描驱动1.LED驱动通常分为动态扫描型显示屏驱动电路的设计应与所用控制系统相配合。
LED及静态锁存型驱动二大类。
本文以动态扫描型驱动电路的设计为例来进行分析。
目录第一章系统设计总述 (1)1.1 设计要求 (1)1.2 要求分析 (1)第二章系统设计原理 (2)第三章系统子程序设计 (3)3.1 32进制计数器设计 (3)3.2 16进制计数器设计 (4)3.3 列驱动设计 (5)3.4 行驱动设计 (6)第四章原理图仿真波形 (25)第五章设计小结 (26)参考文献 (27)SOPC/EDA综合课程设计报告―16×16点阵显示控制第一章系统设计总述1.1 设计要求使用FPGA设计一个16×16的点阵显示的控制器,使点阵显示器以两种花样显示“江西理工大学应用科学学院欢迎您!”1.2 要求分析根据设计要求可以分析出:点阵显示的花样有静态显示一个汉字,一屏一屏的显示汉字还有滚动显示汉字,还可以用亮着的灯显示汉字或者用暗着的灯显示汉字。
根据以上的分析,本实验采用如下两种花样显示:第一种花样是用亮着的灯组合所要显示的字,第二种方案是用暗着的灯组成所需要的字。
两种花样都是用一屏一屏的显示方法。
图1-1 方案一示例图1-2 方案二示例第二章系统设计原理16×16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。
本实验就是要通过CPLD 芯片产生读时序,将字形从寄存器中读出,然后产生写时序,写入16×16的点阵,使其扫描显示输出。
为了显示整个汉字,首先分布好汉字的排列,以行给汉字信息;然后以128HZ 的时序逐个点亮每一行,即每行逐一加高电平,根据人眼的视觉残留特性,使之形成整个汉字的显示。
LED点阵每个点都有一个红色的发光二极管。
点阵内的二极管间的连接都是行共阳,列共阴。
本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。
实验报告实验名称: [16X16点阵显示实验]姓名:学号:指导教师:实验时间: [2013年6月15日]信息与通信工程学院16X16点阵显示实验1、实验要求:理解并掌握点阵显示符号的原理,理解原有程序,会使用动态扫描的方式使点阵显示汉字,明白点阵滚动显示的原理。
根据原有程序,掌握LPM_ROM的应用,会应用LPM_ROM存储需要显示的内容。
参照液晶显示程序,编写16*16点阵显示程序。
任务一:实现点阵列扫描。
点亮点阵的一列,并让其不断的向右移动。
任务二:在点阵上循环滚动显示“嵌入式系统设计”。
2、实验原理:2.1点阵基本原理本实验对点阵的扫描使用列扫描的方式。
就是将要显示的数据分成16列,在某一时刻只选中一列,并向点阵传送该列需要显示的数据,那么如果从左往右依次循环选中所有列,并且循环的速度足够快,因为视觉停留效应,我们就能看到完整的显示了。
如果要显示大于16列的信息,比如要显示多个汉字,由于只能同时显示16列,那么就需要在一个比较慢的时钟的指挥下,不断更新要显示的连续的16列数据,使用这样的方法就能实现滚动显示。
2.2任务原理8*8LED点阵共由64个发光二极管组成,每个发光二极管放置在行线和列线的交叉点上,当对应的某一行高电平(置1),且某一列低电平(置0),则相应的发光二极管就亮;因此要用8*8LED点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。
当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。
假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。
16×16扫描LED点阵的工作原理同8位扫描数码管类似。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。
PROTEUS16*16点阵(元件)制作
首先,新建一个工程,保存,并在PROTEUS元件库里找到一个8X8点阵
点击右键,选择Decompose(元件分解)
这时元件旁边出现了一个“原点”和“NAME=…”的内容,说明元件已经进入可编辑状态
双击“NAME…”字段,可以打开元件的脚本文件,里面包含元件的诸多定义,不要随便修改
接下来,将鼠标指向点阵边缘位置,鼠标变成“手形”,点击右键,即可“Drag Objecet”拖动点阵的发光背景板
接下来,点击工具栏“”,就可以看到很多标记符号,这些符号是用来代表LED点阵每个点的状态的,即每个点有两个状态,例如LEDMATRIX_G_0_0表示第一行灯灭的状态,LEDMATRIX_G_1_1表示第二行灯亮的状态
随意点击一个,然后在电路设计区再点一下,就会出现一个亮点或者是暗点
然后单击右键,选择“Decompose”
这时小点上方便会出现一个“”然后将小点和“原点”一起拖拽到下图的状态:
我们便会知道这个点是第几行的点,本例中这个点就是LEDMA TRIX_G_1_1了,知道了这一点,下面的工作便会很简单,比如我想产生一个第11行的点,就在上图的基础上将小点拖拽到第11行的位置,如下图情况
记住,在此过程中,我们要将所有的原点都托至同一水平线,如上图,对于8X8的点阵来说,已经有了第8行了,所以要做一个16X16的点阵,我们需要产生的是9—16行的点的状态符号,在上图中任意选择一个点以及其上的原点(一定不能掉哦),然后右键选择“Make
symble”(如下图)
在“symble name”栏里面我们要填和左边“”栏里面一样的格式的状态符号,比如是
第11行我们就填
咦?最后的状态信息“1”怎么输入不进去,原来每个状态表示符号都有规定的最大长度,于是为了保证统一,我们只有将所有的状态表示符号再重新定义一遍了,没办法,下点功夫吧,这时我们要选取所有的点并将其删除(如下图)
之后我们就可以在左边随意选取一个点作为蓝本,以复制,粘贴的方式,将每一行的亮点暗点重新做一遍,这个时候我们就可以缩短标识符号了,例如
记住,每一行都要定义两个点,点击“OK”之后,栏里面会出现我们自己定义的表示
符号,定义完所有的标识符号(包括背景板)以后
下面,我们要对引脚进行扩展,复制,粘贴,改引脚名
下面的引脚也一样
完成之后,我们选择每一行的暗点标记,将一行的暗点打满(如下图)
等打点完成之后扩展背景板尺寸即可(由于时间有限这里就不做完整演示,本人之前已试验
成功)
到此处工作已经做的差不多了,不过还有几个要点,修改脚本文件以下几处
修改完成之后:
之后选择所有组件
右键选择“make device”,点击next,修改元件名,直到Ok ,最后在元件库里面就会
有我们自己制作的元件了
不过在这里,还有一个小点给大家提示一下
修改网格的大小(元件移动的最小距离)
由于笔者水平有限作出的教程也不可能面面俱到,欢迎大家前来交流探讨Email:834589429@
DEC,21ST,2010。