LED显示屏系统软件教程.docx

上传人:b****6 文档编号:8621218 上传时间:2023-02-01 格式:DOCX 页数:12 大小:21.15KB
下载 相关 举报
LED显示屏系统软件教程.docx_第1页
第1页 / 共12页
LED显示屏系统软件教程.docx_第2页
第2页 / 共12页
LED显示屏系统软件教程.docx_第3页
第3页 / 共12页
LED显示屏系统软件教程.docx_第4页
第4页 / 共12页
LED显示屏系统软件教程.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

LED显示屏系统软件教程.docx

《LED显示屏系统软件教程.docx》由会员分享,可在线阅读,更多相关《LED显示屏系统软件教程.docx(12页珍藏版)》请在冰豆网上搜索。

LED显示屏系统软件教程.docx

LED显示屏系统软件教程

LED显示屏系统软件教程

通讯协议

 

目录

======

第一章概述2

§1.1基本格式2

§1.2CRC校验和算法2

§1.3发送数据到配置区4

第二章控制类命令4

§2.1复位控制卡4

§2.2取运行状态4

§2.3设定亮度5

§2.4发送时间段亮度表5

§2.5设定自动开关屏时间5

§2.6设定屏体电源状态5

§2.7校准控制卡时间5

第三章图片类命令6

§3.1图片数据的整理6

§3.2节目表的结构8

§3.3发送图片数据和节目表文件8

§3.4设定节目表项数8

第四章文字类命令9

§4.1显示文字串9

§4.2画线9

§4.3切换显示区9

§4.4拷贝显示区9

§4.5清除显示区9

§4.6装入图片到显示区9

§4.7将显示区的内容保存为图片9

第一章概述

本文档中,用‘字符’表示ASCII码,字节表示16进制数据。

涉及到两个字节表示一个数据时,总是高字节在前,低字节在后。

控制卡上的FLASH芯片每256字节为1页,1型卡上有2048页,2型和4型卡有4096页;

第0页开始共3027页存放图片数据(仅2型、4型卡)

第2048页开始共979页存放图片数据(仅对1型卡)

第3027页开始共6页存放ASCII字符和数字的点阵库(若使用文字模式)

第3033页开始共1024页存放16点阵汉字库(若使用文字模式)

第4057页开始共1页保留

第4058页开始共25页存放时钟版面设计的内容

第4083页开始共12页存放节目表

第4095页开始共1页存放配置信息

§1.1基本格式

CL2005的基本通讯格式为:

7字符引导串+1字节屏号+1字符卡类型+2字节数据长度+多字节数据+2字节CRC

其中,

引导串:

ESC+“$LYTEC”(ESC的ASCII码值为0x1b)

屏号:

控制卡上短路子设定的编号

卡类型:

‘1’表示1型卡,‘A’表示2型卡,‘V’表示4型卡

长度:

高字节在前,低字节在后,表示有效数据的字节数,不包括引导串、屏号、卡类型、长度自身、CRC校验。

数据:

数据的第1字节是命令码,其它为与命令有关的数据

CRC:

高字节在前,低字节在后,对长度及数据进行16位CRC校验的结果。

除取控制卡的运行状态外,对其它发送给控制卡的数据包的正确应答为9个字节:

“07”+接收到的数据包从命令开始的5个字节+“OK”

由此应答格式可知,计算机发出的数据包中,在命令字节后必须至少有2个字节的数据(加上2字节CRC一共5个字节用于应答)。

§1.2CRC校验和算法

下面用C语言描述CRC校验算法:

WORDCRC_Table[256]=

