新闻中心

EEPW首页 > 光电显示 > 设计应用 > 计算机EPP控制CPLD显示点阵汉字的实现

计算机EPP控制CPLD显示点阵汉字的实现

作者:时间:2009-03-04来源:网络收藏

其中,lHzkPosition是库中的首地址,nSection和nPosition分别是的区码和位码。Windows 2000/XP操作系统默认的字符集是Unicode,这是一个全球一体化的字符集,无法映射得到汉字的GB2312区位码。所以,软件的字符编码方式必须采用GB2312,在VC++中采用MBCS(Multi-Byte Char System)即可。在此使用一个CString对象存储需要的文本,CString可以以字节为单位进行操作,一个汉字(或其它全角字符)对应两个字节。如果保证这个CString里面的字符全部是全角字符,就可以在汉字库里找到它们的。以字节为单位读取字符的机内码。将一个字符的高字节减去0xA0就得到汉字的区码;将一个字符的低字节减去0xA0就得到汉字的位码。为避免频繁磁盘读写,同时较大程度的集成,可以把HZK16汉字库放到程序的资源中。确定此资源在内存中的首地址,再加上由区位码计算得到的字库的存储位置,就可以确定在内存中的位置。

在程序中加入两个定时器,分别定时触发汉字滚动和数据发送事件。汉字滚动用位操作,建立一个32字节的字节数组,用来存储当前屏上需要的点阵,定时器触发时,根据当前显示的字符和已经移位的次数,读取待显示的相应位置,并将读取出来的点阵数据移位相加,即可获得当前屏幕需要显示的点阵。调整定时器触发的时间间隔,即可调整汉字滚动的速度。

4.2 点阵汉字发送的原理

以字节为单位读取待显示的32字节数组,根据前述协议,通过操作并口寄存器将每次读到的字节数据发送到,并读取的返回状态,不断地握手、发送、等待应答,直到以用户给定的帧速将点阵数据发送完毕。帧速的设定是因为发送定时器的触发时间较长,会产生较严重的闪烁现象,因此每次发送定时器触发时,同一帧数据发送多次,就可以有效的减少闪烁感。用户可以根据使用环境,随时调整帧速以达到最好的显示效果。

为了避免设备掉电或者其他原因没有应答造成的程序死锁,发送程序必须包含超时检测。在等待应答时,反复读取并口的状态寄存器,以一个临时变量记录没有应答的次数,并和一个预先设定好的最大应答延迟次数相比较,如果超过最大延迟次数,则判定CPLD应答超时,停止继续发送并提示用户。最大延迟次数的设定和CPLD采用的晶振频率有关,在实验中,若采用4Mhz晶振,正常工作状态下,无需循环,可以实时检测到CPLD的应答信号;若采用250Khz晶振,则需要多次检测才可以检测到应答信号,此时若将最大延迟次数设置过低,将设备判为延迟并重新发送,极易引起显示屏的闪烁。

5 结束语

通过本设计我们可以看到,利用并口的模式结合CPLD设计数字电子系统,可以将大量繁杂工作交给软件承担,利用计算机强大的开发环境来完成。本文作者创新点:提出了一种有助于减小系统设计难度、缩短开发时间的设计方式,同时可以得到友好的人机界面和方便的操作。这种设计方法具有一定的通用性,对需要使用CPLD的电子设计,尤其是实验教学具有一定的参考价值。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