毕业设计(论文)-LED点阵显示屏系统设计.doc_第1页
毕业设计(论文)-LED点阵显示屏系统设计.doc_第2页
毕业设计(论文)-LED点阵显示屏系统设计.doc_第3页
毕业设计(论文)-LED点阵显示屏系统设计.doc_第4页
毕业设计(论文)-LED点阵显示屏系统设计.doc_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LED点阵显示屏系统设计(一)工 学 部 工学一部专 业自动化班 级学 号姓 名指导教师负责教师沈阳航空航天大学北方科技学院2010年6月沈阳航空航天大学北方科技学院毕业设计(论文)摘 要本设计利用Visual Basic 6.0编程语言编写LED点阵显示屏的上位机软件,并设计上位机与主控板上通信单片机的通信电路,使用户能够通过此上位机软件对LED显示屏的显示内容及显示效果进行修改和设置。另外,通信单片机还能与主控单片机相互配合,对时钟芯片和温度传感器进行操作,完成时间和温度信息的实时采集。本上位机软件能与LED点阵显示屏系统进行良好的通信,易于实现显示效果的变换和显示内容的修改,并且拥有友好的人机对话界面,通用性好,操作简单、方便,具有较广阔的应用前景。关键词:LED显示屏;Visual Basic;上位机;通信AbstractThis design compiles Upper-computer software for the LED dot matrix display monitor by using Visual Basic which is a kind of visual programming languages ,and designs the communication circuit between the Upper-computer software and the Communication MCU on the master control board ,user can change the demonstrates contents and the demonstration effects of the LED dot matrix display monitor.In addition,the coordination between the Main Control MCU and The Communication MCU, to update the time data and the temperature information real-time gathering.The Upper-computer software can carry on the good correspondence with the LED dot matrix display monitor system,and can change the demonstrates contents and the demonstration effects of the LED dot matrix display monitor easily,this Upper-computer software has the good man-machine contact surface,the good versatility,the simple and convenience operationality,and the broad application prospect.Keywords: LED display screen;Visual Basic;Upper-computer; communication目 录1 绪论11.1 背景意义11.2 当前现状及未来发展11.3 课题目标12 LED显示屏通信系统的总体方案设计与分析32.1 上位机编程语言的设计32.2 字模数据提取方式的设计32.3 通信电路的设计32.4 时钟电路的设计32.5 测温电路的设计42.6 系统总体结构框图42.7 系统工作过程43 硬件电路设计63.1 通信单片机电路63.1.1 通信单片机AT89S5263.1.2 通信单片机的复位电路73.1.3 通信单片机的时钟振荡电路83.2 串行通信电路93.2.1 MAX232电平转换芯片93.2.2 MAX232串行通信电路113.3 存储器扩展电路设计113.4 实时时钟电路设计123.4.1 实时时钟芯片DS1302123.4.2 实时时钟电路143.5 温度传感器测温电路设计143.5.1 温度传感器DS18b20143.5.2 传感器测温电路174 通信软件设计184.1 开发工具介绍184.2 程序流程图184.2.1 通信单片机主程序流程图184.2.2 通信单片机新数据下载中断程序流程图194.2.3 通信单片机温度采集程序流程图205 字模提取原理225.1 汉字字模的提取225.2 ASCII码字模的提取236 VB上位机软件设计256.1 上位机软件开发环境256.2 上位机软件界面设计256.3 上位机软件开发流程266.3.1 主程序启动运行流程图266.3.2 主窗体加载事件程序流程图276.3.3 下载更新数据事件流程图286.3.4 下载更新时间事件流程图286.3.5 字模信息的提取及处理(无翻转)事件程序流程图296.3.6 字模信息的提取及处理(有翻转)事件程序流程图306.4 上位机串口通信设计(MSComm控件)316.4.1 MSComm控件两种处理通信方式326.4.2 MSComm控件的常用属性326.4.3 MSComm控件的OnComm事件336.4.4 MSComm控件在本设计中的使用346.5 上位机软件的关键算法实现346.5.1 提取字模数据的算法346.5.2 处理字模数据的算法356.6 上位机软件的使用方法367 PCB印刷电路板的设计387.1 通信电路PCB设计387.1.1 主控板电路的PCB设计387.1.2 通信接口板电路的PCB设计397.2 PCB实物照片408 调试428.1 主控板电路的焊接与调试428.2 上位机软件与LED点阵显示系统的联合调试428.3 联调时遇到的问题及解决428.3.1 VB软件程序的问题及解决428.3.2 通信模块的问题及解决42总结43参考文献44附录 LED点阵显示屏系统主控板电路图45附录 LED点阵显示屏系统通信接口电路46附录 LED显示屏系统元件清单47附录 设计作品实际效果图48附录 通信单片机程序清单51附录 VB程序参数表64附录 VB程序清单65911 绪论1.1 背景意义随着微电子技术、计算机技术、信息处理技术的飞速发展以及人们生活水平的不断提高,LED点阵显示屏作为一种新型的信息显示媒体,以其亮度高、工作电压低、功耗小、寿命长、小型化、耐冲击和性能稳定的优点迅速发展起来,到目前为止,LED点阵显示屏系列产品已经成长为平板显示的主流产品。LED点阵显示屏是由几万到几十万个半导体发光二极管均匀排列组成的平面式显示屏幕,利用不同的材料可以制造出不同色彩的LED像素点,目前应用最广的是红色、绿色、黄色、蓝色和纯绿色。LED点阵显示屏可以显示变化的数字、文字、图形图像,它不仅可以用于室内环境,如金融证券、体育场馆、邮政电信、商场购物中心等服务领域的业务宣传及信息显示;还可以用于室外环境,如道路交通、商铺的广告灯箱以及广场宣传等,而且其应用于室外环境时具有投影仪、电视墙、液晶显示屏无法比拟的优点。1.2 当前现状及未来发展作为朝阳产业,LED显示屏从诞生到现在一直表现出它独有的优势,而且其产业技术仍处于不断进步的过程中,目前开发出的LED显示屏功耗更小,运行更加稳定,应用场合更加广泛,因此LED点阵显示屏的发展前景是最具潜力也是最为广阔的。随着LED点阵显示屏技术的不断发展、更新,必将带来LED点阵显示屏控制软件的发展和更新,未来将需求人机界面更加友好、用户操作更加方便的LED点阵显示屏控制软件。1.3 课题目标本设计主要利用Visual Basic 6.0(以下简称VB)编程语言编写LED点阵显示屏的上位机软件,与主控板上的通信单片机进行串行通信,来完成LED点阵显示屏的显示内容及显示模式的更新。设计一个上位机软件和串行通信电路,应具有以下功能:用VB编写上位机软件,实现上位机与LED显示屏存储器的通信,并完成所要显示文字的点阵字模数据提取及处理,可随时更改显示数据和控制参数。设计、制作通信接口电路,完成数据的串行通信与存储。与LED显示屏联调,构成完整的设计。2 LED显示屏通信系统的总体方案设计与分析2.1 上位机编程语言的设计很多编程语言都能编写上位机软件,如VC、VB、Delphi等,其中VB是一种可视化、面向对象和采用事件驱动方式的结构化设计语言,它不仅具有良好、美观的编程界面,而且还能在Windows下使用MSComm控件进行简单快捷的串口程序设计,实现与下位机的串行通信。因此本设计选用VB作为上位机软件的编程语言。2.2 字模数据提取方式的设计对于字模数据的提取方式,目前使用最广泛的技术有两种:一种是从固化好的字库芯片中提取数据;另一种就是通过上位机软件从字库文件中提取字模数据,再将这些字模数据按一定的顺序编址后烧写到非易失性的存储器中。出于对通信单片机运算速度和设计成本的考虑,决定采用上位机软件从字库文件中提取字模数据的办法。 2.3 通信电路的设计在实际使用中,更改的显示内容和显示方式信息需要上位机软件与显示屏的通信单片机进行通信。本系统选用了只需要3根传输线,且抗干扰能力较强的RS-232串口通信方式。通信单片机将串口接收到的控制信息和点阵字模信息保存到FLASH存储器中,以保证在断电时信息不会丢失。2.4 时钟电路的设计现在流行的时钟芯片很多,如DS1302、 DS1307、PCF8485等,这些芯片的接口简单、价格低廉、使用方便,因此都被广泛地采用。考虑到通信单片机的I/O端口分配使用情况,决定选用具有SPI总线接口、并具有涓流充电功能的DS1302时钟芯片,DS1302可以在工作期间对后备电池进行涓流充电,当系统掉电后,时钟系统可以正常运行,保证时间的准确。 2.5 测温电路的设计目前市场上的温度传感器的种类有很多,如AD590、MAX6613、TCl046等等,在众多温度传感器中,DALLAS公司的生产的DS18B20不仅体积小、耐磨耐碰,而且测量精度高,抗干扰能力强,因此本系统选用了DS18B20作为本系统的温度传感器。2.6 系统总体结构框图系统总体结构框图如图2.1所示。图2.1 系统总体结构框图在新数据下载时上位机软件通过通信单片机将数据信息存入FLASH存储器,通知主控单片机去FLASH存储器提取数据信息。通信单片机与主控单片机之间通过两条联络信号线DOWN和BUSY互相配合协助完成数据的传递。2.7 系统工作过程启动上位机软件,用户输入要显示的文字信息并设置控制模式,点击“下载更新”按钮后,上位机软件从字库文件里提取字模数据,并完成一系列的处理,然后向通信单片机发送联络字符,待通信单片机完成数据接收前的准备工作后,通信单片机向上位机返回联络字符,并等待接收数据,上位机软件接收到通信单片机返回的联络信号后,向通信单片机发送文字字模数据和控制信息,通信单片机将接收到的数据存入FLASH存储器中,存储完成后向上位机返回接收完成信号,同时向主控单片机发送启动信号,主控单片机根据控制信息执行相应的显示工作。3 硬件电路设计3.1 通信单片机电路3.1.1 通信单片机AT89S52本设计采用AT89S52作为通信单片机,AT89S52是美国ATMEL公司生产的51系列单片机,它是一种低功耗、高性能8位CMOS微控制器,具有8K系统可编程FLASH存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上的FLASH不仅允许程序存储器在常规编程器上编程,还适用于在线编程下载,使得AT89S52单片机芯片在不离开电路板的情况下对其进行擦除和烧写操作,为开发和使用都带来极大地方便。AT89S52具有以下标准功能: 8k字节FLASH;256字节RAM;32 位I/O 口线;看门狗定时器;2 个数据指针;三个16位定时器/计数器;一个6向量2级中断结构;全双工串行口;片内晶振及时钟电路。采用PDIP封装形式的AT89S5单片机实物图如图3.1所示,引脚定义如图3.2所示。图3.1 采用PDIP封装形式的AT89S52单片机实物图图3.2 采用PDIP封装形式的AT89S52单片机引脚定义3.1.2 通信单片机的复位电路图3.3为通信单片机的复位电路。图3.3单片机复位电路图3.3中,RST是单片机的复位引脚,当单片机上电瞬间,由电阻R2和电容C14组成的RC电路开始充电,由于电容上电压不能突变,所以RST引脚出现高电平。RST引脚出现的高电平将会随着对电容C14充电过程而逐渐回落,最终C14充电完毕,RST引脚电压为0,完成单片机的复位操作。3.1.3 通信单片机的时钟振荡电路单片机的时钟振荡电路如图3.4所示。图3.4 单片机的时钟振荡电路时钟电路在单片机系统中起着非常重要的作用,可以说它是单片机的心脏,用于产生单片机工作时所需要的时钟信号,控制着单片机的工作节奏。在AT89S52单片机的内部有一个用于产生振荡的高增益反相放大器,XTAL1和XTAL2引脚和分别为此放大器的输入端和输出端,其振荡频率的范围为1.224MHz,该放大器与作为反馈元件的片外晶体Y1一起构成自激振荡器,电容C15、C16作为谐振电容,主要起帮助振荡器起振的作用。由于C15、C16的电容值对振荡频率也有影响,因此常用调节谐振电容容量大小的方法对时钟信号频率进行微调,C15、C16的典型值为30pF。3.2 串行通信电路串行通信是指通信的发送方和接收方之间数据信息的传输是在单根数据线上,以每次一个二进制位的0、1为最小单位逐位进行传输。串行数据传送的特点是:数据传送按位顺序进行,最少只需要1根数据传输线即可完成,节省了传输线,而且抗干扰能力较强,所以,串行通信被广泛的应用在各种数据采集和控制系统中。3.2.1 MAX232电平转换芯片RS-232C是美国电子工业协会EIA(Electronic Industry Association)于1962年公布,并于1969年修订的串行接口标准。它已经成为国际上通用的标准,是目前PC机与通信工业中应用最广泛的一种串行接口。 RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平逻辑状态的规定不同,因此,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换,实现这种变换可以用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路芯片转换器件,如MCI1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MCI1489、SN75154可实现EIA电平到TTL电平的转换,MAX232芯片则可以完成TTL到EIA双向电平转换。图3.5是MAX232芯片的引脚图。图3.5 MAX232芯片引脚图MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电。第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+10V和10V两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电电路。15脚GND、16脚VCC(+5V)。其主要特点如下:符合所有的RS-232C技术标准只需要单一+5V电源供电片载电荷泵具有升压、电压极性反转能力,能产生+10V和-10V电压V+、V-功耗低,典型供电电流5mA内部集成2个RS-232C驱动器内部集成两个RS-232C接收器3.2.2 MAX232串行通信电路根据LED显示屏的与上位机软件通信的需要,设计串行通信电路如图3.6所示。图3.6 MAX232串行通信电路如上图所示,MAX232在使用时需要在外围接4个电容C1、C2、C3、C4,是内部电源转换所需电容,其取值均为1uF,宜选用钽电容并尽量靠近芯片,而且为了在实际应用中免受电源干扰,要在VCC与地之间接一个1uF的去耦电容C5。3.3 存储器扩展电路设计本设计的通信电路扩展了并行FLASH存储器AT29C020A,与显示模块的RAM共用8条数据总线和16条地址总线,由于两者共用了AT89S52的P0口为数据地址复用端口,因此使用地址锁存器74HC373,配合ALE信号来锁存低8位地址。另外,为了防止总线冲突,使用总线驱动芯片74HC245对高8位地址进行隔离。FLASH存储器的扩展电路如图3.7所示。图3.7 FLASH存储器的扩展电路3.4 实时时钟电路设计3.4.1 实时时钟芯片DS1302DS1302概述DS1302是DALLAS公司推出的一种高性能、低功耗的涓流充电时钟芯片,内含有一个实时时钟/日历和一个31字节的用于存放临时性数据的静态RAM,它可以对年、月、日、日期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V5.5V。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式,DS1302与单片机之间能简单地采用同步串行(三线接口)的方式进行通信:RST 复位; I/O 数据线; SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31 个字节的字符组方式通信。DS1302与以往的产品相比不仅增加了主电源/后备电源双电源引脚,同时还提供了对后备电源进行涓细电流充电的能力。DS1302管脚排列及管脚功能DS1302的管脚排列及描述如图3.8及表3.1所示。图3.8 DS1302管脚排列表3.1 DS1302管脚描述X1、X232.768KHz晶振管脚GND地复位脚I/O数据输入输出引脚SCLK串行时钟VCC1, VCC2电源供电管脚图3.8所示DS1302的管脚脚排列,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。只要VCC2高于VCC10.2V时,DS1302由VCC2供电;当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是晶振引脚,外接32.768kHz晶振。是复位片选线,通过把置为高电平来启动所有的数据传送。引脚有两种功能:首先,接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,提供终止单字节或多字节数据传送的信号。当为高电平时,所有的数据传送被初始化,允许外部设备对DS1302进行操作。如果在传送过程中置为低电平,则会终止此次数据的传送,I/O引脚变为高阻态。上电运行时,在电源供电引脚电压大于2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能将置为高电平。I/O引脚为串行数据端口,SCLK是控制数据传输的串行时钟输入端。DS1302工作过程在进行任何数据传输时,必须被置为高电平,虽然将它置为高电平,但内部时钟还是在晶振的作用下走时的,此时允许外部设备读写数据。每一位数据在SCLK上升沿时被输入,在下降沿时被输出。在每次读写数据进行之前,外部设备都需要向DS1302先写入一个字节的控制指令,然后再进行数据的串行读取操作。DS1302的读写模式还分为单字节模式和多字节突发模式。在单字节模式下,每次写入一次控制指令只能读取一字节的数据。在突发模式下,可以通过连续的脉冲一次性读写完7个字节的数据,同样在突发模式下也可以一次性读写8328位RAM 数据,并可按实际情况控制读写的位数,而不必全部读写。3.4.2 实时时钟电路实时时钟电路如图3.9所示。DS1302的SCLK管脚、IO管脚、管脚分别连接到通信单片机的P1.3脚、P1.2脚、P1.1脚。 图3.9 实时时钟电路3.5 温度传感器测温电路设计3.5.1 温度传感器DS18b20DS18B20数字温度计是DALLAS公司生产的单总线器件,是一种直接数字式高精度温度传感器,它只需要一根总线即可实现数据的传递,实际应用中不需要任何外围元器件即可实现测温,测量温度范围在55到125之间。DS18B20的内部含有两个温度系数不同的温敏振荡器,其中低温度系数振荡器相当于标尺,高温度系数振荡器相当于测温元件,通过不断比较两个温敏振荡器的振荡周期得到两个温敏振荡器在测量温度下的振荡频率比值。根据频率比值和温度的对应曲线得到相应的温度值。这种方式避免了测温过程中的A/ D 转换,提高了温度测量的精度。DS18B20有4个主要的数字部件:64位激光ROM;温度传感器;非易失性EEPROM存储器以及暂存器。64位激光ROM用于存储器件特有的序列号。暂存器中2字节用于存储温度传感器测得的温度值,2字节用于存储上下限报警温度,当测得的温度值超过这个范围时就会竖起一个报警标记,(用于对报警搜索命令产生响应),1 字节用于配置寄存器。配置寄存器使用户可以按需要选择9、10、11、12 位4 种不同的分辨率(精度分别为0.5、0.25、0.125 和0.0625)。TH、TL 和配置寄存器中的数据可以存入非易失性EEPROM 中,器件在断电时数据不会丢失,下次上电时会自动复制到暂存器中。本设计选用的是TO-92封装形式的DS18B20。(如图3.10所示)图3.10 TO92封装的DS18B20的引脚排列DS18B20的引脚功能描述见表3.2。表3.2DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号。2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20采用的是单总线协议方式,即在一根I/O线上读写数据,因此对读写的数据位有着严格的时序要求。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。以下是DS18B20的各工作时序:DS18B20的复位时序如图3.11所示。图3.11 DS18B20的初始化时序图DS18B20的读时序:DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的读时序如图3.12所示。图3.12 DS18B20的读时序图DS18B20的写时序DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 DS18B20的写时序图如图3.13所示。图3.13 DS18B20的写时序图3.5.2 传感器测温电路DS18B20的温度传感器测温电路如图3.14所示。DS18B20的DQ脚与通信单片机的P1.0相连,采集温度数据时,通信单片机就是对DS18B20的DQ管脚进行操作的。图3.14 DS18B20温度传感器测温电路4 通信软件设计4.1 开发工具介绍单片机开发中除必要的硬件外,同样离不开开发软件来完成系统程序的编写、编译、调试。本设计所使用的开发软件是Keil Vision3。Keil软件是目前最流行开发MCS-51系列单片机的软件之一,软件开发界面如图4.1所示。图4.1 Keil Vision3软件开发界面使用汇编语言编写的源程序要编译为单片机可执行的机器码,生成“.HEX”或“.BIN”文件,再烧写入单片机的程序存储器中才能运行。编译机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了,大都使用机器汇编。4.2 程序流程图4.2.1 通信单片机主程序流程图通信单片机主程序流程图如图4.2所示。图4.2 通信单片机主程序流程图通信开始时,通信单片机向主控单片机发送启动信号,然后根据上位机软件发送来的控制字数组判断是否更新日期,最后将更新的时间信息和采集的温度信息存入特定的缓冲区。4.2.2 通信单片机新数据下载中断程序流程图通信单片机新数据下载中断程序流程图如图4.3所示。图4.3 通信单片机新数据下载中断程序流程图当LED显示屏系统需要更新显示信息时,上位机向通信单片机发送联络字符,通信单片机确认是联络字符后,向主控单片机发送新数据下载信号,待主控单片机的准备完成后,通信单片机向上位机返回一个联络字符,表示可以进行数据接收。通信单片机接收上位机发送的控制信息和字模数据信息,待接收完成后向主控单片机发送启动信号。4.2.3 通信单片机温度采集程序流程图通信单片机温度采集程序流程图如图4.4所示。图4.4 通信单片机温度采集程序流程图温度信息采集时,通信单片机先对DS18B20进行初始化操作,然后向DS18B20发送读取命令,再将读取到的温度值进行相应的转换,并存入指定的缓冲区内。通信单片机的完整程序清单详见附录。5 字模提取原理字模提取是本系统的核心,即利用VB程序将用户输入的文字字符信息转换为下位机所需要的字模数据。根据LED点阵显示屏能够显示的文字大小,可以分为1616、168、3232、3216等4种不同的点阵字模,不同的字模数据在点阵字库中的存储方式略有不同。5.1 汉字字模的提取根据GB2312-80,每个汉字都有唯一的位置编码,该编码就是字符的区号和位号的二进制代码,称作该汉字的区位码。由汉字或符号的区位码可以确定其在点阵字库中的起始位置,计算方法如下:起始位置 = 94(区码-1)+(位码-1)汉字点阵字库结构如下:汉字点阵字模数据在字库中的存储结构是从左到右,从上到下的。1616、3232汉字点阵字库中的字模存储结构如图5.1、5.2所示。图5.1 1616汉字点阵字库中的字模存储结构图5.2 3232汉字点阵字库中的字模存储结构汉字字模起始位置的计算方法如下:对于1616汉字点阵字库,每个字模信息占用32个字节,一个汉字的字模在16点阵字库中的起始位置可由下式求得:起始位置=32(内码高字节161)94+(内码低字节161)对于3232汉字点阵字库,每个字模信息占用128个字节,一个汉字的字模在32点阵字库中的起始位置可由下式求得:起始位置=128(内码高字节161)94+(内码低字节161)5.2 ASCII码字模的提取相对于汉字的取模原理,ASCII码的取模就更为简洁,不需要进行地址偏移的计算。ASCII码点阵字库结构如下:ASCII码点阵字库中的字模的存储结构是从左到右,从上到下的。168、3216 ASCII码点阵字库中的字模存储结构如图5.3、5.4所示。 图5.3 168ASCII码点阵字库中的字模存储结构图5.4 3216ASCII码点阵字库中的字模存储结构ASCII码字模起始位置的计算方法如下:对于168 ASCII码点阵字库,每个字模信息占用16个字节,一个ASCII码的字模在16点阵字库中的起始位置可由下式求得:起始位置=16内码低地址(ASCII码)对于3216 ASCII码点阵字库,每个字模信息占用128个字节,一个ASCII码的字模在32点阵字库中的起始位置可由下式求得:起始位置=64内码低地址(ASCII码)确定了汉字字模数据和ASCII码字模数据在各自字库中的起始位置后,就可以将字模数据从字库中提取出来。6 VB上位机软件设计6.1 上位机软件开发环境本设计采用Visual Basic 6.0 IDE作为上位机软件的开发平台,Visual Basic(简称VB)是Microsoft公司开发的一种伴随Windows操作系统而发展的通用的基于对象的程序设计语言。“Visual”指的是开发图形用户界面(GUI)的方法,即不需要编写大量的代码去描述界面的外观和位置,而只是把预先建立的对象添加到屏幕上即可。选用VB 6.0编写上位机软件还因为它具有两个最重要的优点: 面向对象的程序设计思想VB采用了面向对象的程序设计思想。它的基本思路是把复杂的程序设计问题分解为多个能够完成独立功能并相对简单的对象集合,所谓“对象”就是一个可操作的实体,如窗体、命令按钮、标签、文本框等。事件驱动的编程机制在Windows环境下,程序是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个事件都能驱动一段代码,即一个事件过程,该代码决定了对象的功能,通常称这种机制为事件驱动。事件可由用户的操作触发,也可以由系统或应用程序触发。6.2 上位机软件界面设计上位机软件界面控件的布局如图6.1所示。图6.1 上位机软件界面6.3 上位机软件开发流程6.3.1 主程序启动运行流程图主程序启动运行流程图如图6.2所示。图6.2 主程序启动运行流程图6.3.2 主窗体加载事件程序流程图主窗体加载事件程序流程图如图6.3所示。图6.3 主窗体加载事件程序流程图6.3.3 下载更新数据事件流程图下载更新数据事件流程图如图6.4所示。图6.4 下载更新数据事件流程图6.3.4 下载更新时间事件流程图更新时间事件程序流程图如图6.5所示。图6.5 更新时间事件程序流程图6.3.5 字模信息的提取及处理(无翻转)事件程序流程图字模信息的提取及处理(无翻转)事件程序流程图如图6.6所示。图6.6 字模信息的提取及处理(无翻转)事件程序流程图6.3.6 字模信息的提取及处理(有翻转)事件程序流程图字模信息的提取及处理(有翻转)事件程序流程图如图6.7所示。图6.7 字模信息的提取及处理(有翻转)事件程序流程图VB上位机的完整程序清单详见附录。6.4 上位机串口通信设计(MSComm控件)串口通信作为一种简单而又灵活的通讯方式,被广泛地应用于PC机与PC机之间以及PC机与单片机之间的通信之中。用VB6.0开发串行通信程序有两种方法,一种是利用Windows的API函数;另一种是采用VB6.0的通信控件MSComm。利用API函数编写串行通信程序较为复杂,需要掌握大量专业的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为复杂的底层通信程序。而VB6.0的MSComm(Microsoft Communication Control)通信控件是VB6.0提供的ActiveX控件,具有功能完善的串行数据发送和接收功能,提供了标准的事件处理函数,只要通过对控件属性参数进行设置,并对此控件的事件进行相应的编程处理,就可以轻松地实现串行通信。系统中上位机与下位机的串行通信部分就通过VB6.0的MSComm通信控件来实现。6.4.1 MSComm控件两种处理通信方式MSComm控件提供下列两种处理通讯的方式,即事件驱动方式和查询方式。事件驱动(Event driven)方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD)或Request To Send (RTS)线上一个字符到达或一个变化发生时,MSComm控件的OnComm事件就可以捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。在编程过程中,可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。查询方式查询方式实质上是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和检测错误。如果应用程序较小,这种方法可能是更可取的。6.4.2 MSComm控件的常用属性MSComm控件有很多属性,本设计应用到了以下几个属性: CommPort属性:设置并返回通讯端口号。Settings属性:以字符串的形式设置并返回波特率、奇偶校验、数据位、停 止位。PortOpen属性:设置并返回通讯端口的状态。也可以打开和关闭端口。当应用程序终止时,MSComm 控件自动关闭串行端口。Input属性:从接收缓冲区返回和删除字符。该属性在设计时无效,在运行时为只读。InputLen 属性:设置并返回 Input 属性从接收缓冲区读取的字符数。InputLen 属性的缺省值是 0。设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。InputMode 属性:设置或返回 Input 属性取回的数据的类型。InputMode 属性确定Input属性如何取回数据。数据取回的格式或是字符串或是一数据组的二进制数据的数组。Output属性:往传输缓冲区写数据流。Output 属性可以传输文本数据或二进制数据。RThreshold属性:在MSComm控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。当接收字符后,若 Rthreshold 属性设置为 0则不产生 OnComm 事件。6.4.3 MSComm控件的OnComm事件无论何时当 CommEvent 属性的值变化时,就产生 OnComm 事件,标志发生了一个通讯事件或一个错误。而CommEvent 的不同的属性值也就表示不同的通讯错误或事件。下例说明如何处理通讯错误和事件。可以用选择分支结构来实现,在相关的Case语句之后插入代码来处理特定的错误或事件。Private Sub MSComm_OnComm () Select Case MSComm1.CommEvent 错误 Case comEventBreak 接收到一个中断(Break)信号 Case comEventCDTO CD (RLSD) 超时。 Case comEventCTSTO CTS Timeout。 Case comEventDSRTO DSR Timeout。 Case comEventFrame Framing Error Case comEventOverrun 数据丢失。 Case comEventRxOver接收缓冲区溢出。 Case comEventRxParity Parity 错误。 Case comEventTxFull 传输缓冲区已满。 Case comEventDCB 获取 DCB 时意外错误 事件 Case comEvCD CD 线状态变化。 Case comEvCTS CTS 线状态变化。 Case comEvDSR DSR 线状态变化。 Case comEvRing Ring Indicator 变化。 Case comEvReceive 收到 RThreshold # of chars. Case comEvSend 传输缓冲区有 Sthreshold 个字符 Case comEvEof 输入数据流中发现 EOF 字符 End SelectEnd Sub6.4.4 MSComm控件在本设计中的使用打开“工程/部件/控件”,然后选择控件:Microsoft Comm Control 6.0,点击“确定”,这样就将MSComm 控件添加到当前的工程中。编程时只需将控件工具栏中的 MSComm 控件拖至编程窗体中就可以了。本设计在主窗体加载时就对MSComm 控件的属性设定如下:MSComm1.Settings = 19200,n,8,1MSComm1.RThreshold = 1MSComm1.InputMode = comInputModeBinaryMSComm1.InputLen = 06.5 上位机软件的关键算法实现输入的文字信息并不能直接发送给下位机进行显示,而是要对输入的文字信息进行提取字模处理后才能被下位机使用。6.5.1 提取字模数据的算法提取字模数据的算法是上位机程序的核心,根据偏移量公式计算出字模数据的首地址,然后根据这个地址到各自的字库文件里提取出相应的字模数据。下面以1616汉字提取字模的算法为例说明提取字模数据的过程。 在下面的算法中,leds为字符串变量传递参数,ZM()为存储字模信息的字节型数组变量。1616汉字字模信息算法Private Function LEDHZK16(leds As String) ReDim ZM(0 To 31) As Byte AA = Hex(Asc(leds) bb = (94 (CLng(&H & Mid(AA, 1, 2) - &HA1) + (CLng(&H & Mid(AA, 3, 2) - &HA1) 32 For i = 0 To 31 Step 1 Open App.Path + HZK16 For Binary As #1 Get #1, bb + i + 1, ZM(i) Close #1 Next iEnd Function6.5.2 处理字模数据的算法由于显示模式的不同,有的模式不能直接使用取出来的字模数据,还要进行分离、翻转处理后才能发送给下位机。下面以1616阴文汉字分离、翻转处理算法为例,说明处理过程。在下列算法中,leds为字符串变量传递参数,ZM()为存储字模信息的字节型数组变量。1616汉字字模信息的分离处理算法Private Function sepHZK16yin()ReDim ZMT(0 To 31) As Byte For e1 = 0 To 15 Step 1 ZMT(e1) = ZM(e1 2) Next e1 For e2 = 16 To 31 Step 1 ZMT(e2) = ZM(2 e2 - 31) Next e2 g = g + 32 ReDim Preserve ZMS(0 To g - 1) For g1 = 0 To 31 Step 1 ZMS(g1 + g - 32) = ZMT(g1) Next g1End Function1616阴文汉字字模信息的翻转处理算法16上滚和静止对角线翻转转置 Private Function trap16()n2 = p216 512For n4 = 0 To n2 - 1 For wh1 = 0 To 15 Step 1 For wl1 = 0 To 15 Step 1 temp1(wh1, wl1) = ZMS(n4 512 + wh1 16 + wl1) temp3(wh1, wl1) = ZMS(n4 512 + 256 + wh1 16 + wl1) Next wl1 Next wh1 For wh2 = 0 To 15 Step 1 For wl2 = 0 To 15 Step 1 temp2(wl2, wh2) = temp1(wh2, wl2) temp4(wl2, wh2) = temp3(wh2, wl2) Next wl2 Next wh2 For wh3 = 0 To 15 Step 1 For wl3 = 0 To 15 Step 1 ZMS(n4 512 + wh3 16 + wl3) =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论