{

0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,

0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,

0x1231,0x0210,0x3273,0x2252,0x52b5,0x4294,0x72f7,0x62d6,0x9339,0x8318,0xb37b,0xa35a,0xd3bd,0xc39c,0xf3ff,0xe3de,

0x2462,0x3443,0x0420,0x1401,0x64e6,0x74c7,0x44a4,0x5485,

0xa56a,0xb54b,0x8528,0x9509,0xe5ee,0xf5cf,0xc5ac,0xd58d,

0x3653,0x2672,0x1611,0x0630,0x76d7,0x66f6,0x5695,0x46b4,

0xb75b,0xa77a,0x9719,0x8738,0xf7df,0xe7fe,0xd79d,0xc7bc,

0x48c4,0x58e5,0x6886,0x78a7,0x0840,0x1861,0x2802,0x3823,

0xc9cc,0xd9ed,0xe98e,0xf9af,0x8948,0x9969,0xa90a,0xb92b,

0x5af5,0x4ad4,0x7ab7,0x6a96,0x1a71,0x0a50,0x3a33,0x2a12,

0xdbfd,0xcbdc,0xfbbf,0xeb9e,0x9b79,0x8b58,0xbb3b,0xab1a,

0x6ca6,0x7c87,0x4ce4,0x5cc5,0x2c22,0x3c03,0x0c60,0x1c41,

0xedae,0xfd8f,0xcdec,0xddcd,0xad2a,0xbd0b,0x8d68,0x9d49,

0x7e97,0x6eb6,0x5ed5,0x4ef4,0x3e13,0x2e32,0x1e51,0x0e70,

0xff9f,0xefbe,0xdfdd,0xcffc,0xbf1b,0xaf3a,0x9f59,0x8f78,

0x9188,0x81a9,0xb1ca,0xa1eb,0xd10c,0xc12d,0xf14e,0xe16f,

0x1080,0x00a1,0x30c2,0x20e3,0x5004,0x4025,0x7046,0x6067,

0x83b9,0x9398,0xa3fb,0xb3da,0xc33d,0xd31c,0xe37f,0xf35e,

0x02b1,0x1290,0x22f3,0x32d2,0x4235,0x5214,0x6277,0x7256,

0xb5ea,0xa5cb,0x95a8,0x8589,0xf56e,0xe54f,0xd52c,0xc50d,

0x34e2,0x24c3,0x14a0,0x0481,0x7466,0x6447,0x5424,0x4405,

0xa7db,0xb7fa,0x8799,0x97b8,0xe75f,0xf77e,0xc71d,0xd73c,

0x26d3,0x36f2,0x0691,0x16b0,0x6657,0x7676,0x4615,0x5634,

0xd94c,0xc96d,0xf90e,0xe92f,0x99c8,0x89e9,0xb98a,0xa9ab,

0x5844,0x4865,0x7806,0x6827,0x18c0,0x08e1,0x3882,0x28a3,

0xcb7d,0xdb5c,0xeb3f,0xfb1e,0x8bf9,0x9bd8,0xabbb,0xbb9a,

0x4a75,0x5a54,0x6a37,0x7a16,0x0af1,0x1ad0,0x2ab3,0x3a92,

0xfd2e,0xed0f,0xdd6c,0xcd4d,0xbdaa,0xad8b,0x9de8,0x8dc9,

0x7c26,0x6c07,0x5c64,0x4c45,0x3ca2,0x2c83,0x1ce0,0x0cc1,

0xef1f,0xff3e,0xcf5d,0xdf7c,0xaf9b,0xbfba,0x8fd9,0x9ff8,

0x6e17,0x7e36,0x4e55,0x5e74,0x2e93,0x3eb2,0x0ed1,0x1ef0

};

计算CRC校验的子函数:

voidCRC(WORD*CRCValue,BYTEch);

{

WORDNewCRC=*CRCValue;

BYTECV;

CV=((NewCRC>>8)^ch)&0xff;

NewCRC=(NewCRC<<8)^CRC_Table[CV];

*CRCValue=NewCRC;

}

假设待校验的数据为n字节,存放在字节数组ByteAry中,则完整的CRC校验算法如下:

WORDCRCResult=0;

CRC(&CRCResult,n>>8);

CRC(&CRCResult,n&0xff);

