LED点阵原理图
LED点阵显示屏工作原理及驱动程序
![LED点阵显示屏工作原理及驱动程序](https://img.taocdn.com/s3/m/85d2c857e55c3b3567ec102de2bd960590c6d98b.png)
LED点阵显示屏工作原理及驱动程序LED显示屏驱动程序几年前本人得到一块双色LED显示屏,因为没有控制器,所以对显示屏的工作原理进行了一番研究,利用手头上的元件,搭了一块电路板,编写了一段程序就放置一边了,这几天有时间,把原来的89C51汇编程序改了一下,改为AT89C2051和STC11F04E单片机能用的程序,放到博客上希望有兴趣的同行可以参考一下。
下面是显示效果图:下面是接口电路板图:下面是电路原理图:工作原理:这块显示屏是分为上下共32行LED点阵,水平有4块16*16点阵,所以能显示16*16点阵8个汉字。
工作原理是用74ls138做为行扫描,列用74ls595控制,当138扫描到某一行时,595决定哪一列该亮,就这样快速扫描,就形成了图像了。
参见下图:以单色单元板为例走线方式如下图:各信号走向如下:l JP1排针16脚信号A->74HC245的第2脚(信号放大)->74HC245的第18脚->74HC138的第1脚->JP2排针16脚l JP1排针15脚信号B->74HC245的第3脚(信号放大)->74HC245的第17脚->74HC138的第2脚->JP2排针15脚l JP1排针1脚信号OE->74HC245的第4脚(信号放大)->74HC245的第16脚->74HC04D的第1脚->74HC04D的2脚->①74HC138的第5脚->②74HC04D的3脚->74HC04D的4脚->JP2排针1脚l JP1排针11脚信号R->74HC245的第9脚(信号放大)->74HC245的第11脚->最左上角74HC595-1的第14脚->74HC595-1的9脚->74HC595-2的14脚->74HC595-2的9脚->最右下角74HC595-16的14脚->74HC595-16的9脚->JP2排针11脚我现在用的是双色板,JP1各端口含义如下:ABCD是显示屏电路板上的74LS138地址译码端,单片机寄存器R3控制行扫描,当R3从00000000到00010000增加时ABCD的变化给138译码,当R3=0FH 时正好扫描16行,当进位到10时扫描结束,OE是138的片选使能端,低电平有效。
点阵式LED“0-9”数字显示技巧
![点阵式LED“0-9”数字显示技巧](https://img.taocdn.com/s3/m/de10ff154b7302768e9951e79b89680203d86bae.png)
1.实验任务利用8X8点阵显示数字0到9的数字。
2.电路原理图图4.25.13.硬件系统连线(1).把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;(2).把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;4.程序设计内容(1).数字0-9点阵显示代码的形成如下图所示,假设显示数字“0”00123 4 5 6 78●●●●●●●●●●●●●●●●00 00 3E 41 41 41 3E 00因此,形成的列代码为00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。
送显示代码过程如下所示送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。
数字“1”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●其显示代码为00H,00H,00H,00H,21H,7FH,01H,00H数字“2”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●●●●●●●●00H,00H,27H,45H,45H,45H,39H,00H数字“3”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●●●●●●00H,00H,22H,49H,49H,49H,36H,00H 数字“4”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●●●●●00H,00H,0CH,14H,24H,7FH,04H,00H00123 4 5 6 78●●●●●●●●●●●●●●●●●00H,00H,72H,51H,51H,51H,4EH,00H 数字“6”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●●●●●●●●00H,00H,3EH,49H,49H,49H,26H,00H00123 4 5 6 78●●●●●●●●●●●00H,00H,40H,40H,40H,4FH,70H,00H 数字“8”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●●●●●●●●00H,00H,36H,49H,49H,49H,36H,00H 数字“9”代码建立如下图所示00123 4 5 6 78●●●●●●●●●●●●●●●●●00H,00H,32H,49H,49H,49H,3EH,00H 5.汇编源程序TIM EQU 30HCNTA EQU 31HCNTB EQU 32HORG 00HLJMP STARTORG 0BHLJMP T0XORG 30HSTART: MOV TIM,#00HMOV CNTA,#00HMOV CNTB,#00HMOV TMOD,#01HMOV TH0,#(65536-4000)/256MOV TL0,#(65536-4000) MOD 256SETB TR0SETB ET0SETB EASJMP $T0X:MOV TH0,#(65536-4000)/256MOV TL0,#(65536-4000) MOD 256MOV DPTR,#TABMOV A,CNTAMOVC A,@A+DPTRMOV P3,AMOV DPTR,#DIGITMOV A,CNTBMOV B,#8MUL ABADD A,CNTAMOVC A,@A+DPTRINC CNTAMOV A,CNTACJNE A,#8,NEXTMOV CNTA,#00HNEXT: INC TIMMOV A,TIMCJNE A,#250,NEXMOV TIM,#00HINC CNTBMOV A,CNTBCJNE A,#10,NEXMOV CNTB,#00HNEX: RETITAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00HDB00H,00H,00H,00H,21H,7FH,01H,00HDB00H,00H,27H,45H,45H,45H,39H,00H00H,00H,22H,49H,49H,49H,36H,00HDB00H,00H,0CH,14H,24H,7FH,04H,00HDB00H,00H,72H,51H,51H,51H,4EH,00HDB00H,00H,3EH,49H,49H,49H,26H,00HDB00H,00H,40H,40H,40H,4FH,70H,00HDB00H,00H,36H,49H,49H,49H,36H,00HDB00H,00H,32H,49H,49H,49H,3EH,00HEND6.C语言源程序#includeunsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code digittab[10][8]={ {0x00,0x00,0x3e,0x41,0x 41,0x41,0x3e,0x00}, //0{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00},//1{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},//2{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},//3{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},//4{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5 {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},//7{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},//8{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9}; unsigned int timecount;unsigned char cnta;unsigned char cntb;void main(void){TMOD=0x01;TH0=(65536-3000)/256;TL0=(65536-3000)%6;TR0=1;ET0=1;EA=1;while(1){;}}void t0(void) interrupt 1 using 0{TH0=(65536-3000)/256;TL0=(65536-3000)%6; P3=tab[cnta];P1=digittab[cntb][cnta]; cnta++;if(cnta==8){cnta=0;}timecount++;if(timecount==333){timecount=0;cntb++;if(cntb==10){cntb=0;}}}00。
11-LED点阵
![11-LED点阵](https://img.taocdn.com/s3/m/9be0ff6a783e0912a2162ad2.png)
行:P3.0-P3.7
电子电气工程系
课题十 移动字幕 显示程序:
unsigned char i,j,k; unsigned char string[]={0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00}; //软件选项:C51格式,阴码,逐行取模,顺向 … P3=0xFF; //先全部关闭 j=0x01; //行 for(i=0;i<8;i++) { P3=~j; //选中第一行 P0=string [i]; //送第一行的每列数据 for (k=100;k>0;k--); //保持显示一会儿 j=j<<1; //换下一行 } …
电子电气工程系
课题十 移动字幕 字模生成器:
{0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00}
//软件选项:C51格式,阴码,逐行取模,顺向
列:P0.7-P0.0
这是一组行扫描数据,8个字节数据一次是 第1~8行的列数据。配合前面的电路图, P0接列线,P3接行线,列高行低则灯亮, 那么软件应该如何去扫描? 先令P3=11111110,列=数组第一个数据 然后P3=11111101,列=数组第二个数据 … 每送完一个8x8字符需要扫描输出8次
电子电气工程系
课题十 移动字幕 行扫描方法分析:
列P0 P2
行P3高,P1低 在有的编译器下,这种 方式不支持(变量不匹 配),有的编译器,整 型也不一定就是2字节。
电子电气工程系
取模方式: 超过8行/列的扫描最常用的一种方式是: 多级74LS164移位寄存器串联。 本例照老方法选行,分析下边的程序: while(1) //该程序段测试通过 { unsigned int y=0x0001; //定义整型y unsigned char i; for(i=0;i<16;i++) //循环16次 { P1=~y; //送出低字节 P3=~(y>>8); //送出高字节 …. //送该行的列数据 y=y<<1; //指向下一行 } //说明,c51里面,双字节数据赋给 } //单字节地址,高字节被舍去。
LED点阵工作原理与焊接教程
![LED点阵工作原理与焊接教程](https://img.taocdn.com/s3/m/afb0182ea6c30c2259019ede.png)
LED点阵的工作原理二、16*16点阵拉线图、595驱动图三、16*16点阵显示汉字的过程五、点阵的取模利用软件对需要显示的汉字进行取字模,可以提高开发效率,软件界面如下图:如上图所示,是我们的“祁”字。
上面说过,最左边一竖的值分别是:0xef和0xdf。
而到了这里,则刚好相反,变成了0x10和0x20。
我们在编程的时候,需要进行一次取反操作,这样才能兼容以后的程序修改。
当然 也可以用过软件黑白取反来得到字模。
六、七彩点阵或者双色点阵:单色点阵一般都是直接完全点亮或者有亮度调整功能。
白天和黑夜需要的亮度不同。
耗电就不同。
双色点阵,就有共阴、供阳之分。
市面上常见的是红绿色点阵。
能够显示红、绿、黄三种颜色。
跟单色点阵的工作原理非常类似。
七彩点阵,由红绿蓝三基色构成,三种颜色组合成:红、黄、绿、青、蓝、紫、白。
一帮成本比较低的,就是这样的配置。
也跟单色点阵一样 可以配置不同的亮度。
实际能够合成的颜色不止7种,但是不会有很多种。
很多户外的彩色广告屏都是这种。
七、全真彩点阵的控制原理:真正的全彩点阵,一般都不能用扫描方式来控制,而是用芯片去控制每个灯的亮度。
比如一个灯是红、绿、蓝3基色。
正极一般直接接5V,三个负极分别接到芯片的RGB 脚,芯片直接精确控制这三个脚的电流大小,根据控制器发送的信号来调整电流占空比,从0-255可调整。
这样一来,灯珠可以合成的颜色就是256*256*256=1677万颜色。
1677万色是常见的8位二进制颜色,有些芯片可以支持16位颜色,也就是281万亿种颜色。
这种项目一般工程是不会去设计的。
显示要求太高了。
全真彩点阵作为单独控制每个灯,一般都是芯片跟芯片直接使用串行的通信方式。
这样,组合的形状就不限于矩形,而是可以做任何形状。
我们WQX开发板与全球娱乐行业接轨的DMX512灯光控制系统,就是支持8位1677万色的国际通用协议。
我们WQX开发板,板上搭载的8颗WS2812灯珠,就是内置1677万色的芯片,来显示全真彩色的。
led点阵原理
![led点阵原理](https://img.taocdn.com/s3/m/8c1bb030f68a6529647d27284b73f242326c314d.png)
LED点阵原理及基本原理概述LED点阵(LED matrix)是一种由多个LED灯组成的矩阵结构,通常用于显示文字、图形、动画等信息。
LED点阵的基本原理是通过控制每个LED灯的亮灭状态,来实现对整个点阵的显示控制。
本文将详细解释LED点阵的工作原理、组成结构以及控制方法。
LED点阵的组成结构LED点阵通常由多个LED灯组成,每个LED灯都是一个独立的发光体。
LED点阵可以根据显示需求选择不同尺寸的点阵,常见的尺寸有8×8、16×16、32×32等。
例如,一个8×8的LED点阵就由64个LED灯组成,排列成8行8列的矩阵。
LED点阵的工作原理LED点阵的工作原理可以简单分为两个步骤:扫描行和亮灭控制。
1. 扫描行LED点阵中的LED灯按照矩阵的行列排列,假设有一个8×8的LED点阵,那么点阵可以分成8行和8列。
扫描行的目的是逐行选取LED灯,并为其赋予电压,使其亮起。
在扫描行的过程中,逐行选取LED灯的方法可以是逐行左移或逐行上移,也可以是其他的扫描方法,不同的扫描方法可能会影响到LED点阵的显示效果。
2. 亮灭控制在扫描行的基础上,LED点阵需要通过控制LED灯的亮灭状态来显示文字、图形、动画等信息。
LED灯只有两种状态:亮和灭。
亮状态表示该LED灯需要显示的部分,灭状态表示该LED灯不需要显示的部分。
LED点阵通常通过控制每个LED灯的亮灭状态来实现显示效果。
例如,要显示一个字母,可以将该字母对应的LED灯设置为亮灭的状态组合,通过扫描行的方式将亮灭的状态逐个展示出来,就能够在LED点阵上显示出该字母。
LED点阵的控制方法LED点阵的控制方法可以简单分为两类:静态控制和动态控制。
1. 静态控制静态控制是指将所有LED灯的亮灭状态一次性设置好,然后通过控制扫描行逐行显示出来。
静态控制的优点是实现简单,只需要一次性设置好亮灭状态,然后循环扫描行即可。
LED点阵屏原理图
![LED点阵屏原理图](https://img.taocdn.com/s3/m/2def9ff8941ea76e58fa0413.png)
列.a.b.c.d.e.f.g.h= -
列.a.b.c.d.e.f.g.h= -
列.a.b.c.d.e.f.g.h= -
D2 D2
6 5
H4
D1 D1 D2 D2
a b c d e f g h
a b c d e f g h
a b c d e f g h
D1 6 5 H6
D1 D1
8 7
H3
H1 H2 H3 H4 H5 H6 H7 H8
9 14 8 12 1 7 2 5
LED-88B 行.A.B.C.D.E.F.G.H= + Ah A AaAbAcAd B BaBb C Ca D Da E F Gh G HgHh H Ha
VCC+5 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 GND VCC 0C1 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
13 3 4 10 6 11 15 16
L9 L10 L11 L12 L13 L14 L15 L16
L17 L18 L19 L20 L21 L22 L23 L24
L25 L26 L27 L28 L29 L30 L31 L32
13 3 4 10 6 11 15 16
a b c d e f g h
列.a.b.c.d.e.f.g.h= -
行.A.B.C.D.E.F.G.H= + AaAbAcAd Ah BaBb Ca Da
H1 H2 H3 H4 H5 H6 H7 H8
9 14 8 12 1 7 2 5
A B C D E F G H
行.A.B.C.D.E.F.G.H= + AaAbAcAd Ah BaBb Ca Da
8×8LED点阵显示数字与字符
![8×8LED点阵显示数字与字符](https://img.taocdn.com/s3/m/a02f2a18227916888486d7fd.png)
5. C 语言程序:
#include "AT89X52.H" unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code digittab[][8]={ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},/*"_",0*/ {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},/*"|",0*/ {0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02},/*"|",0*/ {0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},/*"|",0*/ {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",0*/ {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"|",0*/ {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20},/*"|",0*/ {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40},/*"|",0*/ {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"|",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/ //图形 1 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*"未命名文件",0*/ {0x00,0x00,0x3C,0x24,0x24,0x3C,0x00,0x00},/*"未命名文件",0*/ {0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00},/*"未命名文件",0*/ {0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF},/*"未命名文件",0*/ //图形 2 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*"未命名文件",0*/ {0x00,0x00,0x24,0x18,0x18,0x24,0x00,0x00},/*"未命名文件",0*/ {0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00},/*"未命名文件",0*/ {0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81},/*"未命名文件",0*/ //图形 3 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*"未命名文件",0*/ {0x00,0x00,0x24,0x18,0x18,0x24,0x00,0x00},/*"未命名文件",0*/ {0x00,0x10,0x24,0x1A,0x58,0x24,0x08,0x00},/*"未命名文件",0*/ {0x08,0x10,0x24,0x9A,0x59,0x24,0x08,0x10},/*"未命名文件",0*/ {0x0C,0x10,0xA4,0x9A,0x59,0x25,0x08,0x30},/*"未命名文件",0*/ {0x0E,0x90,0xA4,0x9A,0x59,0x25,0x09,0x70},/*"未命名文件",0*/ {0x8F,0x90,0xA4,0x9A,0x59,0x25,0x09,0xF1},/*"未命名文件",0*/
16×64LED点阵显示屏的设计(附完整proteus仿真图和源程序)
![16×64LED点阵显示屏的设计(附完整proteus仿真图和源程序)](https://img.taocdn.com/s3/m/cfa4801e10a6f524ccbf8550.png)
P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接 收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作 输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉 的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将
《单片机原理及应用》课程设计
摘要
LED 电子显示屏是利用发光二极管构成的点阵模块或像素单元组成可变面 积的显示屏幕,在信息显示领域得到了广泛的应用,实现显示屏的技术也有很多 种。本文介绍了基于单片机 80C51 为控制器的 16×64LED 点阵显示屏系统的设计。 整机以美国 ATMEL 公司生产的 40 脚单片机 AT89C51 为核心,介绍了以它为控制 系统的 LED 点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个行驱动 器 74LS154 和八个列驱动器 74HC595 来驱动显示屏显示。该电子显示屏可以显示 各种文字或单色图像,全屏能显示 4 个汉字,采用 16 块 8×8 点阵 LED 显示模块 来组成一个 16×64 点阵显示模式。显示采用动态显示,使得图形或文字能够实 现静止、移入移出等多种显示方式。本文介绍了利用 Proteus7.10 软件进行原 理图的绘制,利用汉字转换软件将汉字转换为将要发送给单片机的点阵数据,在 keil 软件当中采用 C 语言编程,与 proteus 进行联调,并通过仿真软件 Proteus7.10 最终实现自己设想的效果,总体上系统的设计简单、显示清晰、成 本较低。
16×16LED点阵屏原理图及驱动程序
![16×16LED点阵屏原理图及驱动程序](https://img.taocdn.com/s3/m/88ef6d79b0717fd5360cdcef.png)
{
uchar temp,tempcol;
if(col<8) tempcol=col;
else tempcol=col-8;
temp=(h1>>tempcol)|(h2<<(8-tempcol)); //右移显示
temp=255-temp;
}
/**************************************************************************
右移显示数据生成模块:
***************************************************************************/
void delay(uint p){
uint i,j;
for(i=0;i<p;i++){
for(j=0;j<5;j++)
{;}}
}
/**************************************************************************************
void loadoneline_L(void)
{
char s; //此处不要用uchar定义s
for(s=0;s<2;s++) //s值为屏数加1(16*16为一屏)
{
BUFF[2*s]=HZ[word+32*s+2*disrow];
BUFF[2*s+1]=HZ[word+1+32*s+2*disrow]; //左移显示
点阵显示器原理图
![点阵显示器原理图](https://img.taocdn.com/s3/m/d5058101581b6bd97f19eafd.png)
汉字显示屏到处可见,被广泛应用于与汽车报站器,广告屏等。
本文中的16*16LED显示屏是采用4块8*8LED合并而成的。
下图是4个8*8LED组成的显示屏。
(图1)这里我把点阵LED显示屏制作的电路原理分成两个部分来介绍即显示屏电路和显示屏驱动电路。
一、显示屏电路本人用的是共阴极的8*8点阵屏,在市场上是比较容易买到,下图是8*8点阵屏的实物图。
(图2)点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),下图给出了两种类型的内部电路原理及相应的管脚图。
(图3)LED阵列的显示方式是按显示编码的顺序,一行一行地显示。
每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。
若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。
本文采用低电平逐行扫描,高电平输出显示信号。
即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态,其它行都处于熄灭状态。
为了方便调试本文把4块8*8组成的16*16的点阵屏的行信号扫描输出管脚和列信号显示输出管脚分别引到显示屏的两边。
Prot EL原理图如下:(图4)如图4 所示的原理图中的Si(i=1,2,3,…,16) 代表行扫描信号输出,Di(i=1,2,3,…,16)代表列显示信号输出。
实物电路图的正反面如下:(图5)二、显示屏驱动电路显示屏驱动电路的原理图如下:显示屏驱动电路主要由主芯片控制电路、电源电路、控制信号放大电路等组成。
1、主芯片控制电路该部分电路主要由AT89S52和74LS154组成。
单片机的P0和P2号控制显示信号的输出,P1号的低4位控制74LS154的译码输入,从而控制扫描信号的输出。
2、电源电路整个电路的供电由USB电源提供,利用我们的电脑主机USB接口可以输出+5V电压,方便我们在实验室调试3、控制信号放大电路为提供负载能力,在P0和P2口接16个常用9013的NPN三极管放大驱动信号。
16x16 LED点阵实验
![16x16 LED点阵实验](https://img.taocdn.com/s3/m/8d55382ff46527d3250ce011.png)
实验名称:16x16 LED点阵实验实验目的:利用单片机I/O口实现LED点阵的行扫描动态显示。
实验原理:1、LED显示器的基本结构:七段显示器:将发光二极管封装成数码显示的形式。
共阳七段显示器:共阴七段显示器:点阵式显示器:发光二极管封装成点阵形式,构成不同的字符甚至汉字、图形。
发光二极管排列成矩阵,由亮与暗来产生字符或图形。
每一行的阳极连在一起,每一列的阴极连在一起。
2、点阵显示的原理:点阵显示器每一列的阴极连在一起,对每一列而言相当于一个共阴显示器。
同时每一行的阳极连在一起,相当于七段显示器的笔划。
这样,可以把5X7的发光二极管点阵看作一个五位显示器。
可采用动态显示电路,以笔划锁存器控制行信号,以位锁存器控制列信号。
3、实验原理图使用两片8位输出锁存移位寄存器74HC595(三态输出、串入并出),将单片机I/O口发出的串行数据转换为并行数据LD_QA~LD_QP,作为16×16 LED点阵显示器的行线,使用另外两片8位74HC595作为 16×16 LED点阵显示器的列线LD_1~LD_16。
当行输出高电平、列输出低电平时,可以点亮点阵。
74HC595:LD-QA~LD-QP:点阵行控制信号LD-1~LD-16:点阵列控制信号SER(14脚):串行数据输入端-SCLR(10脚):低电平时将移位寄存器的数据清零。
通常将它接Vcc。
SCK(11脚):上升沿时将串行数据移入移位寄存器。
RCK(12脚):上升沿时移位寄存器的数据锁存入数据寄存器。
-G(13脚): 高电平时禁止输出(高阻态)时序图:实验内容:在16×16LED点阵上分别用静态方式和滚屏方式显示自己的姓(行扫描)。
实验步骤:使用导线将A2区的P10~P14与C3区的L_DAT_H 、L_DAT_L、L_CLK、L_OE 、 L_STR实验设计:电路图:(修改后加上了74HC595输出端口与LED点阵相连的端口名称)1、静态方式:流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00H ;字模表起始地址偏移量MOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低8位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高8位MOV HL+1,AINC R1CJNE R1,#20H,LOOP ;判断一轮扫描是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高八位地址MOV R4,HL+1 ;行信号高八位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高8位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低8位地址MOV R4,HL ;行信号低8位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低8位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R7,#50DELAY1:MOV R6,#10DELAY2:DJNZ R6,$DJNZ R7,DELAY1RETDISPLAY:DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END2、滚屏方式流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00HMOV R7,#00H ;R7用来表示字模表起始位置偏移量LOOP:MOV R5,#20 ;R5用来表示延时,改变R5的值可改变滚屏速度LOOP1:MOV R6,#10H ;R6用来判断是否扫描完一轮MOV A,R7 ;将R7的值赋值给R1MOV R1,AMOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP2:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低八位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高八位MOV HL+1,AINC R1DEC R6CJNE R6,#00H,LOOP2 ;通过R6判断是否扫描完一轮,R6减为0,一轮扫描结束DJNZ R5,LOOP1 ;通过R5判断一帧的延时是否达到INC R7 ;改变字模表的偏移量INC R7 ;R7连续加2,相当于换行CJNE R7,#40H,LOOP ;判断字模表是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高8位地址MOV R4,HL+1 ;行信号高8位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高八位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低八位地址MOV R4,HL ;行信号低八位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低八位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R2,#50DELAY1:MOV R3,#10DELAY2:DJNZ R3,$DJNZ R2,DELAY1RETDISPLAY:DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFFDB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;预留空白DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END实验结果与分析:1、程序正确运行后,可看到16x16 LED点阵显示屏上显示“张”,LED灯的亮暗程度有些不均匀。
88点阵LED显示原理的简要介绍
![88点阵LED显示原理的简要介绍](https://img.taocdn.com/s3/m/dcafd42d7375a417866f8f9c.png)
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
2.硬件电路
3.汇编源程序
ORG 00H
START: NOP
MOV R3,#3
LOP2: MOV R4,#8
MOV R2,#0
LOP1: MOV P1,#0FFH
MOV DPTR,#TABA
MOV A,R2
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb[i];
delay1();
}
}
}
}
51单片机8*8点阵LED显示原理及程序
来源:国外电子元器件 作者:高健 时间:2008-04-01发布人:admin
在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。
{
for(i=0;i<8;i++)
{
P3=taba[7-i];
P1=0xff;
delay1();
}
}
for(j=0;j<3;j++)//from top to bottom 3 time
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb[7-i];
delay1();
}
}
for(j=0;j<3;j++)//from bottom to top 3 time
MOV P3,A
DEC R2
LCALL DELAY
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LED点阵书写显示屏的设计
2011-12-23 22:51:14 来源:21IC
关键字:STC89C58LED双色点阵红外光电三板管光笔
近年来,点阵LED显示屏利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,已成为众多显示媒体以及户外作业显示的电子工具,广泛地应用于车站、宾馆、金融、证券、邮电、体育等广告发布或交通运输等行业。
目前LED显示屏的设计已经有多种方法可以实现,本设计是基于STC89C58单片机利用自制的光笔中红外光电三极管检测光笔触及位置处红色LED灯的点亮,计算出光笔位置的行列坐标,并根据按键设置的不同工作模式控制LED显示,从而实现点亮、划亮、反显、清屏、笔画拖动、轮流显示等功能。
1 系统设计方案
用双色LED点阵(红色和绿色)模块组合成32×32的LED点阵屏。
其中红色LED作微亮扫描检测用,绿色LED作显示用,用红外光电三极管自制光笔。
在检测时依次点亮红色LED,当点亮到某个LED时,如果此时光笔放在该LED时,这时红外光电三极管的阻值会发生变化,通过相应的检测电路可以得出一个高低电平的变化,单片机检测到信号变化时就可以判断光笔的当前位置。
该方案简单易行,对光笔位置判断的灵敏度较高,抗外界干扰能力强。
采用双色点阵和红外光电三极管能够有效地减少环境可见光和显示LED(绿色)所发的光线对光笔中光电三极管的干扰。
2 系统结构及单元模块设计
2.1 系统总体框图
系统主要由微处理器STC89C58,32×32双色LED点阵显示、光笔及检测电路、外界光照强度检测电路、按键输入电路、液晶显示模块等几个部分组成。
系统硬件结构框图如图1所示。
单片机STC89C58片内有1 KB的片外RAM,能够满足保存四屏显示信息要求,该单片机性价比很高。
系统原理图如图2所示。
2.2 光笔及检测电路
用红外光电三极管自制光笔,光笔检测电路如图3所示。
图中Q2是用红外光电三极管,用来完成对32×32点阵红色LED灯点亮或熄灭的检测;R6,RP1用于对Q2进行限流,另外还可以调节RP1来提高或减小输出的电压值;R7,R8是用于给U3A(比较器)的同相端提供基准电压值,通过它跟采集信息输出来的电压值进行比较(U2>U3,
U1=Umin),R12是U3A的输出上拉电阻。
工作原理如下:当红光照到红外光电三极管上时,红外光电三极管的电阻变小,其射极电压升高,此时2脚电压比3脚电压高,比较器1端输出为低电平。
当电容C11充电一段时间之后,比较器2脚电压比3脚电压低,比较器1端输出为高电平。
由此,当检测到光信号时,该电路将产生一个脉冲信号。
由于在电路中加了耦合电容,可有效地防止环境对光笔的影响。
在本系统中,光笔是一个非常重要的一个环节,为了更好的稳定工作,必须添加适当的抗干扰措施。
在信号传输方面采用屏蔽软同轴铜线,在红外光电三极管外围套加黑色热缩管,红外光电三极管比单个LED灯的直径小,以确保少受外界红外线的干扰。
2.3 LED双色点阵显示与驱动电路
LED双色(红、绿)点阵的型号有很多,其中最为常用的有4×4,8×8,16×16式模块,本设计需要一个32×32的双色显示,其显示亮度、体积由设计者自行定义。
考虑到采购的因素,选择由16块8×8双色点阵模块组成32×32点阵显示屏,利用由74HC154和74HC595芯片来驱动显示,由串行口工作在模式0(速度快)将显示信息快速送入74HC595。
LED是一个非线性元器件,当它两端的电压达到一定的值后,通过它本身的电流会急剧上升。
考虑32×32点阵式由1 024个发光二极管组成,当它们同时点亮时的电流很大,必须考虑电源供电能力。
一般LED的电流值为5~20 mA,取最大值20 mA,同时点亮两行,有:I=20×64= 1 280mA。
2.4 外界光照检测电路
外界光照检测电路如图4所示。
电路采用光敏电阻RP串联一个固定电阻R9,将光照变
化转换为电压变化,此电压信号通过芯片AD833进行模数转换(A/D)后,由5脚送入单片机处理,以控制亮度的调节。
根据分压原理,有:
可见选择不同的R9的阻值可改变Vin的大小,使输入信号在合适的范围之内。
光敏电阻RP随光照变化的阻值变化为3~4 kΩ,由上式可计算出R9为3~4 kΩ,取R9=4 kΩ。
2.5 超时低功耗设计
超时低功耗设计通过软件实现,利用按键设定时间常数,当在设定时间内光笔未接触显示屏或按键未按下时关闭所有显示,使系统进入休眠状态,减少电能消耗,当有按键按下时系统恢复运行。
3 系统软件设计
系统的软件采用C语言编程,软件在KeilμV3编程环境中编写和调试。
为了编写和调试的方便,程序使用模块化设计,根据按键、光笔扫描、LED点阵显示、LCD液晶显示、亮度调节等功能分别设计程序,大大简化了程序的设计和调试工作,节省设计周期。
系统主程序流程图如图5所示。
主程序开始对内部功能寄存器、端口、液晶显示模块等初始化,然后在主循环中进行光笔位置扫描、LED显示缓冲区数据更新、LED点阵输出、液晶模块输出、可见光亮度检测、低功耗判断等功能。
在定时器中断子程序中进行按键扫描,完成显示模式的识别,相应的显示模式信息和光标坐标在液晶模块上显示。
4 系统测试
本设计的测试要求与结果见表1。
通过测试结果表明,系统能够实现该设计要求的点亮、划亮、反显、清屏、笔画拖动、轮流显示、显示亮度调节、休眠模式等主要功能。
5 结论
系统主要由微处理器STC89C58、32×32双色LED点阵显示、光笔及检测电路、外界光照强度检测电路、按键输入电路、液晶显示模块等几个部分组成。
系统能够实现要求的点亮、划亮、反显、清屏、笔画拖动、轮流显示、显示亮度调节、休眠模式等主要功能。
在系统的设计过程中,利用软件和硬件相结合,充分发挥软件编程的灵活性,并最大限度挖掘单片机的硬件资源。
系统性价比高,运行稳定,能耗低,显示效果好。