16×16LED点阵汉字分批显示器的Proteus软件仿真
- 格式:docx
- 大小:13.18 KB
- 文档页数:3
16x16点阵显示汉字并移动原理与源程序(简单)周渴望南阳理工学院QQ418084696本次设计中首先在做了8x8点阵汉子显示基础之上做的,其实点阵原理很简单,就像数码管动态显示一样简单,只要你分清楚行控制,与列控制,某段时间某列可以点亮,哪几行亮,动态扫描一个循环自然组成不同的图像。
这里取模方式是先最左边的一列选通,然后控制控制两个74ls164分别点亮16行中的几行,然后是从左向右第二列依次下去,形成动态扫描。
本文程序非常简单,虽然没注释,认真看几十分钟就全明白了,说白了,数码管动态显示一回事(呵呵其实我自己做的时候下了不少功夫建议先做8x8)。
源程序:#include <reg52.h> unsigned char i;sbit DATA1=P3^7;sbit DATA2=P3^5;sbit CLCK1=P3^6;sbit CLCK2=P3^4;#define uchar unsigned char #define uint unsigned int void shuru_1();unsigned char num,k,temp1,temp2,zuo=0;unsigned int timecount;unsigned char code lie[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, };/*74hc154显示代码从左到右16列依次选通*/unsigned char code hang[288]={0x00,0x00,0x00,0x00,0x1F,0xF8,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0xFF,0 xFE,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1F,0xF9,0x00,0x01,0x00,0x0F,0x00,0x00,/*"电",0*/0x01,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x02,0x41,0x01,0x47,0xFE,0x 45,0x00,0x49,0x00,0x51,0x00,0x61,0x00,0x41,0x00,0x01,0x00,0x01,0x00,0x00,0x00,/*"子",1*/ 0x00,0x00,0x00,0x42,0x44,0x44,0x4C,0xC8,0x54,0xD0,0x65,0x42,0x45,0x41,0x46,0x7E,0 x84,0x40,0x88,0x40,0x90,0x50,0x81,0x48,0x80,0xC4,0x00,0x62,0x00,0x00,0x00,0x00,/*"系",2*/0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x11,0x22,0x31,0x22,0x51,0x22,0x91,0x22,0x1 1,0x22,0x11,0x22,0x11,0x22,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"自",3*/ 0x02,0x08,0x22,0x3C,0x23,0xC8,0x22,0x08,0x22,0x28,0x22,0x1D,0x02,0x02,0x08,0x0C,0 x08,0x70,0xFF,0x80,0x08,0x02,0x08,0x01,0x08,0x02,0x0F,0xFC,0x00,0x00,0x00,0x00,/*"动",4*/0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x00,0x00,0x20,0x00,0x40,0x00,0x80,0x FF,0xFC,0x02,0x02,0x04,0x02,0x08,0x02,0x10,0x02,0x20,0x02,0x00,0x1E,0x00,0x00,/*"化",5*/ 0x00,0x08,0x00,0x08,0x1F,0xC8,0x92,0x48,0x52,0x48,0x32,0x48,0x12,0x48,0x1F,0xFF,0x 12,0x48,0x32,0x48,0x52,0x48,0x92,0x48,0x1F,0xC8,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",6*/ 0x00,0x00,0x00,0x01,0x00,0x06,0x7F,0xF8,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x0 4,0x40,0xFC,0x40,0x04,0x7F,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,/*"片",7*/ 0x08,0x20,0x08,0xC0,0x0B,0x00,0xFF,0xFF,0x09,0x00,0x08,0xC1,0x00,0x06,0x7F,0xF8,0 x40,0x00,0x40,0x00,0x40,0x00,0x7F,0xFC,0x00,0x02,0x00,0x02,0x00,0x1E,0x00,0x00,/*"机",8*/};void shuru_1() /*74ls164进行输入数据*/{uchar t;for(t=0;t<8;t++){temp1<<=1;DATA1=CY;CLCK1=1;CLCK1=0;}}{uchar t;for(t=0;t<8;t++){temp2<<=1;DATA2=CY;CLCK2=1;CLCK2=0;}}void main(void){TMOD=0x01;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TR0=1;ET0=1;EA=1;while(1);}void serve_led()interrupt 1 using 0 /*定时中断显示*/{ k=2;TH0=(65536-2000)/256;TL0=(65536-2000)%256;P2=0xff;P2 = lie[num];temp1=hang[num*2+zuo]; /*num*2表示第一个74ls164只去第偶数个字节,跟我的取模方式有关*/shuru_1();P2 = lie[num];temp2=hang[zuo+(num*2+1)]; /*num*2+1表示第二个74ls164只去第奇数个字节,最左第一列16个不控制先发送第一个74ls164字节在发送第二个的字节*/ shuru_2();num++;if(num==16){num=0;}timecount++;if(timecount==100){ num=0;timecount=0;zuo=zuo+2; /*向后扫描加一列实现移动这里每次加二是因为要跳过第二个74ls164的代码前面已经说了取模方式是最左一列16个从上到下取得*/ if(zuo==272){zuo=0;}}}14年8月。
南昌大学实验报告学生姓名:刘玉奔学号:6103413018专业班级:生物医学工程141班实验类型:□验证□综合□设计□创新实验日期:2016.10.11实验成绩:一、实验项目名称16LED花样显示,Protues环境二、实验目的1:以便熟练掌握汇编语言,2:以便学习使用I/O口操作,3:以便熟练使用开发软件三、实验基本原理protues软件的16个花样灯连线图:如图所示:由P0,P2口的输出控制16个灯的点亮情况。
四、主要仪器设备及耗材开发软件:protues7,keil Uvision4五、实验步骤六、实验数据及处理结果用keil编写的实验程序如下://设计者:刘玉奔//设计时间:2016.10.13//设计内容:花样点亮16盏灯//设计要求:基于C语言,把存放在程序存储器中的数据存储类型定义为‘code’。
//备注:设计内容与“花样点亮16灯”一样//修改日期:2016.10.15,数组内容用','隔开,分行也要;delay200ms头文件调用,仿真效果更佳#include<STC15.H> // stc15系列单片机头文件#include<INTRINS.H>#include<delay200ms.h>#define uchar unsigned char#define uint unsigned int/*数据内容代码*/uchar code date[20]={0xff,0x00,0xff,//全灭,全亮,后面的0xff在于清零,不做效果0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,//从左至右流水亮0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff};//从右至左流水亮/*主函数*/void main(){ uchar i,j;while(1){ for(i=0;i<3;i++)//16LED全灭,全亮{ if(i<2){P0=date[i];P2=date[i];delay200ms();}else {P0=0xff;P2=0xff;}//这里为了减少灭的时间长带来的不好效果,单独列出来}for(j=3;j<12;j++) //两个for循环实现1到16盏灯流水点亮{ if(j<11){P0=date[j];delay200ms();}else P0=date[j];}for(j=3;j<12;j++){ if(j<11){P2=date[j];delay200ms();}else P2=date[j];}for(j=12;j<20;j++)//从16到1盏灯流水点亮{ if(j<19){P2=date[j];delay200ms();}else P2=date[j];}P0=0x7f;//承上启下的效果,衔接更好delay200ms();for(j=12;j<20;j++){ if(j<19){P0=date[j];delay200ms();}else P0=date[j];}}}七、思考讨论题或体会或对改进实验的建议此次试验内容相对来说比较容易实现,因为可以根据自己的要求来设计花样灯。
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)控制。
#include <reg52.h>#define uchar unsigned charuchar i,k=15;sbit xsi=P2^0;sbit xrck=P2^1;sbit xsck=P2^2;sbit ysi=P2^3;sbit yrck=P2^4;sbit ysck=P2^5;uchar code zbm[][32]={{0x20,0x00,0x20,0x80,0x20,0x80,0xAE,0x5F,0xAA,0x40,0xAA,0x20,0xAA,0x10,0xBF,0x0E,0xAA,0x10,0xAA,0x20,0xAA,0x40,0xAE,0xDF,0x20,0x40,0x20,0x00,0x20,0x00,0x00,0x00},/*"贵",0*/{0x00,0x00,0xFE,0xFF,0x02,0x04,0x22,0x08,0x5A,0x04,0x86,0x03,0x00,0x00,0xFE,0x3F,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"阳",1*/{0x40,0x00,0x30,0x02,0x10,0x02,0x12,0x02,0x5C,0x02,0x54,0x02,0x50,0x42,0x51,0x82,0x5E,0x7F,0xD4,0x02,0x50,0x02,0x18,0x02,0x57,0x02,0x32,0x02,0x10,0x02,0x00,0x00},/*"学",2*/{0xFE,0xFF,0x02,0x00,0x32,0x02,0x4A,0x04,0x86,0x83,0x0C,0x41,0x24,0x31,0x24,0x0F,0x25,0x01,0x26,0x01,0x24,0x7F,0x24,0x81,0x24,0x81,0x0C,0x81,0x04,0xF1,0x00,0x00},/*"院",3*/{0x00,0x00,0x00,0x00,0xF8,0x0F,0x48,0x04,0x48,0x04,0x48,0x04,0x48,0x04,0xFF,0x3F,0x48,0x44,0x48,0x44,0x48,0x44,0x48,0x44,0xF8,0x4F,0x00,0x40,0x00,0x70,0x00,0x00},/*"电",0*/{0x00,0x01,0x00,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x41,0x02,0x81,0xE2,0x7F,0x12,0x01,0x0A,0x01,0x06,0x01,0x02,0x01,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x00},/*"子",1*/{0x80,0x00,0x40,0x00,0x30,0x00,0xFC,0x7F,0x07,0x00,0x0A,0x00,0xA8,0x7E,0xA8,0x22,0xA9,0x22,0xAE,0x22,0xAA,0x22,0xA8,0x22,0xA8,0x7E,0x08,0x00,0x08,0x00,0x00,0x00},/*"信",2*/{0x00,0x00,0x00,0x20,0x00,0x38,0xFC,0x01,0x54,0x3D,0x54,0x41,0x56,0x41,0x55,0x45,0x54,0x59,0x54,0x41,0x54,0x41,0xFC,0x71,0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00},/*"息",3*/{0x10,0x00,0x10,0x00,0xFF,0x7F,0x10,0x00,0x10,0x00,0x10,0x43,0xC8,0x20,0x08,0x18,0x08,0x07,0xFF,0x00,0x08,0x20,0x08,0x40,0xF8,0x3F,0x80,0x00,0x00,0x03,0x00,0x00},/*"协",4*/{0x80,0x00,0x40,0x00,0x40,0x42,0x20,0xE2,0x50,0x52,0x48,0x4A,0x44,0x46,0x43,0x62,0x44,0x22,0x48,0x22,0x50,0x2A,0x20,0xF2,0x60,0x62,0xC0,0x00,0x40,0x00,0x00,0x00},/*"会",5*/{0x14,0x20,0x24,0x10,0x44,0x4C,0x84,0x43,0x64,0x43,0x1C,0x2C,0x20,0x20,0x18,0x10,0x0F,0x0C,0xE8,0x03,0x08,0x06,0x08,0x18,0x28,0x30,0x18,0x60,0x08,0x20,0x00,0x00},/*"欢",6*/{0x40,0x40,0x41,0x20,0xCE,0x1F,0x04,0x20,0x00,0x40,0xFC,0x47,0x04,0x42,0x02,0x41,0x02,0x40,0xFC,0x5F,0x04,0x40,0x04,0x42,0x04,0x44,0xFC,0x43,0x00,0x40,0x00,0x00},/*"迎",7*/{0x80,0x00,0x40,0x00,0xF0,0x7F,0x2C,0x00,0x43,0x10,0x20,0x0C,0x98,0x03,0x0F,0x21,0x0A,0x40,0xE8,0x3F,0x08,0x00,0x88,0x00,0x28,0x03,0x1C,0x1C,0x08,0x08,0x00,0x00},/*"你",8*/{0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",9*/};void ys (uchar a)//延时{uchar b;for (;a>0;a--)for (b=100;b>0;b--);}void yfs()//Y轴发数{ysck=0;yrck=0;k++;if (k==16){k=0;ysi=0;}elseysi=1;ysck=1;xrck=1;yrck=1;}void fs(uchar a) //X轴发数{uchar b;xsck=0;xrck=0;for (b=0;b<8;b++){a=a<<1;//xsi=CY;xsi=a&0x80;xsck=1;xsck=0;}}void gdhs(uchar *zz,uchar N,uchar Time) //流动显示N个汉字滚动函数{ //参数三个:字符串字模首地址、字数、显示流动速度uchar FontNum,i,j,row; //循环变量,字数计数、16次流动、16列扫描for(FontNum=0;FontNum<N;FontNum++){for(i=0;i<16;i++) //字到字流动16次左移才能完成{for(j=0;j<Time;j++) //显示延迟,决定流动速度{k=15;for(row=0;row<16;row++) //显示16*16屏幕一次{yfs(); //选通显示列//行选线,P3 低四位fs (*(zz+FontNum*32+(i+row)*2+1)); //以移动偏移为基础获取新数据fs(*(zz+FontNum*32+(i+row)*2)); //获取显示数据循环显示关键算法ys (12); //适当延时}}}}}void main (){while (1){gdhs(*zbm,10,3);}}。
16*16点阵显示实验报告一、实验目的(1)学习点阵显示字符的基本原理。
(2)掌握用数控分频控制速度,实现点阵扫描的基本方式。
(3)会使用Quartus II软件中的Verilog HDL语言实现点真的行列循环显示。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可通过编写Verilog HDL语言,实现点阵的行列交替扫描。
先是行扫描,扫描间隔为1s,16行都扫描完之后开始列扫描,扫描间隔仍然为1s,16列扫描完之后,行继续扫描,依次循环。
2.点阵基本知识16*16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。
LED点阵每个点都有一个红色的发光二极管。
点阵内的二极管间的连接都是行共阳,列共阴。
本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。
3.系统工作原理本系统用了两个模块,其中dianzhen.v是顶层文件,而hangsaomiao.v和liesaomiao.v是两个子模块,总体的系统功能框图如图3.3.1所示。
图3.3.1 系统功能图示通过流程图可以看到,体统是先将试验箱的50MHz时钟信号分频为1s,因为要实现16*16的点阵扫描,所以用一个16s的计时器计时,每经过16s行扫描与列扫描的状态转换一次,通过点阵显示出来。
4.模块化程序设计(1)点阵显示顶层程序设计module dianzhen (clk50mhz,row,sel0,sel1,sel2,sel3,line);input clk50mhz; //实验箱提供50MHz时钟信号output sel0,sel1,sel2,sel3; //设置引脚选通点阵output reg [15:0] row; //行output reg [3:0] line; //列wire [15:0] row1,row2;wire [3:0] line1,line2;reg [24:0] cnt=0; //1Hz计数子reg [4:0] cnt1=0; //16s计数子assign sel0=1'b0;assign sel1=1'b1;assign sel2=1'b0;assign sel3=1'b0;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0; //1Hz计时器cnt1<=cnt1+1; //16s计时器endelsecnt<=cnt+1;endhangsaomiao u1(.clk50mhz(clk50mhz),.row(row1),.line(line1)); liesaomiao u2(.clk50mhz(clk50mhz),.row(row2),.line(line2));always@(*)if(cnt1<=5'd15)beginrow<=row1; //行扫描line<=line1;endelsebeginrow<=row2; //列扫描line<=line2;endendmodule(2)行扫描模块hangsaomiao.v程序设计module hangsaomiao(clk50mhz,line,row);input clk50mhz; //实验箱输入50MHz时钟信号output reg [15:0] row; //列output reg [3:0] line; //行reg [24:0] cnt1,cnt2; //计数子reg clkrow,clkline; //行脉冲、列脉冲always@(posedge clk50mhz)beginif(cnt1>=25'd5*******)begincnt1<=25'b0;clkrow=~clkrow; //1s列脉冲endelsecnt1<=cnt1+1;endalways@(posedge clk50mhz)beginif(cnt2>=25'd500)begincnt2<=25'b0;clkline=~clkline; //50KHz行脉冲endelsecnt2<=cnt2+1;endalways@(posedge clkline)begincase(line)4'd0:line<=4'd1; //高速行扫描4'd1:line<=4'd2;4'd2:line<=4'd3;4'd3:line<=4'd4;4'd4:line<=4'd5;4'd5:line<=4'd6;4'd6:line<=4'd7;4'd7:line<=4'd8;4'd8:line<=4'd9;4'd9:line<=4'd10;4'd10:line<=4'd11;4'd11:line<=4'd12;4'd12:line<=4'd13;4'd13:line<=4'd14;4'd14:line<=4'd15;4'd15:line<=4'd0;default:line<=4'd0;endcaseendalways@(posedge clkrow) //时间间隔为1s的列扫描begincase(row)16'b0000000000000001: row<=16'b0000000000000010;16'b0000000000000010: row<=16'b0000000000000100;16'b0000000000000100: row<=16'b0000000000001000;16'b0000000000001000: row<=16'b0000000000010000;16'b0000000000010000: row<=16'b0000000000100000;16'b0000000000100000: row<=16'b0000000001000000;16'b0000000001000000: row<=16'b0000000010000000;16'b0000000010000000: row<=16'b0000000100000000;16'b0000000100000000: row<=16'b0000001000000000;16'b0000001000000000: row<=16'b0000010000000000;16'b0000010000000000: row<=16'b0000100000000000;16'b0000100000000000: row<=16'b0001000000000000;16'b0001000000000000: row<=16'b0010000000000000;16'b0010000000000000: row<=16'b0100000000000000;16'b0100000000000000: row<=16'b1000000000000000;16'b1000000000000000: row<=16'b0000000000000001;default : row<=16'b0000000000000001;endcaseendendmodule(3)列扫描模块liesaomiao.v程序设计module liesaomiao(clk50mhz,row,line);input clk50mhz; //实验箱输入50MHz 时钟信号output reg [15:0] row; //行output reg [3:0] line; //列reg [24:0] cnt; //计数子reg clk;always@(posedge clk50mhz)beginif(cnt>=25'd5*******)begincnt<=25'b0;clk=~clk; //1sendelsecnt<=cnt+1;endalways @ (posedge clk) //列扫描begincase(line)4'h0:begin row=16'b1111111111111111;line<=4'h1; end4'h1:begin row=16'b1111111111111111;line<=4'h2; end4'h2:begin row=16'b1111111111111111;line<=4'h3; end4'h3:begin row=16'b1111111111111111;line<=4'h4; end4'h4:begin row=16'b1111111111111111;line<=4'h5; end4'h5:begin row=16'b1111111111111111;line<=4'h6; end4'h6:begin row=16'b1111111111111111;line<=4'h7; end4'h7:begin row=16'b1111111111111111;line<=4'h8; end4'h8:begin row=16'b1111111111111111;line<=4'h9; end4'h9:begin row=16'b1111111111111111;line<=4'ha; end4'ha:begin row=16'b1111111111111111;line<=4'hb; end4'hb:begin row=16'b1111111111111111;line<=4'hc; end4'hc:begin row=16'b1111111111111111;line<=4'hd; end4'hd:begin row=16'b1111111111111111;line<=4'he; end4'he:begin row=16'b1111111111111111;line<=4'hf; end4'hf:begin row=16'b1111111111111111;line<=4'h0; enddefault:line<=4'h0;endcaseendendmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2、sel3四个使能端选通点阵,EP2C8Q208C8就会工作在给点阵下命令的状态,并用line和row分别作为点阵的行、列选通端,最终使得点阵正常工作,如图3.5.1所示。
LED点阵动态显示系统设计及仿真吕建波【摘要】The 16×16 light emitting diode (LED) dot-matrix dynamic display system based on AT89C51 MCU was designed, and the principle of LED dot-matrix dynamic display and the method of picking up Chinese character model were presented. The row driver circuit and the column driver circuit were designed by using Proteus software, and main program and display driver program were designed by using Keil software. Finally, the LED dot-matrix dynamic display system was simulated by Proteus software. The simulation results indicate that the system can reduce the development cost and improve the efficiency, and obtain the favorable display effects.%设计了一种基于AT89C51单片机的16×16 LED点阵动态显示系统,给出了LED点阵动态显示原理和汉字取模方法;在Proteus环境下进行了点阵显示系统行、列驱动电路硬件设计,同时采用Keil软件完成了系统主程序、显示驱动程序的设计;最后进行了系统Proteus仿真,降低了成本,提高了开发效率,并获得了良好的显示效果.【期刊名称】《现代电子技术》【年(卷),期】2012(035)017【总页数】3页(P154-156)【关键词】LED点阵;动态显示;取模;Proteus仿真;驱动电路【作者】吕建波【作者单位】西安文理学院物理与机械电子工程学院,陕西西安 710065【正文语种】中文【中图分类】TN911.7-34;TP2730 引言近年来,随着微电子、光电子技术以及计算机的迅速发展,LED电子显示屏形成了一种广泛应用的信息传播媒体,它是由发光二极管构成的显示点阵,LED电子显示屏亮度高、工作电压低、功耗小、性能稳定、易于控制、可视距离远、价格低廉、寿命长,通过修改控制程序可灵活变化显示方式,现已广泛应用于公共场所进行信息传播[1]。
点阵式LED滚动汉字显示屏的Proteus仿真设计
钟蔚;袁臣虎;林志贵;李现国
【期刊名称】《微计算机信息》
【年(卷),期】2008(24)17
【摘要】利用嵌入式系统软硬件设计仿真平台Proteus对点阵式LED滚动汉字显示屏进行仿真设计,完成了系统的硬件电路设计和软件编程,并进行了仿真调试,实现了汉字在点阵式LED显示屏上的滚动显示,达到了仿真设计的目的.
【总页数】3页(P106-107,79)
【作者】钟蔚;袁臣虎;林志贵;李现国
【作者单位】300160,天津工业大学;300160,天津工业大学;300160,天津工业大学;300160,天津工业大学
【正文语种】中文
【中图分类】TP312
【相关文献】
1.点阵式汉字电子显示屏的设计制作 [J], 赵娟;高正明;李艳丽
2.LED分批汉字显示屏的Proteus仿真设计 [J], 李萍
3.点阵式LED显示屏温湿度采集驱动电路设计 [J], 任鹏宇;刘文科
4.点阵式LED汉字显示屏的总体方案设计与分析 [J], 薛小红
5.点阵式LED汉字显示屏的总体方案设计与分析 [J], 薛小红
因版权原因,仅展示原文概要,查看原文内容请购买。
#include <reg52.h>#define uchar unsigned charuchar i,k=15;sbit xsi=P2^0;sbit xrck=P2^1;sbit xsck=P2^2;sbit ysi=P2^3;sbit yrck=P2^4;sbit ysck=P2^5;uchar code zbm[][32]={{0x20,0x00,0x20,0x80,0x20,0x80,0xAE,0x5F,0xAA,0x40,0xAA,0x20,0xAA,0x10,0xBF,0x0E,0xAA,0x10,0xAA,0x20,0xAA,0x40,0xAE,0xDF,0x20,0x40,0x20,0x00,0x20,0x00,0x00,0x00},/*"贵",0*/{0x00,0x00,0xFE,0xFF,0x02,0x04,0x22,0x08,0x5A,0x04,0x86,0x03,0x00,0x00,0xFE,0x3F,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0x42,0x10,0xFE,0x3F,0x00,0x00,0x00,0x00},/*"阳",1*/{0x40,0x00,0x30,0x02,0x10,0x02,0x12,0x02,0x5C,0x02,0x54,0x02,0x50,0x42,0x51,0x82,0x5E,0x7F,0xD4,0x02,0x50,0x02,0x18,0x02,0x57,0x02,0x32,0x02,0x10,0x02,0x00,0x00},/*"学",2*/{0xFE,0xFF,0x02,0x00,0x32,0x02,0x4A,0x04,0x86,0x83,0x0C,0x41,0x24,0x31,0x24,0x0F,0x25,0x01,0x26,0x01,0x24,0x7F,0x24,0x81,0x24,0x81,0x0C,0x81,0x04,0xF1,0x00,0x00},/*"院",3*/{0x00,0x00,0x00,0x00,0xF8,0x0F,0x48,0x04,0x48,0x04,0x48,0x04,0x48,0x04,0xFF,0x3F,0x48,0x44,0x48,0x44,0x48,0x44,0x48,0x44,0xF8,0x4F,0x00,0x40,0x00,0x70,0x00,0x00},/*"电",0*/{0x00,0x01,0x00,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x41,0x02,0x81,0xE2,0x7F,0x12,0x01,0x0A,0x01,0x06,0x01,0x02,0x01,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x00},/*"子",1*/{0x80,0x00,0x40,0x00,0x30,0x00,0xFC,0x7F,0x07,0x00,0x0A,0x00,0xA8,0x7E,0xA8,0x22,0xA9,0x22,0xAE,0x22,0xAA,0x22,0xA8,0x22,0xA8,0x7E,0x08,0x00,0x08,0x00,0x00,0x00},/*"信",2*/{0x00,0x00,0x00,0x20,0x00,0x38,0xFC,0x01,0x54,0x3D,0x54,0x41,0x56,0x41,0x55,0x45,0x54,0x59,0x54,0x41,0x54,0x41,0xFC,0x71,0x00,0x00,0x00,0x08,0x00,0x30,0x00,0x00},/*"息",3*/{0x10,0x00,0x10,0x00,0xFF,0x7F,0x10,0x00,0x10,0x00,0x10,0x43,0xC8,0x20,0x08,0x18,0x08,0x07,0xFF,0x00,0x08,0x20,0x08,0x40,0xF8,0x3F,0x80,0x00,0x00,0x03,0x00,0x00},/*"协",4*/{0x80,0x00,0x40,0x00,0x40,0x42,0x20,0xE2,0x50,0x52,0x48,0x4A,0x44,0x46,0x43,0x62,0x44,0x22,0x48,0x22,0x50,0x2A,0x20,0xF2,0x60,0x62,0xC0,0x00,0x40,0x00,0x00,0x00},/*"会",5*/{0x14,0x20,0x24,0x10,0x44,0x4C,0x84,0x43,0x64,0x43,0x1C,0x2C,0x20,0x20,0x18,0x10,0x0F,0x0C,0xE8,0x03,0x08,0x06,0x08,0x18,0x28,0x30,0x18,0x60,0x08,0x20,0x00,0x00},/*"欢",6*/{0x40,0x40,0x41,0x20,0xCE,0x1F,0x04,0x20,0x00,0x40,0xFC,0x47,0x04,0x42,0x02,0x41,0x02,0x40,0xFC,0x5F,0x04,0x40,0x04,0x42,0x04,0x44,0xFC,0x43,0x00,0x40,0x00,0x00},/*"迎",7*/{0x80,0x00,0x40,0x00,0xF0,0x7F,0x2C,0x00,0x43,0x10,0x20,0x0C,0x98,0x03,0x0F,0x21,0x0A,0x40,0xE8,0x3F,0x08,0x00,0x88,0x00,0x28,0x03,0x1C,0x1C,0x08,0x08,0x00,0x00},/*"你",8*/{0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",9*/};void ys (uchar a)//延时{uchar b;for (;a>0;a--)for (b=100;b>0;b--);}void yfs()//Y轴发数{ysck=0;yrck=0;k++;if (k==16){k=0;ysi=0;}elseysi=1;ysck=1;xrck=1;yrck=1;}void fs(uchar a) //X轴发数{uchar b;xsck=0;xrck=0;for (b=0;b<8;b++){a=a<<1;//xsi=CY;xsi=a&0x80;xsck=1;xsck=0;}}void gdhs(uchar *zz,uchar N,uchar Time) //流动显示N个汉字滚动函数{ //参数三个:字符串字模首地址、字数、显示流动速度uchar FontNum,i,j,row; //循环变量,字数计数、16次流动、16列扫描for(FontNum=0;FontNum<N;FontNum++){for(i=0;i<16;i++) //字到字流动16次左移才能完成{for(j=0;j<Time;j++) //显示延迟,决定流动速度{k=15;for(row=0;row<16;row++) //显示16*16屏幕一次{yfs(); //选通显示列//行选线,P3 低四位fs (*(zz+FontNum*32+(i+row)*2+1)); //以移动偏移为基础获取新数据fs(*(zz+FontNum*32+(i+row)*2)); //获取显示数据循环显示关键算法ys (12); //适当延时}}}}}void main (){while (1){gdhs(*zbm,10,3);}}。
LED16×16点阵汉字显示设计(VHDL版)基于FPGA的毕业设计(论文)开题报告设计(论文)主题LED 16×16点阵汉字显示设计一、选题的背景和意义:LED点阵显示屏是集微电子技术、计算机技术和信息处理技术于一体的大型显示屏系统。
由于其色彩鲜艳、动态范围宽、亮度高、使用寿命长、运行稳定可靠,已成为许多显示媒体和户外操作显示器的理想选择。
在体育场馆对LED显示屏需求快速增长的驱动下,近年来LED显示屏在中国的应用逐渐增多。
目前,发光二极管已广泛应用于银行、火车站、广告和体育场馆。
随着奥运会和世博会的临近,LED显示屏将广泛应用于体育场馆和道路交通指示。
发光二极管显示屏在体育广场的应用将会迅速增长。
因此,这种设计是非常必要的。
基于现场可编程门阵列(FPGA)设计的原因是现场可编程门阵列(FPGA)设计周期短、灵活性高,适用于小批量系统,提高了系统的可靠性和集成度。
主程序用灵活的VHDL语言编写。
这种设计可以方便地应用于各种广告。
二、课题研究的主要内容:1.用16×16点阵实现汉字显示;2.实现有限的汉字显示;5.完成方案演示。
三、主要研究(设计)方法:通过去图书馆查找书籍和收集数据,同时在搜索引擎上搜索数据,分析和参考现有的类似产品、设计方案和成功经验,选择几个可行的方案进行比较,最终确定最实用的方案进行设计。
利用Multisim或Quartus软件对系统进行仿真,以改善和完善电路功能。
EDA测试箱的调试。
四、设计(论文)计划表:时间(截止日期)在XXXX工作的几年中,中国的发光二极管显示屏的应用逐渐增加。
目前,发光二极管已广泛应用于银行、火车站、广告和体育场馆。
随着奥运会和世博会的临近,LED显示屏将广泛应用于体育场馆和道路交通指示。
发光二极管显示屏在体育广场的应用将会迅速增长。
因此,这种设计是非常必要的。
基于FPGA设计的原因是现场可编程门阵列(FPGA)设计周期短、灵活性高,适用于小批量系统,提高了系统的可靠性和集成度。
51单片机驱动16×16LED点阵显示动画汉字汇编程序电路图就不贴出来了16×16LED点阵的典型接法。
这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.ORG 0000HST: MOV A,#0FFH ;初始化MOV P1,AMOV P2,AMOV P3,AMOV P0,ACLR AMOV R0,#50H ;显示缓存清0MOV R1,#20H ;控制清0的次数ST0: MOV @R0,AINC R0DJNZ R1,ST0;正文显示CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1LCALL HZ;结束动画SCREE:MOV DPTR,#TAB2;查表指针指向TAB2ACALL DDMOV DPTR,#TAB3;查表指针指向TAB3ACALL DDMOV DPTR,#TAB4;查表指针指向TAB4ACALL DDLJMP CHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD: MOV B,#00HMOV R0,#08H ;显示8幅画面AJMP CCCC0: MOV A,BADD A,#20H ;指向下一幅画面MOV B,ACC: MOV R7,#08H ;画面停留时间MOV R3,BMOV 37H,R0LCALL ENTERDIS00: LCALL DISPLAYDJNZ R7,DIS00MOV R0,37HDJNZ R0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ: MOV R3,#00H ;查表偏移量MOV R5,#81H ;查表128次MOVBACK: MOV R4,#10H ;使显示完一个汉字MOVBACK0: MOV R7,#02H ;一桢画面显示时间MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOV R2,#10H ;内存后移的次数DJNZ R5,MOVBACK1RET ;显示完该表,返回MOVBACK1: MOV A,@R0 ;低8位被后移的内存单元数据暂存入AINC R0 ;后移两字节INC R0MOV @R0,A ;放入要移的低8位数据MOV A,R0 ;R0指向下一个要后移的内存单元SUBB A,#04HMOV R0,AMOV A,@R1 ;高8位被后移的内存单元数据暂存入A INC R1 ;后移两字节INC R1MOV @R1,A ;放入要移高8位的数据MOV A,R1 ;R1指向下一个要后移的内存单元SUBB A,#04HMOV R1,A ;R1指向下一个要后移的内存单元DJNZ R2,MOVBACK1 ;显示缓存数据依次后移MOV A,R3 ;从表TAB1读入要移进50H,51H的数据MOVC A,@A+DPTR;先给50H读数据MOV 50H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOVC A,@A+DPTR;再给51H读数据MOV 51H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOV 30H,R3 ;保护数据MOV 31H,R4MOV 32H,R5DISMOV: LCALL DISPLAY ;显示当前数据DJNZ R7,DISMOVMOV R3,30HMOV R4,31HMOV R5,32HDJNZ R4,MOVBACK0MOV 30H,R3 ;保护数据MOV 32H,R5MOV R7,#24H ;显示当前数据延时DISMOV0: LCALL DISPLAYDJNZ R7,DISMOV0MOV R3,30HMOV R5,32HLJMP MOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R 3,影响R1,R2,R3ENTER: MOV R1,#50H ;从50H单元起把表存入MOV R2,#20H ;查表次数MOV A,R3CLLOOP_: MOVC A,@A+DPTR ;查表MOV @R1,A ;将表放进5X,6X单元INC R1 ;R1指向下一个地址空间MOV A,R3 ;查表指针后移INC AMOV R3,A ;将指针修改结果存入R3DJNZ R2,CLLOOP_;没查完转CLLOOP_RET;15MS,显示子程序,一桢32个字节,影响A,R0,R1,R3,R4,R5,R6;;单片机网提供汉字取模工具,可显示任意汉字DISPLAY: MOV A,#0FFHMOV P0,AMOV P1,AMOV P2,AMOV P3,ASETB CMOV R6,#7FH ;赋扫描字初值,左移后初值为0FEH MOV R5,#00H ;列扫描低8位控制MOV R0,#50H ;行的高8(p1)位要显示的数据起始地址MOV R1,#10H ;扫描次数DISLOOP: MOV A,@R0 ;从内存读数据MOV P2,#0FFH ;装入数据时不显示任何东西MOV P3,#0FFHCPL A ;数据取反以适合显示MOV P1,A ;送入行的高8(p1)位要显示的数据INC R0 ;修改R0指向低8位要显示的数据MOV A,@R0 ;读低8位要显示的数据CPL A ;数据取反以适合显示MOV P0,A ;送入行的低8(p0)位要显示的数据INC R0 ;R0指向下一个高8(p0)位要显示的数据LCALL NEXT ;调用列扫描程序LCALL DELAY1MS ;显示延时DJNZ R1,DISLOOP;一桢显示完返回MOV P3,#0FFH ;全灭RET;列扫描子程序DISLOOP专用NEXT: JNC NEXT1 ;C=0转扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AINC R5CJNE R5,#09H,NEXT0 ;R6=#0FEH时C=0AJMP NEXT1BACK: RETNEXT0: MOV P2,R6 ;扫描低8(p2)位行AJMP BACKNEXT1: MOV P2,#0FFHMOV P3,R6 ;扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AAJMP BACK;延时1MS子程序DELAY1MS: MOV R3,#10D0: MOV R4,#50D1: DJNZ R4,D1DJNZ R3,D0RETTAB1:DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070 H,001H,000H,01DH,070H,000H,000HDB 01FH,0F0H,011H,010H,01FH,0F0H,011H,010H,01FH,0F2 H,001H,002H,001H,002H,000H,0FEH;電DB 000H,000H,03FH,0F0H,000H,020H,000H,040H,000H,080 H,001H,000H,001H,000H,001H,004HDB 0FFH,0FEH,001H,000H,001H,000H,001H,000H,001H,000 H,001H,000H,005H,000H,002H,000H;子DB 008H,000H,008H,0FCH,07EH,084H,008H,084H,0FFH,094 H,041H,088H,022H,080H,014H,0FEHDB 07EH,0A4H,008H,0A4H,008H,098H,0FFH,098H,008H,0A4 H,008H,0A6H,008H,0C4H,008H,080H;報DB 000H,000H,000H,010H,03FH,0F8H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,004H,07FH,0FE H,000H,000H,000H,000H,000H,000H;二DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070 H,001H,000H,01DH,070H,002H,080HDB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040 H,002H,080H,001H,000H,001H,000H;零DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070 H,001H,000H,01DH,070H,002H,080HDB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040 H,002H,080H,001H,000H,001H,000H;零DB 004H,000H,003H,000H,001H,080H,001H,000H,0FFH,0FE H,000H,000H,000H,000H,004H,080HDB 006H,040H,004H,020H,008H,010H,008H,018H,010H,00C H,020H,00CH,040H,008H,000H,000H;六DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000H;(空);结束动画;-- 水纹 -- ** 宋体, 12 **; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16TAB2:DB 000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,001H,080HDB 001H,080H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,001H,080H,003H,0C0HDB 003H,0C0H,001H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,001H,080 H,002H,040H,004H,020H,008H,010HDB 008H,010H,004H,020H,002H,040H,001H,080H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,001H,0C0H,006H,030H,008H,008H,008H,008 H,010H,004H,020H,002H,020H,002HDB 020H,002H,010H,004H,008H,008H,008H,008H,006H,030 H,001H,0C0H,000H,000H,000H,000HDB 003H,0C0H,00CH,030H,010H,008H,010H,008H,060H,006 H,040H,002H,080H,001H,080H,001HDB 080H,001H,080H,001H,040H,002H,060H,006H,010H,008 H,010H,008H,00CH,030H,003H,0C0HDB 000H,000H,038H,01CH,046H,062H,081H,081H,080H,001 H,040H,002H,040H,002H,020H,004HDB 020H,004H,040H,002H,040H,002H,080H,001H,081H,081 H,046H,062H,038H,01CH,000H,000HDB 0C0H,003H,0A0H,005H,058H,01EH,024H,024H,024H,024 H,01EH,078H,005H,0A0H,002H,040HDB 002H,040H,005H,0A0H,01AH,078H,024H,024H,024H,024 H,058H,01AH,0A0H,005H,0C0H,003HDB 000H,000H,0C0H,003H,0B0H,00DH,088H,011H,044H,022 H,025H,0A4H,012H,048H,00DH,0B0HDB 00DH,0B0H,012H,048H,025H,0A4H,044H,022H,088H,011 H,0B0H,00DH,0C0H,003H,000H,000H;--福-- ** 宋体, 12 **; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16TAB3:DB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0A AH,055H,055H,0AAH,0AAH,055H,055H,0AAHDB 055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0 AAH,0AAH,055H,055H,0AAH,0AAH,055HDB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,0 55H,054H,02AH,0A8H,015H,050H,00AHDB 050H,00AH,0A8H,015H,054H,02AH,0AAH,055H,055H,0A AH,0AAH,055H,055H,0AAH,0AAH,055HDB 0AAH,055H,054H,02AH,0A8H,015H,050H,00AH,0A0H,00 5H,040H,002H,080H,001H,000H,000HDB 000H,000H,080H,001H,040H,002H,0A0H,005H,050H,00A H,0A8H,015H,054H,02AH,0AAH,055HDB 0A0H,005H,040H,002H,091H,0F9H,000H,000H,074H,0F0 H,019H,008H,031H,008H,058H,0F0HDB 014H,000H,011H,0F8H,012H,044H,013H,0FCH,012H,044 H,091H,0F9H,040H,002H,0A0H,005HDB 020H,000H,013H,0FEH,010H,000H,0FDH,0FCH,005H,004 H,009H,004H,011H,0FCH,030H,000HDB 05BH,0FEH,096H,022H,012H,022H,013H,0FEH,012H,022 H,012H,022H,013H,0FEH,012H,002HDB 000H,004H,07FH,0C8H,000H,008H,03FH,0BFH,020H,0A0 H,020H,090H,03FH,088H,000H,00CHDB 07FH,0DAH,044H,069H,044H,048H,07FH,0C8H,044H,048 H,044H,048H,07FH,0C8H,040H,048HDB 010H,040H,010H,080H,091H,000H,073H,0FFH,014H,080 H,018H,040H,040H,0FFH,05EH,092HDB 052H,092H,052H,092H,052H,0FEH,052H,092H,052H,092 H,05EH,092H,040H,0FFH,000H,000HDB 012H,002H,013H,0FEH,012H,022H,012H,022H,013H,0FE H,012H,022H,096H,022H,05BH,0FEHDB 030H,000H,011H,0FCH,009H,004H,005H,004H,0FDH,0FC H,010H,000H,013H,0FEH,020H,000HTAB4:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,0B0H,002 H,0C8H,002H,048H,006H,030H,002H;STEP1DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H, 0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,000H,0FEH,000H,0F6H,000H,0F9H,007H,089H,002 H,086H,001H,000H,005H,000H,002H;STEP2DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H, 0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,0C0H,0FFH,020H,0F1H,020H,0F0H,0C7H,080H,001 H,080H,007H,000H,001H,000H,007H;STEP3DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H, 0FFH,0F8H,0FFH,0D8H,0FFH,0E4HDB 0FEH,024H,0FEH,018H,0F0H,000H,0F0H,001H,080H,001 H,080H,007H,000H,005H,000H,005H;STEP4DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FBH, 0FFH,0FCH,0FFH,0C4H,0FFH,0C3HDB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,080H,001 H,080H,007H,000H,004H,000H,007H;STEP5DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 000H,000H,0F4H,058H,084H,0D4H,085H,052H,0F5H,052 H,085H,052H,086H,054H,0F4H,058HDB 000H,000H,022H,05EH,022H,050H,022H,050H,023H,0DE H,022H,050H,022H,050H,0FAH,05EHEND。
一直以来,对LED点阵显示很感兴趣,特别是流动点阵显示。
论坛里有不少例子,效果都不是很满意。
于是,自己动手。
先试作了8X8点阵。
8X8的点太少,只适合数字显示,从0 ~9流动,效果还不错。
有了8X8的经验,对流动显示的原理已经了解,又试了16X16的,觉得也不难。
但16X16的点仍嫌少了,又做了个24X24的,汉字漂亮。
动画可能效果差些,软件运行显示效果好多了。
8X8初学点阵仿真,常点不亮LED 。
首先,可能是点阵的极性没有正确的接线。
下面的简单方法可判断点阵的逻辑引脚。
运行proteus,在编辑区里放上一个8X8LED,如MA TRIX-8x8-GREEN。
在某些引脚上接上电源和地,试试能不能点亮。
8X8默认是上下引脚,按习惯接法,上面接电源,下面接地,不亮(图左)。
用左下角垂直翻转工具,垂直翻转,再接上电源和地,就可以点亮了(下图)。
如果是做左移显示,可再左旋90°。
如图:这里可看到,左边引脚是行控制,右边引脚是列控制。
然后就可以画线路图了,点阵就保持上面那个方向。
由于点阵引线较多,特别是以后做24X24点阵,所以布线方式不用连线,而用终端加上网络标号,这样可以使画面简洁明了。
连续标号的快捷画法,我以前有帖子介绍过。
这里还是再啰嗦一下。
proteus有一个很好用的PA T(Property Assignment Tool),即属性分配工具。
可以用来做快捷标注,当然还可以用作其它操作。
再连上其它接线,一个线路图很快就可以作好。
下面,就可以写程序的源文件了。
点击菜单\Source,下拉菜单第一条Add/Remove Source Files,按键New,在跳出的对话框里写上新文件名,如8X8.asm,打开。
提示这个文件不存在,要创建吗?是。
然后点Code Gereration tool小箭头,选ASM51 ,点OK。
然后,菜单\Source,看到多了个8X8.asm,点击,出现proteus自带的汇编编辑器,就可以在里面写代码了。
三、实验效果分析(包过仪器设备等使用效果)三、实验效果分析:静态点阵RTL图形:动态RTL仿真图形:实验中程序一点阵里显示静态的师字,程序二中点阵显示的师字自右往左移动,说明实验程序正确。
字符显示的内容改变通过将要显示的数据取模,定制在ROM上,便可实验内容的改变,移动方向的改变将Q1<=Q1+1;改成Q1<=Q1-1;也就是将当前对应地址发生器的地址改为前一地址便可右移,改为后一地址便是左移,不变则静止。
教师评语指导教师年月日江西师范大学物理与通信电子学院教学实验报告专业:电子信息工程2011年5月11日实验名称16×16点阵字符显示设计指导老师姓名年级学号成绩一、预习部分1、实验目的2、实验基本原理3、主要仪器设备(包含必要的元器件、工具)一、实验目的:1.进一步熟悉QUARTUS‖及其LPM_ROM与FPGA硬件资源的使用方法。
2.学习和掌握16*16点阵字符显示设计方法。
二、实验基本原理:利用不同的行抄描和列扫描,加上字取模软件对字取模,利用动态扫描便在点阵上看到了字。
二、主要仪器设备电脑、实验箱二、实验操作步骤1.实验数据、表格及数据处理2.实验操作过程(可以用图表示)3.结论1.实验数据、表格及数据处理如下:library ieee; if rst='1'thenuse ieee.std_logic_1164.all; qa<=(others=>'0');use ieee.std_logic_unsigned.all; elsif clk'event and clk='1' thenentity sy12 is qa<=qa+1;port(clk,rst:in std_logic; end if;sel:out std_logic_vector(3 downto 0); end process;dout:out std_logic_vector(15 downto 0)); process(qa,rst)end ; beginarchitecture one of sy12 is if rst='1' thencomponent data_rom q1<=(others=>'0');port (address:in std_logic_vector(4 downto 0); elsif qa(10)'event and qa(10)='1' then inclock:in std_logic; q1<=q1+1; --当前所有地址改为对应的下一q:out std_logic_vector(15 downto 0)); end if; 地址,即整体左移end component; end process;signal qa:std_logic_vector(10 downto 0); sel<=not(q0-2);signal q0:std_logic_vector(3 downto 0); qq<=q1+q0;signal qq:std_logic_vector(4 dow u1: data_rom port map(address=>qq,q=>dout,inclock=>clk); signal q1:std_logic_vector(4 downto 0); end;beginprocess(clk,rst)beginif rst='1' thenq0<=(others=>'0');elsif clk'event and clk='1' thenq0<=q0+1;end if ;end process;process(clk,rst)begin 2、实验操作过程如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sy11 isport(clk,rst:in std_logic;sel:out std_logic_vector(3 downto 0);dout:out std_logic_vector(15 downto 0));end ;architecture one of sy11 iscomponent data_romport (address:in std_logic_vector(4 downto 0);inclock:in std_logic;q:out std_logic_vector(15 downto 0));end component;signal qq:std_logic_vector(4 downto 0);signal q1:std_logic_vector(4 downto 0);beginprocess(clk,rst)beginif rst='1' thenq1<=(others=>'0');elsif clk'event and clk='1' thenq1<=q1+1; end if ;end process;qq<=q1-1;sel<=not qq(3 downto 0);u1:data_rom port map(address=>q1,q=>dout,inclock=>clk); end;。
实验报告实验名称: [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)输入。
基于Proteus与汇编语言的汉字点阵动态显示0 引言Proteus ISIS 是英国Labcenter 公司开发的电路分析与实物仿真软件。
它可以仿真、分析各种模拟器件和集成电路,该软件的特点是:a.实现了单片机仿真和SPICE 电路仿真相结合。
具有模拟电路、数字电路仿真、单片机及其外围电路的仿真、各种虚拟仪器,如示波器等功能。
b.支持主流单片机系统的仿真。
c.提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2 等软件。
d.具有强大的原理图绘制功能。
Proteus 软件的使用彻底改变了传统单片机学习和开发方式,初学者可以在没有实验硬件条件下进行仿真实验,开发者可以直接用Proteus 进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开发成本。
汉字点阵显示电路设计时,显示部分应用16 乘以16 点阵字模提取软件,提取广东工贸显示汉字的字模数据,通过查表取出字模数据送输出动态显示。
1 汉字显示电路设计汉字点阵的控制电路采用AT89C51 单片机,硬件电路由单片机接口电路、LED 显示屏行列驱动电路、LED 点阵显示屏三部分组成,如图1 所示,电路用Proteus 软件画出,具体画法参见文献。
一般情况下要完全显示出常用汉字至少需要16 乘以16 点阵,但由于Proteus 元件库中没有16 乘以16LED 模块,为了达到显示要求,每个汉字可由四块8 乘以8 LED 模块组成。
组合方式为先对每个8 乘以8 模块行列引脚连接好总线,然后四个单色模块组合紧密。
驱动电路采用动态扫描驱动方式,设计中行驱动信号采用了16 个同向驱动器7407,并在每根信号线上接上拉电阻;列驱动信号先接-4-16 译码器74HCl54,然后十六个列驱动信号接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点阵汉字中的列选信。