for(intI=0;I

CRC(&CRCResult,ByteAry[I]);

§1.3发送数据到配置区

节目数、设定的亮度、开关屏时间等,均存储在FLASH芯片的配置页,发送数据到配置页使用专门的命令:

1字符命令码‘Q’+1字节配置页中的偏移量+1字节数据的字节数+1字节重启标志+数据

配置页中的数据偏移定义如下:

0x00-0x17:

24字节,保留

0x18-0x19:

2字节,屏宽

0x1A-0x1B:

2字节,屏高

0x1C-0x1F:

4字节,保留

0x20-0x20:

1字节,预设亮度0-7,8则表示执行时间段亮度,9表示走自动亮度

0x21-0x21:

1字节,节目表项数

0x22-0x23:

2字节,定时开屏之时分,BCD码

0x24-0x25:

2字节,定时关屏之时分,BCD码

0x26-0x2E:

9字节,保留

0x2F-0x2F:

1字节,有效图片数

0x30-0xBB:

139字节,时钟版面设计内容

0xBC-0xCB:

16字节,数码管显示码

0xCC-0xDF:

20字节,时间段亮度表,4项

每项为2字节开始时间(BCD码),2字节结束时间(BCD码),1字节亮度

0xE0-0xFF:

32字节,保留

第二章控制类命令

控制类命令包括复位控制卡、取运行状态、设定亮度、设定开关LED显示屏时间等。

§2.1复位控制卡

命令格式:

命令码‘V’+2个字节的任意数据。

§2.2取运行状态

命令格式:

命令码‘D’+2字节任意的数据。

对取运行状态,控制卡返回29个字节,“1D”+27字节数据

这27个字节的数据中,前20个字节为十六进制的数字ASCII码,每两个拼合成1个字节的16进数据,一共10个字节,其中:

第1字节:

D7-D4:

亮度

D3:

是否处于测试状态

D2:

是否人工强制开关电源

D1:

是否因时间段导致关屏

D0:

是否有汉字库

第2字节:

当前播放的节目序号

 

第3字节:

当前播放的图片序号

第4字节:

开屏时间-时

第5字节:

开屏时间-分

第6字节:

关屏时间-时

第7字节:

关屏时间-分

第8字节:

保留

第9字节:

保留

第10字节:

保留

后面7个字节为BCD码:

第1字节:

控制卡时钟,秒

第2字节:

控制卡时钟,分

第3字节:

控制卡时钟,时

第4字节:

控制卡时钟,日

第5字节:

控制卡时钟,月

第6字节:

控制卡时钟,年

第7字节:

当前设置的亮度

§2.3设定亮度

命令格式:

命令码‘Q’+0x20+0x01+0x00+亮度值,亮度值为16进制数,范围0-9。

0-7表示屏的亮度,8表示按时间段调整亮度,9表示按亮度传感器采样的结果自动调整亮度。

§2.4发送时间段亮度表

命令格式:

命令码‘Q’+0xCC+0x14+0x00+20字节亮度表

亮度表一共4项,每项5字节,其中第1、2字节为时间段的开始(时、分,BCD码),第3、4字节为时间段的结束(时、分,BCD码),第5字节为亮度值(0-7)。

§2.5设定自动开关屏时间

命令格式:

命令码‘Q’+0x22+0x04+0x00+4字节时间

其中,时间的第1、2字节为开屏时刻,第3、4字节为关屏时刻(大于该时刻才真正关屏),这些时刻分别由BCD码的小时和分组成。

§2.6设定屏体电源状态

命令格式:

命令码‘P’+1字节开关状态+1字节任意数据

其中,开关状态=0表示关屏,1表示开屏,2表示按照时间段自动控制

§2.7校准控制卡时间

命令格式:

命令码‘C’+7字节时间

这7字节时间均为BCD码,排列顺序为秒、分、时、日、月、星期和年。

 

第三章图片类命令

图片类命令涉及两个方面,一是图片数据本身,另一是节目表。

这两类命令都是将数据写往控制卡的FLASH芯片。

不同的控制卡,虽然FLASH的容量不一样,但配置信息和节目表等都存放在FLASH芯片的高端,位置都是一样的,仅是图片数据存储的开始地址不一样。

假设LED显示屏的宽为W,高为H,则一个图片的发送次数为:

1、4型卡:

TotalSendSteps=((H+127)/128)*16

2型卡单色:

TotalSendSteps=((H+127)/128)*16

2型卡双色:

TotalSendSteps=((H+127)/128)*32

必须从0开始到TotalSendSteps-1分步骤循环将一个图片的全部数据发送完毕。

每个图片占用的存储空间的页数为:

PagesPerPicture=((W+255)/256)*TotalSendSteps

切记,这里计算出来的TotalSendSteps和PagesPerPicture是发送图片数据计算存储位置和发送次数必须用到的。

§3.1图片数据的整理

对于图片,常规的存储方案是按行存储,单字节表示水平方向的8个点。

对于宽度为W,高度为H的图片,假设原始图片整理为水平排列,一字节表示屏幕8个点的二维数组,该数组的大小应该是BYTEPictAry[H][W/8](单色)或BYTEPictAry[H*2][W/8](双色),对于双色屏,PictAry[0]至PictAry[H-1]存放红色数据,PictAry[H]至PictAry[2*H-1]存放绿色数据。

在控制卡上图片数据是按列存储的,一个字节表示同一列间隔16行的8个点,每次发送W个字节。

1、单色屏的数据排列

设图片的每个点的数据为:

x(0,0),x(0,1),x(0,2),x(0,3),,,x(0,W-1)

x(1,0),x(1,1),x(1,2),x(1,3),,,x(1,W-1)

,,

,,

x(H-1,0),x(H-1,1),x(H-1,2),x(H-1,3),,,x(H-1,W-1)

对于1型、4型卡,当发送步骤为y(0到TotalSendSteps-1)时,发送的图片数据中第z个字节的值按照从高到低的位的构成为:

x(y+112,z),

x(y+96,z),

x(y+80,z),

x(y+64,z),

x(y+48,z),

x(y+32,z),

x(y+16,z),

x(y,z)

对于2型卡,当发送步骤为y(0到TotalSendSteps-1)时,发送的图片数据中第z个字节

 

x((y/128)*128+112,z),

x((y/128)*128+96,z),

x((y/128)*128+80,z),

x((y/128)*128+64,z),

x((y/128)*128+48,z),

x((y/128)*128+32,z),

x((y/128)*128+16,z),

x((y/128)*128,z)

2、双色屏的数据排列

设图片的每个点的数据为:

R(0,0),R(0,1),R(0,2),R(0,3),,,R(0,W-1)

R(1,0),R(1,1),R(1,2),R(1,3),,,R(1,W-1)

,,

,,

R(H-1,0),R(H-1,1),R(H-1,2),R(H-1,3),,,R(H-1,W-1)

G(0,0),G(0,1),G(0,2),G(0,3),,,G(0,W-1)

G(1,0),G(1,1),G(1,2),G(1,3),,,G(1,W-1)

,,

,,

G(H-1,0),G(H-1,1),G(H-1,2),G(H-1,3),,,G(H-1,W-1)

对于1型、4型卡,当发送步骤为y(0到TotalSendSteps-1)时,发送的图片数据中第z个字节的值按照从高到低的位的构成为:

G(y+48,z),

G(y+32,z),

G(y+16,z),

G(y,z),

R(y+48,z),

R(y+32,z),

R(y+16,z),

R(y,z)

对于2型卡,当发送步骤为y(0到TotalSendSteps-1)时,发送的图片数据中第z个字节的值按照从高到低的位的构成为:

若y

R((y/128)*128+112,z),

R((y/128)*128+96,z),

R((y/128)*128+80,z),

R((y/128)*128+64,z),

R((y/128)*128+48,z),

R((y/128)*128+32,z),

R((y/128)*128+16,z),

R((y/128)*128+0,z)

若y>=TotalSendSteps/2:

G(((y-TotalSendSteps/2)/128)*128+112,z),

G(((y-TotalSendSteps/2)/128)*128+96,z),

G(((y-TotalSendSteps/2)/128)*128+80,z),

G(((y-TotalSendSteps/2)/128)*128+64,z),

G(((y-TotalSendSteps/2)/128)*128+48,z),

G(((y-TotalSendSteps/2)/128)*128+32,z),

G(((y-TotalSendSteps/2)/128)*128+16,z),

G(((y-TotalSendSteps/2)/128)*128,z)

§3.2节目表的结构

一个节目表项为12字节的结构类型:

structProgListStru//12字节

{

BYTEPictIndex;//图片序号,从0开始

BYTEEnterLeave;//D7-D4:

进入方式,D3-D0:

退出方式

BYTEStay;//停留时间,D7:

单位,0:

秒,1:

分;D6-D0为停留时间

BYTEFlag_Speed;//D7:

1表示后一图片紧随本图片退出时进入

//D6:

1表示D7为1,且是水平移动

//D5:

整页时钟标志,显示时钟版面设计的内容

//D4:

定时播放标志

//D3-D0:

速度

BYTEWeekFlag;//允许播放的周定时,为1的bit表示该日播出,

//D7对应周日,D6-D1对应周六-周一

BYTEStartHour;//允许播放的开始时段,时,BCD码

BYTEStartMinute;//分,BCD码

BYTEEndHour;//结束播放的开始时段,时,BCD码

BYTEEndMinute;//分,BCD码

BYTETimerMode;//时钟播放标志,顶部单、双行时钟日历等。

BYTENC0;//保留

BYTENC1;//保留

};

§3.3发送图片数据和节目表文件

发送图片和节目表文件,统一使用存储数据到FLASH命令,格式为:

命令码‘R’+2字节页地址+1字节页数量+数据

发送图片数据时,假设当前发送第n个图片的第m步,则页数量的计算公式为:

PageCountPerStep=(W+255)/256;

页地址PageAddr的计算公式为:

if(卡类型==1)PageAddr=n*PagesPerPicture+m*PageCountPerStep+2048;

elsePageAddr=n*PagesPerPicture+m*PageCountPerStep;

发送节目表时,页地址为4083(0xFF3),总的页数量则为12*节目表项数。

因为控制卡上的通讯缓冲区最大为2080,也就是,每次发送不得超过8页,因此发送节目表时,需要根据实际页数处理为多次发送,每次均要计算页地址和页数量。

§3.4设定节目表项数

命令格式:

命令码‘Q’+0x21+0x01+0x01+节目表项数

第四章文字类命令

§4.1显示文字串

命令格式:

命令字‘H’+1字节Bank号+2字节x坐标+2字节y坐标+1字节颜色+串+0x00

§4.2画线

命令格式:

命令字‘J’+1字节目标Bank号+2字节起点X坐标+2字节起点Y坐标+2字节终点X坐标+2字节终点Y坐标+1字节线条颜色

因为控制卡只支持画水平线或垂直线条,所以,起点和终点或X坐标一致,或Y坐标一致。

§4.3切换显示区

命令格式:

命令字‘K’+1字节目标Bank号+1字节任意数据

§4.4拷贝显示区

命令格式:

命令字‘L’+1字节目标Bank号+1字节任意数据

§4.5清除显示区

命令格式:

命令字‘M’+1字节目标Bank号+1字节任意数据

§4.6装入图片到显示区

命令格式:

命令字‘N’+1字节目标Bank号+1字节图片索引

§4.7将显示区的内容保存为图片

命令格式:

命令字‘O’+1字节源Bank号+1字节图片索引

本教程由LED显示屏厂家视爵光旭公司编写

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1