前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口与通信-LED点阵

接口与通信-LED点阵

原创
作者头像
会洗碗的CV工程师
发布2024-02-16 18:45:41
2360
发布2024-02-16 18:45:41
举报
文章被收录于专栏:LongJava学习资料

实验目的与要求

掌握LED点阵的具体操作过程及其原理。

二、实验环境

硬件环境:实验盒;软件环境:keil

三、实验原理

共阳极双色点阵

硬件电路:

LED点阵屏是通过LED(发光二极管)组成的显示器件,以灯珠的亮灭来显示文字、图片、动画、视频等。它是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。

LED点阵屏的显示原理是,利用64个发光二极管组成的点阵来显示信息。每个LED灯珠都可以独立控制,通过控制不同灯珠的亮灭状态,可以显示出不同的文字、图片等信息。同时,LED点阵屏还可以采用动态扫描驱动方式工作,进一步提高显示效果和稳定性。

LED点阵屏的分类主要有单色和双色两种。单色LED点阵屏通常只能显示一种颜色,而双色LED点阵屏则可以显示两种颜色,如红色和绿色。此外,LED点阵屏的显示方式也有多种,如静态、横向滚动、垂直滚动和翻页显示等。

在应用中,LED点阵屏的封装方式也有所不同。一种常见的封装方式是利用8*8的模块组合成单元板,这样的单元板称为点阵点元板,一般用于室内单色或双色显示屏用。另外,LED模组应用中还包括用插灯或表贴封装做成的单元板,常用于户外门头单红屏、户外全彩屏,室内全彩屏等。此外,用做夜间装饰的发光字串也被称为LED模组。

总之,LED点阵屏是一种应用广泛的显示器件,具有制作简单、安装方便、显示效果多样化等优点,被广泛应用于各种公共场合。

四、实验内容

实验步骤:先用数据线接上电脑和实验盒子,然后在软件中添加对应的源程序编译后的pro.hex文件,断电添加,然后运行一瞬间打开电源。

实验程序:

代码语言:c
复制
#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点阵滚动显示:

实验程序:

代码语言:c
复制
#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();
    }
   }
  }
 }

实验接线图:同上

实验结果:

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档