8X8_LED点阵显示原理与编程技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8X8 LED 点阵显示原理与编程技术
1
.实验任务
在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,女口此循环下去。
2. 实验目的
掌握用单片机I/O 口进行LED点阵扫描显示。
3. 实验工具
PROTEUS6.9, Keil uVisio n2 软件
4. 原理图
5. 相关知识
1) LED点阵
八十年代以来出现了组合型IED点阵显示器,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。具有高亮度、功耗低、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。点阵显示器有单色和双色两类,可显示红,黄,绿,橙等。LED点阵有4X 4、4X 8、5X 7、5X & 8
X & 16X 16、24X 24、40X 40 等多种;
根据像素的数目分为等,双基色、三基色等,根据像素颜色的不同所显示的文字、图象等内容的颜色也不同,单基色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。图1--5示出几种LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验
获得。
2) LED点阵扫描驱动方案:
由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于
見珈乩工柞膏
hnp: WTieKiin r cortvjianc aLlic ng
oooGofrc
-0
口
c-d
LED管芯大多为高亮度型,因此某行或某列的单体LED驱动电流可选用窄脉冲,但其平均电流应限制在20mA内.多数点阵显示器的单体LED的正向压降约在2V 左右•但大亮点为10的点阵显示器单体LED的正向压降约为6V。
大屏幕显示系统一般是将由多个LED点阵组成的小模块以搭积木的方式组合而成的,每一个小模块都有自己的独立的控制系统,组合在一起后只要引入一个总控制器控制各模块的命令和数据即可,这种方法既简单而且具有易展、易维修的特点。
3) LED点阵显示系统中各模块的显示方式:
有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号•如5 x 7点阵显示器用于显示西文字母.5X 8点阵显示器用于显示中西文,8 x 8 点阵用于显示中文文字,也可用于图形显示。用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过微机或单片机控制驱动。
8X8点阵LED工作原理说明
8X8点阵LED结构如下图所示
从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置 1 电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49 所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
■iL 门川 匸作 idittp: liexun. con/ j iancailiong
6. C 语言源程序
#in elude
un sig ned char i,j; for(i=10;i>0;i--) for(j=248;j>0;j--); }*/ void delay1(void)
unsigned char i,j,k; for(k=10;k>0;k--)
for(i=20;i>0;i--) for(j=248;j>0;j--);
}
void main(void)
{
z 3 4
5 6 7
s 800000000 7O O O 0O 0C O 600000000 68O O O C C 4。
c m 「口
创lll
A
sl
d t o o o o o o o o
o o o o o o o o Ab o o o o o o o o O O O O O O
O Q o oo
X
nnnn
unsigned char i,j;
while(1)
{
for(j=0;j<3;j++)//from left to right 3 time
{
for(i=0;i<8;i++)
{
P2=taba[i];
P0=0xff;
delay1();
}
}
for(j=0;j<3;j++)//from right to left 3 time
{
for(i=0;i<8;i++)
{
P2=taba[7-i];
P0=0xff;
delay1();
}
}
for(j=0;j<3;j++)//from top to bottom 3 time {
for(i=0;i<8;i++)
{
P2=0x00;
P0=tabb[7-i];
delay1();
}
}
for(j=0;j<3;j++)//from bottom to top 3 time {
for(i=0;i<8;i++)
{
P2=0x00;
P0=tabb[i]; delay1();