




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能远程控制LED显示设备设计设计总说明随着社会不断发展,LED在当今社会生活中的应用已经越来越多,越来越普及。它的高效、环保、节能、低成本等优点使它倍受青睐,在显示领域受到了广泛应用。然而目前采用有线方式传输、显示数据的LED点阵屏幕安装不便,移动性较差,另外,LED点阵屏尺寸多为整块固定的,安装时不能根据需要进行调整。针对以上不足,本课题研制了一种采用智能远程控制的新型LED点阵屏系统,系统通过无线方式进行通讯控制,同时,采用模块化LED显示屏设计,使得屏幕尺寸大小可以根据实际需要来拼装,提高其实用性,避免了上述LED显示设备的缺点。首先需要进行总体方案设计,由设计需求确定系统结构,由此再得到硬件选型。然后分模块设计具体系统电路,设计上位机、下位机端的软件程序,最终制作实验室原型进行测试。本系统硬件部分单片机选择STC89C52RC,无线数据传输模块采用WSN-1101无线透传模块,LED显示模块采用74HC595和74HC164进行控制,电源使用7V蓄电池转5V供电。经最终调试,系统稳定可靠,基本达到设计要求。关键词:单片机;点阵LED;无线控制
DesignofIntelligentWirelessControlLEDDisplayEquipmentDesignDescriptionWiththecontinuousdevelopmentofthesociety,theapplicationofLEDinthesociallifehasbecomemoreandmorepopular..Itshighefficiency,environmentalprotection,energysaving,lowcostandsoontheadvantagesmakeitpopular,inthedisplayfieldhasbeenwidelyused.However,thewiredtransmission,displaydataleddotmatrixscreentoinstalltheinconvenience,poormobility.Inaddition,LEDdotmatrixscreensizeforblockfixed,theinstallationcannotaccordingtoneedtoadjust.Tosolvetheaboveproblem,thistopicdevelopedausingintelligentremotecontrolmodelofLEDlatticescreensystem,systembywirelesscommunicationcontrol.Atthesametime,usingmodulardesignofLEDdisplayscreen,makesthescreensizecanassembledaccordingtotheactualneed,toimprovethepracticabilityandavoidtheshortcomingoftheLEDdisplaydevice.Atfirst,weneedtocarryouttheoverallplandesign,thesystemstructureisdeterminedbythedesignrequirements,andthenthehardwareselection.Thenthesubmoduledesignofthespecificsystemcircuit,thedesignoftheuppercomputer,thelowerendofthesoftwareprogram,thefinalproductionoflaboratorytests.ThehardwarepartofthesystemismicrocontrollerSTC89C52RCandwirelessdatatransmissionmodule,thewirelessWSN-1101fortransparenttransmissionmodule,LEDdisplaymoduleusing74HC595and74HC164control,poweruse7Vbatteryswitch5Vpowersupply.Afterfinaldebugging,thesystemisstableandreliable,basicallymeetthedesignrequirements.Keywords:SingleChipMicrocomputer;LED;WirelessControl
目录TOC\o"1-3"\h\u72091绪论 页1绪论1.1课题内容及意义课题主要研究的内容是研究制作一种基于无线数据传输的LED点阵显示系统,系统下位机部分可以完成文字、图形、符号的显示以及简单的滚动动画效果,用户可以通过电脑上位机进行控制,以无线数据传输的方式远程实时改变下位机的显示内容及动画效果。研究如何将无线数据传输技术应用于LED显示设备,可以促进无线通信领域的发展,扩大LED显示在各个领域的应用范围,具有重要的科学意义。我国经济发展迅猛,对于信息传播的要求越来越高,可以预见LED显示屏将以其色彩鲜亮、显示信息量大、耗电量小、寿命长、空间尺寸小、重量轻、稳定安全、易于安装控制等优点代替传统灯箱、霓虹灯的地位,在未来社会发展中扮演越来越重要的角色,前景十分广阔。1.2国内外研究现状1.2.1LED研究现状及发展趋势发光二极管又名LED(Light-EmittingDiode),它是一种能将电能转化为可见光的半导体电子元件。由于西方经济发达,对LED的研究也早于国内。LED显示设备在上世纪80年代后期在国外得到迅速发展,在照明、传媒等领域,基于LED技术的各种显示设备渐渐崭露头角,成为受到广泛关注与应用的新型显示媒体。关于LED显示设备的发展,目前大致可以分成三个阶段:第一阶段是上世纪90年代之前,这个阶段是LED产品的实用化阶段,自1962年第一个商用型LED出现以来,受限于当时的科学技术水平,早期LED产品质量一般,功能单一,颜色种类较少,制造成本偏高,显示效果不理想,很难满足人们的各种使用要求;第二阶段是上世纪90年代到本世纪初,随着微电子技术、自动化技术、计算机技术的迅速发展,半导体制作技术和加工工艺的成熟和完善,LED灯的性能得到了较大的提升,成本更低,亮度更高,寿命更长,拥有了更广扩的应用前景,LED显示设备也得到了广泛的关注和研究应用。在这个阶段相继出现了超高亮红色、蓝色、绿色LED,使得实现彩色LED显示屏成为了可能;第三阶段是21世纪初至今,LED显示设备因其种种优势得到了社会的广泛应用,人们对于其性能也提出了更高的要求,目前正朝着更高亮度、更强的环境适应能力、更高的发光均匀性以及全彩色化方向发展,采用智能控制的LED显示系统将给人带来更优质的服务,LED显示行业也将经历从单一的做产品,到设计产品,再到提供整体解决方案的发展历程。目前由单片机控制的LED点阵显示器方案已趋于成熟。目前的研究方向主要是LED显示设备控制的简化和多样化,如设计简易的控制器控制LED显示屏的显示内容、亮度、速度等,还有用多种方式控制LED显示屏,如GPRS、GSM等各种无线控制方案。1.2.2无线通信技术研究现状及发展趋势随着科学技术的发展,信息化成为了目前的潮流,无时无刻的影响着人类的生活方式。人们要通过信息化来开创新的工作管理方式、金融贸易模式、交流教育模式以及消费生活模式,对无线通信技术也提出了更高的要求,无线通信技术由此得到了飞速发展,大约分为五个阶段:第一阶段为20世纪20年代到50年代,主要为军用,采用短波频及电子管技术,在该阶段末出现了150MHzVHF单工汽车公用电话系统MTS;第二阶段是50至60年代,通信频段扩展至450MHz,器件技术向半导体过渡,解决了移动电话与公共电话网的连接问题;第三阶段是70至80年代,通信频段扩展至800MHz,美国贝尔研究所提出了蜂窝系统概念并进行了AMPS实验;第四阶段是80至90年代中,此阶段移动数字通信得到了极大发展,并逐渐向个人通信业务迈进,此时出现了D-AMPS、GSM、CDMA等各类系统,频段扩展至1.9GHz,无线寻呼、无绳电话、集群系统等各类通信手段也随着用户市场需求而兴起;第五阶段是90年代中至今,随着通信业务及多媒体技术的发展,适应移动数据、移动计算、移动多媒体控制需要的第三代移动通信技术开始发展,全球标准开始统一,开始由第二代移动通信技术向第三代平滑过渡,移动设备接入Internet的无线通信协议(WAP)与无线连接技术蓝牙(Bluetooth)已经产生[13]。就目前来说,长距离无线通信技术的代表为GSM、GPRS、3G,短距离无线通信技术的代表为WLAN、蓝牙、RFID等。未来无线通信技术将向着宽带化、分组化和个人化发展。1.3主要研究内容及论文结构远程控制LED显示设备,利用远程发布平台,可解决了连锁型商业网点宣传推广方面对于高效、统一的业务需求,可应用于金融、医药、校园、餐饮、社区、商超、企事业单位等行业。主要研究的内容有:(1)了解LED显示设备和无线数据传输原理;(2)熟悉智能远程控制LED显示设备功能,选择并设计控制电路、显示电路和信号处理电路,绘制系统总体结构图,控制单元、显示电路和信号处理电路电气原理图。(3)根据工作原理,绘制软件工作流程图,编写算法软件。(4)制作实验室原型。(5)详细分析和说明系统工作原理和工作过程,编写设计说明书文章共分为五个章节,第一章为绪论部分,总体说明了本课题的意义、目的、研究范围及要达到的技术要求,国内外对LED以及无线通信技术的研究现状及发展趋势,并给出文章的整体布局划分。第二章为系统总体设计部分,详细分析了智能远程控制LED显示设备的总体需求,给出了系统整体方案,对各个模块的选型及原因做了简要说明,对各种无线数据传输方式进行简要介绍及对比,选择相应技术方案。第三章为系统硬件设计部分,给出了系统各模块的硬件电路设计图,包括单片机最小系统、电源模块、LED显示模块、无线数据收发模块、串口模块。第四章为系统软件设计部分,简单介绍了所使用的软件平台Keil、Proteus,给出了软件设计的思路及软件设计流程图,给出了相关的C程序。第五章为总结部分,给出所制作的系统实物测试成果,总结研究工作进行的归纳和综合,以及进一步开展研究的见解与建议。
2系统总体设计本章通过对课题具体要求加以分析,提出了系统设计总体结构框架,简要介绍比较了各种无线数据传输方式,根据系统需求选择了无线射频(RF)方式,对各个模块的功能及选型简要介绍。2.1系统总体框架智能远程控制LED显示设备设计任务基本可分为两步:1.单片机如何正确接收由上位机远程发送的控制命令及显示代码。2.单片机如何驱动LED点阵显示屏完成动态扫描显示,从而实现实时显示汉字的目的。根据系统的功能需求,结合考虑各种因素,我们设计出了系统的总体框架。系统总体框架图如图2-1:图3-1系统总体框架图由上图可以看出,系统大致分为上位机部分和单片机终端两部分。上位机部分由上位机、串口转换模块、无线发射模块组成,单片机终端部分由单片机最小系统、电源模块、LED显示模块、无线数据接收模块组成。上位机由用户输入控制指令及显示代码信息,用户可以选择要显示的信息、显示控制指令如滚动等,然后将其通过USB转TTL芯片发送给无线发射模块,无线发射模块将数据进行调制然后发送。无线接收模块接收上位机远程发送的控制命令及显示代码,将其存入缓存,待全部数据接收完毕后,通过驱动程序将数据发送到显示模块,通过LED显示模块将数据显示出来,单片机由蓄电池供电。各个模块相辅相成,构成整个系统。2.2无线数据传输方式的选择目前市场上现有的比较成熟的无线数据传输方式主要有RF无线(RadioFrequency)、GSM、GPRS、红外传输、蓝牙(Bluetooth)几种。(1)RF无线RF射频技术目前已经较为成熟,广泛应用在小区门禁、无线抄表、安防系统、数据传输等各种领域,市场上相关的RF模块也种类繁多。RF模块的工作频率通常有315MHz、433MHz、2.4GHz几种,对应的数据传输速度也不同,约从9KB/s到1MB/s不等,数据传输距离通过增大发送功率和延长天线最远可以达到上百米。(2)GSMGSM是全球移动通信系统(GlobalSystemforMobilecommunications)的简称,是当前应用最为广泛的移动电话标准。GSM一般通过手机发送含有控制指令的短信,通过移动网络进行远程数据传输,但是手机短信能够包含的信息数量有限,只能预先约定对应的控制指令,并由单片机从子库中调用点阵数据,无法显示复杂图形,虽然控制距离较远,但会产生流量费用。(3)GPRSGPRS是通用分组无线服务技术(GeneralPacketRadioService)的简称,GPRS可以看成是GSM的进阶版本,数据发送速度较GSM方式有了较大提升,理论上只要有移动网络覆盖的地方都可以进行无线数据传输,但是实际价值不大,仍然会产生流量费用。(4)红外传输红外传输是利用950nm近红外波段的红外线作为传递信息的载体。发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。传输速度较快,但是距离很短,而且只能直线传输,不符合本设计的要求。蓝牙蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,使用跳频技术,将传输的数据分割成数据包,通过79个指定的蓝牙频道分别传输数据包。蓝牙方式也如红外传输方式一样受到距离限制,而且传输速度一般,不适合在本设计中使用。RF技术现今已较为成熟,无线数据传输速率与距离也可以满足设计要求,成本较低,较GSM及GPRS方案不会产生流量费用,综上所述,我们选用RF无线传输方式进行无线数据传输。2.3主要模块基本功能及选型将整个系统划分为以下模块,各个模块之间相互配合实现智能远程控制LED显示设备的功能。单片机模块单片机模块是整个下位机系统的大脑部分,他接收来自无线接收模块的数据,将其解析处理后送入缓存并发送给LED显示。本设计中选用STC公司的STC89C52RC系列芯片,它是采用了8051内核的在系统可编程芯片,最高工作时钟频率为80MHz,拥有40个引脚,片上集成512字节RAM数据存储空间,6K字节FLASH程序存储空间,2K字节E2PROM存储空间,数据可反复擦写100000次以上。此外他还有8个中断源,4个优先级,3个定时器,完全可以满足本设计的需求。无线收发模块本设计中选用WSN-1101无线数传模块,是一款高稳定性、高性价比、低功耗的无线微功率透明数据收发模块。该模块相对一般模块具有尺寸小、灵敏度高、传输距离远、通讯速率高、内部自动完成通讯协议转换和数据收发控制等特点。模块利用了多频段、多信道来降低传输过程中的干扰以提高传输性能。用户可以通过PC串口、单片机串口以及远程无线配置方式,设置串行速率、工作信道、发射功率等参数。LED显示模块本设计采用四块型号为LDM-1088BS的8×8红色共阳LED点阵组成16×16大小的点阵屏幕,驱动部分采用两块74HC595移位寄存器芯片负责行输出数据,两块74HC164移位寄存器芯片负责列扫描数据,列扫描采用三极管放大驱动电流,提高LED显示屏的亮度。串口模块串口模块主芯片采用CP2102,CP2102其集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,无需任何外部的USB器件,安装驱动后即可生成虚拟串口,通过USB取电,引出接口有3.3V、5V、RX、TX、GND五种,可以方便的将USB接口扩展为RS232串口以连接无线发射模块。电源模块电源模块采用7V蓄电池供电,采用低压差三端稳压器LM2940T,可以将7V输入电压转化为5V电压输出,输出电流1A,内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路。并在电源模块中加入了一个六角拨动开关控制电路的通断。
3硬件设计3.1单片机最小系统单片机选择STC公司的89C52RC系列单片机,它是STC公司推出的新一代单片机,完全兼容8051单片机的程序指令,具有超强抗干扰、高速、低功耗等优点,其主要性能参数如下:(1)适应3.4V-5.5V工作电压;(2)工作频率范围为0-40MHz,相当于8051单片机的0-80MHz,最高可达80MHz;(3)拥有512字节RAM数据存储空间,6K字节FLASH程序存储空间,2K字节E2PROM电可擦除只读存储器;(4)具有40个引脚,32个通用I/O口;(5)具有ISP功能,无需专用编程下载器,通过串口(P3.0,P3.1)即可下载程序至单片机;(6)具有8个中断源,4个优先级,3个定时器;(7)具有看门狗定时器功能;(8)支持通用异步串行口(UART),还可通过定时器软件实现多个UART。单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,基于8051系列单片机的最小系统应该包括单片机、复位电路、晶振电路,如图3-1:图3-1单片机最小系统单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,可以按下复位按钮内部的程序自动从头开始执行。8051系列单片机在当RST引脚上的高电平持续两个机器周期以上即可复位,所以VCC上电时,电容C3充电,在电阻R1上出现电压,使得单片机复位;几个毫秒后,C3充满,电阻R1上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下按钮,C3放电。按钮松开,C3又充电,在电阻R1上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。晶振全称晶体振荡器,在单片机工作中晶振电路起到了非常重要的作用。它结合了单片机的内部电路,为单片机工作提供了最基本的时钟信号。晶振选择11.0592MHz,用于得到精确的9600及19200波特率。在实际焊接最小系统的过程中,VCC口额外添加了一个LED电源指示灯,只要联通电源指示灯就会亮起,电源按钮用来控制最小系统的通/断电。3.2无线收发模块无线收发模块选择WSN-1101无线透传模块,WSN-1101无线透传模块是一款高稳定性、高性价比、低功耗的无线微功率透明数据收发模块。该模块相对一般模块具有尺寸小、灵敏度高、传输距离远、通讯速率高、内部自动完成通讯协议转换和数据收发控制等特点。模块利用了多频段、多信道来降低传输过程中的干扰以提高传输性能。模块具体功能参数如下:①工作频段:433MHz;②GFSK调制方式,半双工通讯,空中收/发转换、连接、控制自动完成;③接收灵敏度高达-116dBm,传输距离100-200米;④接收工作电流<10mA,休眠电流<20uA;⑤通讯协议转换及射频收发切换自动完成,简单易用;⑥串口速率1200/2400/4800/9600/19200/38400/57600/115200,可通过软件配置;⑦宽电压范围工作:3V-5.5V;⑧用户可以通过PC串口、单片机串口以及远程无线配置方式,设置串行速率、工作信道、发射功率等参数。模块具体外观如图3-2:图3-2WSN-1101模块外观透明传输就是在传输过程中,对外界透明,就是说你看不见他是传送网络,不管传输的业务如何,只要负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理,简单的来说就是发送什么接收的就是什么,这样就省去了普通无线收发模块之间的收发协议的编写。不使用无线透传模块时,左边设备向右边设备发送数据是通过TXD端口串口发送,右边设备的RXD端口接收发送的串口数据,反之亦然,如图3-3:图3-3设备数据发送原理图而使用了无线透传模块后,左边的设备向模块发送串口数据,左边模块的RXD端口收到串口数据后,自动将数据以无线电波的方式发送到空中,右边的模块能自动感应并接收数据,从TXD端口还原发送最初左边设备所发的串口数据至接收端的RXD端口,反之亦然,原理图如图3-4:图3-4无线透传模块数据发送原理图无线透传模块拥有5个管脚,各管脚定义如下表:表3-1管脚定义表管脚名称方向说明1VCC-模块供电2GND-模块接地3TXDOUTPUT模块发送4RXDINPUT模块接收5SETINPUT模块配置具体连接方式为,电脑上位机通过USB转TTL串口模块引出5V、GND、TXD、RXD四条引线并连接到无线透传模块作为发送模块的对应管脚,而无线透传模块作为接收模块的一端由单片机引出5V、GND、TXD、RXD四条引线并连接到对应管脚,即可完成连接。3.3LED显示模块3.3.1LED发光原理罗瑟夫(O.W.Lossew)在1923年就发现了半导体中偶然形成的P-N结光发射现象,其发光机理是,当在P-N结两端注入正向电流时,注入的非平衡载流子(电子-空穴对)在扩散过程中复合发光,这种发射过程主要对应光的自发发射过程。我们最常用的LED是INGaAsP/INP双异质结边发光二极管。制作半导体发光二极管的材料是重掺杂的,在热平衡状态下的N区有很多迁移率很高的电子,P区有较多迁移率较低的空穴,由于P-N结阻挡层的限制,常态下两者不能发生复合。而当给P-N结加以正向电压时,沟区导带中的电子则可逃过P-N结的势垒进入到P区另一侧,于是在P-N结稍偏于P区一边的地方处于高能态德尔电子与空穴相遇时,便产生发光复合,光的波长则取决于材料的禁带宽度Eg。由于不同材料的禁带宽度不同,所以由不同材料制成的LED可以发出不同波长的光。3.3.28×8LED模块显示原理8×8LED模块由8行8列共64个LED组成,用以显示各种文字或图形,8×8LED模块外观数据如图3-5所示:图3-58×8LED模块外观数据它的工作原理如图3-6,模块内部分别将各行LED的正极串联,将各列LED的负极串联,当第x行接通电源正极,第y列接通电源负极,当正向电压大于LED死区电压时,电流导通,对应的第x行第y列LED灯点亮。8×8LED模块的两排引脚一排是阳极引脚,分别对应模块从上到下的8行,另一排为阴极引脚,分别对应从左到右的8列,在对应引脚上给电即可使对应行列的LED灯点亮。图3-68×8LED模块内部电路而本设计所使用的16×16LED模块是由4块8×8模块组成的,同8×8模块一样,需要把相同行的LED正极串联,相同列的LED负极串联,16×16模块接线如图3-7:图3-716×16LED模块接线3.3.3LED驱动电路设计当向LED原件施加正向电压时,流过它的正向电流使其发光。因此LED的驱动就是解决如何使其P-N结处于正向偏置的问题。而且为了控制它的发光强度,还要解决其正向电流的调节问题。具体的驱动方法可以分为直流驱动、恒流驱动和脉冲驱动:①直流驱动直流驱动是最简单的驱动方式,LED的工作点由电源电压Vcc、串联电阻R和LED器件的伏安特性共同决定。这种驱动方式适合于LED器件较少,发光强度恒定的情况。例如公交车恒定显示“XX路”等字样的情况。②恒流驱动由于LED器件的正向特性较陡,加上器件的分散性,使得在同样电源电压和同样的限流电阻的情况下,各器件的正向电流并不相同,从而引起发光强度的差异。若对LED器件进行恒流驱动,只要恒流值相同,发光强度就比较接近,晶体管的输出具有横流特性,所以可以用晶体管驱动LED。一般LED允许的连续工作电流在20mA左右,除了红色LED有饱和现象外,其他颜色LED的亮度基本上与流过的电流成比例。③脉冲驱动利用人眼的视觉惰性,采用向LED器件重复通电的方式使之点亮,就是脉冲驱动方式。脉冲驱动的主要应用有两个方面:扫描驱动和占空比驱动。扫描驱动的主要目的是节约驱动器,简化电路,如N行LED共用一列数据,称其为1/N扫描方式。占空比控制的目的是调节器件的发光强度,用于图像显示中的灰度控制。以上三种驱动方式,在实际中往往是组合在一起使用的。例如,在显示图像的驱动电路中,既使用了扫描驱动,又用到了占空比驱动和恒流驱动。而LED模块的显示一般由动态扫描实现。本设计采用LED列扫描方式进行显示,选用两片74HC164芯片进行列扫描驱动,74HC164是8位边沿触发式移位寄存器,串行输入转并行输出。上一片的Q7数据输出端接至下一片数据输入端,即可将两片级联输出16位信号控制列扫描。采用两片74HC595移位寄存器芯片负责行输出数据,74HC595具有一个8位移位寄存器和8位输出锁存器,也可以将串行信号转为并行输出,达到节省I/O口的目的,而且可以实现数据准备与显示任务的同时进行。上一片74HC595的Q7'接到下一片的数据输入端即可完成级联,同时输出16位并行信号,控制行数据输出。一共使用5个I/O口,分别为行数据输出位、行扫描时钟位、行数据锁存位、列数据输出位、列扫描时钟位。74HC164负责快速轮流点亮对应列,74HC595负责输出对应列数据。电路如图3-8:图3-8LED驱动电路仿真图然而实际中,由于74HC164的输出不足以驱动LED模块,所以焊接时增加了三极管以增大驱动电流,并在74HC595及74HC164的输出额外添加了限流电阻以保护电路。3.4电源模块由于LED点阵及无线接收模块运行起来较为耗电,所以需要寻找一种较为稳定、成本低廉的供电方式,由于干电池供电由于其电量小,显示时要经常更换新电池,又因为采用USB供电不符合本设备无线移动显示的定位,所以选择用大容量蓄电池供电。电源模块采用7V蓄电池供电,低压差三端稳压器LM2940将7V输入电压转为5V电压输出,采用47μF的电容和0.47μF的电容来分别过滤低频纹波和高频纹波,降低脉动纹波对电路的影响,提高输出电流的质量,而且在输出端添加了一个LED指示灯用来显示电路的通/断电。具体仿真电路如图3-9:图3-9电源模块仿真电路图
4软件系统设计4.1软件开发平台及开发语言介绍4.1.1Keil开发平台KeilIDEuVision3集成开发坏境是KeilSoftware公司开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具。Keil是目前最流行的开发5l系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。可以完成从工程建立和管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程。尤其C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。4.1.2Proteus仿真平台Proteus软件是英国LabCenterElectronics公司出版的\t"D:\\Documents\\_blank"EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(\t"D:\\Documents\\_blank"仿真软件),从\t"D:\\Documents\\_blank"原理图布图、\t"D:\\Documents\\_blank"代码调试到\t"D:\\Documents\\_blank"单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将\t"D:\\Documents\\_blank"电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、AVR、ARM、8086、MSP430和PIC10/12/16/18/24/30/DsPIC33等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。4.1.3C语言C语言,是一种通用的、程序式的程序语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。C语言是由UNIX的研制者丹尼斯·里奇和肯·汤普逊于1970年研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、MicrosoftWindows及Linux等。C语言的设计影响了许多后来的程序语言,例如C++、Java、C#等。后来于1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(AmericanNationalStandardInstitution)为C语言订定了一套完整的国际标准语法,称为ANSIC,作为C语言的标准。1980年代至今的有关程序开发工具,一般都支持符合ANSIC的语法。4.2上位机软件设计根据设计要求,上位机只需拥有向单片机发送显示数据及简单的控制指令的功能即可。这些功能使用现有软件即可达成。显示数据的提取可以由字模提取软件完成,而串口发送数据的功能则可由串口调试助手完成。4.2.1字模提取LED显示屏显示的内容涉及到多种文字、图形,各种文字又有大小、字体等属性,建立单片机字库的传统方法有使用硬件字库和使用UCDOS的点阵字库两种方法。这些字库均非矢量字库,大小固定、字体单一,有较大的局限性,且使用起来需要进行换算,非常麻烦。目前越来越多的显示屏需要显示美观多样的文字,因此可以利用Windows系统自带的矢量字库,不但文字大小可以随意改变,而且字体多种多样,具有很高的使用价值。在Windows环境下提取字模的工作原理是先将汉字或英文字符以图片的方式显示出来,再利用取点法去读取字符的字模,提取字模的具体步骤如下:①根据要生成字模的点阵大小,按像素显示设置相应的图片框的大小,比如16×16、24×24、32×16等;②选择字体类型,字体类型可以选择Windows系统自带的矢量字体,也可以选择其他下载字体;③调整汉字在图片框中的大小、位置;④按照汉字内码的顺序,依次将汉字显示在图片上,读取汉字的点阵信息,将该信息存入字库文件;⑤重复第④步,直到提取完所有汉字。在软件设计时,通常如果显示的字符不大于16×16点阵,则直接采用点阵字库;在显示大于16×16的字符时,采用矢量字库。提取汉字字模的程序流程图如图4-1所示:图4-1提取汉字字模流程图读取输入汉字的内码后先判断需要的汉字点阵大小Dot是否小于17点阵,如果小于17点阵,则根据Dot数值来选择对应的点阵字库,然后根据内码找到它在字库中的位置,按顺序依次取出,将读取的字模数据存入全局数组变量hz_bit()中;如果不小于17点阵,则根据字模大小的要求,将字符显示在图片框上按行列提取像素点信息,然后将读取的字模数据存入hz_bit()中,最后进行字模旋转、镜像等效果的处理。而图片的嵌入提取可以参考大于16点阵的汉字字模提取方式。先跟据图片在LED显示区域的大小设置图片框的大小,然后用图片框控件的LOAD方式将图片显示在图片框上,就可以提取图片上对应行列的像素点信息,具体提取流程如图4-2:图4-2提取图片字模信息流程图现在网络上有很多字模提取软件可以达到设计的要求,所以就不需要另行编写字模提取程序,图4-3是本设计采用的一款字模提取软件界面:图4-3字模提取软件界面如图,在文字输入区输入“西安”两个字,上面的点阵自动显示出“西安”两个字的点阵显示效果,并给出对应的点阵字模程序:/*--文字:西--*//*--Fixedsys10;此字体下对应的点阵为:宽x高=16x16--*/0x00,0x00,0xFF,0xFE,0x04,0x40,0x04,0x40,0x04,0x40,0x3F,0xF8,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x28,0x38,0x30,0x08,0x20,0x08,0x20,0x08,0x3F,0xF8,0x20,0x08/*--文字:安--*//*--Fixedsys10;此字体下对应的点阵为:宽x高=16x16--*/0x02,0x00,0x01,0x00,0x3F,0xFC,0x20,0x04,0x42,0x08,0x02,0x00,0x02,0x00,0xFF,0xFE,0x04,0x20,0x08,0x20,0x18,0x40,0x06,0x40,0x01,0x80,0x02,0x60,0x0C,0x10,0x70,0x08其中注释部分可以省去,0x所代表的是点阵字模数据为16进制,所以也可省去,单片机默认接收16进制数据即可,所以单片机所接收的数据形式如下:0000FFFE0440044004403FF8244824482448244828383008200820083FF82008020001003FFC2004420802000200FFFE0420082018400640018002600C10700816×16点阵一屏所显示的数据为32字节,所以两个汉字所包含的点阵数据为64字节。4.2.2串口数据发送由于本设计中采用了WSN-1101无线透传模块,所以可以在模块内部自动完成通讯协议转换和数据收发控制,不需要额外再编写控制程序及传输协议。但是对于所发送的数据,其显示动画方式等还需要有一个控制指令。本设计在所发送的点阵字模数据前加一字节作为控制指令字节,如图4-4:图4-4数据结构现规定01为静态显示,02为从左到右滚动显示,03为从右到左滚动显示,04为从上到下滚动显示,05为从下到上滚动显示。串口发送功能也可用现有软件实现,串口调试助手软件界面如图4-5所示:图4-5串口调试助手界面在软件的字符串发送区放入需要发送的字模数据并在第一位填入需要的显示方式所对应的控制指令,点击发送字符/数据即可将其通过无线透传模块发送给单片机。4.3下位机程序设计下位机部分的程序分为显示程序及数据接收处理程序Uart_Isr()两种,且显示程序可再细分为显示主程序main()、显示驱动子程序display()、显示时间子程序displays(),字符移动效果子程序displaymove()、dispalaymovetb(),延时子程序delay()。4.3.1显示主程序显示主程序main()流程为首先初始化程序,将待机画面数据复制到缓存并调用静止显示子程序显示待机画面,然后判断contrchar变量是否被赋值,如果被赋值则先清点阵屏,调用数据接受处理程序存入的缓冲区点阵数据,判断contrchar代表的显示方式并调用相应子程序,01、02、03、04、05分别对应不同的显示方式,然后将所要显示的数据复制到显示缓存,再调用对应显示方式的子程序,无新数据输入时循环显示,有新数据输入时当一次显示结束时再进行新内容的显示,流程图如图4-6:图4-6主程序流程图4.3.2显示驱动子程序显示驱动子程序display()负责点亮一列LED点阵,首先将P2口置位高电平准备显示,然后将列数据清零准备移位,然后将读取的点阵数据移位两个字节给74HC595的移位寄存器,将数据锁存输出到相应列的点阵发光管显示,显示一列后将保持到下一列显示开始,并将列扫描数据移入74HC164的寄存器,列数据移位,相应列电平拉低,三极管导通输出电量到相应列点阵管阳极,而且每一次显示持续一定时间保证显示效果。具体程序流程图如图4-7:图4-7显示驱动子程序4.3.3显示时间子程序用户给定显示时间子程序displays()想要显示的时间Time,Time数值为想要图像显示的秒数,开始显示,然后判断Time是否为0,不为0则将i的自减循环130次,i的自减130次的指令执行时间约为1秒,然后再判断是否为0,直到Time=0,结束显示并返回,在本设计中显示时间预设为1秒。程序流程如图4-8:图4-8显示时间子程序流程图4.3.4显示方式子程序由于字符显示共有静止、左右上下5种模式,为了节省篇幅,将以字符左移模式为例讲解程序流程。首先初始化字模指针和列计数器,将字模指针对准缓冲区字模数据第一个字节,然后运行显示驱动子程序显示一列字模数据,显示达到设定时间后将列计数器加1,然后显示下一列的数据,循环16次显示完一屏后将列计数器复位的同时字模指针加1,继续显示直到字模指针指向字模数据的最后一个字节,系统判断一次字符左移显示完成,复位字模指针并返回。字符左移程序流程图如图4-9:图4-9字符左移子程序流程图4.3.5延时子程序应用单片机的时候,经常会遇到需要延时的情况,这时就需要调用一个延时子程序满足需求。4.3.6数据接收处理程序数据接收处理程序的功能将单片机通过无线接收模块接收到的16进制数据分析并处理。程序将接收到的数据第一位控制指令单独提取出来赋给控制变量contrchar,然后将之后的数据每隔32字节分割开分别存入点阵数据缓冲区以供显示主程序调用。
5成果与总结5.1实物测试最终焊接制作完成的实验室原型下位机如图5-1:图5-1实验室原型下位机成品图可见,下位机由三个模块组成,分别为单片机模块(左上)、单元模块(左下)及LED显示模块(右)。上位机USB转TTL串口模块与无线发射模块的连接如图5-2:图5-2串口模块与无线发射模块的连接上位机通过串口调试助手的发送数据功能向下位机发送指令,如图5-3:图5-3串口调试助手发送数据如上图,选择USB转TTL串口模块所在的COM口,上图为COM6口,然后将需要发送的数据写入单字符串发送区,点击“发送字符/数据”按钮即可将发送至无线发射模块,下位机再通过无线接收模块接收数据并显示,显示效果如图5-4及图5-5:图5-4系统待机效果图5-5系统显示效果图5-4为下位机未接收到上位机所发送的数据时的待机效果,为一个心形,当接收到上位机发送的数据后,根据上位机数据的控制指令字节显示不同的效果,图5-5为发送4张图片静止显示的效果。下位机端接收上位机发送的无线数据在走廊环境40m以内可以稳定显示,超过40m则会出现乱码或者无法正常显示的问题,这是由于上位机无线模块的发射功率较小,数据传输距离较远无线信号就会受到较为严重的干扰导致数据丢包,在实际应用中可以更换更大功率的发射模块及天线,即可有效增加无线传输距离。5.2总结与展望本文叙述了智能远程控制LED显示设备的研究与设计过程,整个项目是在导师指导下独立完成的,经历了查阅文献、系统总体设计、系统硬件设计及选型、系统软件设计及制作实验室原型几个阶段,最后通过测试实验室原型机,可以实现所设想的系统基本功能,运行正常稳定。主要取得成果有:①对涉及到的参考文献进行了研究与总结,根据设计要求,结合目前LED及无线通信技术的发展现状,给出了总体设计方案,对所涉及的技术进行了详细的介绍,并做了具体的分析;②设计了智能远程控制LED显示设备的具体方案,包括硬件设计和软件设计。根据设计需求选择合适的硬件设备,选择了STC89C52RC作为下位机的终端控制单片机,选择WSN-1101作为无线数据传输模块,结合LED显示技术,完成了硬件设计;③基于所设计的硬件环境,选择了适合的软件开发程序环境,设计了相应的软件程序,包括上位机与下位机之间的数据无线传输、单片机数据处理及LED模块显示;④基于硬、软件设计焊接制作了实验室原型机,经测试可以实现系统基本功能,运行正常稳定。随着嵌入式技术的不断发展,芯片技术的不断成熟,终端芯片的处理能力越来越强,同时3G网络甚至4G网络的蓬勃发展也给嵌入式无线通信领域带来了前所未有的契机。结合目前情况,以后在无线LED通信系统领域,将向着大高清LED彩色屏的无线实时更新发展,这对嵌入式芯片和通信网络的要求都很高,这方面的研究将是以后的重点。虽然目前大屏幕彩色LED显示屏已经开始在各大公共场合使用,但是单色LED显示屏由于其低很多的生产成本,使得它仍然是公共场合信息发布的重要媒介,因此在社会生产、生活各领域中人们对单色LED显示屏仍然有很大的需求。本设计对实时性要求较高的中、小型LED无线通信系统有一定的工程实践意义及参考价值。
6致谢本文是在导师陈登峰教授的悉心指导下完成的。在本人进行毕业设计的整个过程中,从论文的选题、资料的查询、开题、研究、实现,一直到撰稿的每一个环节,导师都给予了耐心的指导和帮助,使我不但掌握了基本的科研方法,还教授给我一种认真求实、实事求是的科研态度,这也使我在今后的学习和工作中受益匪浅。在此,特向导师陈登峰教授表示我由衷的感激与谢意。接下来,十分地感谢与我一组的同学,在本人设计期间给予的大力协助。最后,我要特别感谢我的家人和朋友,在我求学期间给予我精神和物质上的大力支持。他们的理解、关心和帮助始终是支持我克服困难的强大动力,没有他们,我是难以顺利完成学业的。感谢在百忙之中审阅本论文的各位专家、学者,感谢您们给予的批评和指导意见!
参考文献[1]周喜权,王纲.无线远程控制LED显示系统设计.齐齐哈尔大学学报(自然科学版)[J],2010,26(6):5-8[2]周诗虎.单片机控制LED点阵显示屏.科技信息[J],2008,25:80,46[3]于泓博,李会,刘文礼.基于PC机串口的LED汉字显示系统设计及实现.科技信息[J]2009,31:9-10[4]Zhou,+M."+DBID:NSTL_QK"Zhou,M.L%c3%bc,+D."+DBID:NSTL_QK"Lü,D.Cheng,L.Liu,+B.Y."+DBID:NSTL_QK"Liu,B.Y..Hong,+Z."+DBID:NSTL_QK"Hong,Z.Adual-path,current-sensingresistor-freeboostLEDdriverwithfastPWMdimming.JournalofSemiconductors[J],2013,34(4)[5]刘刚,胡仁平.LED显示屏远程无线控制系统的设计.科技创新导报[J],2009,19:15-16[6]JAAKKOLATVALA.SelectingLEDdriversforwirelessproducts.Electronicproducts[J],2006,49(1)[7]蔡植善.基于通用分组无线业务短信控制的LED点阵屏设计.计算机应用[J],2011,31(12):3449-3452[8]王树彬,李树华.LED显示屏无线数据传送控制器的设计.内蒙古大学学报(自然科学版)[J],2004,35(3):340-343[9]王津,周卫华,朱华贵.单片机原理与应用[M],重庆:重庆大学出版社,2004[10]诸昌铃.LED显示屏系统原理及工程技术[M],成都:电子科技大学出版社,2000[11]蔡植善.LED一种采用蓝牙技术控制的LED点阵屏设计.电气自动化[J],2012,34(1):71-73,83[12]赵凯,王璐.基于蓝牙的无线控制终端设计.科技创新与应用[J],2014,(18):68[13]赵彩霞.浅议无线通信技术的发展及应用.科技信息[J],2009,(20):203
附录一下位机端具体程序如下:/*16*16点阵屏的显示*/#include<reg51.h> //51单片机头文件#include<intrins.h> //有关51单片机的几条汇编语句的C语言调用接口#defineDATAOUTP2 //指定P2口做为输出sfrAUXR=0x8e;sbitDATA=DATAOUT^0; //行数据输出位 sbitSCLH=DATAOUT^1; //行扫描时钟位sbitSCLT=DATAOUT^2; //行数据锁存位sbitAB=DATAOUT^3; //列数据输出位sbitSCK=DATAOUT^4; //列扫描时钟位unsignedcharcontrchar,times; //contrchar:1:固定单字符显示。2:从左向右移动显示。3:从右向左移动显示。4:从上向下移动显示。5:从下向上移动显示unsignedcharlhj[32]; //32字节RAM做为16*16点阵屏显示缓存voiddisplay(); //做为点阵扫描函数,将显示缓存数据输出到点阵屏voiddisplayS(unsignedinttimer); //指定时间扫描显示voiddisplaymove(unsignedchar*lp,unsignedcharc,unsignedchartimer,unsignedchardir);//显示汉字内容的移动效果,LP指向要显示第一个字的首地址,C表示显示字的个数,timer是移动的速度voiddisplaymovetb(unsignedchardin,unsignedchar*lp,unsignedchartimer);//上下移动内容,din:1为向下,0为向上,lp指向要移入的内容,timer为移动速度voiddelay(unsignedinta); //延时子函数voidUart_int();unsignedcharxdatatemp1[32]={//汉字"西"的点阵数据。汉字点阵数据,可用汉字库点阵生成软件获得0xFF,0xFF,0xFF,0xFB,0x00,0x01,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x80,0x01,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB7,0xCB,0xAF,0xFB,0xBF,0xFB,0x80,0x03,0xBF,0xFB,};unsignedcharxdatatemp2[32]={//汉字"安"的点阵数据。汉字点阵数据,可用汉字库点阵生成软件获得0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x7D,0xFB,0xFD,0xFF,0xFD,0xFB,0x00,0x01,0xFB,0xDF,0xF7,0xDF,0xE7,0xDF,0xF9,0xBF,0xFE,0x7F,0xFD,0xBF,0xF3,0xCF,0xCF,0xEF,};unsignedcharxdatatemp3[32]={//汉字"建"的点阵数据。汉字点阵数据,可用汉字库点阵生成软件获得0xFF,0xBF,0xFF,0xB7,0x04,0x03,0xF7,0xB7,0xE8,0x01,0xEF,0xB7,0xC4,0x07,0xF7,0xBF,0x74,0x07,0xAF,0xBF,0xAF,0xB7,0xC8,0x03,0xDF,0xBF,0xAF,0xBF,0x77,0xB9,0xF8,0x03,};unsignedcharxdatatemp4[32]={//汉字"大"的点阵数据。汉字点阵数据,可用汉字库点阵生成软件获得0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFE,0xFF,0xFD,0x7F,0xFD,0x7F,0xFD,0xBF,0xFB,0xBF,0xFB,0xDF,0xF7,0xEF,0xEF,0xF1,0x9F,0xFB,0xFF,0xFF,};unsignedcharxdataLY[32]={//图形爱心的点阵数据。点阵数据,可用点阵生成软件获得0xFF,0xFF,0xE3,0xC7,0xC1,0x83,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xC0,0x03,0xE0,0x07,0xF0,0x0F,0xF8,0x1F,0xFC,0x3F,0xFE,0x7F,0xFF,0xFF,};/*******************************************************************函数名:main()功能:入口变量:出口变量:*******************************************************************/voidmain(void) //主入口函数{ unsignedchari=0,j=0; Uart_int(); for(i=0;i<32;i++) lhj[i]=LY[i]; //将图案数据复制到显示缓存 while(1) { displayS(1); //显示图案约1秒 switch(contrchar) { case1: displaymovetb(1,0,10); //将点阵上显示的内容向下以10的速度移出,补上0,即清空显示屏 for(i=0;i<32;i++) lhj[i]=temp1[i]; //将temp1数据复制到显示缓存 displayS(1); //显示temp1约1秒 for(i=0;i<32;i++) lhj[i]=temp2[i]; //将temp2数据复制到显示缓存 displayS(1); //显示temp2约1秒 for(i=0;i<32;i++) lhj[i]=temp3[i]; //将temp3数据复制到显示缓存 displayS(1); //显示temp3约1秒 for(i=0;i<32;i++) lhj[i]=temp4[i]; //将temp4数据复制到显示缓存 displayS(1); //显示temp4约1秒 break; case2: displaymovetb(1,0,10); //将点阵上显示的内容向下以10的速度移出,补上0,即清空显示屏 displaymove(temp1,4,20,0);//将从"temp1"开始的四个汉字从左向右移动 break; case3: displaymovetb(1,0,10);//将点阵上显示的内容向下以10的速度移出,补上0,即清空显示屏 displaymove(temp1,4,20,1);//将从"temp1"开始的四个汉字从右向左移动 break; case4: displaymovetb(1,0,10);//将点阵上显示的内容向下以10的速度移出,补上0,即清空显示屏 displaymovetb(1,temp1,10);//将"temp4"字以10的速度从上向下移动 displaymovetb(1,temp2,10);//将"temp3"字以10的速度从上向下移动 displaymovetb(1,temp3,10);//将"temp2"字以10的速度从上向下移动 displaymovetb(1,temp4,10);//将"temp1"字以10的速度从上向下移动 break; case5: displaymovetb(1,0,10);//将点阵上显示的内容向上以10的速度移出,补上0,即清空显示屏 displaymovetb(0,temp1,10);//将"temp4"字以10的速度从下向上移动 displaymovetb(0,temp2,10);//将"temp3"字以10的速度从下向上移动 displaymovetb(0,temp3,10);//将"temp2"字以10的速度从下向上移动 displaymovetb(0,temp4,10);//将"temp1"字以10的速度从下向上移动 break; default: break; } }}/*******************************************************************函数名:display()功能:显示驱动芯片操作入口变量:无出口变量:无*******************************************************************/voiddisplay()//显示{ unsignedchari,ia,j,tmp; //定义变量 DATAOUT=0XFF; //置位高电平做准备 AB=0; //将列数据位清0,准备移位 for(i=0;i<16;i++) { //循环输出16行数据 SCK=0; //为列移位做准备 SCLT=0; //为行锁存做准备 for(ia=2;ia>0;) { //每行16个点,循环位移两个字节 ia--; //循环两次 tmp=lhj[i*2+ia]; //读取点阵数据做输出,这里用到ia目的是先读取点阵数据的第二位字节,因一行16个点由两个字节组成, //电路中的移位寄存器最后一位对应最后一列,所以要先输出一行中的第二个字节数据 for(j=0;j<8;j++) { //循环两次,每次移一个字节, SCLH=0; //为列移位做准备 DATA=tmp&0x01; //将数据低位做输出,由电路图可知,移位寄存器的最后一位对应最后一列,因此先移最后一位 tmp>>=1; //将数据缓冲右移一位,为下次输出做准备 SCLH=1; //将DATA上的数据移入寄存器 } //移入单字节结束 } //移入两个字节结束 SCK=1; //SCK拉高,列数据移位,相应列拉低,三极管导通输出电量到相应列点阵管阳极(共阳) SCLT=1; //SCLT拉高,将数据锁存输出到相应行的点阵发光管显示,显示一行后将保持到下一行显示开始 AB=1; //列数据位只在第一行时为0,其它时候都为1,当将这个0移入寄存器后,从第一位开始一直移位最后一位, //移位的过程,AB就必需是1,这是因为不能同时有两个及两个以上0的出现,否则显示出乱码 } j=64; while(j--); //每一行的显示,保持16个移位时间,因此,最后一行的显示,也要加入保持时间,补尝显示的亮度 SCK=0; SCK=1; //将最后一行数据移出}/*******************************************************************函数名:displays()功能:指定时间扫描显示入口变量:timer出口变量:无*******************************************************************/voiddisplayS(unsignedinttimer) //指定时间扫描显示{ unsignedchari; while(timer--){ //当timer=1时,大约1秒时间 i=130; while(i--) display(); }}/*******************************************************************函数名:displaymove()功能:显示汉字内容的移动效果,LP指向要显示第一个字的首地址,C表示显示字的个数,timer是移动的速度入口变量:lp,c,timer出口变量:无*******************************************************************/voiddisplaymove(unsignedchar*lp,unsignedcharc,unsignedchartimer,unsignedchardir)//显示汉字内容的移动效果,LP指向要显示第一个字的首地址,C表示显示字的个数,timer是移动的速度 dir是移动方向1从右向左0从左向右{ unsignedchari=0,j=0,ia=0; unsignedchartmp=0,timerc=0; unsignedchartmp2[16]; c*=2; //因一个汉字由32字节组成,而移位显示,要分开半个汉字16字节处理,因此将这里乘以2 for(i=0;i<16;i++) tmp2[i]=0; //将缓冲区清0, while(c) { //循环处理 if(lp!=0) { //当lp指向的地址为0时,直接用组缓冲0补上,效果是将当前显示的内容移出 if(dir) //从右向左移动 tmp=c%2; //取余,目的是为了判断处理汉字的前半部份还是后半部份 else //从左向右移动 tmp=~c%2; for(i=0;i<16;i++) { tmp2[i]=lp[i*2+tmp]; //取半个汉字点阵数据,16字节 } if(dir) { if(tmp) lp+=32; } else { if(!tmp) //当tmp为1时,表时一个字数组处理完成,将地址转到下一个字 lp+=32; } } tmp=8; //变量再次利用 while(tmp) { //循环8次,是将下一个字的前半部份的字节数据移入显示缓冲 ia=0; //做为点阵数组的元素 for(i=0;i<16;i++) { //移动是16行同时移,因此要处理16字节 if(dir) { lhj[ia]<<=1; //移当前显示缓冲的前半行字节 if(lhj[ia+1]&0x80) //判断后半行字节的高位是否为1,是移入前半行字节低位,否则不处理 lhj[ia]++; ia++; lhj[ia]<<=1; //移当前显示缓冲的后半行字节 if(tmp2[i]&0x80) //判断下一个要显示汉字的前半行字节的高位是否为1,是移入,否则不处理 lhj[ia]++; ia++; tmp2[i]<<=1; //下一个要显示汉字的半行字节向高位移一位,准备下一次取位 } else { lhj[ia+1]>>=1; if(lhj[ia]&0x01) lhj[ia+1]|=0x80; lhj[ia]>>=1; if(tmp2[i]&0x01) lhj[ia]|=0x80; ia++;ia++; tmp2[i]>>=1; } } tmp--; timerc=timer; //处理完16行,调用显示函数更新点阵 while(timerc--) //循环做为处理的速度,即移动的速度 display(); } // c--; //移完一半,进入下一半或下一个汉字,直到结束 }}/*******************************************************************函数名:displaymovetb()功能:上下移动内容,din:1为向下,0为向上,lp指向要移入的内容,timer为移动速度入口变量:din,lp,timer出口变量:无*******************************************************************/voiddisplaymovetb(unsignedchardin,unsignedchar*lp,unsignedchartimer){ unsignedchari=0,j=0,ia=0; unsignedinttmp=0,timerc=0; if(din) { //判断移动方向,向下 ia=32; //要移入第一个汉字的数组元素 i=16; //行索引 while(i--) { //逐行处理 j=30; while(j) { j--; lhj[j+2]=lhj[j]; //将上一行的内容复制到下一行,每两行内容相隔四个字节,复制15行 } if(lp==0) { //最后一行的处理,判断移入的内容是否为空,是用0移入 lhj[0]=0xff; lhj[1]=0xff; } else { //否则,取字数组处理 ia--; lhj[1]=lp[ia]; ia--; lhj[0]=lp[ia]; } timerc=timer; //处理完16行,调用显示函数更新点阵 while(timerc--) //循环做为处理的速度,即移动的速度 display(); } } else { //移动方向,向上 ia=0; //向上移动,移入汉字从低位开始 for(i=0;i<16;i++) { //处理16行 for(j=0;j<30;j++) //将下一行的内容复制到上一行,每两行内容相隔四个字节,复制15行 lhj[j]=lhj[j+2]; if(lp==0) { //最后一行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《CB-T 33-1999索具套环》新解读
- 生物●海南卷丨2022年海南省普通高中学业水平选择性考试高考生物真题试卷及答案
- Brand KPIs for health insurance:IKK in Germany-英文培训课件2025.4
- 强化性间歇训练对高中田径专项队800m跑运动员身体机能训练效果的研究
- 重庆市2022-2023学年高二下学期期末联合诊断检测化学试题(含答案)
- 汽车传感器与检测技术电子教案:废气再循环系统电位计式EGR阀传感器
- 基础建成后续管理制度
- 财务信息管理人才培养方案
- 医院质量病历管理制度
- 培训人员日常管理制度
- 自动化控制技术试题及答案
- 网吧转让合同协议书范本
- 2025-2030中国船用滑动轴承座行业市场现状供需分析及投资评估规划分析研究报告
- 人员结构分析总结模版
- 2025年下半年四川烟草商业系统招聘166人易考易错模拟试题(共500题)试卷后附参考答案
- 反诈防骗安全教育主题班会
- 【机床输出轴零件的加工工艺及夹具设计9500字(论文)】
- 电厂安规试题及答案
- 建筑节能材料试题及答案
- 《思想道德与法治》课件-做改革创新生力军
- 公共财政概论试题及答案
评论
0/150
提交评论