(完整版)LED显示屏控制器的设计与实现毕业设计40设计41 联系客服

发布时间 : 星期三 文章(完整版)LED显示屏控制器的设计与实现毕业设计40设计41更新完毕开始阅读2edf61348f9951e79b89680203d8ce2f006665bf

5.2 汉字字模的提取方法

HZKl6*16点阵汉字字库可以在中文操作软件(UCDOS)中找到现汉字系统中使用机内码形式存储汉字,国标码的最高位置l作为汉字的机内码。而国标码由两个字节组成,其中高字节表示区,低字节表示位。国标码和区位码都有94个区,每个区又都有94个位。1-9区为图形区,10-15区未规定,16-87区存放一、二级汉字库。 国标码和区位码的关系是:

国标码高字节 = 区码 + 20H (式5.1) 国标码低字节 = 位码 + 20H (式5.2)

所以,机内码与国标码和区位码的关系是:

机内码高字节 = 国标码高字节 + 80H = 区码 + A0H (式5.3) 机内码低字节 = 国标码低字节 + 80H = 位码 + A0H (式5.4)

字模代码按照区位码的顺序在字库中以二进制格式存储,每个汉字占用32个字节。因此只要找到汉字代码的起始位置,就可正确提取汉字点阵信息。对于不同的字库,汉字代码起始位置的计算方法可能存在差异,例如HZK16若以 ADDRESS表示首地址,Q表示区码,W表示位码,经分析和实践得出HZK16中汉字首地址计算公式为:

ADDRESS = 32 × [( Q-1 ) × 94 +( W-1 )] (式5.5)

在VB.NET中,获取汉字区位码可以用ASC( )函数和HEX( )函数,函数

ASC( )返回一个Integer数据,代表字符串中首字母的字符代码。HEX( )函数返回代表十六进制数值的字符串[13]。当汉字作为ASC( )函数的参数时,返回的是汉字机内码,经HEX()函数转换即可得到汉字机内码的十六进制数,再通过公式(5.5)就可以得到汉字的首地址,有了汉字的首地址再从字库中提取汉字代码,再经过扩展取两次字模得到32*64的点阵字模。 5.3 上位机与单片机通信协议

通信协议是指通信各方事前约定的通信规则,我们可以简单地理解为通信双方之间进行相互会话所使用的共同语言。上位机与下位机通信的时候为了识别通信数据的所代表的含义,所以必须有通信协议。本设计制定上位机往下位机发送命令数据流的帧格式如表5.1所示 根据表5.1的帧格式,制定通信协议如下

(1)下位机不断检测收到的数据,若检测到握手字0xA0则执行否则重复1; (2)继续接受1字节数据,若为同步头0xFA则执行3否则跳转至1; (3)下位机连续接受7字节的设置数据,并返回各字节数据的反码;

(4)上位机不断检测下位机发出的取反校验字,若校验出错则报警否则执行5; (5)上位机继续向下位机发送汉字内码数据;

(6)下位机不断接收内码并保存到AT24C64存储器中,但不返回校验字; (7)若下位机检测到上位机发出的传输结束命令字0x8F,则结束通信过程; (8)下位机不断尝试与上位机握手,一旦握手成功下位机就接收数据并进行校

验,若校验成功则发送到下位机存储器中,等待单片机读取数据送显示端。

表5.1 帧格式制定通信协议如下

握手 同步头 显示模式 刷新率 左移速度 定格时间 显示内容 字符数高位 字符数低位 内码 首地址 结束命令字

5.4 下位机软件设计

上位机发送汉字编码后,单片机中断检测到RI置高电平则进入中断程序并接受上位机发送过来的汉字内码,按地址编码的方式存储到E2PROM中,单片机再不断从存储器里按地址编码所存储的信息去读取相应数据然后送入32*64单色点阵屏显示,具体流程见图2.5所示

开始串口初始化上位机是否有数据?YESNO是否有握手信号?NOYES存入AT24C64关闭中断提取数据显示YES判断中断是打开?N0结束

图5.2 下位机接收数据流程图

AT24C64存储数据后调用显示函数可以通过按键改变显示屏内容,按键

一直是处于不断的扫描状态当检测到有低电平时,就跳转进入相应的按键执行程序,LED显示屏就显示按键对应的显示内容。其具体流程见图5.3所示。

按键调整显示模式选择显示模式一显示模式二显示模式三 读EEPORM首地址载入点阵数据送入行列显示缓冲区左移是否移完一个汉字?YES显示温度值温度显示5.5 中断数据处理

上位机发送到控制卡上的汉字编码是通过中断接收数据(SBUF)再存入外部存储器AT24C64存储器中,单片机通过读取存储器的地址把数据送入74HC595的数据线上,通过行列扫描把存储的数据显示在LED显示屏上。具体的流程图如图5.4所示

NO读EEPORM首地址读EEPORM首地址载入点阵数据载入点阵数据缓冲区左移一位送入行列显示是否移完一个汉字?YESNO缓冲区左移一位送各行列显示是否移完一个汉字?YES是否显示完所有汉字?YESNO显示当前时间时间显示NO汉字移动显示

图5.3 按键选择流程图