点阵屏原理图

合集下载

LED点阵原理图

LED点阵原理图

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所示。

第4章LED点阵屏控制

第4章LED点阵屏控制

▪ 显示过程如下:
▪ 首先在P0口送出第一个行码00H,在P2口送出一个 列控制码01111111;
▪ 再在P0口送第二个行码00H,在P2口送出一个列控 制码10111111;
▪ 再在P0口送第三个行码3EH,在P2口送出一个列控 制码11011111;
▪ 再在P0口送第二个行码41H,在P2口送出一个列码 11101111;
3
00H,00H,22H,49H,49H,49H,36H,00H
4 00H,00H,0CH,14H,24H,7FH,04H,00H
5
00H,00H,72H,51H,51H,51H,4EH,00H
6
00H,00H,3EH,49H,49H,49H,26H,00H
7
00H,00H,40H,40H,40H,4FH,70H,00H
0x44,0x7C,0x4C,0x18,0x10,0x24,0x7C,0x04,/*"N"*/

}

};
▪ uchar disloc[4]={0x7F,0xFF,0xFF,0xFF};
▪ void delay(uchar i)
▪{
▪ uchar j,k;
▪ for(j=i;j>0;j--)
▪ for(k=50;k>0;k--);
8
00H,00H,36H,49H,49H,49H,36H,00H
9
00H,00H,32H,49H,49H,49H,3EH,00H
▪ 要显示数字0~9,但一个8×8点阵 在同一时间只能显示其中一个数字, 作为演示程序,设定每隔1秒变换一 个显示数字,即每个数字将连续显 示1秒,然后再换为下一个数字显示。
▪ 4.1任务描述 ▪ 4.2 单个字符的显示 ▪ 4.3 典型案例

74ls595原理

74ls595原理

74ls595原理2( 移位锁存器74ls595原理74ls595为 8位输出锁存移位寄存器RESET: 复位信号shitf clock:移位时钟serial data input:串行数据输入output enable:输出使能latch clock:锁存时钟595有3层结构:第一层为移位D触发器;第二层为锁存D触发器;第三层为输出3态门;当复位信号为0时,移位D触发器清0;当移位脉冲从L->H时,第一个移位D触发器的Q=D;其它的Qn=Qn-1;当锁存脉冲从0->1时,第二层为锁存D触发器的输出=/输入; 当OE=1时,595的输出为高阻态;当OE=0时,595的输出为第二层为锁存D触发器的输出的反相; 74595的数据端:QA--QH: 八位并行输出端,可以接点阵的8列。

QH': 级联输出端。

将它接下一个595的SI端。

SI: 串行数据输入端。

74595的控制端说明:/SCLR(10脚): 低电平时将移位寄存器的数据清零。

通常将它接Vcc。

SCK(11脚):上升沿时数据寄存器的数据移位。

QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。

(脉冲宽度:5V时,大于几十纳秒就行了。

通常都选微秒级) RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。

通常将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。

通常都选微秒级),更新显示数据。

/G(13脚): 高电平时禁止输出(高阻态)。

如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。

比通过数据端移位控制要省时省力。

注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。

74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。

74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。

12864点阵型液晶显示屏的基本原理与使用方法(很详细)

12864点阵型液晶显示屏的基本原理与使用方法(很详细)

0
0
1
1
1
0
0
1
1
X
X
X
0
0
1
0
1
1
1
0
0
0
1
X
X
X
1
0 BUSY 0 ON/OFF RST 0
0
1
写数据
1
1
读数据
DB2 1 X X X 0
DB1 1 X X X 0
DB0 1/0
X X X 0
表 2:12864LCD 指令表
各功能指令分别介绍如下。
显示开/关指令
R/WRS 00
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 00111111/0
设置了页地址和列地址,就唯一确定了显示 RAM 中的一个单元,这样 MPU 就可以
用读、写指令读出该单元中的内容或向该单元写进一个字节数据。
5、读状态指令
R/WRS 10
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0 BUSY0ON/OFFREST0000
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:
图 2 “你”字模图
12864 点阵型 LCD 简介
12864 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及 128×64 全点阵液晶显示器组成。 可完成图形显示,也可以显示 8×4 个(16×16 点阵)汉字。
管脚号 1 2 3 4
管脚名称 VSS VDD V0
D/I(RS)
LEVER 0
12864LCD 的指令系统及时序
该类液晶显示模块(即 KS0108B 及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指 令表如表 2 所示:

LED点阵显示屏工作原理及驱动程序

LED点阵显示屏工作原理及驱动程序

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的片选使能端,低电平有效。

88点阵LED显示屏的原理详解及汉字代码

88点阵LED显示屏的原理详解及汉字代码

首先我们看一下8*8led显示屏?的原理从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。

通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。

例如:要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。

一根横柱:对应的行置0,而列则采用扫描的方法来实现下图是4个8*8LED组成的显示屏。

这里我把点阵LED显示屏制作的电路原理分成两个部分来介绍即显示屏电路和显示屏驱动电路。

一、显示屏电路本人用的是共阴极的8*8点阵屏,在市场上是比较容易买到,下图是8*8点阵屏的实物图。

点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),下图给出了两种类型的内部电路原理及相应的管脚图。

LED阵列的显示方式是按显示编码的顺序,一行一行地显示。

每一行的显示时间大约为4ms,由于人类的视觉暂留现象,将感觉到8行LED是在同时显示的。

若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。

本文采用低电平逐行扫描,高电平输出显示信号。

即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态,其它行都处于熄灭状态。

为了方便调试本文把4块8*8组成的16*16的点阵屏的行信号扫描输出管脚和列信号显示输出管脚分别引到显示屏的两边。

Protel原理图如下:如图4 所示的原理图中的Si(i=1,2,3,…,16) 代表行扫描信号输出,Di(i=1,2,3,…,16)代表列显示信号输出。

实物电路图的正反面如下:二、显示屏驱动电路显示屏驱动电路的原理图如下:显示屏驱动电路主要由主芯片控制电路、电源电路、控制信号放大电路等组成。

LED点阵显示屏设计原理及制作

LED点阵显示屏设计原理及制作

LED点阵显示屏设计原理及制作汉字显示屏到处可见,被广泛应用于与汽车报站器,广告屏等。

本文中的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三极管放大驱动信号。

1608点阵屏原理图+程序+实物照片

1608点阵屏原理图+程序+实物照片
{0x22,0xAC,0xFF,0xA8,0x1C,0x01,0xFF,0x00}, //27利
{0x00,0x00,0x70,0xFD,0x70,0x00,0x00,0x00}, //28 !
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//29
{0x22,0xFC,0x21,0x3E,0x00,0x7E,0x42,0x7E}, //30加
void delay_ms(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
/****************************IO口镜像函数**************************************/
//用的字符码是以前的,这次硬件数据口和上次的相反,没有重新取模而是写了一个IO口镜像函数
{0x00,0x7E,0x81,0x81,0x81,0x42,0x00,0x00},//19 C
{0x00,0xFF,0x10,0x28,0x44,0x82,0x00,0x00}, //20 K
{0x00,0x00,0x70,0xFD,0x70,0x00,0x00,0x00}, //21 !
{0x08,0x10,0x20,0x10,0x08,0x04,0x08,0x10}, //22 ~
w=0xfe;for(j=0;<8;j++)
{
w=_cror_(w,1);
duan_port = mirror(~table[CHAR_NUM-1][j]);
wei_port2 = w;
delay_ms(1);
}

点阵屏显示原理及实验详解讲解

点阵屏显示原理及实验详解讲解

点阵屏显示原理及实验详解讲解标题:LED点阵屏学习攻略共享资料LED点阵屏学习攻略在经历了将近一个学期断断续续的点阵屏学习后,最后终于在AVR平台下完成了128*32点阵屏的无闪烁显示。

现把整个学习过程总结如下:无论是51单片机还是AVR单片机,点阵屏的显示原理是一样的,所以首先从51讲起。

说明:以下所有试验如无特殊说明均在Keil uVision3 + Proteus 6.9 SP5下仿真完成。

一.基于51的点阵屏显示:(1)点亮第一个8*8点阵:1.首先在Proteus下选择我们需要的元件,AT89C52、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。

在Proteus 6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE ,MATRIX-8*8-RED。

在这里请大家牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的行信号为低,列信号为高,则该点被点亮!此结论是我们编程的基础。

2.在选择完以上三个元件后,我们开始布线,具体如下图:这里P2是列选,P3连接38译码器后作为行选。

选择38译码器的原因:38译码器每次可输出相应一个I/O口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。

3.下面让我们把它点亮,先看一个简单的程序:(将奇数行偶数列的点点亮,效果如下图)下面是源代码:/************8*8LED点阵屏显示*****************/#includevoid delay(int z) //延时函数{int x,y;for(x=0;x<z;x++)< p="">for(y=0;y<110;y++);}void main(){while(1){P3=0; //行选,选择第一行P2=0x55; //列选,即该行显示的数据delay(5); //延时/*****下同*****/P3=2; //第三行P2=0x55;delay(5);P3=4; //第五行P2=0x55;delay(5);P3=6; //第七行P2=0x55;delay(5);}}上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。

LED点阵书写显示屏(文稿最终)-11.21

LED点阵书写显示屏(文稿最终)-11.21

LED点阵书写显示屏的设计摘要以ARM系列主流32位微处理器STM32为控制核心设计LED点阵书写显示屏系统。

系统主要包括主控模块、光笔模块、键盘输入模块、液晶显示模块、电源模块和32×32LED点阵屏。

系统通过键盘进行功能切换,光电三极管作为光笔的感应器件,在STM32的控制下进行信号采集,进而实现LED点阵屏的“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移、点阵屏亮度调节、超时休眠”等功能。

经测试,系统功能齐全,响应速度快,书写流畅,各项性能指标均达到了设计要求。

Abstract:Writing Dot Matrix LED Display System is designed,which control core is ARM-series of mainstream 32-bit microprocessor of STM32.Which mainly includes Control module,Light pen module,Keyboard input module,Liquid crystal display modules,Power modules,and 32 ×32LED dot-matrix display.Function Switch is conducted by keyboard keys,a light pen sensing devices is photoelectric transistor,Under the control of the STM32 signal acquisition,LED dot-matrix screen’s function are reslized of Light,zoned light,anti-evident,and the entire screen erase,stroke erase,write continuously-word,object drag,dot-matrix screen brightness adjustment,overtime sleep,and so on.Been tested,which fully functional,fast response,writing fluency,the performance indicators have reached the design requirement.一、方案的选择和论证根据题目要求,系统可以分为几个基本模块,各模块的实现方案如下:1、控制器模块方案一:采用89C51单片机,技术成熟,调试方便,价格便宜。

LED点阵屏原理图

LED点阵屏原理图
对于138,G1端为高电平时选中芯片.
列.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

16,16点阵 ppt课件

16,16点阵 ppt课件
点阵时钟显示器
赵云忠,叶勇健
1
2020/12/27
总原理图
2
2020/12/27
精品资料
• 你怎么称呼老师?
• 如果老师最后没有总结一节课的重点的难点,你 是否会认为老师的教学方法需要改进?
• 你所经历的课堂,是讲座式还是讨论式? • 教师的教鞭
• “不怕太阳晒,也不怕那风雨狂,只怕先生骂我 笨,没有学问无颜见爹娘 ……”
我们以显示汉字“单”为例,来说明其扫描原理,在中文宋体字库中,
每一个字由16行16列的点阵组成显示。如果用8位的AT89C51单片机控制
, 由于单片机的总线为8位,一个字需要
12
2020/12/27
拆分为2个部分。一般我们把它拆分为上部和下部,上部由8*16 点阵组成, 下部也由8*16点阵组成。
4-16线译码器74ls154来完成列方向的显示。 而行方向16
条线则接在P2口和P0口。 14
2020/12/27
电路中行方向由p0口和p2口完成扫描,由于p0口没有上拉电阻, 因此接一个4.7k*8的排阻上拉,为提供负载能力,接16个
2n5551的NPN三极管驱动。列方向则由4—16译码器74LS154 完成扫描,它由89C51的P1.0---P1.3控制。同样,驱动部分则
以用这个方法来分析出它的扫描代码从而显示在屏幕上。
我们把行列总线接在单片机的io口,然后把上面分析到 的扫描代码送入总线, 就可以得到显示的汉字了。 在这
个例子里,由于一共用到16行,16列, 如果将其全部接 入89c51单片机, 一共使用32条io口,这样造成了io资源 的耗尽,系统也再无扩充的余地。 实际应用中我们使用
11
图1-1 8 x8LED点阵的外观 及引脚图

74HC154的16×16点阵屏

74HC154的16×16点阵屏

16×16点阵显示屏决定做个1616的屏看看效果,原理图就是以下了,注意做1616时,要去掉一个74LS154(当然这里也能换用74HC154,虽然功耗大,但价格较低),经过两天的奋斗,终于完工了。

简单的调试后,点亮了!!编个流动显示的程序,哈哈,很炫啊。

心动不如赶快行动啊!!我是把点阵块焊到一块板子上,可方便检查有无虚焊,控制部分放到了另一张板上,做成的实物图就是下面的了,视频在这里:/springvirus/********************************************************* 程序名称:LED1616点阵流动显示汉字简要说明:最大可显示16*16汉字P0口接上行线,P2口接下行线,P3口接扫描线编写: 改编: springvirus*********************************************************/#include <AT89X52.h>#define hang1 P0 //上行线#define hang2 P2 //下行线#define lie P1 //列线#define sum sizeof(hanzi)/32 //自动计算汉字字数/*****参数设置*****/#define ziti 16 //字体大小(宽度)#define light 50 //显示亮度#define move_speed 50 //移动速度unsigned char code hanzi[]={/*-- 文字: 自 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xF8,0x48,0x48,0x4C,0x4B,0x4A,0x48,0x48,0x48,0xF8,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,/*-- 文字: 制 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00, 0x00,0x00,0x3F,0x01,0x01,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,/*-- 文字: 小 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xC0,0x70,0x20,0x00,0xFF,0x00,0x10,0x20,0xC0,0x80,0x00,0x00,0x00, 0x04,0x02,0x01,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x01,0x07,0x02,0x00,/*-- 文字: 型 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x12,0x92,0x7E,0x12,0x12,0xFE,0x12,0x12,0x10,0xFC,0x00,0x00,0xFF,0x00,0x00, 0x40,0x42,0x49,0x48,0x48,0x48,0x49,0x7E,0x48,0x48,0x48,0x4A,0x4C,0x4B,0x40,0x00,/*-- 文字: 点 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xE0,0x20,0x20,0x20,0x3F,0x24,0x24,0x24,0xF4,0x24,0x00,0x00,0x00, 0x00,0x40,0x30,0x07,0x12,0x62,0x02,0x0A,0x12,0x62,0x02,0x0F,0x10,0x60,0x00,0x00,/*-- 文字: 阵 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0xFE,0x02,0x12,0x2A,0xC6,0x88,0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x88,0x88,0x00,0x00, 0xFF,0x00,0x02,0x04,0x03,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,/*-- 文字: 显 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0x00,0x00, 0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00,/*-- 文字: 示 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00, 0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,0x00,0x01,0x02,0x0C,0x18,0x00,0x00,/*-- 文字: 系 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00, 0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00,/*-- 文字: 统 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4,0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00, 0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,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};uint k=0,j; //移位变量,k:移位个数uint a=0; //用于软件延时ulong s=(sum+1)*ziti; //s为全部列数uchar disbuf[16][2]; //定义显示缓冲区(16行两列的二维数组以开辟1个16*16汉字的空间)bit move_st; //移动标志/*****可变延时*****/void delay(void){uchar i;for(i=0;i<light;i++);}/*****初始化子程序*****/void init(void){TMOD=0x1;TH0=0xfc;TL0=0x18;}/*****计数器中断程序*****/void timer0(void) interrupt 1 //中断处理{TH0=0xfc;TL0=0x18;a++;}/*****汉字循环显示*****/void run_move(void){uchar k1,k2;if(a>=move_speed) //move_speed控制移动速度{if(k>s-ziti-1)k=0; //整屏移动列数k1=k/ziti;k2=k%ziti;j=ziti*2*k1+k2; //显示指针k++;move_st=1;a=0;}}/*****装载显示数据至缓冲区*****/void load_hanzi(void){uchar i;run_move();if(move_st){for(i=0;i<15;i++){disbuf[i][0]=disbuf[i+1][0];//移位处理 disbuf[i][1]=disbuf[i+1][1];//移位处理 }disbuf[15][0]=hanzi[j];disbuf[15][1]=(hanzi[ziti+j]);move_st=0;}}/*****扫描显示数据缓冲区的内容*****/ void display(void){uchar i;for (i=0;i<16;i++){lie=i;hang1=disbuf[i][0];hang2=disbuf[i][1];delay();hang1=0;hang2=0;}}/*****主程序*****/void main (void){ init();EA=1; //开中断TR0=1;ET0=1;while(1){ load_hanzi();display(); }}。

16×16LED点阵屏原理图及驱动程序

16×16LED点阵屏原理图及驱动程序
/*uchar two_onebyteR(uchar h1,uchar h2)
{
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]; //左移显示

16215;16点阵led显示屏整个过程及c语言程序 (1)

16215;16点阵led显示屏整个过程及c语言程序 (1)

16×16点阵LED显示屏整个过程及C语言程序7.1功能要求设计一个室内用16×16点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。

图形或文字显示有静止、移入移出等显示方式。

7.2方案论证从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。

16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。

这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大的多,这样在锁存器上花的成本将是一个很庞大的数字。

因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。

动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。

具体就16×16的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;……第十六行之后又重新燃亮第一行,这样反复轮回。

当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。

采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。

显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。

显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档