网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

单片机LED三维动态信息显示系统

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
单片机LED三维动态信息显示系统目录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致谢...........................................................53参考文献.......................................................54攻读硕士学位期间发表论文......................................56附录A系统硬件原理图...........................................57附录B系统输入界面图...........................................58附录C软件程序中的通用变量设置.................................405
 
单片机LED三维动态信息显示系统基于单片机的LED三维动态信息显示系统学科名称:测试计量技术及仪器作者姓名:郝振华签名:教师姓名:刘月明副教授签名:论文摘要SUBJECT:LED THREE-DIMENSION DYNAMIC DISPLAY SYSTEM OFINFORMATIONG WITH SINGLE-CHIP MICROCOMPUTERDiscipline:Measurement Technologies and InstrumentationsAuthor:Hao Zhenhua Signature:Advisor:Liu Yueming(Associate-Prof)Signature:Defense Date:March 2006AbstractThe display technology of LED(Light Emitting Diodes)is a new modern technologysynthesizing photo-ectricity,computer and control etc.It combines closely with traditional advertising and becomes a new media instrument for propaganda,and is widely applied to the information displaying and advertising in public place,such asexhibition centre,financial market,stadium,airport,quay,station etc.The LED display system is composed of display module,controller and computer used to implement the characters inputting and the display mode selecting.The system can show Chinese and English as well as figure symbols appointed by users.Due to the diversities of the display mode and ideal visual feelings,LED display system is welcomed by users and becomes a new type of scientific product withhigh-speed development in recent years.Normally the LED display system is complicated and 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 in remote 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 new structure plan on the LED di splay screen of three-dimension dynamic LED lattice controlled by microcomputer is presented,which aims at overcoming the problems in current display systems.Instructions and information can be input by simple andconvenient man-machine interactive conversations,and the long-range control of display module can be realized,at the same time the display contents can be renewed at any mo ment and the omni-directional spatial stereoscopic display could be achieved.Theflow of software and the design plan of the circuit are given detailedly from the information picking-up on computer to the ou tput of ultimate screen display.Further more,corresponding methods are discussed according to the specific technical difficulties 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
 
