实验目的与要求
掌握LED点阵的具体操作过程及其原理。
二、实验环境
硬件环境:实验盒;软件环境:keil
三、实验原理
共阳极双色点阵
硬件电路:
LED点阵屏是通过LED(发光二极管)组成的显示器件,以灯珠的亮灭来显示文字、图片、动画、视频等。它是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。
LED点阵屏的显示原理是,利用64个发光二极管组成的点阵来显示信息。每个LED灯珠都可以独立控制,通过控制不同灯珠的亮灭状态,可以显示出不同的文字、图片等信息。同时,LED点阵屏还可以采用动态扫描驱动方式工作,进一步提高显示效果和稳定性。
LED点阵屏的分类主要有单色和双色两种。单色LED点阵屏通常只能显示一种颜色,而双色LED点阵屏则可以显示两种颜色,如红色和绿色。此外,LED点阵屏的显示方式也有多种,如静态、横向滚动、垂直滚动和翻页显示等。
在应用中,LED点阵屏的封装方式也有所不同。一种常见的封装方式是利用8*8的模块组合成单元板,这样的单元板称为点阵点元板,一般用于室内单色或双色显示屏用。另外,LED模组应用中还包括用插灯或表贴封装做成的单元板,常用于户外门头单红屏、户外全彩屏,室内全彩屏等。此外,用做夜间装饰的发光字串也被称为LED模组。
总之,LED点阵屏是一种应用广泛的显示器件,具有制作简单、安装方便、显示效果多样化等优点,被广泛应用于各种公共场合。
四、实验内容
实验步骤:先用数据线接上电脑和实验盒子,然后在软件中添加对应的源程序编译后的pro.hex文件,断电添加,然后运行一瞬间打开电源。
实验程序:
#include<reg51.h>
//--定义要使用的IO口--//
#define READPORTS P2
#define GREENPORTS P1
#define COMMONPORTS P0
//--列选通控制--//
unsigned char code TAB[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
//--点阵字码--//
unsigned char code CHARCODE[18][8]={
{0x00,0x00,0x3e,0x41,0x41,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
{0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P
{0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R
{0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E
{0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C
{0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H
{0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I
{0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N
{0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00} //中
};
/*******************************************************************************
* 函数名 : main
* 函数功能 : 主函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void main()
{
unsigned char tab, j;
unsigned int i;
while(1)
{
for(i= 0; i<5000; i++ ) //两个字之间的扫描间隔时间
{
for(tab=0;tab<8;tab++)
{
READPORTS=0xFF; //消隐
COMMONPORTS=CHARCODE[j][tab]; //输出字码
READPORTS=TAB[tab];
}
}
j++;
if(j == 18)
{
j = 0;
}
}
}
实验结果:
五、实验分析
点阵每个时刻只显示一行,如果速度切换的足够快,那么给人的感觉就是显示一张图片。每一行的切换速度要在ms级,否则就会给人感觉闪屏。可以尽量小。几个ms或更短。
六、思考题
LED点阵滚动显示:
实验程序:
#include <REG51.H>
unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //纵条表
unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //衡条表
/*************延时函数*********************/
void delay1(void)
{
unsigned char i,j,k;
for(k=10;k>0;k--) //循环时间是 10*20*248次
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
/*************主函数*****************************/
void main(void)
{
unsigned char i,j;
while(1)
{
for(j=0;j<3;j++) //从左到右3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=taba[i];
P0=0xff;
delay1();
}
}
for(j=0;j<3;j++) //从右到左3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=taba[7-i];
P0=0xff;
delay1();
}
}
for(j=0;j<3;j++) //从上到下3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=0x00;
P0=tabb[7-i];
delay1();
}
}
for(j=0;j<3;j++) //从下到上3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=0x00;
P0=tabb[i];
delay1();
}
}
}
}
实验接线图:同上
实验结果:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。