LED显示屏系统软件教程.docx
- 文档编号:8621218
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:12
- 大小:21.15KB
LED显示屏系统软件教程.docx
《LED显示屏系统软件教程.docx》由会员分享,可在线阅读,更多相关《LED显示屏系统软件教程.docx(12页珍藏版)》请在冰豆网上搜索。
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显示屏厂家视爵光旭公司编写
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 显示屏 系统软件 教程