单片机LED三维动态信息显示系统   1923年,科学家罗塞夫在研究半导体SiC时,偶然发现了在含有杂质的PN结中有光发射出来,从而为发光二极管的发明奠定了基础,并且随着电子技术及半导体工艺不断发展最终研制出了LED[1]。LED是英文Light Emitting Diodes的简称,即发光二极管。它是一种半导体固体发器件,是利用固体半导体芯片作为发光材料的。当发光二极管的两端加上正向电压(半体中的PN结P区接电源正极、N区接电源负极)时,就会发出红、黄、绿、青、紫等色的光[2]。LED在刚研制出来时一直不被重视,直到上个世纪八十年代,随着微电子、动化和计算机技术的迅速发展,特别是半导体的制作和加工工艺的逐步成熟与完善,使LED的显示尺寸越来越小,解析度也越来越高。并且可将显示光的三基色(红、绿、集成到一体达到全彩的效果,从而推动发光二极管作为显示器件的应用范围日益扩大,终促使发光二极管在固体显示器中日趋占据主导地位。LED之所以受到广泛重视并得迅速发展,是因为它本身有很多优点,如:亮度高、工作电压低、功耗小、易于集成、动简单、寿命长、耐冲击且性能稳定,所以其发展前景极为广阔[3]。早期的LED产品大多用于仪器仪表和各种电子设备的指示灯显示、交通信号灯、种光源及汽车指示灯、半导体收音机等。而九十年代以来,随着新材料科学的发展,L开始被应用于显示技术,出现了LED显示屏,即通过一定的控制方式,用于显示文本图像、动画、行情等各种信息及电视、录像信号并由LED器件阵列组成的显示屏幕。过这十几年来的发展,LED显示屏被广泛应用在体育场馆、交通运输、金融行业、商邮电系统等,并且显示屏也从最初的室内显示屏走到了室外,其显示内容也从没有层次文字动画发展到了能显示有层次的电视图像[4]。1.1 LED显示屏简介LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,是集微电技术、光电技术、计算机技术、信息处理技术于一体的大型显示系统。它以其色彩鲜动态范围广,亮度高,寿命长,工作性能稳定而日渐成为显示媒体中的佼佼者,广泛应于广告、证券、信息传播、新闻发布等各个场合,是目前国际上极为先进的显示媒体。主要原理是将要显示的图文信息首先进行数字化处理,使图文信息转换成相应的数字化频信号,经过数字通信系统将数字视屏信号传输到LED显示屏的显示缓存中,由显示元控制电路读取相应的显示信息进行显示[5]。由于LED显示屏在进行图文显示时,其显示方式丰富多变,因此其相应的视频控模块也十分复杂。一般可分为单色显示屏、双基色显示屏和三基色(全彩色)显示屏三西安理工大学硕士学位论文2类。所谓的LED单色显示屏是指每个发光点由一种颜色发光管组成,可以是红、绿、黄之一。单色屏比较适合显示文字信息,一般没有灰度,造价较低。双基色屏中每个发光点由红、绿两种颜色发光管组成,通过红、绿不同强度组合产生上万种颜色。可用来显示图文信息及影视等多媒体信息,造价比单色显示屏高,是当前显示屏的主流。而三基色屏中每个发光点由红、绿、蓝三种颜色发光管组成,可产生真彩色效果,可逼真地显示图文及影视等多媒体信息,造价极高。目前全国也仅有极少数的三基色显示屏,但随着蓝色发光管技术的成熟,将来发展前景十分广阔[6]。在现代信息化社会的高速发展过程中,最具意义的莫过于大屏幕显示己经从公共信息展示等商业应用开始向消费类多媒体应用渗透。随着宽带网络的发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。与传统的显示设备相比,正是这种未来的巨大需求让大屏幕显示技术成为众人目光的焦点:(1)LED显示屏色彩丰富,显示方式变化多样(图形、文字、三维动画、电视画面等)、亮度高、寿命长,是信息传播设施划时代的产品。(2)LED显示屏是集光电技术、微电子技术、计算机技术、信息处理技术于一体的高技术产品,可用来显示文字及计算机屏幕同步的图形。它具有超大画面、超强视觉、灵活多变的显示方式等独居一格的优势,是目前国际上使用广泛的显示系统。(3)LED显示屏应用广泛,金融证券、银行利率、商业广告、文化娱乐等方面,有巨大的社会效益和丰厚的经济效益[7]。在其历史的演变过程中,出现了多种信息传播媒体,但就其性能看阴极管(CRT)或石英管(DV)大型电视,成本非常昂贵,在不需要超大画面且在室内使用时效果尚可;彩色液晶显示同样成本昂贵、电路复杂、面积有限,受视频角的影响非常大,可视角度很小;影像投影设备亮度小、清晰度差(画面受光不均匀);电视墙表面有分割线,视觉上有异物感,室外应用时亮度效果差。而LED显示屏以其受空间限制较小,并可以根据用户要求设计屏的大小,具有全彩色效果,视角大,可以用于显示文字、图像、动画、视频录像信号等各种信息的特点得到了突飞猛进的发展[8]。1.2国内外LED行业现状和发展趋势发光二极管(LED)是六十年代末发展起来的一种半导体显酒骷F呤甏孀虐氲继宀牧虾铣杉际酢⒌ゾе圃旒际鹾蚉N结形成技术的研究进展,发光二极管的发光颜色、亮度等性能得以提高并迅速进入批量化和实用化。进入八十年代后,LED在发光波长范围和性能方面大大提高,并开始形成平板显示产品即LED显示屏。LED显示屏发展经历了三个阶段:(1)1990年以前是LED显示屏的成长形成时期。一方面,受LED材料器件的限制1绪论LED显示屏的应用领域没有广泛展开;另一方面,显示屏控制技术基本上是通讯控制式,客观上影响了显示效果。这一时期的LED显示屏在国外应用较广,国内较少,产以红、绿双基色为主,控制方式为通讯控制,灰度等级为单点4级调灰,产品的成本比高[9]。(2)1990至1995年,这一阶段是LED显示屏迅速发展的时期。进入九十年代,球信息产业高速增长,信息技术的各个领域不断突破,LED显示屏在LED材料和控制术方面也不断出现新的成果。蓝色LED晶片研制成功,全彩色LED显示屏进入市场,子计算机及微电子技术的发展,在显示屏控制技术领域出现了视频控制技术,显示屏灰等级实现16级灰度和64级灰度调灰,显示屏的动态显示效果大大提高。这一阶段,L显示屏在我国发展速度非常迅速,从初期的几家企业、年产值几干万元发展到几十家企年产值几亿元,产品应用涉及金融证券、体育、机场、铁路、车站、公路交通、商业广邮电电信等诸多领域,特别是1993年证券股票业的发展更引发了LED显示屏市场的大增长。LED显示屏在平板显示领域的主流产品局面基本形成,LED显示屏产业成为新的高科技产业。(3)1995年以来,LED显示屏的发展进入一个总体稳步提高产业格局调整完善的期。特别是近几年来,LED显示屏产业内部竞争加剧,形成了许多中小企业,产品价大幅回落,应用领域更为广阔。产品在质量、标准化等方面出现了一系列新的问题,有部门对LED显示屏的发展予以重视并进行了适当的规范和引导,目前这方面的工作正逐步深化[10]。1.2.1国内LED显示屏发展现状由于半导体发光器件的出现和技术性能方面的不断提高,使得LED显示屏已经占了主导地位,因为LED的光电特性、亮度、色度、功耗及全天候特性都优于其他的光子器件,所以说LED显示技术及产品在未来的相当长时间内将具有很大的市场发展空我国的LED显示屏产业经过这十几年来的发展,基本形成了一批具有一定规模的骨干业。LED显示屏产业在规模发展的同时,产品技术推陈出新,一直保持比较先进的水90年代初期即具备了成熟的16级灰度256色视频控制技术及无线遥控等国际先进技术平。近年来在全彩色LED显示屏、256级灰度视频控制技术、集群无线控制、多级群技术等方面均有国内先进、达到国际水平的技术和产品出现。LED显示屏专用的大规控制集成电路也已由国内企业开发生产并得到应用。LED显示屏产业正成为我国电子息产业的重要组成部分,也是平板显示领域唯一立足于国内形成的民族高科技产业[11西安理工大学硕士学位论文1.2.2国外LED显示技术的现状1993年美国HP公司研制出亮度为8mcd的蓝色管芯,但因其成品率低,价格高得惊人。真正的三基色LED显示屏时代可以说是从1997年才开始。1997年下半年,日本的NICHIA,TOYOTA和美国的HP公司相继推出了亮度分别为880mcd的蓝色和绿色管芯且市场价格大幅下调,使得三基色室外LED显示屏能够成为现实。90年代以来,GREEHP、NICHIA等厂商相继在寿命、亮度以及发光颜色等关键技术上获得突破,应用范围也逐渐扩大,而迎合未来的无线通讯潮流的红外光产品也有不小成长空间,加上1999年以来全球经济已逐渐走出亚洲金融风暴的阴影,近年来的LED产品进入了另一个成长期世界上的LED生产厂家主要有日本、美国、德国、我国台湾等国家和地区的著名公司,国内主要有电子部、中科院等研究生产单位。目前我国每年需要普通的红、绿、黄色发光二极管约20亿只,绝大部分需要进口。我国的LED生产技术近年来有了很大发展,生产企业近百家,芯片生产开始出现了转机,单晶材料、引线框架及生产LED所需的设备仪器也可自行生产。但前道生产薄弱,95%的生产厂商从事后道的封装生产,芯片主要靠进口。制作高亮度、红外、激光等LED器件用的单、双异质结及MOCVD等外延技术还正在研究。我国的LED生产技术与国际先进水平相比,尚有很大差距[12]。1.2.3 LED显示屏的发展趋势现代信息社会,作为人机信息视觉传播媒体的显示产品和技术得到迅速发展,进入二十一世纪的显示技术将是平板显示的时代,LED显示屏作为平板显示的主导产品之一无疑会有更大的发展,并有可能成为二十一世纪平板显示的代表性主流产品。a.国外发展趋势白色LED是LED产业中最被看好的新兴产品,在全球能源短缺的忧虑再度升高的背景下,白色LED在照明市场的前景倍受全球瞩目,欧美及日本等先进国家也投注许多精力,并成立专门的机构推动白色LED研发工作。所谓白光是多种颜色混合而成的光,以人类肉眼所能见的白光形式至少需要两种光混合。目前白色LED的关键技术是蓝光技术专利权还掌握在欧美及日本的少数厂商手中。HP、SIEMENS、EMCORE是几家生产高亮度LED的代表性厂商,对白色LED的开发也很积极。台湾的亿光与长庚大学进行了共同研究,并已陆续出货下游相关产品。美国GREE公司目前正在制造使用SiC为基板的氮化镓系列LED产品。日本的ROHM公司针对使用碳化硅(SiC)基板的氮化镓(GaN)系列发光二极管以及半导体激光元件的开发,决定和美国GREE展开技术合作。可见国外LED显示屏技术主要集中在新材料的开发上,以新发光材料来提高显示屏的视觉效果、能耗等各种性能[13]。
 
单片机LED三维动态信息显示系统5b.国内LED显示屏技术的发展趋势(1)高亮度、全彩化蓝色及纯绿色LED产品自行研制成功以来,成本逐年快速降低,己具备成熟的商业化条件。基础材料的产业化LED全彩色显示产品成本下降,应用加快。LED产品性能的提高,使全彩色显示屏的亮度、色彩、白平衡性均达到了比较理想的效果,完全可以满足户外全天候的环境条件要求。同时,由于全彩色显示屏的性价比的优势,预计在未来几年的发展中,全彩色LED显示屏在户外广告媒体中会越来越多地代替传统的灯箱、霓虹灯、磁翻板等产品。(2)新材料的研究加快在各种制造LED的材料当中,尤其以氮化镓(GaN)为代表的第三代半导体材料最为引人注目。GaN发光效率高,抗辐射性能和耐热性能极佳,强度和硬度高,并且耐酸性强,是一种极具应用价值的半导体材料。因此,氮化镓材料及其合金最适宜于制造短波长发光器件,发光波长范围包括绿、蓝、紫等多个波段,普遍用来制造蓝色和绿色LED。引人注目的是,在蓝色LED技术的基础上以蓝光激发YAG荧光材料而制造成功的白色LED渐成新宠,深受广大用户欢迎,有望成为照明领域的一支新军。因此,目前在全球LED市场上,蓝、绿及白色LED正在开始形成三足鼎立的态势,也是最具发展潜力的LED产品。(3)标准化、规范化材料、技术的成熟及市场价格的基本均衡之后,LED显示屏标准化和规范化将成为LED显示屏发展的一个新趋势。产品质量,系统的可靠性等是主要的竞争因素,这就对LED显示屏的标准化和规范化有了较高的要求。行业规范和标准体系的形成,ISO9000系列标准的应用,对产品的检测有了相对统一的认识和评判依据,LED显示屏行业的发展趋于有序。(4)产品结构多样化信息化社会的形成,信息领域的愈加广泛,使得LED显示屏的应用前景更为广阔。预计大型或超大型LED显示屏的主流产品局面将会发生改变,适合于服务行业特点和专业性要求的小型LED显示屏会有较大提高。面向信息服务领域的LED显示屏产品门类和品种体系将更加丰富,部分潜在市场需求和应用领域将会有所突破,如公共交通、停车场、餐饮、医院等综合服务方面的信息显示屏需求量将有更大的提高。大批量、小型化的标准LED显示屏系统在LED显示屏市场总量中将会占有多数份额。总之,在LED大屏幕材料研制方面,单色及多基色LED点阵模块产品已经很成熟。目前的发展方向为全彩色LED,领先技术是蓝光技术,发展趋势是白光技术的开发和应用。在产品方面,LED屏幕朝标准化、大型化和小型化方向发展[14]。西安理工大学硕士学位论文1.3 LED显示技术存在的主要问题考虑到信息显示屏的数量会越来越多,种类也千差万别,特别是有的信息显示屏将工在离市区较远或离地面较高的地方,这就给产品维护及显示信息的管理带来了极大的不。其主要表现为以下几个方面:a.维护不方便在控制室里根本不知道显示屏是否出现信息显示错误或某些LED发光管是否损坏等题,也不知道信息显示屏会什么时候出现故障,因此只能要求维护人员定期去检查和维。这就会出现有了故障而没有去及时维修,也会出现没有故障而维护人员还要定期去检的浪费人力、财力的问题。如果能在控制室内就能监测到较高或较远的信息显示屏的运情况,这样在出现问题的时候就可以及时修理,同时也可以避免在运行正常时还不得不得维护工作[15]。b.信息管理不方便用户要经常改变显示屏要显示的信息,从而信息存储器的内容需要进行频繁的刷新。每一次的显示信息改动,维护人员都要把微处理器(如51单片机)从现场拿回来重新程,再送回显示屏上运行,以显示需要的信息。如果能在控制室内用某种方法就可以对区及更远地方的信息显示屏进行控制,方便地改动要显示的信息的话,不但能节省一定维护费用,而且能大大提高信息显示屏的工作效率。在不久的将来,信息需要网络化、一化、安全化管理。因此,一个好的通信方法对于LED显示屏在将来的发展具有关键的意义。c.空间及可视性不好现有的LED显示屏常要占用很大的空间,给显示屏的安装及维护带来很多的不便。外,由于显示屏的空间限制,我们在很多场合下都只能从固定的角度范围内才可以看到示屏的内容,这就要求我们要想办法改变现有的平板显示,让它的显示范围更大,方便们从各个角度都可以看到所显示的信息[16]。1.4课题的目的、意义及主要研究内容1.4.1课题的目的及意义针对上面提到的现有LED显示屏所存在的问题,引出了课题“基于单片机的LED三动态信息显示系统”。在这个系统中将选用连机屏,由此可以通过上位机通信口与控制微处理器进行有线通信,随时下载显示信息。这种方法不仅可以随意更改显示内容,方信息管理,而且还可以通过反馈信息知道显示内容是否正确,LED是否有损坏,也方1绪论便维护。另外,考虑到传统的LED显示屏在使用中存在的一些不足,如:占用的空间太大、视角范围太小及可移动性差等,因此在本系统中将采用旋转显示,从而使人们不管从那个角度都能看到清晰的文字或图案。1.4.2课题的主要研究内容本课题主要包括三方面的内容:微机控制、单片机驱动和LED显示部分。所以,完整的LED显示系统的设计应该包括硬件、硬件驱动程序和微机控制软件三个部分。操作过程是由PC机编辑显示信息,通过串行通信口发送给LED显示模块的控制芯片,由控制芯片再驱动显示单元进行显示。对于显示固定信息的小型LED显示系统,可以不要PC机的控制软件。目前在LED显示系统硬件设计上,根据显示方式可以分为静态显示和动态显示两种。静态显示是指将一幅画面输入以后要保持到下一幅画面的输入。动态方式是指将画面分为若干部分分别进行刷新。对于静态显示方式,需要较多的译码驱动装置,需要的引线也比较多,但只要设计合理,显示效果比较好。对于动态显示方式,可以避免以上不足,但是容易造成显示亮度低、屏幕闪烁等问题。对于单色LED显示屏,硬件驱动上采用静态显示方式比较好。数据从PC机到显示模块对应的存储器的数据传输方式,可以分为并行传输和串行传输两种。它们各有优缺点:数据并行传输的速度比较快,但是随着屏幕的增大,模块数量增多,线路会越来越复杂;数据串行传输的速度比较慢,但它可以大大简化传输线路。对于一般场合来说,采用串行传输方式比较合适。LED显示屏一般由单个单片机驱动。这个单片机首先要负责接收PC机传来的显示数据,然后将根据显示方式转换成显示图形,再发送到LED显示屏各个显示模块所对应的数据锁存器中,最后发送显示信号来更新屏幕的显示内容。所以,固化在单片机里的硬件驱动程序一般分为串行数据接收模块、数据显示模块和图像显示方式转换模块等三个部分。如果驱动程序处理不当,容易造成屏幕显示刷新速度跟不上,表现出亮度低、屏幕闪烁等缺陷[17]。
 
单片机LED三维动态信息显示系统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总体设计方案9异,例如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单片机利用自身所具有的串行通信口,接收PC机传送下来的串行数据,然后将所接收到的各组数据通过并行口输出,送到数据锁存器74LS373,最后将锁存的数据送到显示系统中控制显示装置进行工作。对于从显示系统返回的信号则通过数据锁存器变成单片机所需的并行数字信号送到单片机的数据存储单元西安理工大学硕士学位论文中,再由串行口返送到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显示系统的设计课题设计中的显示系统将采用一定的旋转精度来驱动显示系统中的步进电机平稳地运转起来,从而带动发光棒以预定的方式合理地转动,为了方便操作,需要有速度可控,位置可确定等特点。简单介绍如下:首先是步进电机部分,可通过单片机的控制,来驱动电机旋转,从而带动显示棒转动。其次是显示棒的选择需挑选质地较硬且颜色较浅的直棒,这样的话在转动的时候不至于发生形变,从而影响显示效果。最后是将发光二极管很好的镶嵌在显示棒上,拟采用进口的管芯,亮度高、平面度好且每个二极管可以很好的拼成一条直线,中间不会出现空隙。因此当有信息需要显示时,先要驱动步进电机转动起来,通过一些机械装置来带动直棒转动,达到一定的转速,并且还要和信号的传递速率想匹配。这样的话,就可以看到一个在立体空间里显示的文字符号或简单图形了。西安理工大学硕士学位论文123汉字点阵字模的获取3.1 VB软件设计3.1.1 Visual Basic 6.0简介Visual Basic 6.0是Microsoft公司开发的基于强大的WINDOWS平台上的一种应用程序编程语言。它可以说是在计算机发展史上应用最为广泛的语言,具有功能强大、效率高且简单易学的优势。它具有以下一些特点:(1)可视化的设计平台VB提供的可视化的设计平台,把WINDOWS界面设计的复杂性“封装”起来,使界面设计如同搭积木游戏一样简单。用户只需按设计要求,在屏幕上画出各种对象,并为其设置相应的属性,VB将自动产生程序界面的设计代码。可视化程序设计为开发WINDOWS风格的应用程序,提供了简化编程难度的有效方法,大幅度提高了编程的效率。(2)事件驱动的编程机制事件驱动是一种适用于图形用户界面的编程方式。当用户在操作界面上点击对象时,该对象就会触发一个事件,此时该事件所对应的程序代码就会被执行,从而完成了指定的操作任务。(3)能够充分利用系统资源动态数据交换(Dynamic Data Exchange,DDE)是WINDOWS操作系统下应用程序间的一种标准通信方式。VB支持DDE,并可以实现和其它支持DDE的应用程序进行动态数据交换或通信。VB支持WINDOWS对象的链接和嵌入技术(Object Link and Embedding,OLE),其它应用程序的对象能够链接或嵌入到VB应用程序中,例如:Word文档、Excel电子表格、图像、声音等,使VB能充分利用其它应用程序的数据。动态链接库(DynamicLink 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)是面向对象编程的基础。可在类模块中编写代码建立新对象,这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种模块,在其上可安放控件、可显示窗体窗口。西安理工大学硕士学位论文3.1.3事件驱动应用程序的方式事件是窗体或控件识别的动作。在响应事件时,事件驱动应用程序执行Basic代码。VB的每一个窗体和控件都有一个预定义的事件集。如果其中有一个事件发生,而且在关联的事件过程中存在代码,则VB调用该代码[21]。尽管VB中的对象可以自动识别预定义的事件集,但要判定它们是否响应具体事件以及如何响应具体事件则是编程的责任了。代码部分(即事件过程)与每个事件对应。想让控件响应事件时,就把代码写入这个事件的事件过程之中。对象所识别的事件类型多种多样,但多数类型为大多数控件所共有。例如:大多数对象都能识别click事件,如果单击窗体,则执行窗体的单击事件过程中的代码;如果单击命令按钮,则执行命令按钮的click事件过程中的代码。每种情况中的实际代码几乎完全不一样[22]。这里是事件驱动应用程序中的典型事件序列:(1)启动应用程序,装载和显示窗体。(2)窗体(或窗体上的控件)接收事件。事件可由用户引发(例如键盘操作)或由系统引发(例如定时器事件),也可由代码间接引发(例如当代码装载窗体时的Load事件)。(3)如果在相应的事件过程中存在代码,就执行代码。(4)应用程序等待下一次事件[23]。3.2汉字编码原理3.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 figure西安理工大学硕士学位论文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 figure西安理工大学硕士学位论文3.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三维动态信息显示系统ADDR=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横排点阵的转置处理由于设计中显示系统的需要,必须对提取出来的汉字字模点阵进行转置处理。虽然提供了较强的位运算功能,但是对于在字模转换中使用较多的移位操作,却没有对应的移位元运算符、指令或函数。其实通过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的第八位item=&H1'则将临时变量item置1Elseitem=&H0'反之置0End IfCase 7If(intem1 And&H40)=&H40 Then'如果临时变量intem1的第七位intem1=intem1 Or&H80'则将其第八位置1(其它位不变)Else西安理工大学硕士学位论文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汉字点阵字模的获取Elseintem1=intem1 And&HFDEnd IfIf item=&H1 Then'移完第一位后,如果item是1(即第八位intem1=intem1 Or&H1'则将intem1的第一位置1Elseintem1=intem1 And&HFE'反之置0End IfEnd SelectNext yNext xbyte left=intem1'将intem1的值返回给函数名End Function在上面的程序中,尤其需要注意的是当把二进制数据写入文件中时,必须使用数据类型的数组变量,而不是String变量。虽然String变量被认为是包含字符的,但制型数据可能无法正确地存在String变量中。按照类似的方法,也很容易编写出右移函数byte right。当正确地读出汉字在1字库中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 i西安理工大学硕士学位论文22Next 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 lattice4 PC机和单片机之间的串行通信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是标识号,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 TeEquipment)与数据通信设备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~-15V
 
单片机LED三维动态信息显示系统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属性从接收缓冲区中读取的字符数西安理工大学硕士学位论文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 Sub4 PC机和单片机之间的串行通信/*发送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 MAX232
 
单片机LED三维动态信息显示系统西安理工大学硕士学位论文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机和单片机之间的串行通信294.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 SCON.0SMO SM1 SM2 REN TB8 RB8 TI RISMO、SM1:串行口工作方式选择位,其定义如表4-3所示。图4-3 AT89C51的引脚定义Fig4-3 Pin definition of AT89C51西安理工大学硕士学位论文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位数据发送完后,TI自动置1。如要再发送,必须用软件将TI清零。当串行端口以方式0作为输入时,RxD为数据输入端,TxD仍为同步信号输出端,输出频率为fosc/12的同步移位元脉冲,使外部数据逐位移入RXD。当接收到8位数据(一帧)后,中断标志RI自动置。如果再接收,必须用软件先将RI清零。4 PC机和单片机之间的串行通信31(2)方式110位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位)和1个停止位(1)。波特率由定时器T1的溢出率和SMOD位的状态确定。一条写SBUF指令就可启动数据发送过程。在发送移位单元时钟(由波特率确定)的同步下,从TXD先送出起始位,然后是8位数据位,最后是停止位。这样的一帧10位数据发送完后,中断标志TI置位。在允许接收的条件下(REN=1),当RXD出现由1到0的负跳变时,即被当成是串行发送来的一帧数据的起始位,从而启动一次接收过程。当8位数据接收完,并检测到高电平停止位后,即把接收到的8位数据装入SBUF,置位RI,一帧数据的接收过程就完成了。(3)方式2,311位异步通信方式,其中包括1个起始位(0),8个数据位(由低位到高位),1个附加的第9位和1个停止位(1)。方式2和方式3除波特率不同外,其它性能完全相同。方式2和方式3与方式l的操作过程基本相同,主要差别在于方式2,3有第9位数据。发送时,发送机的这第9位数据来自该机SCON中的TB8,而接收机将接收到的这第9位数据送入本机SCON中的RB8。这个第9位数据通常用作数据的奇偶检验位,或在多机通信中作为地址/数据的特征位[41]。c.单片机的串口通信波特率的设定在串行通信中,收发双方的波特率要有一定的约定。在4种工作方式中,方式0和方式2的波特率是固定的,而方式1和3的是可变的。一般情况下,方式1的波特率=2SMOD/32×定时器T1的溢出率方式2的波特率=2SMOD/64×fosc方式3的波特率=2SMOD/32×定时器T1的溢出率其中,SMOD是控制寄存器PCON中的一位控空位,其取值有0和l两种状态。显然,当SMOD=0时,波特率=1/32(定时器T1的溢出率),而当SMOD=1时,波特率=1/16(定时器T1的溢出率)。所谓定时器的溢出率,就是指定时器一秒钟内的溢出次数。再者,在晶振时钟频率一定的条件下,方式2只有两种波特率,而方式3可通过编程设置成多种波特率,这正是这两种方式的差别所在。因为方式2为自动重新装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最为合适[42]。一般的,时钟频率选用11.0592时,最容易获得标准的波特率,所以很多单片机系统都选用了这个晶振。知道了串口通信的设定方法,还需要进行单片机的通信的编程[43]。具体的编程方法详见后面的章节及源程序附件。下面是一段设定单片机串口接收数据的程序代码。表示了串口使用前的控制字的设定,波特率的选择以及通信方式的确定。MOV PCON,#80H;SMOD=1MOV TMOD,#20H;使用定时器T1,且工作方式2MOV TH1,#0FDH;设初值,波特率9600b/sMOV TL1,#0FDH西安理工大学硕士学位论文SETB TR1;开定时器T1,即可产生波特率4.3.3单片机通讯软件a.程序流程图单片机的程序流程图如图4-4所示。图4-4单片机的程序流程图Fig4-4 Program flow process chat of single-chip microcomputerb.源程序代码在此先对程序中的一些参数进行说明如下:R0用来存放保存数据的地址,每收到一个数据,R0加1,加满32个后,R0复原;R2用来计数,计算接收到的数据个数,当收到32
 
单片机LED三维动态信息显示系统33个资料后,R2清零。程序清单如下:ORG 0000HAJMP STARTORG 0023HAJMP COM_SEVER;串行中断入口ORG 0080HSTART:;初始化程序MOV PCON,#00H;SMOD=1MOV TMOD,#20H;使用定时器T1,且工作方式2MOV TH1,#0FDH;设初值,波特率9600b/sMOV TL1,#0FDHSETBTR1;开定时器T1,即可产生波特率MOV SCON,#50H;串口工作方式1LOOP:MOV R2,#30H;接受缓冲区首址MOV R0,#0;计数初始化SETB EA;开总中断SETB ES;开串口中断MAIN:;主程序NOP;空操作,等待CJNE R2,#20H,MAIN;未收到32个数据,继续等待TX_DATA:;收满32个数据,回送MOV R1,#30H;接受换缓冲区首址给R1LOOP1:MOV A,@R1;接受缓冲区数据发送MOV SBUF,AWAIT:JNB TI,WAITCLR TIINC R1DJNZ R2,LOOP1;未发送完,继续发送JMP LOOP;发送完毕,跳回COM_SEVER:;串口中断程序CLR RI;允许继续接受CLR EA;关中断西安理工大学硕士学位论文34PUSH A;保护小现场PUSH DPHPUSH DPLMOV A,SBUF;接受地址帧信息MOV@R0,A;保存资料INCR0INC R2POP DPL;恢复现场POP DPHPOP ASETB EA;开中断RETI;中断返回END4.4通讯硬件电路设计4.4.1通信原理方案由上可知,单片机的输入和输出都是TTL电平,而PC机配置的是RS-232标准串行接口,两者的电气规范不一致,因此要完成单片机和PC机之间的通信,必须对单片机输出的TTL电平进行电平转换。单片机和PC的通信原理方案如图4-5所示。TxDRxDGNDTINROUTTOUTRIN TxDRXDGNDRS232C89C51 MAX232 PC由图可知数据通信的硬件上采用了3线制,将单片机和PC机串口的3个引脚(RXD、TXD、GND)分别连在一起,即将PC机和单片机的数据发送线TXD与数据接收线RXD交叉连接,两者的地线GND直接相连,而其它信号线均不用[36]。这里采用软件握手的方式。这样既可以实现预定的任务又可以简化电路设计。图4-5串口通信原理图Fig4-5 Principle figure of serial communication4 PC机和单片机之间的串行通信354.4.2通信电路要完成上述的功能,需要设计单片机和PC机的串口通信电路。图4-6是完整的单片机和PC机的连接和电平转换的电路原理图。p1.01p1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17XTAL118XTAL219GND20P2.0(A8)21P2.1(A9)22P2.2(A10)23P2.3(A11)24P2.4(A12)25P2.5(A13)26P2.6(A14)27P2.7(A15)28PSEN29ALE/PROG30EA/VPP31P0.7(AD7)32P0.6(AD6)33P0.5(AD5)34P0.4(AD4)35P0.3(AD3)36P0.2(AD2)37P0.1(AD1)38P0.0(AD0)39VCC40AT89C51C1+1VDD2C1-3C2+4C2-5VEE6T2OUT7R2IN8R2OUT9T2IN10T1IN11R1OUT12R1IN13T1OUT14GND15VCC16MAX232CPE1234567891110COM1D Connector 90.1uSC40.1uSC3SC10.1uSC20.1uRRST10K1211.0592MHzS0SW-PBCRST10uFVCCVCC20pFCW20.1uSC520pFCW1图4-6单片机和PC机的串口通信电路Fig4-6 Serial communication circuit between personal computer and single-chipmicrocomputer西安理工大学硕士学位论文5步进电动机的系统设计在电气时代的今天,电动机在现代化的生产和生活中起着十分重要的作用。无论是在工农业生产、交通运输、航空航天,还是在日常生活的家用电器,都大量地使用着各种各样的电动机。一般来讲,对电动机的控制可分为简单控制和复杂控制两种。简单控制是指对电动机进行启动、制动、正反转控制和顺序控制,这类控制可通过继电器、可编程控制器和开关元件来实现。复杂控制是指对电动机的转速、转角、转矩、电压、电流等物理量进行控制,而且往往要求的精度非常高。以前,对电动机简单控制的应用比较多,但是,随着现代化步伐的不断迈进,人们对自动化的需求越来越高,从而使电动机的复杂控制逐渐成为主流,其应用领域也随之变的非常广泛。电动机控制技术的发展得力于电力电子技术、自动控制技术、微电子学及计算机应用的最新发展成就。正是这些技术的进步使得电动机控制技术在近20年内发生了翻天覆地的变化。其中电动机的控制部分已由模拟控制逐渐让位于以单片机为主的微处理器控制,形成数字与模拟的混合控制系统,并正向全数字控制方向迅速发展。电动机的驱动部分所用的功率器件也经历了几次更新换代,目前开关速度更快、控制更容易的全控型功率器件MOSFET和IGBT成为主流。功率器件控制条件的变化和微电子技术的使用也使新型的电动机控制方法能够得到实现,脉宽调制控制方法(PWM和SPWM)、变频技术在直流调速和交流调速中获得了广泛的应用。在对电动机的控制中,控制系统可以分为开环系统和闭环系统两类。开环系统比较简单,能够满足一般的控制要求;闭环控制系统则用于有精度要求的控制。在电动机控制系统中,这些精度要求包括:电动机本身的精度要求,如角度和转速;执行机构的精度要求,如线位移和角位移。要实现对这些物理量的精度控制,就必须通过高精度的检测传感器对这些物理量进行检测,将检测的结果转换成数字量,反馈给单片机,通过单片机对这些数据进行处理,处理的结果作为控制量对电动机进行控制,从而实现了闭环控制。5.1步进电动机的原理5.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.结构西安理工大学硕士学位论文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步进电动机的系统设计39如图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齿电动机为例,四拍运行时步距西安理工大学硕士学位论文角为θ=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 2
 
单片机LED三维动态信息显示系统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系列的步进电动机,转速应该西安理工大学硕士学位论文42控制在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 motor5步进电动机的系统设计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 magnetic西安理工大学硕士学位论文5.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 motor
 
单片机LED三维动态信息显示系统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 D西安理工大学硕士学位论文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--;}}5步进电动机的系统设计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这两个常量计算出来了。西安理工大学硕士学位论文6显示系统设计6.1系统方案的提出在日常生活中,常见的LED显示系统都是采用平板显示的LED显示屏。但传统的LED显示屏在使用中常存在一些不足,如:占用的空间太大、视角范围太小、可移动性差等。因此对LED显示系统提出了一种新的显示方式即旋转式显示,从而使人们不管从那个角度都能看到清晰的图案或文字。这次课题设计就是基于单片机的LED三维动态信息显示系统。目的是在现有的基础上有所创新,首先是可以实现实时显示,即通过一个输入窗口来在线控制显示内容;其次是可对显示内容进行编排,如:字体的正、反向移动,图像和文字的叠加等;最后是希望在完成单色显示的基础上争取实现彩色显示。所以为三维动态是指用一根镶嵌有16个高亮度发光二极管的显示棒来替代传统的平板显示方式,从而使LED显示系统的显示部分小型化,并且可以最大范围的显示要提供的信息6.2显示系统的组成针对以上的设计方案,可以将显示系统分为以下三个部分:一、显示系统的动力源部分,将采用单片机控制的步进电动机来驱动显示棒工作。步进电动机的选择及其驱动所需的硬件电路和软件编程在上一章中已详细介绍,在这里就不再赘述了。二、在对16个发光二极管的控制中必将会用到许多导线,这些导线也必然会随着显示棒的转动而出现绞线的现象,现在将采用类似于电刷的机械装置来将电信号引入显示模块,从而解决这一问题。三、考虑到上下位机之间的通讯只需要用到两根导线,即一根用来发送另一根用来接收,再加上LED工作时所需的电源+5V及地线,一共只要四根线。所以在显示模块的硬件设计中将把单片机部分也加进去,从而完成对PC机传来的数据信息的接收以及对发光二极管的控制6.3显示模块的软硬件设计a、硬件部分主要包括步进电机、配套的电刷装置、51单片机、16个发光二极管及其驱动放大电路,其实物图如图6-1所示。
 
单片机LED三维动态信息显示系统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:西安理工大学硕士学位论文50MOV R6,#16;每个字16个码MOV R4,#00H;扫描指针清零MOV R0,20H;取码指针存入R0L3: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毫秒Delay: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;反复循环TABLE:db 00H,04H,20H,04H,21H,04H,21H,04Hdb 21H,04H,21H,04H,21H,04H,21H,04Hdb 21H,04H,21H,04H,21H,04H,23H,04Hdb 61H,04H,20H,0CH,00H,04H,00H,00HEnd总结与展望537总结与展望7.1总结本课题分析了当前国内外LED显示技术的发展状况及最新的研究进展,并对LED显示屏的原理和传统结构做了细致的分析,同时提出了现有的LED显示系统中存在的问题及其相应的解决方案。现对课题研究情况总结如下:一、完成了对汉字字模点阵的提取及转置处理。应用VB6.0实现了对汉字字模点阵的实时提取,以及对提取出来的点阵数据采用一种新的算法来实现字模转置以满足显示格式的需要。二、建立了良好的人机界面,方便人们对显示内容的控制。在软件上,采用Windows风格,利用应用程序开发工具VB 6.0,进行串行通信控制,并提供友好的用户界面,从而为LED显示屏的设计提出了一种新的切实可行的方案。三、LED显示系统中的显示内容可进行实时更新或脱机显示。本课题实现了用微机来控制LED点阵显示系统,用户在微机上通过控制软件将编辑好的文字和相应的控制命令经通讯线路传至显示系统的控制部分,显示屏即可根据用户选择的方式逐个循环显示。另外还可以采用脱机显示方式,在这种方式下用户将显示内容传至显示部分后,计算机就可以不再介入显示过程,显示系统就可以根据用户设定的模式显示所要显示的信息。四、改变传统的显示方式实现立体显示。在分析了人的视觉特性以后,可以利用视觉暂留现象,将传统的LED显示屏用一根镶嵌有16个高亮度的发光二极管的浅色直棒来替代。当有信息需要显示时,先是驱动步进电机工作,通过一些机械装置来带动直棒转动,从而可以达到一定的转速,并且还需和信号的传递速率想匹配。这样的话,我们就可以看到一个在立体空间里显示的数字、汉字或简单的图形了。7.2展望一、在电路设计上,本设计中仍然采用了一些传统器件,如74HCXX,4000系列等。随着新器件的发展,完全可以用一些集成芯片来代替。这样不仅可以减小电路板面积,降低生产成本,同时也增强了系统的可靠性。二、如何实现彩色LED点阵的扫描控制电路还有待于进一步研究。三、本文实现了串行数据的高速传输,但对于更大规模数据的高速并行传输还有待于西安理工大学硕士学位论文进一步实验。四、LED点阵显示屏的制造工艺还有待于进一步提高。
 
单片机LED三维动态信息显示系统53致谢本课题的研究及论文的撰写是在导师刘月明副教授的悉心指导下完成的。刘老师善于根据学生在科研领域的兴趣和特长,用他渊博的学识、敏锐的思维、诲人不倦的待人风格和严谨求是的治学态度将我们逐渐引入科学研究的新领域、新高点。从课题的立项到最终完成,每一环节无不渗透着导师在我身上付出的心血。我从刘老师那里不仅学到了更高层次的专业理论知识和科学研究方法,同时他脚踏实地、开拓创新、追求探索的科研精神也是我不断学习的榜样。从老师那里得到的精神财富将会使我获益终生,在此,学生谨向恩师表示最诚挚的感谢和最崇高的敬意!同时,我要衷心感谢我的父母在我近三年来的学习期间,在生活上给予我的关心和支持,为我创造了良好的环境,使我能够全身心地投入到学习和工作中,确保了我的课题研究工作的顺利完成。在本课题研究期间,也得到了邱宗明教授、焦明星教授、刘君副教授、晏克俊副教授、于殿泓副教授、李大成副教授等老师的帮助和指导,在此表示感谢。另外,感谢赵小强、张秀娟、赵振峰、逯春红、林海雄等同学在我三年的研究生学习、生活中给予我的热情帮助。最后,还要感谢担任本论文评阅的各位专家和教授,谢谢他们提出的宝贵意见和建议。西安理工大学硕士学位论文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].北京:清华大学出版社,1991西安理工大学硕士学位论文攻读硕士学位期间发表论文【1】郝振华,刘月明,赵振峰.基于VB的PC机与单片机汉字信息通信技术.第四届制造技术自动化学术会议论文集,2005.12
 
单片机LED三维动态信息显示系统57附录A:系统硬件原理图西安理工大学硕士学位论文录B:系统输入界面图西安理工大学硕士学位论文59附录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'总行数西安理工大学硕士学位论文*********************************示常量*********************************ublic Const ChrWidth=105'单位宽度ublic Const ChrHeight=2*ChrWidth'单位高度ublic Const BorderWidth=210'预留边界ublic Const LineMax=16'最大显示行数
  • 上一篇资讯: 活动请柬格式
  • 下一篇资讯: 医生处方系统论文
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师