液晶显示器有字符型,如1602,这个液晶显示器目前是统一的,引脚和命令字都 是统一的。接线如下图所示 另一种是点阵型的,可以显示图形和汉字,用得比较多的是12864。但是,这种液晶显示器的型号很多,引脚和命令字都不统一

1、PROTEUS安装好后,默认不会在桌面上产生快捷方式。先打开开始菜单,依次点击“程序、Proteus 7 Professional、ISIS 7 Professional”打开PROTEUS。2、单击图中的P,添加单片机等元件。3、用关键字搜索,89C51,再加几个LED,

control(); }}void init(){ db=0; i=0; sec=0; min=0; h=0; date=1; month=1; year=1; flag=0; wela1=0; wela2=0; EA=1; ET0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%2

#TAB ;字码表初址赋值 MOV R1,#00H ;列控制码 MOV R4,#96 ;移动“ ”及“单片机仿真”6个字符,共96列CM: MOV R5,#5 ;每

求一个利用AT89C51控制16*16LED点阵的图文显示屏的protues的仿真电路图。185032409 谢谢

MAIN:MOVDPTR,#TAB;字码表初址赋值 MOVR1,#00H;列控制码 MOVR4,#96;移动“ ”及“单片机仿真”6个字符,共96列 CM:MOVR5,#5;每屏反复显示5次 MOVR3,#16;列数 C1:MOVR2,#0;取码指针 C16:MOV60H,#00H MO

1、汉字取模 汉字取模,即把汉字对应16x16点阵的图形用16进制数来描述,形成可以用于驱动显示的数据。例如下图,的汉字“中”该字的16x16点阵图形中,每行有16个像素,可以编码为2个字节,每8个像素,对应一个字节的高

DJNZ R4,SCAN8 MOV R4,#16 DJNZ R3,SCAN16 AJMP END16 SCAN16:MOV A,R2 CLR C SUBB A,#32 MOV R2,A AJMP START END16:INC DPTR INC DPTR MOV A,R2 CLR C SUBB A,#32 MOV R2,A MOV A,R0 MOV R3,A

51单片机驱动1616LED点阵显示动画汉字(汇编程序)http://wenku.baidu.com/view/a1a08f05cc1755270722085a.html 基于51单片机控制的LED点阵显示屏(c 语言)http://wenku.baidu.com/view/aa7092dbd15abe23482f4df6.html 51单片

16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,1 6×16的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大

跪求16X16LED点阵汉字显示的原理图,s51单片机汇编源程序,汉字字摸提取工具,可扩展64X16点阵显示。

led点阵屏原理是以简单的8X8点阵为例,它共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮。要将第一个点点亮,则9脚接高电平13脚

它就是把64个LED按8行8列排起来,一个LED有两个脚,这个应该知道吧。然后把每一行的某个脚全部接在一起。(要么是正极,要么是负极,反正要统一),然后引一条线出来,作为行驱动线,共有8条这样的线。然后再每一列

谈LED点阵的扫描原理,只要一看LED点阵的原理图就一目了然了,如下图:图中,A--H可以看做行,1--7看做列;假如我们给点阵送人一个列数据0x80(1000 0000),并且同时送人一个行数据0x7f(0111 1111),此时我们就

led点阵工作原理LED点阵是一种由多个LED组成的矩阵结构,它可以用来显示文字、图形和动画。LED点阵的工作原理是,每个LED都有一个电极,当电流通过电极时,LED就会发出光。LED点阵由一系列的LED组成,每个LED都有一个电极,当

通常,这些LED点阵显示屏是通过一个控制器来操作的,控制器会接收到输入信号并解析出需要显示的内容,然后通过控制各个LED的亮度和颜色来实现显示。使用LED点阵显示屏的优点包括:亮度高:LED点阵显示屏能够产生非常高的亮度,即

LED16*16点阵板使用说明V1.01.板子的组成4个大小为32mm*32mm的8*8共阳点阵组成16*16点阵,点阵屏可拆装,采用圆孔铜排针,连接性能非常好。驱动部份使用两个移位带存储器的74HC595和两个移位寄存器74HC164组成,74HC595负责

LED点阵板使用说明(原理图)

下载文件:计算器_20130927085344.rar|给你一个我做的简易计算器的吧,汇编和C的都有,随便选

以下一51为例,1。用keil4生成hex文件。2。在proteus中找出对应的单片机,放在图里面。3。双击单片机,选之前的hex文件的路径,点击仿真按钮。如何让KEIL和PROTEUS联调连接用记事本打开Keil根目录下的TOOLS.INI文件,在[C51]

AT89C52是一个低电压,高性能CMOS 8位单片机, AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编

uchar Flash_Count=0,Operation_Typea=1,LEDsng,LEDsns,LEDewg,LEDews,discnt;uint Time_Count=0,time;uchar ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0

用proteus仿真16×16的LED点阵屏,主要考虑点阵屏行,列数控制就行,不必考虑驱动,所以不必用MOS管。可用4块8×8点阵模块拼成。至于行列控制数据锁存可用74HC573比较好写程序。用74HC595也可以,只要能写出程序就行的。如下图

如何用89C51和595和MOS管,设计一个16*16个LED点阵的控制电路 用KEIL和Proteus

这是一列列的数模。0x04对应的是左边第一列下面8个点阵的显示0x28对应的是左边第一列上八位。且上面是高位下面是低位。这样你在16x16的格子中把所有1标出来就可以组成一个欢字了

首先显示一列(也可以一行,具体你这里是一行还是一列麻烦自己看一下),即这一列是六个点,用到你上面的两个数据,然后给i这一行置位(是高是低看你电路)延时显示一段时间后,关闭显示,消隐掩饰,继续取下两组数据

本点阵屏采用4块8*8点阵组合,形成一个16*16的点阵,以凌阳单片机为核心控制器,锁存器辅助控制。通过软件控制,本屏以动态扫描的显示方式,可显示文字、图形、动画等多种花样。再一特色就是显示文字时,还可同步语音播报

4个574是驱动管,因为你的单片机的管教的输出电流只有10到20个毫安,无法驱动16个LED http://wenku.baidu.com/view/2f74a0bc960590c69ec3765f.html 上面的连接是5744的datasheet 把四个都用上吧,你那个138译码器是用

那16×16点阵就按16行,16列控制的。即需要两个锁存器,锁存16行数据。再需要两个锁存器,锁存16列的数据。

10 11 将00与01的行控制线一对一连接,10和11的行控制线一对一连接;00与10的列控制线一对一连接,01和11的列控制线一对一连接。最后,00和01的16根列控制线就是16x16的列控制线;00和10的行控制线就是16x16的

首先,从Proteus元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面

单片机课设,四块8*8的LED拼成一块16*16的LED.

我靠,又一个大爷样的大神。 拍拍屁股留个邮箱走人。 我只能望其项背膜拜之。
Led显示屏程序设计 Led显示屏的程序本来是打算用VHDL语言写的,实际中将它要下载的FPGA芯片中,由于此处只是说明一下显示屏工作算法,故使用便于理解和描述的C语言写出,此以8×8为例。 ①水平左移 for(j=0;j<8;j++) //8组数据 { scan=0x80; //初始扫描信号 for(i=0;i<8;i++) //扫描周期 { if(i<j)P2=d[j-i+1]; //数组d里有要显示的内容 else P2=d[7+(j-i)]; P1=~scan; //输出扫描信号 selay1ms(2); //延迟2ms scan>>=1; //下一个扫描信号 } } 如果字开型跑得快,弄得看不清楚,可以多加一个k循环,如下: for(j=0;j<8;j++) //8组数据 for(k=0;k<10;k++) //扫描10周 { scan=0x80; //初始扫描信号 for(i=0;i<8;i++) //扫描周期 { if(i<j)P2=d[j-i+1]; //数组d里有要显示的内容 else P2=d[7+(j-i)]; P1=~scan; //输出扫描信号 selay1ms(2); //延迟2ms scan>>=1; //下一个扫描信号 } //结束1个扫描周期 } //结束10个扫描周期 ②水平右移 for(j=7;j>0;j--) //8组数据 for(k=0;k<10;k++) //扫描10周 { scan=0x01; //初始扫描信号 for(i=7;i>0;i--) //扫描周期 { if(i>j)P2=d[8+(j-i)]; //数组d里有要显示的内容 else P2=d[j-i]; P1=~scan; //输出扫描信号 selay1ms(2); //延迟2ms scan>>=1; //下一个扫描信号 } //结束1个扫描周期 } //结束10个扫描周期 ③上卷移动 由于此处要求更改数组d,因此声明一个disp[8],在开始显示之前,将数组d复制到disp中。即: For(i=0;i<8;i++) Disp[i]=d[i]; 在输出之前,对disp数组进行处理。 for(i=0;i<8;i++) If(disp[i]%2==1) //最右边位为1 {disp[i]>>=1; // 右移1位 Disp+=0x80;} // 加上0x80 Esle disp[i]>>=1; //最右边1位为0,直接右移一位 数据处理完成之后,就可以输出了。 For(k=0;k<10;k++) For(i=0;i<8;++) { P2=disp[i]; P1=scan; Delay1ms(2); Scan<<=1; } ④下卷移动,与上卷类似,只是数据处理时略有不同。 for(i=0;i<8;i++) If(disp[i]>=0x80) //最左边位为1 {disp[i]>>=1; // 左移1位 Disp+=0x01;} // 加上0x01 Esle disp[i]<<=1; //最右边1位为0,直接右移一位 杨代勇 201
已发送,希望能帮到你
1个51就够了,595作为列驱动,154行驱动。
1、它就是把64个LED按8行8列排起来,一个LED有两个脚,这个应该知道吧。然后把每一行的某个脚全部接在一起。(要么是正极,要么是负极,反正要统一),然后引一条线出来,作为行驱动线,共有8条这样的线。然后再每一列上的没有接上的那个脚按列接在一起,也是引一条线出来。 2、作为列扫描线。这8条行线接入一个芯片上的8个脚上,比如2003,另外那8条列上面的线也要接入一个芯片的8个脚上,比如595,这样,当行线上的第一行的那条线是高电平,而第一列那条线上是低电平时,那么就有第一行第一列的那个灯亮了。然后接着行线上继续是高电平,列线上换成是第二列为低电平时,则是第一行第二列的那个灯亮了。同理,当行线上第二行为高电平,列线上第一列为低电平,那么就是第二行第一列的那个灯亮了。这就相当于是用坐标来锁定一个灯的意思,做软件的时候想要哪个亮就让哪个亮。
LED点阵屏的结构和工作原理,商场的广告屏就是这样来的!
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。总结本文设计的一个室内用16x16的点阵LED图文显示屏,能够在目测条件下LED

#include unsigned char code P2H[]={ 0x10,0x20,0x40,0x80 }; unsigned char code P2L[]={ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }; int a,b,n,i,j,k,t; unsigned char code ziku[]={ //字符码的存放格式为:从左到右共16列,并按列的上下部分依次存放 //一组即为一列 /* EL */ 0x08,0x20, 0xF8,0x3F, 0x88,0x20, 0x88,0x20, 0xE8,0x23, 0x08,0x20, 0x10,0x18, 0x00,0x00, 0x08,0x20, 0xF8,0x3F, 0x08,0x20, 0x00,0x20, 0x00,0x20, 0x00,0x20, 0x00,0x30, 0x00,0x00, /* Va */ 0x08,0x00, 0x78,0x00, 0x88,0x07, 0x00,0x38, 0x00,0x0E, 0xC8,0x01, 0x38,0x00, 0x08,0x00, 0x00,0x00, 0x00,0x18, 0x80,0x24, 0x80,0x22, 0x80,0x22, 0x80,0x22, 0x00,0x3F, 0x00,0x20, /* 秦 */ 0x20,0x82, 0x20,0x82, 0x2A,0x45, 0x2A,0x45, 0xAA,0x25, 0x6A,0x15, 0x3E,0x0D, 0x2B,0xFF, 0xAA,0x04, 0xAA,0x0C, 0xEA,0x14, 0xAA,0x24, 0x2A,0x65, 0x22,0xC2, 0x20,0x42, 0x00,0x00, /* 波 */ 0x10,0x04, 0x60,0x04, 0x01,0xFF, 0x16,0x40, 0x00,0x30, 0xF8,0x8F, 0x88,0x80, 0x88,0x41, 0x88,0x26, 0xFF,0x18, 0x88,0x18, 0x88,0x26, 0x88,0x61, 0x18,0xC0, 0x08,0x40, 0x00,0x00, /* , */ 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x80, 0x00,0xB0, 0x00,0x70, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, /* 自 */ 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xF8,0x7F, 0x48,0x24, 0x4C,0x24, 0x4A,0x24, 0x48,0x24, 0x48,0x24, 0x48,0x24, 0x48,0x24, 0xF8,0x7F, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, /* 动 */ 0x00,0x00, 0x40,0x08, 0x48,0x1C, 0x48,0x0A, 0xC8,0x09, 0x48,0x08, 0x48,0x4E, 0x40,0x28, 0x20,0x10, 0x20,0x0C, 0xFE,0x03, 0x20,0x20, 0x20,0x40, 0xF0,0x3F, 0x20,0x00, 0x00,0x00, /* 化 */ 0x00,0x00, 0x00,0x01, 0x80,0x00, 0x40,0x00, 0xF0,0x7F, 0x0E,0x00, 0x00,0x04, 0x00,0x04, 0x00,0x02, 0xFE,0x3F, 0x80,0x40, 0x40,0x40, 0x20,0x40, 0x10,0x40, 0x00,0x78, 0x00,0x00, /* 04 */ 0x00,0x00, 0xE0,0x0f, 0x10,0x10, 0x08,0x20, 0x08,0x20, 0x10,0x10, 0xE0,0x0F, 0x00,0x00, 0x00,0x00, 0x00,0x07, 0xC0,0x04, 0x20,0x24, 0x10,0x24, 0xF8,0x3F, 0x00,0x24, 0x00,0x00, /* 1 */ 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x10,0x20, 0x10,0x20, 0xF8,0x3F, 0x00,0x20, 0x00,0x20, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, /* 班 */ 0x42,0x10, 0x42,0x10, 0xFE,0x0F, 0x42,0x88, 0x42,0x48, 0xE0,0x20, 0x00,0x18, 0xFF,0x07, 0x00,0x20, 0x42,0x20, 0x42,0x20, 0xFE,0x3F, 0x42,0x20, 0x42,0x20, 0x42,0x20, 0x00,0x00, /* . */ 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x30, 0x00,0x30, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, }; void delay(int t) { for(t;t>0;t--); } void show() { for(n=0;n<384;n+=2) //共六个字 { for(k=0;k<10;k++) //每个字显示的时间 { for(i=0;i<4;i++) //4个字符区 { for(j=0;j<8;j++) //8列 { a=j+i*8+n; b=j+i*8+n+32; P2=P2H[i]+P2L[j]; //位选端 if(a>383) P0=ziku[a-384]; else P0=ziku[a]; if(b>383) P1=ziku[b-384]; else P1=ziku[b]; delay(10); //80~110 } } } } } void main() { while(1) { show(); } }
代码 #include #include unsigned char code FONT16x16[3][32]={ { 0x12, 0x48, 0x12, 0x48, 0x13, 0xC8, 0x12, 0x48, 0x10, 0x08, 0x10, 0x08, 0x10, 0x28, 0x10, 0x10,0x08, 0x00, 0x08, 0x04, 0x0F, 0xFE, 0x10, 0x08, 0x10, 0x48, 0x33, 0xE8, 0x52, 0x48, 0x92, 0x48},//何 { 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00,0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x40, 0x02, 0x80, 0x04, 0x00, 0x00, 0xFF, 0xFE, 0x01, 0x00},//宁 { 0x14, 0x08, 0x25, 0x10, 0xE4, 0xA0, 0x24, 0x40, 0x28, 0xA0, 0x29, 0x10, 0x32, 0x0E, 0x24, 0x04,0x00, 0x40, 0x40, 0x40, 0x30, 0x40, 0x17, 0xFC, 0x04, 0x44, 0x84, 0x48, 0x44, 0x40, 0x0F, 0xF8, }};//波 sbit SDI=P2^1; sbit SRCLK=P2^0; sbit RCLK=P2^2; #define LineCtrl P1 void delay(unsigned int us) { while(us--); } void SendByte(unsigned char dat) { unsigned char i; for(i=0;i<8;i++) { SRCLK=0; if(dat&0x80) SDI=1; else SDI=0; SRCLK=1; dat=dat<<1; } } void Display(unsigned char *dat1,unsigned char *dat2,unsigned char *dat3) { unsigned char i; for(i=0;i<16;i++) { SendByte(dat3[2*i+1]); SendByte(dat3[2*i]); SendByte(dat2[2*i+1]); SendByte(dat2[2*i]); SendByte(dat1[2*i+1]); SendByte(dat1[2*i]); RCLK=0; _nop_(); _nop_(); _nop_(); _nop_(); LineCtrl=i; RCLK=1; delay(100); } } void main(void) { while(1) Display(FONT16x16[0],FONT16x16[1],FONT16x16[2]); }