基于单片机的LED三维动态信息显示系统摘要AbstractThe display technology of LED(Light Emitting Diodes)is a new modern technologysynthesizing photo-electricity,computer and control etc.It combines closely withtraditional advertising and becomes a new media instrument for propaganda,and iswidely applied to the information displaying and advertising in public place,such asexhibition centre,financial market,stadium,airport,quay,station etc.The LED displaysystem is composed of display module,controller and computer used to implement thecharacters inputting and the display mode selecting.The system can show Chinese andEnglish as well as figure symbols appointed by users.Due to the diversities of the display mode and ideal visual feelings,LED displaysystem is welcomed by users and becomes a new type of scientific product withhigh-speed development in recent years.Normally the LED display system is complicatedand could be controlled nearby as well as the maintenance of the equipment is insufficient,thus the applications of LED display system receive a great restriction especially inremote control and synchronous transmissi on,so this technology needs furtherdevelopment and improvement.The LED displaying system of character symbols is studied in this paper.A detailedreview is given to the actuality and developing trends of LED display screen,and a newstructure plan on the LED di splay screen of three-dimension dynamic LED latticecontrolled by microcomputer is presented,which aims at overcoming the problems incurrent display systems.Instructions and information can be input by simple andconvenient man-machine interactive conversations,and the long-range control of displaymodule can be realized,at the same time the display contents can be renewed at anymo ment and the omni-directional spatial stereoscopic display could be achieved. www.lwfree.cn学位论文flow of software and the design plan of the circuit are given detailedly from theinformation picking-up on computer to the ou tput of ultimate screen display.Furthermore,corresponding methods are discussed according to the specific technicaldifficulties of LED display system.Key words:Chinese character lattice,serial communication;single-chip computer;Visual Basic 6.0,stepmotorLED(Light Emitting Diodes)显示技术是指将光电、计算机以及控制等相关内容综合于一体的现代新技术。它与传统的广告宣传紧密结合成为一种新的媒体宣传工具,广泛应用于展览中心、金融市场、体育场馆、机场、码头、车站等公共场所的信息显示和广告宣传。LED显示系统主要由显示模块、控制器以及完成文字录入和显示模式选择的计算机三个部分组成。该系统既可以显示中文、英文,也可以显示用户指定的图形符号。LED显示系统由于显示方式多样和视觉感受理想而倍受用户的欢迎,也是广告宣传中近年来高速发展的新型科技产品。但是由于其系统配套复杂,控制显示内容只能就近完成,设备维护不够便利,使得LED显示屏的应用场所受到很大限制,特别是不能实现远程控制和同步信息传递,这些都要求该技术的进一步完善和提高。本文是针对只显示文字符号的LED显示系统而进行研究的。首先,详细介绍了国内外LED显示屏的发展与现状,并针对当前显示系统所存在的问题,提出了一种实现微机控制的三维动态LED点阵显示系统的新方案。可以通过简单、方便的人机对话窗口来输入指令,实现对显示模块的远程控制,做到可以随时更新显示内容和实现全方位的空间立体显示。论文中从上位机汉字字模点阵信息的提取开始,到上下位机之间的串行通信,以及显示系统中步进电机的控制和信息显示的最终实现,都详细的给出了软件流程和电路设计方案,并根据设计中的具体技术难点讨论了相应的解决方法。关键字:汉字点阵,串行通信,单片机,VB6.0,步进电机Abstract目录1绪论..........................................................11.1 LED显示屏简介.....................................................11.2国内外LED行业现状和发展趋势.......................................21.2.1国内LED显示屏发展现状.......................................31.2.2国外LED显示技术的现状.......................................41.2.3 LED显示屏的发展趋势..........................................41.3 LED显示技术存在的主要问题.........................................61.4课题的目的、意义及主要研究内容.....................................61.4.1课题的目的及意义.............................................61.4.2课题的主要研究内容...........................................72总体设计方案.................................................82.1 PC机部分的设计....................................................82.2单片机部分的设计...................................................92.3 LED显示系统的设计................................................113汉字点阵字模的获取..........................................123.1 VB软件设计.......................................................123.1.1 Visual Basic 6.0简介........................................123.1.2 VB应用程序的结构............................................133.1.3事件驱动应用程序的方式......................................143.2汉字编码原理......................................................143.2.1汉字与英文字母的表示方法及区别..............................143.2.2汉字内码与区位码的关系......................................153.2.3汉字点阵字模的显示..........................................153.3点阵代码的提取....................................................163.4字模转置的算法研究................................................163.5软件实现过程......................................................183.5.1横排的汉字点阵字模的获取....................................183.5.2横排点阵的转置处理..........................................194 PC机和单片机之间的串行通信..................................234.1上位机通讯模块设计................................................234.1.1 RS-232接口简要介绍..........................................23目录II4.1.2 Mscomm控件介绍.............................................244.1.3具体的软件实现..............................................264.2 MAX232的简介.....................................................274.3下位机通讯模块设计...............................................284.3.1单片机AT89C51的简介.......................................284.3.2单片机的内部设置............................................294.3.3单片机通讯软件..............................................324.4通讯硬件电路设计.................................................344.4.1通信原理方案................................................344.4.2通信电路....................................................355步进电动机的系统设计........................................365.1步进电动机的原理.................................................365.1.1步进电动机概述..............................................365.1.2步进电动机的特点及分类......................................375.1.3步进电动机的工作原理........................................375.1.4步进电动机的指标............................................395.2步进电动机系统的选型.............................................405.3驱动控制系统组成.................................................425.3.1脉冲信号的产生..............................................425.3.2信号分配....................................................425.3.3功率放大....................................................425.3.4细分驱动器..................................................435.4硬件电路设计.....................................................445.5软件部分的实现...................................................455.6软硬件的调试.....................................................476显示系统设计................................................486.1系统方案的提出...................................................486.2显示系统的组成...................................................486.3显示模块的软硬件设计.............................................487总结与展望..................................................517.1总结.............................................................517.2展望.............................................................51致谢...........................................................53www.lwfree.cn学位论文参考文献.......................................................54攻读硕士学位期间发表论文......................................56附录A系统硬件原理图...........................................57附录B系统输入界面图...........................................58附录C软件程序中的通用变量设置.................................428
基于单片机的LED三维动态信息显示系统www.lwfree.cn学位论文1.3 LED显示技术存在的主要问题考虑到信息显示屏的数量会越来越多,种类也千差万别,特别是有的信息显示屏将工在离市区较远或离地面较高的地方,这就给产品维护及显示信息的管理带来了极大的不。其主要表现为以下几个方面:a.维护不方便在控制室里根本不知道显示屏是否出现信息显示错误或某些LED发光管是否损坏等题,也不知道信息显示屏会什么时候出现故障,因此只能要求维护人员定期去检查和维。这就会出现有了故障而没有去及时维修,也会出现没有故障而维护人员还要定期去检的浪费人力、财力的问题。如果能在控制室内就能监测到较高或较远的信息显示屏的运情况,这样在出现问题的时候就可以及时修理,同时也可以避免在运行正常时还不得不得维护工作[15]。b.信息管理不方便用户要经常改变显示屏要显示的信息,从而信息存储器的内容需要进行频繁的刷新。每一次的显示信息改动,维护人员都要把微处理器(如51单片机)从现场拿回来重新程,再送回显示屏上运行,以显示需要的信息。如果能在控制室内用某种方法就可以对区及更远地方的信息显示屏进行控制,方便地改动要显示的信息的话,不但能节省一定维护费用,而且能大大提高信息显示屏的工作效率。在不久的将来,信息需要网络化、一化、安全化管理。因此,一个好的通信方法对于LED显示屏在将来的发展具有关键的意义。c.空间及可视性不好现有的LED显示屏常要占用很大的空间,给显示屏的安装及维护带来很多的不便。外,由于显示屏的空间限制,我们在很多场合下都只能从固定的角度范围内才可以看到示屏的内容,这就要求我们要想办法改变现有的平板显示,让它的显示范围更大,方便们从各个角度都可以看到所显示的信息[16]。1.4课题的目的、意义及主要研究内容1.4.1课题的目的及意义针对上面提到的现有LED显示屏所存在的问题,引出了课题“基于单片机的LED三动态信息显示系统”。在这个系统中将选用连机屏,由此可以通过上位机通信口与控制微处理器进行有线通信,随时下载显示信息。这种方法不仅可以随意更改显示内容,方信息管理,而且还可以通过反馈信息知道显示内容是否正确,LED是否有损坏,也方
基于单片机的LED三维动态信息显示系统|LED|单片机便维护。另外,考虑到传统的LED显示屏在使用中存在的一些不足,如:占用的空间太大、视角范围太小及可移动性差等,因此在本系统中将采用旋转显示,从而使人们不管从那个角度都能看到清晰的文字或图案。1.4.2课题的主要研究内容本课题主要包括三方面的内容:微机控制、单片机驱动和LED显示部分。所以,完整的LED显示系统的设计应该包括硬件、硬件驱动程序和微机控制软件三个部分。操作过程是由PC机编辑显示信息,通过串行通信口发送给LED显示模块的控制芯片,由控制芯片再驱动显示单元进行显示。对于显示固定信息的小型LED显示系统,可以不要P机的控制软件。目前在LED显示系统硬件设计上,根据显示方式可以分为静态显示和动态显示两种静态显示是指将一幅画面输入以后要保持到下一幅画面的输入。动态方式是指将画面分为若干部分分别进行刷新。对于静态显示方式,需要较多的译码驱动装置,需要的引线也比较多,但只要设计合理,显示效果比较好。对于动态显示方式,可以避免以上不足,但是容易造成显示亮度低、屏幕闪烁等问题。对于单色LED显示屏,硬件驱动上采用静态显示方式比较好。数据从PC机到显示模块对应的存储器的数据传输方式,可以分为并行传输和串行传输两种。它们各有优缺点:数据并行传输的速度比较快,但是随着屏幕的增大,模块数量增多,线路会越来越复杂;数据串行传输的速度比较慢,但它可以大大简化传输线路。对于一般场合来说,采用串行传输方式比较合适。LED显示屏一般由单个单片机驱动。这个单片机首先要负责接收PC机传来的显示数据,然后将根据显示方式转换成显示图形,再发送到LED显示屏各个显示模块所对应的数据锁存器中,最后发送显示信号来更新屏幕的显示内容。所以,固化在单片机里的硬件驱动程序一般分为串行数据接收模块、数据显示模块和图像显示方式转换模块等三个部分。如果驱动程序处理不当,容易造成屏幕显示刷新速度跟不上,表现出亮度低、屏幕闪烁等缺陷[17]。www.lwfree.cn学位论文82总体设计方案这次课题设计的主要内容是:作为下位机的单片机系统通过RS-232串行口接收由上位机也就是PC机传入的显示信息和控制信号。该数据经处理后,写入显示用的RAM中进行储存。当显示系统正常运行后,系统才可以将RAM中的内容读出,即将显示内容及各种控制信号,一并送入LED显示屏体进行显示,通过各个发光二极管的亮灭来实现完整的信息显示。整个系统的基本组成框图如图1-1所示。显示系统的上位机由一台PC机构成,软件采用Visual Basic 6.0编程,做出十分直观的人机界面。为了实现实时更改显示内容的目的,可以通过串行口将外界输入PC机的所要显示的各种数据传送给单片机系统,再由单片机去控制发光装置,达到动态显示输入内容的目的。另外,考虑到显示内容的传输速率需要和显示棒的转速相匹配才可以完整的显示输入的信息,因此还需要加入反馈环节。它将把显示棒的转速及数据发送情况等信息传回到单片机系统中,使得单片机系统可以很好的去控制显示装置,从而得到一个稳定的显示输出。2.1 PC机部分的设计在PC机上所要完成的主要工作是设计一个可执行软件,用于实现对显示汉字的字模点阵的提取及对提取出来的点阵信息进行转置处理,另外还要完成上下位机通信的上位机部分的软件设置。下面将对各个部分进行简要说明并给出其实现的途径。a.汉字点阵的提取采用应用程序设计软件VB6.0(Visual Basic 6.0)直接从字库中提取标准的汉字字模点阵代码,因为存放汉字的字模点阵字库在中文操作软件(如UCDOS7.0)中可以找到现成的文件如HZK16。这些字模代码都是按照区位码的顺序在字库中以二进制的形式存储的,每个汉字占用32个Byte。因此只要找到汉字代码的起始位置,就可以正确的提取汉字点阵信息了。需要注意的是对于不同的字库,汉字代码起始位置的计算方法可能存在差PC机系统单片机系统显示部分反馈环节图1-1整个系统的基本组成框图Fig.1-1 Basic component diagram of the whole system2总体设计方案异,例如HZK16和CCLIB.DOT就有所不同。在VB中,可以用Asc()函数来获取汉字区位码,当汉字作为它的参数时,返回的是汉字的机内码。经Hex()函数转换即可得到汉字机内码的十六进制数,再通过机内码、国标码和区位码之间的换算关系就可以得到该汉字的首地址。在字库文件中,从汉字的首地址所对应的字节开始到第32个字节就是该汉字的点阵字模代码。b.字模点阵的转置采用VB从字库中提取出标准汉字字模点阵代码时,提取出来的代码是横排的代码但考虑到本系统中LED显示装置的特殊性,在通过LED显示时就需要先将它转换为竖排的代码。由于控制器51单片机相对PC机来说资源很少,速度较慢,因此点阵代码的转换最好在字模生成程序中进行即在PC机中完成。所谓点阵代码转换实际上就是将汉字点阵的二进制代码保持原样不动,而将原先的一排一排读取代码转变为一列一列来读取,即相当于顺时针方向旋转90度。其工作原理为:设一个汉字字模的32个字节(这是对于16×16的点阵汉字来说的)分别用D0~D31来表示,其中D0的8位二进制数分别用D0[0]~D0[7]来表示,相应的D31的8位二进制数分别用D31[0]~D31[7]来表示。因此为了得到可以在LED显示模块上使用的汉字字模,需要用C语言编制一个旋转子程序Rotate90.c。利用此子程序,可以实现对字库HZK16中的标准汉字字模点阵代码进行旋转的目的,并将其存于二进制文件Usehex中,再将Usehex中的汉字字模按照一定的顺序放入RAM中,这样就满足了显示的需要。c.通信控件的设置在标准串口通信方面,VB提供了具有强大功能的通信控件MSComm,文件名为MSComm.VBX。该控件可控制串行通信的数据发送和接收,并能对串口状态及串口通信的信息格式和协议进行设置。它是一个标准的十位串口通信,包括8位的有效数据及数据的起始位和停止位。该控件具有两种处理通信的方法,即事件驱动方式和查询方式。事件驱动通信是处理串行口交互作用的一种非常有效的方法,它利用MSComm控件的OnComm事件来捕获并处理通信事件,同时还可以检查和处理通信中的错误;而查询方式是通过检查Comm Event属性的值来查询事件和错误,如果应用程序较小,并且是自保持的,这种方法则更可取。每个通信控件对应一个串口,因此可以设计多个通信控件来访问多个通信口。2.2单片机部分的设计单片机部分的工作流程是这样的:51单片机利用自身所具有的串行通信口,接收P机传送下来的串行数据,然后将所接收到的各组数据通过并行口输出,送到数据锁存器74LS373,最后将锁存的数据送到显示系统中控制显示装置进行工作。对于从显示系统返回的信号则通过数据锁存器变成单片机所需的并行数字信号送到单片机的数据存储单元www.lwfree.cn学位论文中,再由串行口返送到PC机中,同时显示在PC机界面上以便于预置信息和实际情况的相对比。因此下位机51单片机所要完成的主要工作是控制显示部分的步进电动机的转速,并将PC机所传送过来的数据信息依次送到显示模块,从而通过控制发光二极管的亮灭来显示输入到微机中的汉字信息。下面对其进行具体论述:a.上下位机之间的电平转换89C51单片机的串行口输入/输出的是TTL电平,而PC机的串行口则是按RS-232标准设计的,因为两者的电平不匹配而不能直接相连,需要一个中间接口电路来完成电平的转换工作。MAX232芯片就可以完成这一功能,它将89C51单片机与PC机连接起来,MAX232是专用于进行RS-232接口电平转换的芯片。而以往人们都习惯使用1488和1489这两种转换器芯片,不足之处是1488和1489需要12 V电源供电,这在某些只提供5V电源的场合就不适用了。而使用了新型电平转换器芯片MAX232就可以很好地解决这一问题,该芯片使用单5V电源,其内部有两组电压转换电路,一组把+5 V变为+10 V,从引脚2输出;另一组把+10 V变为-10 V,从引脚6输出。这样在实际应用中MAX232只需外接5个电容即可实现1488和1489两个芯片的功能,1488可将TXD输出的TTL电平转换为RS-232电平,1489可将RS-232电平转换为TTL电平送至接收端RXD,因此运用MAX232芯片就具有了两路收发通道。b.单片机的通信设置单片机89C51将采用MCS-51系列的汇编语言或C语言编程。它有一个标准的串行口,并具有4种工作方式,即1种同步方式和3种异步方式,异步方式时可完成全双工操作。由于串行口的接收器采用了双缓冲结构,因而在第一个接收到的字符字节从接收寄存器被读走之前,就可以开始接收第二个字节,从而提高了线路的利用率。串行口的发送寄存器和接收寄存器在物理上是分开的,但可以通过同一个串行口缓冲器SBUF去访问它们。在4种工作方式中,方式1是标准的10位异步通信方式,并与PC机的标准串口相对应,由串行口控制寄存器SCON来设置其状态。89C51的并行口P0和P2分别作为八位数据的输入和输出口。P3口的输出作为数据锁存器的禁止或允许。c.步进电动机的控制步进电动机是数字信号控制的电机,它可将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就能转动一个角度,因此非常适合于单片机控制。因为步进电动机是用来驱动显示的一个动力系统,因此整个动力系统既步进电动机系统应该包括:步进电动机,用户接口,控制器,驱动器等四个基本组成部分。其中的控制器就选择了最常用的MCS-51系列单片机89C51,它
基于单片机的LED三维动态信息显示系统
是用来控制步进电机转速的时序发生器,并且时序的产生是通过软件编程实现的。
112.3 LED显示系统的设计课题设计中的显示系统将采用一定的旋转精度来驱动显示系统中的步进电机平稳地运转起来,从而带动发光棒以预定的方式合理地转动,为了方便操作,需要有速度可控,位置可确定等特点。简单介绍如下:首先是步进电机部分,可通过单片机的控制,来驱动电机旋转,从而带动显示棒转动。其次是显示棒的选择需挑选质地较硬且颜色较浅的直棒,这样的话在转动的时候不至于发生形变,从而影响显示效果。最后是将发光二极管很好的镶嵌在显示棒上,拟采用进口的管芯,亮度高、平面度好且每个二极管可以很好的拼成一条直线,中间不会出现空隙。因此当有信息需要显示时,先要驱动步进电机转动起来,通过一些机械装置来带动直棒转动,达到一定的转速,并且还要和信号的传递速率想匹配。这样的话,就可以看到一个在立体空间里显示的文字符号或简单图形了。www.lwfree.cn学位论文汉字点阵字模的获取.1 VB软件设计.1.1 Visual Basic 6.0简介Visual Basic 6.0是Microsoft公司开发的基于强大的WINDOWS平台上的一种应用程编程语言。它可以说是在计算机发展史上应用最为广泛的语言,具有功能强大、效率高简单易学的优势。它具有以下一些特点:(1)可视化的设计平台VB提供的可视化的设计平台,把WINDOWS界面设计的复杂性“封装”起来,使面设计如同搭积木游戏一样简单。用户只需按设计要求,在屏幕上画出各种对象,并为设置相应的属性,VB将自动产生程序界面的设计代码。可视化程序设计为开发INDOWS风格的应用程序,提供了简化编程难度的有效方法,大幅度提高了编程的效。(2)事件驱动的编程机制事件驱动是一种适用于图形用户界面的编程方式。当用户在操作界面上点击对象时,对象就会触发一个事件,此时该事件所对应的程序代码就会被执行,从而完成了指定的作任务。(3)能够充分利用系统资源动态数据交换(Dynamic Data Exchange,DDE)是WINDOWS操作系统下应用程序间一种标准通信方式。VB支持DDE,并可以实现和其它支持DDE的应用程序进行动态据交换或通信。VB支持WINDOWS对象的链接和嵌入技术(Object Link and Embedding,LE),其它应用程序的对象能够链接或嵌入到VB应用程序中,例如:Word文档、Excel子表格、图像、声音等,使VB能充分利用其它应用程序的数据。动态链接库(Dynamicink Library,DLL)是WINDOWS最显著的特点之一,VB支持这项技术。在VB程序运中,需要调用库函数的某个函数时,WINDOWS就从DLL中读出并运行之,例如可以用C、C++、汇编语言等编写的程序添加到VB程序中。(4)具有较强的数据库管理功能可以直接在VB中建立或访问Access数据库系统,也能够访问其他外部数据库。VB供了开放式数据库连接(Open Data Base Connectivity,ODBC)功能,可直接访问或通连接的方式管理并操作后台的大型数据库。同时提供了能自动生成SQL语句的功能和的ActiveX数据对象(ADO)。用VB设计应用程序的前台界面,通过ODBC连接后再3汉字点阵字模的获取13去访问后台的数据库,是目前开发应用系统的常用方法。(5)全面支持多媒体技术VB提供了多种功能的多媒体控件,能够使用户在较短的时间内,很快掌握编写多媒体应用程序的技能[18]。3.1.2 VB应用程序的结构由于VB应用程序是基于对象的,所以应用程序的代码结构就是该程序的结构。VB的代码存储在模块中。模块有三种类型:窗体、标准和类。在屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。简单的应用程序可以只有一个窗体,应用程序的所有代码都驻留在窗体模块(文件扩展名为.FRM)中。而当应用程序庞大复杂时,就要另加窗体。最终可能会发现在几个窗体中都有要执行的公共代码。因为不希望在两个窗体中重复编写代码,所以要创建一个独立模块,它包含实现公共代码的过程。独立模块应为标准模块(文件扩展名为.BAS)[19]。每个标准模块、类模块和窗体模块都可包含:声明:可将常数、类型、变量和动态链接库(DLL)过程的声明放在窗体、类或标准模块的模块级。过程:Sub、Function或Property过程包含可以作为单元来执行的代码片段[20]。a.窗体模块窗体模块(文件扩展名为.FRM)是大多数VB应用程序的基础。窗体模块可以包含处理事件的过程、通用过程以及变量、常数、类型和外部过程的窗体级声明。如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值。写入窗体模块的代码是该窗体所属的具体应用程序专用的,它也可以引用该应用程序内的其它窗体或对象。b.标准模块标准模块(文件扩展名为.BAS)是应用程序内其它模块访问的过程和声明的容器。它们可以包含变量、常数、类型、外部过程和全局过程的全局(在整个应用程序范围内有效的)声明或模块级声明。写入标准模块的代码不必绑在特定的应用程序上,如果不小心用名称引用窗体和控件,则在许多不同的应用程序中可以重复使用标准模块。c.类模块在VB中类模块(文件扩展名为.CLS)是面向对象编程的基础。可在类模块中编写代码建立新对象,这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种模块,在其上可安放控件、可显示窗体窗口。www.lwfree.cn学位论文.1.3事件驱动应用程序的方式事件是窗体或控件识别的动作。在响应事件时,事件驱动应用程序执行Basic代码。B的每一个窗体和控件都有一个预定义的事件集。如果其中有一个事件发生,而且在关的事件过程中存在代码,则VB调用该代码[21]。尽管VB中的对象可以自动识别预定义事件集,但要判定它们是否响应具体事件以及如何响应具体事件则是编程的责任了。代部分(即事件过程)与每个事件对应。想让控件响应事件时,就把代码写入这个事件的件过程之中。对象所识别的事件类型多种多样,但多数类型为大多数控件所共有。例如:多数对象都能识别click事件,如果单击窗体,则执行窗体的单击事件过程中的代码;果单击命令按钮,则执行命令按钮的click事件过程中的代码。每种情况中的实际代码乎完全不一样[22]。这里是事件驱动应用程序中的典型事件序列:(1)启动应用程序,装载和显示窗体。(2)窗体(或窗体上的控件)接收事件。事件可由用户引发(例如键盘操作)或由统引发(例如定时器事件),也可由代码间接引发(例如当代码装载窗体时的Load事)。(3)如果在相应的事件过程中存在代码,就执行代码。(4)应用程序等待下一次事件[23]。.2汉字编码原理.2.1汉字与英文字母的表示方法及区别众所周知,在计算机中除了数值型数据以外,还广泛使用非数值型数据,例如:汉字、母、符号及其它信息。这些非数值型数据在计算机内部的存放并不是直接存放字符本身,是存放其编码。所谓编码就是以若干位数码的不同组合来表示一组汉字、字母及符号的法。编码是人为指定的含义,常用的字符编码方法有ASCII码、BCD码等。ASCII码(American Standard Code for Information Interchange,美国信息交换标准码)7位的二进制编码,它总共编码有128个符号,包括26个英文大写字母、26个英文小字母、0-9共10个数字、32个通用控制字符和34个专用字符如标点符号等,所以每个文字母在计算机内部是用一个ASCII码来表示的。但我们知道计算机中是以字节的形来存放数据的,因此当使用每一个ASCII码表示英文字母时只能占用一个字节的低7,而最高位被默认为“0”。同样的,中文汉字的表示也是采用ASCII码的形式,所不的是一个汉字对应两个ASCII码,且汉字机内码中两个字节的最高位均置“1”,从而现了汉字机内码和英文字符机内码的区别。
基于单片机的LED三维动态信息显示系统153.2.2汉字内码与区位码的关系汉字经过了几千年的演变与发展,在这一过程中汉字的数量不断增加,常用的汉字大约有六千多个。1981年我国正式发布了国家标准——《通讯用汉字编码字符集(基本集)及其交换标准》[GB2312-80]方案。在GB2312-80中,总共收入汉字数为6763个,将比较常用的3755个列为一级汉字,将其余3008个列为二级汉字,而且一级汉字的排序按照拼音顺序,二级汉字的排序采用部首顺序。GB2312用两个字节表示一个汉字代码,总共规定了94×94=8836个代码,中间有一些空代码即没有对应汉字。GB2312编码的前一个字节称为区码,后一个称为位码,因为GB2312把汉字分为94个区,每个区又有94个汉字,所以每个汉字用GB2312来表示时,就是采用“区码+位码”的方式。GB2312的前1~9区为图形字符区,包括标点符号、其它各种文字如日文假名、罗马字母、俄文、制表符等。从16区开始以后才是汉字,10~15区没有使用[24]。计算机在显示某汉字时,首先是读取这一汉字的机内码,由于该汉字的机内码与区位码之间有一定的关系,然后根据该机内码求出汉字的区码和位码,从而得出该汉字字模在字库中存放的地址。所以只要通过汉字的机内码就可以得到该汉字的区位码,从而也可以获得该汉字的字模。机内码与区位码的关系用公式表示为:机内码高位=区码+AOH机内码低位=位码+AOH该字在字库中的记录号为(这里采用的是UCDOS7.0中的字库HZK16):记录号=区码×94+位码得到记录号后乘以32即为该汉字在16×16点阵字库中字模第一个字节的位置,最后从该地址起连续读取一定数量单位的数据(即字模)进行显示即可。3.2.3汉字点阵字模的显示一般情况下,汉字在计算机中处理时是采用图形的方法,即每个汉字就是一个图形。显示一个汉字就是显示一个图形,这个图形符号称为汉字字模。每个汉字在计算机中都对应一个字模,字模分为两种类型,一种是点阵字模,一种是矢量字模。点阵汉字是汉字字型最基本的表示法[25]。点阵字模的原理是把汉字的方形区域细分为若干个小方格,每个小方格便是一个基本点。在方形范围内,凡笔画经过小方格便形成黑点,图3-1 16×16点阵示例Fig.3-1 16×16 lattice figurewww.lwfree.cn学位论文16不经过的形成白点。若黑点代表1,白点代表0,那么小方格恰好可以用一个二进制位来表示。这样制作出来的汉字称为点阵汉字,如图3-1是“大”字16×16点阵模式排列放大后的结果。对于点阵汉字来说,一个汉字的字模(如16×16,24×24,32×32)都有固定的字节数。大多数字库文件都不进行压缩,所以采用顺序存储方式,即先存储区位码为0101的汉字字模,紧接着0102,0103,一直到0194,下一个是0201,……直到第87汉字区。值得注意的是,有些字库文件中10~15区没有汉字,有些字库文件还常有文件头,写着有关字库的一些信息。3.3点阵代码的提取课题设计中用到的都是16×16汉字字模点阵字库。因此应先取得输入汉字的区位码,对于字库HZK16,汉字内码与区位码之间的转换关系为:区码=汉字机内码的高字节-A1H位码=汉字机内码的低字节-A1H进行计算后,得到此汉字字模在点阵字库中的偏移量为:Offset=(区码×94+位码)×32然后将对应的点阵信息读出并存储,16×16点阵汉字字模的每一横行占两个字节。也就是说16×16大方格的第一横行的黑白点是由这两个字节来决定的。将其数字转化为二进制,0的地方不填充,1的地方填充为黑色,如此循环把16格全填充好后,画出了汉字的第一横行。然后逐个读取字模,将16行全部画出来,这样就显示了一个完整的汉字。在这里将采用VB软件直接从字库中提取标准的汉字字模代码,因为存放16点阵汉字的字库在中文操作软件如UCDOS7.0中可以找到现成的文件HZK16。这些字模代码都是按照区位码的顺序在字库以二进制格式存储的,每个汉字占用32个Byte。因此只要找到汉字代码的起始位置,就可以正确提取汉字点阵信息了。需要注意的是对于不同的字库,汉字代码起始位置的计算方法可能存在差异,例如HZK16和CCLIB.DOT。在VB中,可以用Asc()函数来获取汉字的区位码,当汉字作为它的参数时,返回的是汉字的机内码。经Hex()函数转换即可得到该汉字机内码的十六进制数,再通过机内码、国标码和区位码之间的换算关系就可以得到该汉字的首地址。在字库文件中从汉字的首地址开始到第32个字节就是该汉字的代码。3.4字模转置的算法研究一般情况下,汉字字模的显示方式采取的是从左到右,自上而下的打点扫描。例如计算机对一个16×16点阵字模进行显示时,其显示方式是:在水平方向扫描共打16个点即3汉字点阵字模的获取17两个字节,一行扫描结束后,再扫描下一行,一共扫描16行。而在有些情况下对字模的扫描采取的是自上而下,从左到右的列扫描,如图3-2所示。因此需要对提取出来的字模进行转置处理。在参考前人工作的基础上,采用了一种新算法,该算法主要是应用了C语言的嵌套循环语句,并配合左右移语句以完成对转置的实现[26]。下面就是该算法的简要论述:将Windows环境下利用VB提取出来的字模点阵的第0、2、…、14个字节的最高位bit7取出,依次作为一个新字节的bit7、bit6、…、bit0,这样形成的新字节为对应转置字模的第1个字节;将第16、18、…、30个字节的bit7取出,依次作为一个新字节的bit7、bit6、…、bit0,这样形成的新字节为对应转置字模的第2个字节;再将提取出来的字模点阵的第0、2、…、14个字节的bit6位取出,依次作为一个新字节的bit7、bit6、…、bit0,这样就形成了对应转置字模的第3个字节;依次类推直到将转置字模的第17、19、…、31字节的bit0取出,依次作为一个新字节的bit7、bit6、…、bit0,这样就形成了对应转置字模的第32个字节。这32个字节内容即为所要获取的16×16点阵汉字显示转置字模。实现上述思路的程序清单如下:void change(char Old-lat[],char New-lat[]){unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsigned char a,b=0;int i,j,k,m,n=0;for(k=0;k≤1;k++)for(j=0;j≤1;j++)for(m=0;m<8;m++,n++){b=0;for(i=0;i<8;i++){a=Old-mat[2*(8*k+i)+j]&mask[m];if(m>i)a=a<<(m-i);`a中的数值左移(m-i)位if(m
>(i-m);`a中的数值右移(m-i)位b=b+a;}New-lat[n]=b;}}图3-2转置后的排列顺序表Fig.3-2 Regulated order figurewww.lwfree.cn学位论文183.5软件实现过程3.5.1横排的汉字点阵字模的获取以下便是在VB的Click事件驱动过程中所编写的源代码,当输入要提取字模点阵的汉字并点击应用程序界面中的“提取”按钮时,就会引发Click事件。VB应用程序将自动执行以下代码,并在程序界面的文本显示栏中显示提取出来的汉字字模点阵的代码。如图3-3所示。汉字由参量MY-HZ传入程序,通过Hex(Asc(MY-HZ))语句得到汉字的机内码,在求出其区码和位码的同时利用上面的公式便可得到汉字的字模点阵在字库HZK16中的具体位置[27]。在取得汉字的字模点阵后,将点阵数据存放在数组变量ZMDZ中。Private Sub Get-ZM(MY-HZ As String)Dim JNM As Variant,QWM As Variant`定义JNM为机内码,QWM为区位码Dim QM As Variant,WM As Variant`定义QM为区码,WM为位码Dim ADDR As VariantDim I As Variant,J As Variant,BYTES()As Byte,ZMDZ(1 to 32)As ByteJNM=Hex(Asc(MY-HZ))QWM=Hex(Asc(MY-HZ)-&HA1A1)`机内码-A1A1=区位码If Len(QWM)=3 Then`通过区位码得到区码和位码QM=Mid(QWM,1,1)WM=Mid(QWM,2,2)ElseIf Len(QWM)=4 ThenQM=Mid(QWM,1,2)WM=Mid(QWM,3,2)End If图3-3横排字模的提取Fig.3-3 The abstraction of Chinese character lattice
基于单片机的LED三维动态信息显示系统19ADDR=32*((CLng("&H"&QM))*94+(CLng("&H"&WM)))`求出偏移地址Open App.Path+"\HZK16"For Binary As#1`打开字库文件HZK16J=LOF(1)ReDim BYTES(1 To J)`获取字库数据Get#1,,BYTESClose#1For I=1 To 32ZMDZ(I)=BYTES(ADDR+I)NextEnd Sub3.5.2横排点阵的转置处理由于设计中显示系统的需要,必须对提取出来的汉字字模点阵进行转置处理。VB6.0虽然提供了较强的位运算功能,但是对于在字模转换中使用较多的移位操作,却没有提供对应的移位元运算符、指令或函数。其实通过and(与)、or(或)两个位运算符即可编制一个自定义子函数来实现移位元运算。现给出一个左移函数的程序清单:Public Function byte left(byte1 As Byte,n As Integer)As Byte'将byte1左移n位Dim item As Byte'临时变量Dim intem1 As Byte'临时变量Dim x,y As Integerintem1=byte1For x=1 To n'移多少位就循环多少次For y=8 To 1 Step-1'从第八位(左边第一位)开始循环左移Select Case yCase 8If(intem1 And&H80)=&H80 Then'如果临时变量intem1的第八位是1item=&H1'则将临时变量item置1Elseitem=&H0'反之置0End IfCase 7If(intem1 And&H40)=&H40 Then'如果临时变量intem1的第七位是1intem1=intem1 Or&H80'则将其第八位置1(其它位不变)Elsewww.lwfree.cn学位论文20intem1=intem1 And&H7F'反之将第八位置0(其它位不变)End IfCase 6If(intem1 And&H20)=&H20 Then'操作与上面相同intem1=intem1 Or&H40Elseintem1=intem1 And&HBFEnd IfCase 5If(intem1 And&H10)=&H10 Thenintem1=intem1 Or&H20Elseintem1=intem1 And&HDFEnd IfCase 4If(intem1 And&H8)=&H8 Thenintem1=intem1 Or&H10Elseintem1=intem1 And&HEFEnd IfCase 3If(intem1 And&H4)=&H4 Thenintem1=intem1 Or&H8Elseintem1=intem1 And&HF7End IfCase 2If(intem1 And&H2)=&H2 Thenintem1=intem1 Or&H4Elseintem1=intem1 And&HFBEnd IfCase 1If(intem1 And&H1)=&H1 Thenintem1=intem1 Or&H23汉字点阵字模的获取21Elseintem1=intem1 And&HFDEnd IfIf item=&H1 Then'移完第一位后,如果item是1(即第八位是1)intem1=intem1 Or&H1'则将intem1的第一位置1Elseintem1=intem1 And&HFE'反之置0End IfEnd SelectNext yNext xbyte left=intem1'将intem1的值返回给函数名End Function在上面的程序中,尤其需要注意的是当把二进制数据写入文件中时,必须使用Byte数据类型的数组变量,而不是String变量。虽然String变量被认为是包含字符的,但二进制型数据可能无法正确地存在String变量中。按照类似的方法,也很容易编写出右移函数byte right。当正确地读出汉字在16点阵字库中32个字节的字模数据后,要把其转换成所需的竖排格式,需要用到上面的左移函数left right和右移函数byte right。用左移函数left right来表示整个流程是由低位向高位移动,最后凑成一个字节。用右移函数byte right将字节中的某位移到最低位。以下便是将UCDOS7.0字库的存储格式调整为所需的规范格式的程序代码:For j=0 To 3If j=0 Then k4=14If j=1 Then k4=15If j=2 Then k4=30If j=3 Then k4=31For k=0 To 7bit=&H80bit=byteRight((bit),(k))For i=0 To 7k2=byteleft(Buf1(j*8+k),1)'整个流程是由低位向高位移动,最后凑成一个字节k3=byteRight((Hz(k4-i*2)And bit),7-k)'将字节中的某位移到最低位k3=k3 And&H1'屏蔽掉其余7位Buf1(j*8+k)=k2 Or k3Next iwww.lwfree.cn学位论文Next kNext jFor i1=0 To 31'将调整后的汉字字模再装入原数组Hz(i1)=Buf1(i1)HzAll(LoopAll*32+i1)=Buf1(i1)NextNext LoopAllOpen TempDestFile For Binary Access Write As#1'转换结果保存到TempDestFile中Put#1,1,HzAllClose#1MsgBox"OK!"End sub(源程序详见程序附录)以上程序均在中文VB6.0专业版及WINDOWS-XP上调试通过,且取得了良好的效果,正如图3-4所示。图3-4转置后的字模点阵代码Fig.3-4 Regulated Chinese character lattice
基于单片机的LED三维动态信息显示系统4 PC机和单片机之间的串行通信4.1上位机通讯模块设计4.1.1 RS-232接口简要介绍a.RS-232发展背景RS-232标准的全称是EIA-RS-232C,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,C代表RS-232的最新一次修改(1969)。它规定了连接电缆的机械、电气特性、信号功能及传送过程。例如目前在PC机上的COM1、COM2接口就是RS-232接口。串行通信接口标准经过使用和发展,目前已经有几种,但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232为主来讨论。RS-232标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232制式兼容的通信设备,因此它作为一种标准,目前已在微机通信接口中广泛采用。虽然RS-232标准现在已被广泛应用于计算机的接口部件中,但仍有一些问题需要注意。首先,RS-232标准最初是为了在远程通信中连接数据终端设备DTE(Data TerminalEquipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借用于计算机(更准确的说是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定是和计算机系统是不一致的,甚至是相矛盾的。其次,RS-232标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。b.电气特性RS-232对电器特性、逻辑电平和各种信号线功能都作了规定。(1)在TXD和RXD上:逻辑1(MARK)=-3V~-15V逻辑0(SPACE)=+3V~+15V(2)在RTS、CTS、DSR、DTR和DCD等控制线:信号有效(接通,ON状态,正电压)=+3V~+15V信号无效(断开,OFF状态,负电压)=-3V~-15Vwww.lwfree.cn学位论文24以上规定说明了RS-232标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(信号)的电平低于-3V,逻辑“0”(信号)的电平高于+3V;对于控制信号:接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3V~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义。因此,实际工作时,应保证电平在±(5~15)V之间[28]。c.连接器的机械特性连接器:由于RS-232并未定义连接器的物理特性。因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。下面主要介绍常用的DB-9型的连接器。由于286以上的微机串行口不支持20mA电流环界面,因此使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。它只提供异步通信的9个信号。DB-9型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线[28]。电缆长度:在通信速率低于20kb/s时,RS-232所直接连接的最大物理距离为15m(50英尺)。最大直接传输距离说明:RS-232标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF[29]。DB-9的引脚定义如表4-1所示。Table4-1 Pin definition of DB-9表4-1 DB-9的引脚定义针脚功能1载波检测2接收数据3发送资料4资料终端准备就绪5信号地线6数据准备就绪7发送请求8发送清除9振铃指示4.1.2 Mscomm控件介绍一般情况下,PC机中采用Visual Basic(VB)或者是Visual C++编写通信程序和接口。4 PC机和单片机之间的串行通信25在上述的编程工具中,VB则以其高效、简单易学及功能强大等特点为广大程序设计人员特别是初学者所青睐。VB支持面向对象的程序的设计,具有结构化的事件驱动编程模式,而且可以十分简单地做出良好的人机界面[30]。下面就简单介绍其通信控件MSComm。MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时使用非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法[31]。a.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。(1)事件驱动方式事件驱动方式是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如:在串口接收缓冲区中有字符,或者Carrier Detect(CD)或Request To Send(RTS)在线一个字符到达或一个变化发生时。在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅CommEvent属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。(2)查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如:如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应[30]。b.MSComm控件的常用属性MSComm控件有很多重要的属性,但首先必须掌握以下几个属性:CommPort设置或返回通信端口号Settings设置或返回波特率、奇偶校验、数据位和停止位PortOpen设置或返回通信端口的状态。也可以打开和关闭端口Input返回和删除接收缓冲区中的字符Output将字符串写入发送缓冲区OnComm当CommEvent属性值改变时产生该事件,表明产生了通信事件或通信错误InputLen设置Input属性从接收缓冲区中读取的字符数www.lwfree.cn学位论文26InputMode设置和返回Input属性所获取数据的类型Rthreshold设定为某一个值,每当接收缓冲区收到该设定个数字符时,都会使Mscomm控件产生OnComm事件Sthreshold设定为某一个值,每当发送缓冲区的字符个数少于这个值时,Mscomm控件产生OnComm事件CommEvent返回最近的通信事件或错误InBufferSize设置或返回接收缓冲区大小的字节数[31]c.MSComm控件的通信步骤通常以这样的步骤来使用MSComm控件,从而完成上下位机通信的控制。(1)加入通信控件,也就是MSComm控件。(2)设计通信端口号码,即CommPort属性。(3)设置通信协议。(4)设置传输速度等参数,即Settings属性。(5)设计其它参数。(6)打开通信埠,即PortOpen属性设为True。(7)送出或读入字符串,使用Input和Output属性。(8)关闭通信埠,即PortOpen属性设为Flase。4.1.3具体的软件实现VB通信控件设计程序如下:/*串口初始化*/Global comm_time As IntegerGlobal data(1000)As IntegerGlobal Receive(1000)As IntegerPrivate Sub Form_Load()Comml.CommPort=1`设置串口1Comml.Settings=“9600,N,8,1”`波特率:9600,奇校验,8位数据,1位停止位Comml.InputLen=0`读取接收缓冲区的所有字符Comml.InBufferSize=256`设置接收缓冲区为256字节Comml.OutBufferSize=256`设置发送缓冲区为256字节Comml.PortOpen=True`打开串口1Comml.SThreshold=1`发送缓冲区空触发发送事件Comml.RThreshold=1`每一个字符到接收缓冲区都触发接收事件End Sub
基于单片机的LED三维动态信息显示系统/*发送n个数据*/Public Sub send-data()For i=0 To nComml.Output=Chr(data(i))Next iEnd Sub/*接收数据并触发OnComm()事件*/Public Sub Comml_OnComm()Select Case Comml.CommEvent`在CommEvent中接收数据Case comEvReceiveReceive(comm_time)=Asc(Comml.Input)`将接收数据放在Receive(comm_time)数组Comm_time=comm_time+1End SelectEnd Sub4.2 MAX232的简介RS-232是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够使计算机接口与TTL器件终端连接,必须在RS-232与TTL电路之间进行电平和逻辑关系的变换。和其它的单片机器件一样,作为单片机的标准外围电路,实现这种变换的方法可用分立组件,也可用集成电路芯片[32]。在这里,主要采用专用芯片进行电平转换的方法。目前较为广泛的是使用集成电路芯片,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。但MAX232芯片可完成TTL电平和EIA电平的双向转换,在这里就以MAX232为例进行讨论[33]。其内部原理图如图4-1所示。根据图4-1对MAX232的引脚简要介绍如下:(1)外接电容:有5个外接电容,进行电压的匹配和电源的去耦。图4-1 MAX232的内部原理图Fig4-1 Internal principle figure of MAX232www.lwfree.cn学位论文28(2)TTL的输入:两路TTL电平的输入引脚:11和10引脚,连接单片机的TXD输出埠。(3)TTL的输出:两路TTL电平的输出引脚:12和9引脚,连接单片机的RXD输出埠。(4)RS-232的输入:两路RS-232的输入引脚:13和8引脚,连接RS-232的TXD输出埠。(5)RS-232的输出::两路RS-232的输出引脚:14和7引脚,连接RS-232的RXD输出埠[34]。通过MAX232的TTL和RS-232的输入/输出埠,自动地调节了单片机串口的TTL电平信号和RS-232的串口通信信号的电平匹配[35]。MAX232与单片机的连接的典型电路如图4-2所示。4.3下位机通讯模块设计4.3.1单片机AT89C51的简介AT89C51是一个低电压,高性能的8位CMOS单片机,片内含4k bytes的可反复擦写的只读程序存储器(EPROM)和128 bytes的随机存取数据存储器(RAM)。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置有通用的8位中央处理器和Flash存储单元。AT89C51是一个低功耗的高性能单片机,共有40个引脚,其中包括32个外部双向输入/输出(I/O)口,同时内含两个外部中断口,两个16位可编程定时/计数器,两个全双工的串行通信口。AT89C51可以按照常规方法进行编程,也可以在线编程。由于其将通用的微处理器和Flash内存结合在一起,特别是应用可反复擦写的Flash内存可有效地降低开发成本[36]。下图4-3为AT89C51的引脚图。图4-2 MAX232与单片机的串口连接Fig4-2 Serial connection between MAX232 and single-chip microcomputer4 PC机和单片机之间的串行通信4.3.2单片机的内部设置51单片机的通信方式有两种:并行通信和串行通信。并行通信是指数据的N个位同发送和接收。串行通信是指数据一位一位的按顺序发送和接收。而单片机的串口通信是过串行口来实现的,其串行接口是一个可编程的全双工串行通信接口。它可用作异步通(UART)并与串行传送信息的外部设备相连接[37]。a.内部寄存器的设置单片机通过引脚RXD串行数据接收端(P3.0)和引脚TXD串行数据发送端(P3.1)外界通信。SBUF是串行缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同的名和地址空间,但不会出现冲突,因为它们两个有一个只能被CPU读出数据,另外一个只被CPU写入数据。当然,对单片机的串口的使用是通过对串行口的控制与状态寄存器的操作来完成串通信设计的。串行口控制寄存器是SCON,它用于定义串行口工作方式及实施接收和发的控制[38]。其各位定义如下表4-2所示。Table4-2 Serial port control register表4-2串行口控制寄存器SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCONSMO SM1 SM2 REN TB8 RB8 TI RISMO、SM1:串行口工作方式选择位,其定义如表4-3所示。图4-3 AT89C51的引脚定义Fig4-3 Pin definition of AT89C51www.lwfree.cn学位论文30SM2:多机通信控制位。不同的工作方式下,SM2有不同的选择限制。在方式0时,SM2=0;在方式1中,当SM2=1时,只有接收到有效停止位,RI才置于;在方式2或方式3中,当SM2=1且接收到的第九位数据RB8=0时,RI才置于1。Table4-3 Operation mode of SM0 and SM1表4-3 SMO、SM1的工作方式SMO/SM1工作方式功能波特率00方式0 8位移位寄存器fosc/1201方式1 10位UART可选10方式2 11位UART fosc/64或fosc/3211方式3 11位UART可选REN:接收允许控制位。有软件置位以允许接收,软件清零。TB8:发送数据的第九位。在方式2或方式3中,要发送的第九位数据,可约定作为奇偶校验位。RB8:接收数据的第九位。在方式0中不使用RB8,在方式2或方式3中,RB8为接收收据到的第九位数据。TI:发送中断标志位。在发送停止位之前,有硬件置位。T1置位表示申请中断,可根据需要,用软件查询的方法获得数据已经完毕的信息或用中断的方式来发送下一个数据。TI必须用软件清零。RI:接收中断标志位。在接收到停止位的中间时刻由硬件置位。RI置位表示一个数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清零。单片机的串口工作还要受到特殊功能寄存器PCON设置的限制。PCON是一个8位特殊功能寄存器,地址为87H,其最高位是SMOD,用于51单片机系列的串口设置。该位是单片机串口的波特率系数的控制位,当SMOD=1时,波特率加倍,否则不用加倍[39]。b.单片机的串口工作方式[40](1)方式0方式0为8位移位寄存器输入/输出方式,多用于外接移位寄存器以扩展I/O口,波特率固定为fosc/12,其中的fosc为时钟频率。在方式0中,串行端口作为输出时,只要向串行缓冲器SBUF写入一个字节数据后,串行端口就把此8位数据以固定的波特率,从RxD引脚逐位输出(从低位到高位),低位在前,高位在后。此时,TxD输出频率为fosc/12的同步移位脉冲。数据发送前,尽管不使用中断,中断标志TI还必须清零,8位数据发送完后,T自动置1。如要再发送,必须用软件将TI清零。当串行端口以方式0作为输入时,RxD为数据输入端,TxD仍为同步信号输出端,输出频率为fosc/12的同步移位元脉冲,使外部数据逐位移入RXD。当接收到8位数据(一帧)后,中断标志RI自动置。如果再接收,必须用软件先将RI清零。
基于单片机的LED三维动态信息显示系统www.lwfree.cn学位论文5步进电动机的系统设计在电气时代的今天,电动机在现代化的生产和生活中起着十分重要的作用。无论是在农业生产、交通运输、航空航天,还是在日常生活的家用电器,都大量地使用着各种各的电动机。一般来讲,对电动机的控制可分为简单控制和复杂控制两种。简单控制是指电动机进行启动、制动、正反转控制和顺序控制,这类控制可通过继电器、可编程控制和开关元件来实现。复杂控制是指对电动机的转速、转角、转矩、电压、电流等物理量行控制,而且往往要求的精度非常高。以前,对电动机简单控制的应用比较多,但是,着现代化步伐的不断迈进,人们对自动化的需求越来越高,从而使电动机的复杂控制逐成为主流,其应用领域也随之变的非常广泛。电动机控制技术的发展得力于电力电子技术、自动控制技术、微电子学及计算机应用最新发展成就。正是这些技术的进步使得电动机控制技术在近20年内发生了翻天覆地变化。其中电动机的控制部分已由模拟控制逐渐让位于以单片机为主的微处理器控制,成数字与模拟的混合控制系统,并正向全数字控制方向迅速发展。电动机的驱动部分所的功率器件也经历了几次更新换代,目前开关速度更快、控制更容易的全控型功率器件OSFET和IGBT成为主流。功率器件控制条件的变化和微电子技术的使用也使新型的动机控制方法能够得到实现,脉宽调制控制方法(PWM和SPWM)、变频技术在直流速和交流调速中获得了广泛的应用。在对电动机的控制中,控制系统可以分为开环系统和闭环系统两类。开环系统比较简,能够满足一般的控制要求;闭环控制系统则用于有精度要求的控制。在电动机控制系中,这些精度要求包括:电动机本身的精度要求,如角度和转速;执行机构的精度要求,线位移和角位移。要实现对这些物理量的精度控制,就必须通过高精度的检测传感器对些物理量进行检测,将检测的结果转换成数字量,反馈给单片机,通过单片机对这些数进行处理,处理的结果作为控制量对电动机进行控制,从而实现了闭环控制。.1步进电动机的原理.1.1步进电动机概述步进电动机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况,电动机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影,即给电动机加一个脉冲信号,电动机则转过一个步距角。因此可以通过控制脉冲个数控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电动机动的速度和加速度,从而达到调速的目的。这一线性关系的存在,加上步进电动机只有
基于单片机的LED三维动态信息显示系统37周期性的误差而无累积误差等特点,使得在速度、位置等控制领域使用步进电动机来控制变的非常简单。虽然步进电动机已被广泛地应用,但步进电动机并不能像普通的直流或交流电动机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用[44]。5.1.2步进电动机的特点及分类通过上面的分析,可知步进电动机的特点如下:(1)步进电动机的角位移与输入脉冲数严格成正比。因此,当它转过一圈以后,没有累计误差,具有良好的跟随性。(2)由步进电动机和驱动电路组成的开环数控系统,既非常简单、廉价,又非常可靠。同时,它也可以与角度反馈环节组成高性能的闭环数控系统。(3)步进电动机的动态响应快,易于起停、正反转及变速。(4)速度可在相当宽的范围内平滑调节,低速下仍能保证获得大扭矩。因此,一般可以不用减速器而直接驱动负载。(5)步进电动机只能通过脉冲电源供电才能运行,它不能直接使用交流或直流电源。(6)步进电动机存在震荡和失步现象,必须对控制系统和机械负载采取相应的措施。(7)步进电动机自身的噪声和震动较大,带惯性负载的能力较差。另外,步进电动机一般可分为3大类:反应式步进电动机(VR),永磁式步进电动机(PM)和混合式步进电动机(HB)。反应式步进电动机(VR)的转子是由软磁材料制成的,转子中没有绕组。一般为三相。它的结构简单,成本低廉,可实现大转矩输出,步距角可以做的很小,一般为1.5度,但动态性能较差,噪声和振动都很大。永磁式步进电动机(PM)的转子是用永磁材料制成的,转子本身就是一个磁源。一般为两相。它动态性能好,由于转子的极数与定子的极数相同,所以步距角一般较大,需供给正负脉冲信号,转矩和体积较小,步进角一般为7.5度或15度。混合式步进电动机(HB)综合了反应式和永磁式两者的优点。它的输出转矩大,动态性能好,步距角小。它又可分为两相、四相和五相,两相和四相步距角一般为1.8度而五相步距角一般为0.72度。这种步进电动机的应用最为广泛[45]。5.1.3步进电动机的工作原理由于感应子式步进电动机是在反应式步进电动机的基础上发展起来的,因此先介绍三相反应式步进电动机的原理[44]。a.结构www.lwfree.cn学位论文38电动机转子上均匀的分布着很多小齿,定子齿上有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开0T、1/3T、2/3T(相邻两转子齿轴线间的距离为齿距,用T表示),即A与齿1相对齐,B与齿2向右错开1/3T,C与齿3向右错开2/3T,A'与齿4向右错开T即与齿5相对齐,(A'就是A,齿5就是齿1)。如图5-1所示为定转子展开图。b.工作过程如果A相通电,B、C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力作用)。如果B相通电,A、C相不通电时,齿2应与B对齐,此时转子向右移过1/3T,同时齿3与C偏移变为1/3T,齿4与A偏移(T-1/3T)=2/3T。如果C相通电,A、B相不通电,齿3应与C对齐,此时转子又向右移过1/3T,此时齿4与A偏移变为1/3T对齐。如果A相通电,B、C相不通电,齿4与A对齐,转子又向右移过1/3T。这样经过A-B-C-A分别通电状态,齿4(即齿1前一齿)移到A相,电动机转子向右转过一个齿距,如果不断地按A-B-C-A……通电,电动机就每步(每脉冲)1/3T,向右旋转。如按A-C-B-A……通电,电动机就反转。由此可见:电动机的位置和速度是与导电次数(脉冲数)和频率成一一对应关系。而方向是由导电顺序决定。不过,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3T改变为1/6T。甚至于通过二相电流不同的组合,使其1/3T变为1/12T或1/24T,这就是电动机细分驱动的基本理论依据。不难推出:电动机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1,并且导电按一定的相序电动机就能正反转被控制,这是步进电动机旋转的物理条件。只要符合这一条件,理论上可以制造任何相的步进电动机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。c.力矩电动机一旦通电,在定转子间将产生磁场(磁通量Ф),所以当转子与定子错开一定角度时产生的力F将与(dФ/dθ)成正比,图5-1定转子展开图Fig5-1 Expansion plan figure of stator and votator图5-2定转子力矩图Fig5-2 Moment figure of statorand votator5步进电动机的系统设计如图5-2所示。其中磁通量Ф=Br·S(Br为磁密,S为导磁面积)。F与L·D·Br成正比(L为铁芯有效长度,D为转子直径,Br=N·I/R),其中的N·I为励磁绕阻安匝数(匝数·电流),R为磁阻。因为力矩=力·半径,所以力矩与电动机的有效体积、安匝数及磁密成正比(只考虑线性状态)。因此,电动机有效体积越大,励磁安匝数越大,定转子间气隙越小,电动机力矩越大,反之亦然。下面将介绍感应子式步进电动机(即混合式步进电动机)的原理。a.特点感应子式步进电动机与传统的反应式步进电动机相比,结构上转子加有永磁体,以提供软磁材料的工作点。而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电动机效率高,电流小,发热低。因为永磁体的存在,该电动机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。感应子式步进电动机某种程度上可以看作是低速同步电动机。一个四相电动机可以作四相运行,也可以作二相运行(必须采用双极电压驱动),而反应式电动机则不能如此。例如:四相,八相运行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍运行方式,不难发现其条件为C =A,D =B。一个二相电动机的内部绕组与四相电动机完全一致,小功率电动机一般接为二相,而功率大一点的电动机,为了方便使用,灵活改变电动机的动态特点,往往将其外部接线为八根引线(四相),这样使用时,既可以作四相电动机使用,可以作二相电动机绕组串联或并联使用。b.分类感应子式步进电动机以相数可分为:二相电动机、三相电动机、四相电动机、五相电动机等。以机座号(电动机外径)可分为:42BYG(BYG为感应子式步进电动机代号)、57BYG、86BYG、110BYG(国际标准),而像70BYG、90BYG、130BYG等均为国内标准。5.1.4步进电动机的指标a.步进电动机的静态指标术语相数:产生不同对极N、S磁场的激磁线圈对数,常用m表示。拍数:完成一个磁场周期性变化所需的脉冲数或导电状态(用n来表示),或指电动机转过一个齿距角所需的脉冲数。以四相电动机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A。步距角:对应一个脉冲信号,电动机转子转过的角位移(用θ表示),θ=360度/(转子齿数J×运行拍数n)。以常规二、四相,转子齿为50齿电动机为例,四拍运行时步距
基于单片机的LED三维动态信息显示系统40角为θ=360度/(50×4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50×8)=0.9度(俗称半步)。b.步进电动机的动态指标术语失步:电动机运转时运转的步数,不等于理论上的步数,称之为失步。失调角:转子齿轴线偏移定子齿轴线的角度,电动机运转时必然存在失调角,由失调角所产生的误差,采用细分驱动是不能解决的。运行矩频特性:电动机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电动机诸多动态曲线中最重要的,也是电动机选择的根本依据。如图5-3所示,其它特性还有惯性频率特性、起动频率特性等。动态力矩:电动机一旦选定,电动机的静力矩就确定了,而动态力矩却不然。电动机的动态力矩取决于电动机运行时的平均电流(而非静态电流),平均电流越大,电动机输出力矩越大,即电动机的频率特性越硬,如图5-4所示。其中,曲线3电流最大或电压最高;曲线1电流最小或电压最低,曲线与负载的交点为负载的最大速度点。要使平均电流大,并尽可能提高驱动电压,要采用小电感大电流的电动机。电动机正反转控制:当电动机绕组通电时序为AB-BC-CD-DA或(AB ?AB ?AB ?AB)时为正转,通电时序为DA-CA-BC-AB或(AB ?AB ?AB ?AB)时为反转。5.2步进电动机系统的选型本次课题设计所要完成的主要任务是设计一个单片机控制的立体显示系统,即通过动力系统带着一个LED显示棒在空间做360度旋转,以给人一种立体的显示效果来达到动态显示的目的。根据LED显示棒动力模块的要求,动力系统要能够带动一定量的负载连续运转,并且有较准确的转速。由于是“显示棒”在空间旋转显示,每一时刻“显示棒”图5-3矩频特性图一Fig5-3 Moment frequencypeculiarity figure 1图5-4矩频特性图二Fig5-4 Moment frequency peculiarity figure 25步进电动机的系统设计41所要停留的位置都有严格的要求,所以对其旋转精度要求比较高。为了能控制旋转精度,应该选用步进电动机做显示系统的动力源比较好。用步进电动机来组成一个驱动显示的动力系统,根据前面的介绍,整个动力系统应该包括:步进电动机,用户接口,控制器(时序发生器),驱动器(放大器)等四个基本组成部分[46]。首先所要面对的是每个部分的选型问题。根据前面的介绍,步进电动机有步距角(涉及到相数)、静转矩及电流三大基本要素组成。一旦三大基本要素确定,步进电动机的型号便确定下来了。a.步距角的选择电动机的步距角a取决于负载精度的要求,将负载的最小分辨率换算到电动机轴上。每个当量,电动机应走多少角度(包括减速),电动机的步距角应等于或小于此角度。目前市场上步进电动机的步距角一般有0.36度/0.72度(五相电动机)、0.9度/1.8度(二、四相电动机)、1.5度/3度(三相电动机)等。b.静力矩的选择步进电动机的动态力矩一下子很难确定,往往先确定电动机的静力矩。静力矩选择的依据是电动机工作的负载,而负载可分为惯性负载和摩擦性负载两种。单一的惯性负载和单一的摩擦性负载是不存在的。直接起动时(一般由低速)时两种负载均要考虑,加速起动时主要考虑惯性负载,恒速行进时只要考虑摩擦性负载。一般情况下,静力矩应为摩擦性负载的2-3倍比较好,静力矩一旦选定,电动机的机座及长度便能确定下来即电动机的几何尺寸。c.电流的选择静力矩一样的电动机,由于电流参数不同,其运行特性差别很大,可依据矩频特性曲线图来判断电动机的电流(参考驱动电源及驱动电压)。综上所述,步距角a的选择应该根据显示棒的宽度d和显示棒所旋转的半径r初步估算,即用a=360÷(2×π×r/d),初步决定选择步距角为1.8度的步进电动机。如果达不到要求可以采用细分电路等其它解决方案。静力矩的选择应根据负载的重量m和旋转半径r来估算。初步估算显示棒的重量在40g左右,旋转半径不能确定,估算的时候可能有很多因素没有考虑到,所以选用较大的安全系数,静力矩应该在1.0㎏·㎝以上。其次对体积的要求不是太高,因此初步决定选用42系列的混合式(永磁感应子式)步进电动机42BYG。由于显示棒在空间旋转时每一时刻所显示的东西在人眼中的停留时间要少于1/25s,即在1/25s内视觉印象还来不及消失,从而给人以连续而固定的假象,就如同标准电影格式的25帧/s一样。在0.04s内相同的图像必须再次显示或者显示下一幅图像。对于设计的要求就是在0.04s内至少使“显示棒”旋转一圈(在显示静态效果的字时,如果字是动态的在空间旋转时会要求更高的转速)。但是对于42BYG系列的步进电动机,转速应该www.lwfree.cn学位论文控制在1000转/分以内,既以15帧/s的速度显示。一个脉冲1.8度,每秒脉冲数f=(1000×360/1.8)÷60=3333(PPS)。5.3驱动控制系统组成使用和控制步进电动机时必须有环形脉冲,功率放大等组成的控制系统[47],其方框图如图5-5所示。5.3.1脉冲信号的产生脉冲信号一般由单片机或CPU产生,一般脉冲信号的占空比为0.3-0.4左右,电动机转速越高,占空比则越大。5.3.2信号分配感应子式步进电动机以二、四相电动机为主,二相电动机工作方式有二相四拍和二相八拍二种。具体分配如下:二相四拍为AB ?AB ?AB ?AB,步距角为1.8度;二相八拍为AB ?B ?AB ?A ?AB ?B ?AB ?A ?AB,步距角为0.9度。四相电动机工作方式也有两种,四相四拍为AB-BC-CD-DA-AB,步距角为1.8度;四相八拍为AB-B-BC-C-CD-D-DA-A-AB,(步距角为0.9度)。5.3.3功率放大功率放大是驱动系统中最为重要的部分。步进电动机在一定转速下的转矩取决于它的动态平均电流而非静态电流(参数上的电流均为静态电流),平均电流越大电动机力矩越大。要达到平均电流大这就需要驱动系统尽量克服电动机的反电势,因而不同的场合采取不同的驱动方式[48]。到目前为止,驱动方式一般有以下几种:恒压、恒压串电阻、高低压驱动、恒流、细分数等。图5-5步进电机控制系统方框图Fig5-5 Control system diagram of step motor
基于单片机的LED三维动态信息显示系统43为尽量提高电动机的动态性能,用信号分配及功率放大来组成步进电动机的驱动电源[49]。一般二相恒流斩波驱动电源与单片机及电动机接线图如图5-6所示。说明如下:CP:接CPU脉冲信号(正逻辑,低电平有效)。OPTO:接CPU的+5V。FREE:脱机,与CPU地线相接,驱动电源不工作。DIR:方向控制,与CPU地线相接,电动机反转。VCC:接直流电源正端。GND:直流电源负端。A:接电动机引出线的红线。A:接电动机引出线的绿线。B:接电动机引出线的黄线。B:接电动机引出线的蓝线。步进电动机一经定型,其性能取决于电动机的驱动电源。步进电动机转速越高,力矩越大则要求电动机的电流越大,驱动电源的电压越高。电压对力矩影响如图5-7所示。5.3.4细分驱动器在步进电动机步距角不能满足使用的条件下,可采用细分驱动器来驱动步进电动机,细分驱动器的原理是通过改变相邻(A,B)之间电流的大小来改变合成磁场的夹角,从而能控制步进电动机的运转。图5-6步进电机控制系统原理图Fig5-6 Control system principle of step motor图5-7矩频特性图三Fig5-7 Moment frequency peculiarityfigure 3图5-8磁场合成图Fig5-8 Synthesis figure of magneticwww.lwfree.cn学位论文445.4硬件电路设计单片机等微处理器代替模拟电路作为电动机的控制器是当今的发展趋势,其有如下特点[50]:(1)使电路更简单模拟电路为了实现控制逻辑,需要许多电子元件,使电路变得很复杂。采用微处理器后,绝大多数控制逻辑可以通过软件实现。(2)可以实现较复杂的控制微处理器具有更强的逻辑功能,运算速度快、精度高、有大容量的存储单元,因此有能力实现复杂的控制,如优化控制等。(3)灵活性和适用性微处理器的控制方式是由软件完成的,如果需要修改控制规律,一般不必要改变系统的硬件电路,只需要修改程序即可。在系统调试和升级时,可以不断的尝试选择最优参数,非常方便。(4)无零点漂移,控制精度高数字控制不会出现模拟电路中经常遇到的零点漂移问题,无论被控量的大或小,都可以保证足够的控制精度。(5)可提供人机界面,多机联网工作现在普遍采用单片机作为电动机的控制器。实际上可作为电动机的控制器的元件还有很多,例如工业控制计算机、可编程控制器(PLC)、数字信号处理器(DSP)。工业控制计算机功能最强大,它有极高的处理速度和强大的运算能力和接口功能,但由于成本高,体积大,所以只能用于大型系统。可编程控制器(PLC)刚好相反,它只能完成逻辑判断、定时、计数和简单的运算。由于功能太弱,所以只能用于简单的电动机控制。单片机刚好介于二者之间,它有较强的控制功能、低廉的成本。人们在选择电动机控制器时,常常是在先满足功能的需要的同时,优先选择成本低的控制器。因此单片机往往成为优先选择的目标[51]。单片机对于步进电动机的控制,由于采用的是四相步进电动机,所以共有六根接线,如图5-9所示。其中白线和黑线是连接+12V电源的,其余四根线是接收脉冲信号的。对于ULN2003,一共有7个相同的达林顿管,这里只用其中的4个做驱动,可以把步进电动机的红、黄、绿、蓝四根线连到ULN2003的OUT1~4四个口,既18、17、16、15四个管脚。ULN2003的对应IN1~4四个端口连接到AT89C51的P1口的任意四个[41]。简单来说,就是通过P1图5-9步进电动机接线原理图Fig5-9 Connection principle figure of step motor5步进电动机的系统设计45口的4个口发送脉冲来控制步进电动机的转速和转向,只是发出的脉冲信号太弱,不足以驱动电动机,中间加了一级放大而已。由于ULN2003本质就是两个串联的三极管,它的放大倍数是一定的,可能对于电流较大的电动机驱动不了,在AT89C51和ULN2003中间还要在加一级驱动7406或7407都行。在连接步进电动机时,还要在每个绕组上都要并联一个二极管来和步进电动机的每个绕组组成一个放电回路来保护电动机。当选用较大的电压二极管4004或以上的型号时还可再加一个保护电阻。5.5软件部分的实现为了编程和调试的方便,把程序分为主程序和初始化子程序initial,延时子程序delay及步进电动机子程序motor。由于是四相步进电动机,根据前面的介绍主要有四种,如下表5-1所示。Table5-1 Assort of four-phase step motor表5-1四相步进电动机的分类单四拍A-B-C-D双四拍AB-BC-CD-DA单双八拍AB-B-BC-C-CD-D-DA-A双八拍AB-ABC-BC-BCD-CD-CDA-DA-DAB为了实现对各绕组按一定的方式轮流加电,需要一个脉冲循环分配器。循环分配器可用硬件电路来实现,也可用软件来实现。出于设计成本经济化的考虑,采用软件来设计脉冲循环分配器。软件来设计脉冲循环分配器又有两种方法:控制字法和循环查表法。循环查表法是比较普遍的一种,它是将各相绕组加电顺序的控制码制成一张表,即步进电动机相序表,存放在内存区,再设置一个地址指针。当地址指针依次加1(或减1)时,即可从表中取出加电的代码,然后输出到步进电动机,产生按一定运行方式的走步操作。若改变相序表内的加电代码和地址指针的指向,则可改变步进电动机的运行方式与方向[52]。由于只是处于试验阶段,所以就用循环查表法编写了一个简单的单四拍的相序表,如下表5-2所示。Table5-2 Time sequence of four-phase step motor表5-2四相步进电动机相序P1.3 P1.2 P1.1 P1.00 0 0 1 A0 0 1 0 B0 1 0 0 C1 0 0 0 Dwww.lwfree.cn学位论文46本方法没有用到指针,只是分别编写正转和反转两段程序,由主函数送给步进电机子程序电动机的转向和转速,然后在电动机子程序内有计算公式来算出所需要的脉冲数和每个脉冲之间的延时[53]。程序如下:/*motor为步进电动机子程序*/void motor(uchar j,uchar rate)/*单四拍*/{uint step;/*脉冲数*/uint time;/*延时数*/step=200*rate;time=300/rate;/*ms*/if(j!=0)/*正转*/while(step){/*A-B-C-D*/P1_3=0;P1_0=1;delay(time);P1_0=0;P1_1=1;delay(time);P1_1=0;P1_2=1;delay(time);P1_2=0;P1_3=1;delay(time-1);step--;}else/*反转*/while(step){/*D-C-B-A*/P1_0=0;P1_3=1;delay(time);P1_3=0;P1_2=1;delay(time);P1_2=0;P1_1=1;delay(time);P1_1=0;P1_0=1;delay(time-1);step--;}}
基于单片机的LED三维动态信息显示系统475.6软硬件的调试在调试过程中,使用的是伟福6000,当然也可以使用μVision2集成开发环境。由于是用C编写的,不可以直接调试,还需要一个编译器,在安装Wave6000后要指定编译器的路径。仿真器使用的是伟福的H51/T,可以直接连接伟福6000,也可以用Keil C51连接,只是按个人的熟悉程度来选择使用了。调试过程中遇到的问题主要是延时函数,因为是用C编写的,不是汇编,它所产生的延时具体数字和输入的数字是个比例关系,并不是像汇编那样可以轻松的选择延时多少ms。例如在C中延时时间的计算包括两个部分:一部分是计算x--和判断x是否大于0所需要的时间t1,另一部分是调用这个子函数所需要的时间t2。总的延时T=t1×x+t2。在调试的过程中先要单步执行延时函数,并输入一个x1,得到一个总延时T1;然后再换一个x2重新执行这个延时子函数,得到另一个总延时T2。解二元一次方程组就能把t1和t2这两个常量计算出来了。www.lwfree.cn学位论文86显示系统设计.1系统方案的提出在日常生活中,常见的LED显示系统都是采用平板显示的LED显示屏。但传统的ED显示屏在使用中常存在一些不足,如:占用的空间太大、视角范围太小、可移动性差。因此对LED显示系统提出了一种新的显示方式即旋转式显示,从而使人们不管从那个度都能看到清晰的图案或文字。这次课题设计就是基于单片机的LED三维动态信息显示系统。目的是在现有的基础上所创新,首先是可以实现实时显示,即通过一个输入窗口来在线控制显示内容;其次是对显示内容进行编排,如:字体的正、反向移动,图像和文字的叠加等;最后是希望在成单色显示的基础上争取实现彩色显示。所以为三维动态是指用一根镶嵌有16个高亮发光二极管的显示棒来替代传统的平板显示方式,从而使LED显示系统的显示部分小型,并且可以最大范围的显示要提供的信息.2显示系统的组成针对以上的设计方案,可以将显示系统分为以下三个部分:一、显示系统的动力源部分,将采用单片机控制的步进电动机来驱动显示棒工作。步电动机的选择及其驱动所需的硬件电路和软件编程在上一章中已详细介绍,在这里就不赘述了。二、在对16个发光二极管的控制中必将会用到许多导线,这些导线也必然会随着显棒的转动而出现绞线的现象,现在将采用类似于电刷的机械装置来将电信号引入显示模,从而解决这一问题。三、考虑到上下位机之间的通讯只需要用到两根导线,即一根用来发送另一根用来接,再加上LED工作时所需的电源+5V及地线,一共只要四根线。所以在显示模块的硬件计中将把单片机部分也加进去,从而完成对PC机传来的数据信息的接收以及对发光二管的控制.3显示模块的软硬件设计、硬件部分主要包括步进电机、配套的电刷装置、51单片机、16个发光二极管及其驱动放大电,其实物图如图6-1所示。6显示系统的设计49图6-1显示模块的实物图Fig.6-1 Mock-up of display moduleb、软件部分主要完成的工作是单片机将从上位机接收来的汉字字模点阵数据信息存放于一个数据链表中,并根据要求依次将要显示的数据送到显示部分,从而驱动16个二极管工作,通过二极管的亮灭来完成对汉字信息的显示。软件程序的核心如下:ORG 0000HLJMP MAINORG 0100HMAIN:;开机初始化MOV A,#0FFHMOV P1,A;清除P1口ANL P3,#00H;清除P3口MOV R2,#200;100毫秒的延时D100MS:MOV R3,#250DJNZ R3,$DJNZ R2,D100MSMOV 20H,#00H;取码指针的初值L100:MOV R1,#100;每个字的停留时间L16:www.lwfree.cn学位论文0MOV R6,#16;每个字16个码MOV R4,#00H;扫描指针清零MOV R0,20H;取码指针存入R03:MOV A,R4;扫描指针存入AINC R4;扫描指针加1,扫描下一个MOV A,R0;取码指针存入AMOV DPTR,#TABLE;取数据表的上半部分的代码MOVC A,@A+DPTRMOV P1,A;输出到P1INC R0;取码指针加1,取下一个码。MOV A,R0MOV DPTR,#TABLE;取数据表下半部份的代码MOVC A,@A+DPTRMOV P3,A;输出到P3口INC R0MOV R3,#200;扫描1毫秒elay:MOV R5,#250DJNZ R5,$DJNZ R3,DelayMOV A,#00H;清除屏幕MOV P1,AANL P3,#00HDJNZ R6,L3;一个字16个码是否完成?DJNZ R1,L16;每个字的停留时间是否到了?MOV 20H,R0;取码指针存入20HCJNE R0,#0C0H,L100;6个字192个码是否完成?JMP MAIN;反复循环ABLE:b 00H,04H,20H,04H,21H,04H,21H,04Hb 21H,04H,21H,04H,21H,04H,21H,04Hb 21H,04H,21H,04H,21H,04H,23H,04Hb 61H,04H,20H,0CH,00H,04H,00H,00H
基于单片机的LED三维动态信息显示系统537总结与展望7.1总结本课题分析了当前国内外LED显示技术的发展状况及最新的研究进展,并对LED显示屏的原理和传统结构做了细致的分析,同时提出了现有的LED显示系统中存在的问题及其相应的解决方案。现对课题研究情况总结如下:一、完成了对汉字字模点阵的提取及转置处理。应用VB6.0实现了对汉字字模点阵的实时提取,以及对提取出来的点阵数据采用一种新的算法来实现字模转置以满足显示格式的需要。二、建立了良好的人机界面,方便人们对显示内容的控制。在软件上,采用Windows风格,利用应用程序开发工具VB 6.0,进行串行通信控制,并提供友好的用户界面,从而为LED显示屏的设计提出了一种新的切实可行的方案。三、LED显示系统中的显示内容可进行实时更新或脱机显示。本课题实现了用微机来控制LED点阵显示系统,用户在微机上通过控制软件将编辑好的文字和相应的控制命令经通讯线路传至显示系统的控制部分,显示屏即可根据用户选择的方式逐个循环显示。另外还可以采用脱机显示方式,在这种方式下用户将显示内容传至显示部分后,计算机就可以不再介入显示过程,显示系统就可以根据用户设定的模式显示所要显示的信息。四、改变传统的显示方式实现立体显示。在分析了人的视觉特性以后,可以利用视觉暂留现象,将传统的LED显示屏用一根镶嵌有16个高亮度的发光二极管的浅色直棒来替代。当有信息需要显示时,先是驱动步进电机工作,通过一些机械装置来带动直棒转动,从而可以达到一定的转速,并且还需和信号的传递速率想匹配。这样的话,我们就可以看到一个在立体空间里显示的数字、汉字或简单的图形了。7.2展望一、在电路设计上,本设计中仍然采用了一些传统器件,如74HCXX,4000系列等。随着新器件的发展,完全可以用一些集成芯片来代替。这样不仅可以减小电路板面积,降低生产成本,同时也增强了系统的可靠性。二、如何实现彩色LED点阵的扫描控制电路还有待于进一步研究。三、本文实现了串行数据的高速传输,但对于更大规模数据的高速并行传输还有待于www.lwfree.cn学位论文2一步实验。四、LED点阵显示屏的制造工艺还有待于进一步提高。致谢致谢本课题的研究及论文的撰写是在导师刘*明副教授的悉心指导下完成的。刘老师善于根据学生在科研领域的兴趣和特长,用他渊博的学识、敏锐的思维、诲人不倦的待人风格和严谨求是的治学态度将我们逐渐引入科学研究的新领域、新高点。从课题的立项到最终完成,每一环节无不渗透着导师在我身上付出的心血。我从刘老师那里不仅学到了更高层次的专业理论知识和科学研究方法,同时他脚踏实地、开拓创新、追求探索的科研精神也是我不断学习的榜样。从老师那里得到的精神财富将会使我获益终生,在此,学生谨向恩师表示最诚挚的感谢和最崇高的敬意!同时,我要衷心感谢我的父母在我近三年来的学习期间,在生活上给予我的关心和支持,为我创造了良好的环境,使我能够全身心地投入到学习和工作中,确保了我的课题研究工作的顺利完成。在本课题研究期间,也得到了邱*明教授、焦*星教授、刘*副教授、晏*副教授、于*副教授、李*副教授等老师的帮助和指导,在此表示感谢。另外,感谢赵*、张*、赵*、逯*红、林*等同学在我三年的研究生学习、生活中给予我的热情帮助。最后,还要感谢担任本论文评阅的各位专家和教授,谢谢他们提出的宝贵意见和建议。
基于单片机的LED三维动态信息显示系统54参考文献【1】方志烈.发光二极管材料与器件的历史、现状和展望.物理学和高新技术[J],2003,32(5):295~301【2】吕正,姚和军.发光二极管的发展现状与市场前景.现代计量测试[J],2002(3):8~11【3】邓明富.未来重要光源—发光二极管.物理通报[J],2003(7):47~48【4】关积珍.LED显示屏发展综述.国际光电与显示[J],2001(11):177~182【5】游华.大屏幕图文动画显示屏系统.电子技术应用[J],1994(8):26~27【6】王科峰.组件式大型LED电子显示屏.电子技术[J],1991(2):33~34【7】徐建华.LED技术应用与前景展望.科技情报开发与经济[J],2003,11(7):287~288【8】诸昌铃.LED显示屏系统原理及工程技术[M].成都:电子科技大学出版社,2000【9】陈爱萍,何智勇,羊四清.电子显示屏的单片机控制系统.自动化与仪表[J],1999(7):54~57【10】应根裕,胡文波.平板显示技术[M].北京:人民邮电出版社,2002【11】Holm Paige,Rhyme,William.Two-Dimensional LED Arrays for Virtual Display ImageSources.IEEE transactions on electron devices[J],1999,46(5):897~904【12】Sony公司.Sony推出超大屏幕电子显示屏.广播电视技术[J],2000(11):16~18【13】王建锋.LED技术在高速公路上的应用.中国交通信息产业[J],2003(3):205~207【14】班建民,崔玉玲.微机图像与LED大屏幕实时显示的设计.重庆工学院学报[J],2000,14(4):24~27【15】王泽芳,梁志坤.高分辨率LED显示系统的设计.广东工业大学学报[J],2002,19(3):30~33【16】南京洛普公司.LED显示屏的检测方法.现代显示[J],2001(1):11~12【17】贾东耀.智能仪表LED点阵显示模块的设计.电测与仪表[J],2002(7):51~54【18】刘炳文.Visual Basic程序设计教程[M].北京:清华大学出版社,2003【19】薛亮.Visual Basic实用教程[M].西安:西安电子科技大学出版社,2002【20】林清祥主编.Visual Basic 6.0程序设计实务入门[M].北京:中国铁道出版社,2002【21】刘新民,蔡琼,白康生.Visual Basic 6.0程序设计[M].北京:清华大学出版社,2004【22】徐尔贵,丁雷.Visual Basic教程[M].北京:清华大学出版社,2003【23】林卓然.VB语言程序设计[M].北京:电子工业出版社,2003【24】杨忠煌,黄博俊,李文昌.单芯片8051实务与应用[M].北京:中国水利水电出版社,2001【25】白驹珩,雷晓平.单片计算机及其应用[M].成都:电子科技大学出版社,1997【26】马忠梅,籍顺心,张凯,马岩.单片机的c语言应用程序设计[M].北京:北京航空航天大学出版社,2001参考文献55【27】袁帅主编.Visual Basic编程实例教程[M].北京:北京希望电子出版社,2002【28】范逸之,陈立元.Visual Basic与RS-232串行通信控制(最新版)[M].北京:清华大学出版社,2002【29】范逸之,廖锦棋.Visual Basic硬件设计与开发[M].北京:清华大学出版社,2004【30】罗为主编.Visual Basic程序设计及应用开发1001问[M].北京:电子工业出版社,1997【31】瞿军,周屹.Visual Basic程序设计培训教程[M].北京:清华大学出版社,2002【32】纪宗南.单片机外围电路器件实用手册—输入通道器件分册[M].北京:北京航空航天大学出版社,1998【33】颜荣江,詹树仁.MAXIM热门集成电路使用手册(第四册)[M].北京:人民邮电出版社,1999【34】何希才.集成电路及其应用手册[M].北京:科学出版社,2001【35】窦振中.单片机外围器件实用手册—输出通道器件分册[M].北京:北京航空航天大学出版社,2003【36】吴微,文军.单片机原理及制作[M].武汉:武汉大学出版社,2001【37】范立南,李雪飞,尹授远.单片微型计算机控制系统设计[M].北京:人民邮电出版社,2004【38】何立民.单片机高级教程[M].北京:北京航空航天大学出版社,2000【39】李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,1994【40】王秉钧,孙学军,沈保锁,居谧.现代通信系统原理[M].天津:天津大学出版社,1991【41】求是科技编著.单片机通信技术与工程实践[M].北京:人民邮电出版社,2005【42】张淑清.单片微型计算机接口技术及其应用[M].北京:国防工业出版社,2001【43】陈粤初,窦振中.单片机应用系统设计与实践[M].北京:北京航空航天大学出版社,1991【44】王晓明.电动机的单片机控制[M].北京:北京航空航天大学出版社,2002【45】余永权.ATMEL-89系列单片机应用技术[M].北京:北京航空航天大学出版社,2002【46】谢宜仁.单片机实用技术问答[M].北京:人民邮电出版社,2003【47】吴炳胜.80C51单片机原理及应用技术[M].北京:冶金工业出版社,2003【48】房小翠.单片微型计算机与机电接口技术[M].北京:国防工业出版社,2001【49】朱新佳.MCS-51系列单片机原理、接口电路及应用实例[M].南京:南京理工大学出版社,1996【50】胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2002【51】李宏.电力电子设备器件与集成电路应用手册(第4册)[M].北京:机械工业出版社,2001【52】范风强,兰婵丽.单片机语言C51应用实战集锦[M].北京:电子工业出版社,2003【53】谭浩强.程序设计与开发技术[M].北京:清华大学出版社,1991www.lwfree.cn学位论文攻读硕士学位期间发表论文【1】郝X华,刘X明,赵X.基于VB的PC机与单片机汉字信息通信技术.第四届制造技术自动化学术会议论文集,2009.12附录C软件程序中的通用变量设置'**********************************'基本设置'**********************************Public intPort As Integer'串行口号Public strSet As String'协议设置Public intTime As Integer'发送时间间隔'**********************************'发送与接收标志'**********************************Public blnAutoSendFlag As Boolean'发送标志Public blnReceiveFlag As Boolean'接收标志'**********************************'发送模块'**********************************Public intOutMode As Integer'发送模式Public strSendText As String'发送文本数据Public bytSendByte()As Byte'发送二进制数据'*********************************'显示标志'*********************************Public intHexChk As Integer'十六进制编码标志Public intAsciiChk As Integer'ASCII码标志Public intAddressChk As Integer'地址标志Public intAdd48Chk As Integer'4/8位地址标志'**********************************'接收模块'**********************************Public bytReceiveByte()As Byte'接收到的字节Public intReceiveLen As Integer'接收到的字节数'**********************************'显示模块'**********************************Public strAddress As String'地址信息Public strHex As String'十六进制编码Public strAscii As String'ASCII码Public intHexWidth As Integer'显示列数'**********************************'位置常量'**********************************Public intOriginX As Long'横向原点Public intOriginY As Integer'纵向原点Public intLine As Integer'总行数www.lwfree.cn学位论文60'**********************************'显示常量'**********************************Public Const ChrWidth=105'单位宽度Public Const ChrHeight=2*ChrWidth'单位高度Public Const BorderWidth=210'预留边界Public Const LineMax=16'最大显示行数