基于上位机的无线双色点阵显示系统设计_第1页
基于上位机的无线双色点阵显示系统设计_第2页
基于上位机的无线双色点阵显示系统设计_第3页
基于上位机的无线双色点阵显示系统设计_第4页
基于上位机的无线双色点阵显示系统设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文论文题目基于上位机的无线双色点阵显示系统设计系别电子信息工程系专业电子科学与技术班级学号学生姓名指导教师(签名)完成时间2013年5月摘要LED显示屏是20世纪90年代出现的新型平板显示器件,LED点阵屏是由许多发光二极管按规律排列所组成的点阵显示屏幕,它可用来显示字符、图案等信息,具有可靠性高、使用寿命长、环境适应能力强、性能价格比高等特点,因此在信息显示领域得到了广泛的应用。本设计的显示终端是用16块8×8的双色点阵组成16行64列的点阵,全屏能显示4个汉字,整机以40脚单片机STC89C4RD+为核心,制作出可更新内容的显示屏,通过16块74HC595组成两路级联电路来控制点阵的64列的两种颜色,1块74HC154和16个三极管(8550)来控制点阵的16行。本设计是一种基于无线传输的LED点阵屏显示系统。系统上位机与下位机之间的通信采用RS-232串口,再采用无线短距离通信方式,传输数据,使得LED显示终端既便于安装和更换位置,又降低了运行费用,显示方式可以静态、移入移出、闪烁等。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。关键词:LED显示屏;串行通信;无线传输;单片机;上位机TheDesignofLEDdisplaySystembasedonPCWirelesstwo-colorDot-matrixAbstractLEDdisplayisanewdisplayappearedinnineteenninties,LEDlatticescreeniscomposedofmanylight-emittingdiodesarearrangedaccordingtotheruleofthecompositionofthedotmatrixdisplayscreen,whichcanbeusedtodisplayinformationsuchascharacters,patterns,andhastheadvantagesofhighreliability,longservicelife,environmentaladaptationability,higherratioofperformancetoprice,sointheinformationdisplayhasbeenwidelyappliedinthefield.Thedesignofthedisplayterminalistouse16piecesof8x8dotmatrixcolorconsistsof16rowsand64columnsofthematrix,thefullscreencandisplay4Chinesecharacters,the40footSTC89C4RD+MCUasthecore,madetoupdatethecontentofthedisplay,twocolorsand64columnstocontrolmatrixby16block74HC595twocascadecircuit,one74HC154andsixteentriode(8550)16linestocontrollattice.ThedesignisaLEDlatticescreendisplaysystembasedonwirelesstransmission.CommunicationbetweenhostcomputerandlowercomputerbyRS-232serialport,datatransmissionbywirelessshortdistancecommunication,LEDdisplayterminal,whichisconvenientforinstallationandreplacement,butalsoreducetheoperatingcosts,displaymodecanbestatic,movedout,flicker.ThispaperintroducesindetailtheLEDdotmatrixdisplayhardwaredesign,hardwarecircuitofeachpartofthefunctionandprinciple,thecorrespondingsoftwareprogramdesign,aswellastheuseandso.Keywords:LEDdisplayserialcommunicationwirelesstransmissionchipmicrocomputeruppermonitor

目录TOC\o"1-2"\h\z\u第一章前言 11.1项目背景 11.2国内外发展状况及发展趋势 11.3论文主要内容 2第二章系统总体设计 32.1功能设计 32.2总体方案 32.3系统硬件总体设计方案 52.4系统软件总体设计方案 6第三章系统硬件电路设计 83.1下位机无线发射电路设计 83.2LED点阵控制电路设计 123.3电源模块电路 18第四章系统软件设计 194.1软件开发平台及开发语言介绍 194.2上位机管理系统软件设计 194.3下位机编程 21第五章系统调试 255.1系统硬件调试 255.2系统软件调试 25第六章总结与展望 27参考文献 28附录 29致谢 54第一章前言电子显示屏最初是由灯泡或照明灯构成的,后来发展为由显像管构成,在全球发展很迅速,是一种很新型的显示媒体。LED显示屏是八十年代后期发展起来的,以其亮度高、动态影像显示效果好、故障低、能耗少、使用寿命长、显示内容多样化、显示方式丰富、性价比高等优势已广泛应用于各行各业。LED显示屏制作技术已经相当成熟,售价也不高,因此随处可见,它作为信息显示媒体,应用领域广泛,如商场、机场、车站和室外广告都有LED显示屏。本课题即是针对信息显示需求,在考虑安装控制方便的基础上,提出了一种基于无线的双色LED显示屏控制系统。1.1项目背景TA\s"1.1项目背景"\c1LED显示屏是20世纪90年代新出现的平板显示器件,LED显示屏(LEDScreen,LEDdisplay):又叫飘字屏幕或者电子显示屏,是由ledpc面板和LED点阵组成,用绿色,红色,白色,蓝色LED灯的亮灭来显示文字、图片、视频等内容,无论用LED制作单色、双色还是三色屏,想要显示图象文字,就需要构成象素的每个LED的发光亮度都必须能够调节,而且可以根据不同场合的需要做出不同的调节。LED显示屏受到的广泛应用和关注,使得其已经成为社会的一个重要的角色。LED的发展前景极为看好,目前正趋向于更高亮度、更耐气候性、更高的发光密度、更高的发光均匀性,稳定性、全色化方向发展。系统设计的是一个无线LED显示屏,也就是说采用无线通信的方式,更新显示显示内容,这样做就可以达到便于安装和更换位置的目的,同时也是为了节省费用。这样对LED显示屏的发展也有促进作用的,更利于它的发展,控制技术有所创新。不管无线LED显示屏应用在哪里,都能够达到塑造良好形象的目的,有很好的社会效益。本系统的设计很利于自己专业知识的提升,同时对LED显示屏的发展也有积极的意义。1.2国内外发展状况及发展趋势LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,它由许多的发发二极管或像素单元组成,靠灯的亮灭来显示信息[1]。八十年代后期LED点阵显示屏的应用极少,显示屏控制技术也没有的到提高。初期的LED点阵显示屏一般是红、绿双基色,成本较高,在国外应用较广泛,国内甚少。九十年代,全球信息产业发展迅速,信息技术不断突破,这时国产的LED显示屏已经具备了16级灰度、256色视控制技术和无线遥控等,技术达到了国际先进水平。如今LED大屏幕的发展达到成熟期,LED器件成本大幅度下降,LED点阵显示屏得到了广泛应用。我国LED点阵显示屏,发展迅速,几年下来,取得了很好地成绩,不少是具有相当规模的企业,位居骨干企业之中。我国LED点阵显示屏水平处于领先地位,例如,目前世界最大LED点阵显示屏是一个9500平米巨型LED显示屏,面积达400平方,在2010年上海世博会开幕式场馆,这个显示屏采用P18表贴工艺制做,压铸铝箱体结构。LED点阵显示屏产业日益发展壮大,目前正成为我国电子信息产业的极其重要组成部分。据美国StandfordResources对LED显示屏产品国际市场概况的预测,当前和未来市场上对LED显示屏产品的采用将会以全彩高画质为主。目前,LED显示屏技术已经基本把难关攻克,发光显示器件的亮度很高,质量也更加好,价格更是降低了不少,这样就促进了LED显示屏的需求量,很有市场发展潜能。未来的LED显示屏更完美,应用更广泛。LED控制器设计个屏幕设计开始逐渐分离,我国LED产业发展迅速,从几家年产值不高的企业发展到了几十家年产值几亿元的骨干企业,就整个行业来说具有较强的开发能力,就整个LED显示屏系统而言,中国与国际处在同一技术水平。我国的在显示屏的制造上,在几十年间发展的非常迅速,但在显示器件的封装和设计上还是跟不上发达国家的技术水平,还有更加努力去研制。现代社会是一个信息社会,显示技术必将发展迅速,二十一世纪必将发展成直流式平板显示。如此说来,LED点阵显示屏发展方向很有可能是平板显示的直流产品,那么其发展趋势就是标准化和规范化。1.3论文主要内容根据设计要求,拟定论文的内容和结构安排如下:(1)题目的选定根据选题要求,并结合自身兴趣和所掌握的知识,决定做有关点阵显示屏的题目,有你定了几套方案,经过分析和比较,最终决定以PC为上位机,以单片机为核心控制器,加上点阵屏的驱动电路,并选择双基色LED点阵,制作出一个可以更新信息的双色LED点阵显示屏。(2)方案实现根据设计思想,应选择合适的器件加以实现。根据功能要求,选定了以40脚单片机STC89C4RD+为核心,74HC595组成两路级联电路来做列驱动,控制点阵的两种颜色74HC154和16个三极管(8550)来做行驱动。论文中详细介绍了这些器件参数和在设计中的应用。(3)软件编程根据硬件的特点和要求,选用C语言编写下位机管理模块程序,而上位机管理模块则选用VB语言来编写,用模块化的方法编写程序。(4)系统调试硬件的制作和软件编程设计都完成之后,还有要对系统进行调试,先进行硬件调试,然后进行软件调试,完善设计中的不足,实现设计的功能,最终完成设计。(5)结论设计完成后对设计中所遇到的问题、经验教训、以及自己的想法进行总结。第二章系统总体设计2.1功能设计本方案设计一个LED显示屏,具体要求满足以下条件:(1)要求采用51单片机作为微控制器;(2)可以用上位机提取要显示内容的字模数据,上位机可以通过串口发送数据给单片机;(3)单片机控制无线模块发送数据给LED显示屏,四个16x16的LED点阵显示屏进行文字显示;(4)在目测条件下LED点阵显示屏各点显示均匀、充足、稳定、清晰。2.2总体方案要知道,LED作为信息显示媒体,是要给更多的人提供信息的,所以应用来流动人口比较多的户外的,户外环境很容易损坏电子器件的,所以硬件要求很高。硬件的设计一般采用模块化设计,根据本设计功能的要求,本设计包括了上位机上的数据提取软件设计,上位机与单片机的串口传输数据的设计,无线发送接收数据的设计,16块8×8的的双色点阵组成的16×64双色点阵驱动电路设计。设计总体框图如图2-1所示:上位机上位机无线发送模块无线接收模块点阵控制电路16*64点阵显示屏串口图2-1设计总体框图2.2.1主控器的选择所谓单片机就是一种集成集成器件,其实质上是一种微型计算机,它由INTEL公司发明,最早是MCS-85,现在是MCS-5。单片机作为一种微机,当然就要进行数学运算或逻辑运算,面向控制而设计的集成电路,可以用它来完成很多不同的控制任务。我们目前应用的MCS-51单片机最基本的配置:集成了CPU、ROM、RAM、4个8位的并口(32个IO口)、全双工串行口、定时器/计数器,并有控制功能较强的布尔处理器。单片机品种众多,型号更是多样化,CPU处理的位数选择当然也是很丰富的,有8,16,32到64位几种选择,根据需要来选择。单片机片上I/O相当的丰富,一些单片机很是集成有A/D转换,“看门狗”等。它们的价格也高低不等,这样就极大地满足了开发者的选择自由。系统下位机的核心控制器是单片机,所以单片机的选择尤为重要,选对了单片机,就基本上保证了系统工作的灵活性和稳定性,其实对于单片机的选择就是对其本身的性能和片内资源的选择。本设计的单片机要接收上位机发送的数据并进行存储,在既没有没有外扩程序存储器也没有外扩数据存储器的情况下,本系统选择了STC89C54RD+增强型51单片机,它有大容量的数据存储区。STC89C54RD+单片机最高时钟频率是80M,极大限度地提高了控制器的运行速度,集成了大容量的16KB程序存储器及1280B的数据存储器,并有在系统可编程功能以及在应用可编程功能,可以远程软件升级,不需要编程器,这样就降低了开发复杂度。2.2.2数据传输方案论证(1)并行传输顾名思义,并行传输方式就是多个数据并排地进行传输,每个数据单独使用一条线路,同时进行数据的传输,例如,8位的数据就要用8根并排的线路同时传输。并行传输方式传输速度很快,但是数据位多信道也要多,投资就相当大了。(2)串行传输所谓串行传输方式就是构成字符的二进制代码在同一条信道上以位为单位,按顺序逐位传输,按位发送,逐位接收,同时确认字符,因此要采取同步措施。这种传输方式速度虽然很慢,但其只需要一条传输信道,投资小很多,相对易于实现。若采用并行方式,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,是数据传输采用的主要传输方式,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器。相比较下选用串行通信较合理。2.2.3显示方案论证LED显示屏通常有两种显示驱动方式(1)静态显示方式静态驱动方式就是对LED器件的控制实行“1对1”的方式,就是把多个LED显器的每一段与一个独立的I/O口连接起来,公共端就根据数码管的种类连接到VCC或GND端,这种显示方式的每一个显示器都要占用一个单独的I/O端口,单片机只需把要显示的字形代码发送到接口电路,要可以显示字符了,因此,如果使用这种方法,当显示位数较多时单片机中I/O口的占用就很多了,需要提供的I/O接口电路也较复杂但它具有编程简单,显示稳定,CPU的效率较高等优点,这种方式只适用LED器件较少的显示电路。(2)动态显示方式LED动态显示方式其实利用人视觉暂留特性,一个LED动态点亮,其实它并没有一直被点亮,只是按一定的频率扫描,而我们看到他一直是亮的,是看不出灯有熄灭过的,看着还是像一直都亮。只要LED扫描频率大于25Hz,就可以在我们眼睛里残留影像,这样我们的眼睛就能看到一幅完整的图像了。采用动态显,既节省了控制线数,也节能,适用于大屏幕LED。本设计采用动态扫描的方式,在设计电路时更是考虑用重叠处理的方法,在显示本行各列显示数据的同时,传送下一行的列显示数据,这样还可以节省扫描时间。在设计电路的时候16行使用一个行驱动器,64行就用8个列驱动器,两种颜色就要用16个列驱动器了,这样的设计可以实现重叠处理。显示模块的结构框图如图2-2所示:单片机控制器行驱动8*8LED点阵单片机控制器行驱动8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵列驱动列驱动列驱动列驱动列驱动列驱动列驱动列驱动8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵8*8LED点阵列驱动列驱动列驱动列驱动列驱动列驱动列驱动列驱动图2-2显示模块的结构框图2.3系统硬件总体设计方案本系统需做出一个可行的方案,根据硬件的功能结构选取合适的器件,器件不但要求能够实现所要求的功能还要能兼容整个系统,且方案必须要符合LED显示原理及驱动方式才可以进行,系统设计包括软件和硬件两个方面,其中硬件主要分为两个部分:下位机无线发射部分,用于完成上位机数据接收及发射。无线接收和点阵控制,用于完成数据接收和控制LED点阵屏。PCPC上位机上位机串口STC89C54RD+单片机电源复位电路3.3V稳压Nrf24l01发射模块图2-3下位机无线发射结构图下位机无线发射结构如图2-3所示,系统中PC上位机机可以设置命令和提取显示数据,在由它发送命令指令和显示数据,通过RS-232发送给单片机,单片机机接收后再通过无线模块发送出去。无线接收和点阵控制结构如图2-4所示,主要包括LED驱动电路和无线接收电路。由于单片机端口驱动能力有限,不能够直接驱动LED屏,否则LED屏幕亮度不够或者不亮,所以要加驱动电路,驱动电路又可以分为行驱动和列驱动电路,分别驱动LED点阵显示屏的16行和64列。无线接收到数据或命令,同时存储在单片机中,单片机收到命令,就对LED进行控制显示信息。STC89C54RD+单片机电源3.3V稳压列驱动行驱动复位电路16*64点阵显示屏Nrf24l01接收模块图2-4无线接收和点阵控制结构图2.4系统软件总体设计方案根据系统功能的需求,主控软件必须具有更改显示内容和发送命令等功能,系统软件设计主要分为上位机设计和下位机控制设计两部分,上位机用VB语言编写,上位机管理系统设计图如图2-5所示:上位机管理系统上位机管理系统转换和发射系统设置显示文本处理图2-5上位机管理系统设计图下位机编程语言用C语言编写,因为采用了无线传输数据,所以下位机软件要分成两部分。一部分为接收上位机的数据,然后通过无线发送出去;另一部为无线接收和控制点阵显示。下位机软件编程结构图如图2-6所示:LED点阵显示程序LED点阵显示程序主程序各种显示方式子程序串口接收程序无线发送程序主程序无线接收程序图2-6下位机软件编程结构图第三章系统硬件电路设计根据基于上位机的无线双色点阵显示系统的功能将系统划分为上位机发送管理模块、无线发送无线接收、点阵控制和电源模块四个部分,具体工作流程为:上位PC机通过串口通信向单片机发送显示命令和显示数据内容,单片机接收后执行显示命令处理显示代码将显示内容通过I/O口串行输出并且控制译码电路完成串并转换并行输出,最后由显示驱动电路进行电压和电流的处理以达到LED显示屏的显示电流、电压要求,进而使显示屏显示内容[2]。四个模块中的上位机管理单元是不需要硬件设计,其余均需要硬件设计,以下详细介绍各单元电路设计。3.1下位机无线发射电路设计无线发射单元中控制器STC89C54RD+通过RS-232串口接收上位机传来的数据,然后传给nrf24l01无线收发模块,nrf24l01无线收发模块通过天线将数据发送出去。3.1.1STC89C54RD+芯片介绍单片机是1971年诞生的,作为微型计算机一个很重要的分支,以极高的性能价格比,受到人们的重视和关注,应用广泛,发展迅速[3]。单片机种类繁多,MCS51系列单片机是一款技术相对成熟的控制器,比较受欢迎,价格便宜,性能又好,值得信赖。而围绕51内核衍生出来的单片机品中也很多,有很多增强型的单片机,实用性更强。单片机是整个系统的核心部件,选择合适的单片机才能保证系统的整体性能,单片机的选择实际上就是对其内部资源和灵活性的选择。STC89C54RD+增强型51单片机是低功耗,在系统应用可编程,不占用户资源的单片机,它的指令系统、硬件结构和片内资源是与标准8052单片机兼容的,它的最高时钟频率是80MHz,STC89C54RD+单片机的实物图如图3-1所示。STC89C54RD+单片机的特性[4]:(1)加密性强,无法解密;(2)超强抗干扰;(3)在系统可编程,无需编程器,可远程升级;(4)可送STC-ISP下载器,1万片/人/天;(5)可供应内部集成MAX810专用复位电路的单片机,只有D版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时RESET脚直接短接到地。图3-1STC89C54RD+单片机的实物图STC89C54RD+单片机的封装图如图3-2所示:图3-2STC89C54RD+单片机的封装图[4]3.1.2nrf24l01无线收发模块Nrf24L01微功率无线通讯模块,采用Nordic公司的nrf24l01芯片,是一种工作在2.4-2.5GHz的无线收发器芯片,无线收发器包括:频率发生器,增强型SchockBurstTM模式控制器,功率放大器,晶体振荡器,调制器解调器,输出功率频道选择和协议的设置可以通过SPI接口进行设置极低的电流消耗当工作在发射模式下发射功率为-6dBm时电流消耗为9.0mA接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低[5]。nrf2401实物图如图3-3所示:图3-3nrf24l01实物图工作模式nRF24L01可以设置为以下几种主要的模式表3-1nRF24L01主要工作模式[5]模式PWR_UPPRIM_RXCEFIFO寄存器状态接收模式111-发送模式101数据在TX发送模式101→0停留在发送模式直至数据发送完待机模式II101TX待机模式I1-0无数据传输掉电模式03.1.3LM1117-3.3芯片介绍LM1117是一个正向低压降稳压器,在1A电流下压降为1.2V,LM1117有两个版本:固定输出版本和可调版本,固定输出电压为1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V,具有1%的精度;固定输出电压为1.2V的精度为2%。LM1117有过热保护和电流限制功能,是电池供电的绝佳选择。其引脚图如图3-4所示。图3-4LM1117管脚图3.1.4nrf24l01无线收发模块原理图nRF24L01的应用电路原理图如图3-5所示。nRF24L01的应用电路并不复杂,它采用了增强型SchockBurstTM模式控制器,其中通过程序进行可以对输出功率和通信频道进行配置。低压供电,需要输入3.3V,电源供电时5V的,所以设计中通过LM1117正向低压稳压器输出电压为3.3V,供无线模块nrf24l01使用。nrf24l01与单片机是通过SPI接口通信的,由于本系统所选择的单片机没有SPI接口,所以用I/O口模拟。图3-5nRF24L01的应用电路原理图3.1.5RS-232串口通信串口的概念并不复杂,它是按位bit发送和接收字节的,是一种极其通用的计算机通信协议。串行通信有同步传输和异步传输两种模式,但目前通常是用异步传输模式通信,异步传输用9支引脚(DB-9接口)。RS-232通信接口9支引脚的相关说明[6]:(1)CD载波检测:(2)RXD接收数据;(3)TXD发送数据;(4)DTR数据终端准备好;(5)GND信号地;(6)DSR数据设备准备好;(7)RTS请求发送;(8)CTS允许发送;(9)RI振铃指示。串口的电气特性:(1)RS-232串口通信距离是16米左右(2)RS-232可以双向传输,全双工通讯,最高传输速率达20kbps(3)RS-232C上传送的数字量采用负逻辑,且与地对称(4)逻辑1:-3V~-15V(5)逻辑0:+3V~+15V单片机的串行发送端TXD和串行接收端RXD都是TTL电平,而PC机的COM口的RS-232C连接器(DB型9针插座)是EIA电平,所以需要用到电平转换芯片与单片机连接,通过串行线和PC相连接[7]。RS-232电平的电压转换芯片选用MAX232,MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。其管脚图如图3-6所示。图3-6MAX232管脚图[7]单片机接11.0592MHz的晶振,这样单片机与串口通信时比较容易分频成常见的标准串口通信波特率,按公式11.0592MHz=192*57600=384*28800=576*19200=1152*9600,如果用12MHz就无法整除了。单片机I/O口中的P3口是第二功能引脚,P3.0口和P3.1口分别是TXD和RXD,分别是单片机的串口的发送口与接收口,它们分别与MAX232的T2IN和R2OUT相连,通过标准的DC-9接口与MAX232的连接,电路连接如图3-7所示。图3-7DC-9串口通信原理图3.2LED点阵控制电路设计以上章节介绍了nrf24l01无线收发模块的发射模式应用电路,由于其硬件连接电路和接收模式都是一样的,本节就不再对无线接收硬件电路作介绍了。nrf24l01完成数据的接收后,经控制器STC89C54RD+处理后,最后要在LED点阵显示屏上显示出来。LED点阵显示控制器依然是STC89C54RD+,并采用24MHZ或更高频率晶振,以获得较高的刷新频率。以下介绍LED点阵显示原理、LED点阵显示屏的行驱动电路和列驱动电路。LED点阵驱动电路地设计是要根据LED点阵屏的大小来的,本系统设计要设计一个16*64规格的双色LED点阵显示屏,是用16个8*8的双基色点阵模块拼接而成的。3.2.1LED点阵行驱动电路由于单片机的I/O口不足,本系统的行驱动器选用的是一个译码器4线-16路芯片74HC154,输入点有4根数据线,有16路输出,可用来对于控制LED点阵屏的1-16行,为了保证点阵屏有足够的电流供给,还用到了16个三极管8550进行扩流,与74HC154共同构成的行驱动电路,输出口接单片机的P1口。以下介绍译码器74HC154和三极管8550。74HC154是一款高速CMOS器件,74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。当其余的使能输入端置低时,地址输出将会跟随应用的状态。实现解调功能的办法是:用4个输入线写出输出线的地址,使得在一个选通输入为低时数据通过另一个选通输入。当任何一个选通输入是高时,所有输出都为高[8]。74HC154芯片引脚图如图3-8所示。图3-874HC154引脚图[8]74HC154具有以下特性[8]:(1)16线多路分配功能(2)4位二进制码输入译码至16个互斥输出(3)兼容JEDEC标准no.7A(4)ESD保护(5)逻辑电平CMOS(6)功耗考量低功耗或电池供电应用(7)74HC154封装与引脚SO24,SSOP24,DIP24,TSSOP274HC1544线-16线译码器/解调器[7]:(1)将4个二进制编码输入译成16个彼独立的输出之一(2)将数据从一个输入线分配到16个输出的任意一个而实现解调功能(3)输入箝位二极管简化了系统设计(4)与大部分TTL和DTL电路完全兼容三极管8550是一种常用的普通三极管。它是一种低电压,大电流,小信号的PNP型硅三极管。8550特性及应用(1)集电极-基极电压Vcbo:-40V(2)工作温度:-55℃to+150℃(3)和8050(NPN)相对主要用途:(1)开关应用(2)射频放大8550三极管(TO-92封装)管脚图如图3-9所示:图3-98550管脚图注:(1)发射极(2)基极(3)集电极在行驱动电路中,Y0-Y15是16路独立的低电平输出口,刚好接到点阵的16行,因为只要OE1和OE2中有一个为高,A,B,C,D电平输入都是无效的,只有它们都是低电平时,才能操作芯片,所以把这两脚同时接到单片机一个I/O上进行控制。Y0-Y15输出经过一个限流电阻再接到三极管8550的基极,当74HC154的输出端输出低电平时,8550就可以导通,电流就经过8550放大再流入点阵。这样才有足够的电路供点阵驱动,否则LED屏幕亮度不够或者不亮。LED点阵行驱动电路原理图如图3-10所示。图3-10行驱动电路3.2.2LED点阵列驱动电路本系统采用的列驱动芯片的74HC595,因为该芯片是串入并出,而且具有输出锁存器。当锁存着本行的数据输出时,还可以输入下一行的数据,这样就可以实现重叠的处理数据。要控制的LED点阵是红、绿双基色,所以每一个8*8的LED点阵就要用两片74HC595分别控制两种颜色。以下介绍74HC595芯片。74HC595芯片是一种串入并出的芯片,是一种电子显示屏制作当中非常通用的驱动芯片。595是具有8位串行输入/输出移位寄存器和存储器,高阻、关、断三态输出功能。能够实现串行输出控制下一级级联芯片。8位移位寄存器和一个存储器分别是时钟,在SCHcp的上升沿时数据输入,在STcp的上升沿进入到存储寄存器中去。倘若两个时钟连在一起,移位寄存器就比存储寄存器提前一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出,和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。74HC595芯片引脚图如图3-11所示,其特点如下[9]:特点:(1)高速移位时钟频率Fmax>25MHz(2)标准串行(SPI)接口(3)CMOS串行输出,可用于多个设备的级联(4)低功耗:TA=25℃时,Icc=4μA(MAX)74595的数据端:(1)QA--QH:595的并行输出端,可以直接控点阵的8个脚。(2)QH:级联输出端。我将它接下一个595的SI端。(3)SI:串行数据输入端。74595的控制端说明:SRCLR(10脚):低点平时将移位寄存器的数据清零,通常将它接Vcc。SRCK(11脚):表示上升沿时对数据寄存器中的数据进行移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。RCK(12脚):表示上升沿时移位寄存器中的数据进入数据存储寄存器中去,而下降沿时存储寄存器中的数据则不变。当移位结束后,在RCK端产生一个正脉冲,更新显示数据。/G(13脚):高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果[9]。比通过数据端移位控制要省时省力。图3-1174HC595引脚图[9]74HC595引脚功能如表3-2所示:表3-274HC595引脚功能表【9】管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH三态输出管脚8GND电源地9SQH串行数据输出管脚10SCLR移位寄存器清零端11SCK数据输入时钟线12RCK输出存储器锁存时钟线13OE输出使能14SI数据线74HC595的移位时钟SCLK及数据锁存信号RCLK接到单片机的P1.6和P1.7口进行控制,控制两种颜色的线脚都接在一起。而两个数据输入口SDI分别接两个单片机I/O控制。LED点阵列驱动电路原理图如图3-12所示。图3-1274HC595线路图3.2.3级联LED点阵显示屏74HC595进行级联,可共用一个移位时钟SCLK及数据锁存信号RCLK。SDI口为数据输入口,而数据移出是从SDO口,并从下一片的74HC595的SDI进去,就这样数据移位到了八片芯片中。74HC595级联电路如图3-13所示。图3-1374HC595级联电路图采用级联的方法,一块74HC595可以控制一块8*8的LED点阵的一种颜色,用8块74HC595级联起来,控制16*64点阵的一种颜色,两种颜色就要用16块74HC595。采用扫描的方法,就可以使得每行显示不用的字符,也就是说每一瞬间只点亮一行。由于16*64LED点阵显示屏有16行,用一个4-16线译码器74HC154,刚好就可以驱动点阵的16行,它的输入是一个16进制码,输出低电平有效,8550为PNP型三极管,低电平导通,8550可以起到扩大驱动电流的作用。16*64LED点阵显示线路如图3-14所示。图3-1416*64LED点阵显示线路图3.3电源模块电路在系统中MAX232、74HC154、74HC595、STC89C54RD+都需要5V的供电电压,无线发射模块需要3.3V电压,所以要通过三端稳压管LM1117-3.3[10]稳压到3.3v给nRF24l01收发射芯片供电,需要把交流220V电压进行降压整流为5V直流电压为显示系统供电。电路图如图3-15所示。图3-15电源电路如图所示,我们用的是低压直流电源,而我们平时的生活用电是交流的220V的,设计这个电源就是要把交流电220V变成能供我们使用的电,首先用一个变压器把220V转成12V的电压,再通过一个整流电路将交流电整流为直流电。通过MC7809稳压芯片输出9V,最后通过稳压芯片LM7805得出稳定的5V电压,本设计使用5V电源。第四章系统软件设计在硬件设计好之后,还要进行系统的软件设计。系统软件设计分为上位机软件设计和下位机软件设计,上位机软件是上位机管理模块功能设计,而下位机软件是在硬件的基础上,主要无线发射模块和LED点阵显示屏显示模块两部分。本章介绍上位机管理模块的编写,上位机与下位机之间的通信协议的编写,以及下位机各个功能模块控制程序的编写。4.1软件开发平台及开发语言介绍4.1.1Keil开发平台KeilC51是一款兼容51系列单片机的开发系统,它可以用C语言来开发,也可以用汇编来开发。该软件有很多的常用库函数和非常方便的调试工具。现在开发51单片机大多数都是用这个开发工具,因为这个软件生成的目标代码效率非常的高,所以很多大型的项目开发都很理想【11】。4.1.2VisualBasic6.0开发平台VisualBasic6.0是微软专门为VB语言开发的编程环境软件,它具有图形用户界面开发的环境软件。VisualBasic6.0[12]因操作简单实用,所以从其问世以来很受专业程序员和编程爱好者的追捧。VisualBasic6.0的组件有很多,比如编辑器、设计器、属性等开发组件。VisualBasic6.0还提供了窗口编辑,可直接对窗口进行编辑和预览。4.1.3C语言介绍C语言是目前国际上最流行的、很有发展前途的程序设计语言之一,既具有一般高级语言特性,又具有低级语言特性[13],既可以用来编写系统软件,又可以用来编写应用程序。C语言其实是把高级的语言的基本机构和低级的语言的实用性统一在一起的编程语言,所以它既有了高级语言的特性,也有低级语言的功能。该编程语言可以以函数的方式给编程者运用,而且有循环、选择和条件等基本语句,可以让编程结构化。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的[13]。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。4.1.4VB语言介绍VisualBasic,简称VB,VisualBasic是一种基于Basic的编程语言,它是一种面向对象的可视化的高级语言。该语言不仅仅执行速度快,而且运用的方法简单。无论是用来开发功能复杂的商用应用软件,还是用来开发简单的个人应用软件,都非常的方便。因为该语言的编程环境采用的可视化编程环境,还有面向对象的设计方式,所以开发应用程序操作简单方便。只要是你能想到的编程任务,功能强大的VB语言基本都能帮你完成。不管你是要设计各种类型的用户界面还是要利用其它应用程序的对象,又或者是要处理文字图象到使用数据库,从开发个人或集体使用的小工具,到大型企业应用系统,更甚者是要通过Internet的遍及全球分布式应用程序,都可在VisualBasic提供的工具中各取所需。4.2上位机管理系统软件设计上位机管理系统软件是用RS-232串口和下位机通信的,所以要对串口发送和接收进行操作。首先根据系统建立主界面对话框,对串口进行初始化,串口处理等,进而实现给下位机发送数据,在可视化界面上显示出来,便进行操作。4.2.1上位机功能设计上位机软件管理系统可以实现:设置波特率,选择串口,在上位机软件上输入想要显示的汉字,字母,数字,按下提取字模按钮,可以看到相应的16进制数据,按发送数据可以传显示信息给下位机;控制命令有;显示方式有从左到右、从右到左、静止3种方式可选,字体颜色有红、绿、黄三种选择,显示速度有慢速,中速和快速三种调节方式,选择想要的控制命令,按发送命令按钮,可以控制点阵的显示。4.2.2上位机软件设计本设计的上位机软件是采用VB来编写的,该上位机既要实现字模数据的提取,还要实现和单片机的通信。当上位机提取了相应的字模数据后,再通过串口发送给单片机。上位机和单片机的通信采用的是VB自带的Mscomm控件,该控件已经包含串口传输数据的协议,只要设置好该控件,和编写发送和接收的函数就可以实现与单片机的通信了。用VB编写的上位机串口通信程序如图4-1所示:Mscomm口初始化Mscomm口初始化发送握手信息发送信息和校验信息单片机接收单片机应答校验错误正确错误正确开始结束图4-1上位机串口通信程序流程图Mscomm控件有两种方式来处理消息,一种是用OnComm事件来直接获取消息,另一种是用查询CommEvent的属性来判断再获取消息。该控件工作的原理是调用API函数,API函数再把数据传送给串口的驱动程序,驱动程序再通过串口传送给单片机。只要理解该控件的各个属性和事件,就可以正确的实现和单片机的通信了。点阵要显示的字的数据叫字模,本系统的字模的顺序是从左到右,从上到下,每一行中左八位一个字节,右八位一个字节,每个字节中高位在左。上位机根据要显示的内容从存放在电脑里面的字库里面提取字模数据,再用串口发送给单片机。HZK16文件是按照的是GB2312-80标准,就是通常所说的国标码也叫区位码的标准排列。国标码共有94个区(Section),每个区94个位(Position),因此也称区位码,其中01~09区是符号、数字区,16~87区是汉字区,而10~15区、88~94区为空白区域,计算机处理在汉字和ASCII字符的时候,一个ASCII字符就占用1个字节,一个汉字要占用两个字节,这个值称为汉字的内码[14]。其中第一个字节的值为区号加上32(20H),第二个字节的值为位号加上32(20H),为了与ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)。这样,通过汉字的内码,就可以计算出汉字的区位码,公式如下:Qh=c1-32-128=c1-160,Wh=c2-32-128=c2-160;Qh,Wh为汉字的区码和位码,c1,c2是汉字的第一、二字节。再用区码和位码就可以得到汉字字模在字库中的位置:Location=(94*(Qh-1)+(Wh-1))*一个点阵字模的字节数[14]。上位机界面图如图4-2所示:图4-2上位机界面图4.3下位机编程系统软件采用C语言编写,按照模块化的设计思路设计。无线发模块的核心控制器为STC89C54,需里实现的功能是接收上位PC机通过RD-232串口发送过来的数据,再将数据通过nRF24l01模块转发出去。4.3.1无线发射编程单片机从串口接收上位机数据,是一个个字节进行接收的,当全部接收完后,就可以用无线发送出去了。接收完数据后判断是控制命令还是字模数据,因为无线模块一次只能发送32个字节,所以如果是命令数据,一次就可以发完,是字模数据的话,一次只能发一个字的数据,有多少个字就要发送多少次。无线发射程序流程图如图4-3所示:初始化初始化等待上位机发送数据Nrf24l01发送数据返回接收是否完成发送是否完成NN开始YY图4-3无线发射程序流程图4.3.2点阵显示编程显示屏软件的编写主要任务是给显示屏提供想要显示的信息数据,同时设置各种控制信号,使显示屏按设计的要求显示信息。显示屏显示内容可以通过nrf24l01接收显示数据,所以点阵显示程序又分为无线接收和显示驱动两部分。无线接收程序流程图如图4-4所示:初始化初始化开始接收数据是否接收完成单片机返回NY图4-4无线接收程序流程图无线接收模块的核心控制单元为STC89C54,需要实现的功能有:可以通过nRF24l01接收数据,接收数据用的是中断,无线模块接收到数据IRQ管脚会产生低电平发送给单片机,使单片机产生一个外部中断接收数据,用中断接收,可以马上接收数据,防止接收数据错误。接收完数据后保存到单片机内部的EEPROM,实现掉电保存,最后更新显示方式或者显示内容。在STC单片机中内置了EEPROM(其实是采ISP/IAP技术读写内部FLASH来实现EEPROM),这样就节省了片外资源,使用起来就更加方便了。STC89C54内部有16K的EEPROM,与EEPORM有关的寄存器有6个,分别是ISP_DATA、ISP_ADDRH、ISP_ADDRLISP_TRIG、ISP_CMD、ISP_CONTR。EEPROM的命令触发必须对ISP_TRIG寄存器先写入0x46,再写入0xB9,无论单片机运行在什么工作频率下,EEPROM的读、写、擦除操作的所需要的时间分别约为10us、60us、10ms。点阵显示的控制器为无线接收单元的STC89C54,分别用74HC595和74HC154做点阵屏的列跟行的驱动,分别用于将单片机传来的行扫描数据和行显示串行数据转换成并行输出,行扫描数据是用来控制某一时刻要点亮哪一行的,行显示串行数是要该行要显示内容的数据。工作原理是:先选择点阵的某一行,再向列驱动器74HC595写入该行要显示的数据,将该行点亮,同时选中下一行并写入该行要显示的数据进行显示。这样依此点亮,16行都点亮一遍后,又回到第一行,循环进行扫描,只要屏幕刷新频率大于25Hz,人眼看来就会感觉是所有行都同时点亮了。点阵屏显示程序流程图如图4-5所示:开始开始初始化从EEPROM中读取数据循环控制点阵显示是否有接收到新数据接收是否完成无线接收数据保存数据和更新显示内容或显示方式NYNY图4-5点阵屏显示程序流程图程序定义两个32位长度的无符号LONG类型的数组,每个数组大小为16,数组的第一个数据就存放第一行的数据,依次类推存完16行的数据,一个数组缓存左边两个字,一个数组缓存右边那两个字,刚好能缓存完四个字的字模数据,要显示什么内容,改变这两个数组就内容就可以了。实现静态显示内容,只要每次把两数组的内容全部换为想要显示的内容,然后依次提取数组内容去控制点阵驱动电路,就可以实现静态显示了。要实现左移功能,就是要把缓存左边两个字的那个数组的每个数据左移一位,丢弃最高位,再把缓存右边两个字的数组的每个数据也左移一位,把移出来的最高位加到左边那个缓存数组的最低位,然后再把将要移进的那个数据的最高位加到右边缓存数据的最低位,这样就能实现左移功能了,控制每次移位数据的间隔时间就可以控制左移的速度了。要实现上移功能,就是要把两个数组的第一个数据丢弃,数组的第二个数据放到一个数据的位置,依次类此,把第十六个数据放到了第十五个数据位置,然后再将要移进的数据放到第十六个数据位置,这样就实现了上移功能,控制数据的替换的时间间隔就能控制上移的移动速度了。用两个数组缓存将要显示的内容,这样对显示内容的操作就是对这两个数组的操作,这样就可以实现字体的各种显示了。第五章系统调试硬件设计和软件编程设计完成后,得出硬件实物。硬件完成后必须对其进行调试,检查设计功能是否实现了。软件硬件完成后开始进行调试。调试可分为硬件调试,软件调试。5.1系统硬件调试硬件调试是一项细心的工作一定要有耐心。硬件调试首先要熟悉各功能模块的原理图原理和PCB布局,然后根据各功能模块进行调试。硬件调试主要是检测电路板的焊接是否合理和各个芯片的输出、输入电压是否符合各自要求,最后检测各硬件模块能否完成设计所期望的功能。这样我们就把硬件调试分三部分进行调试:(1)检测所有焊点是否有虚焊的现象存在以及检测线路是否有短路;先目测电路板外观是否焊接完成,是否有气泡、连焊、虚焊、漏焊等不良焊点,再用万用表测试看是否有短路和虚焊的现象,若万用表蜂鸣器持续鸣响,则表明电路有短路现象。先检测电路板上的电源线和地线间是否短路,再逐个原件和逐条线路检测,若发现短路或虚焊现象,应当即改正,以确保电路完好可用。(2)通电测试所有硬件芯片的输入输出电压是否在设计要求的范围内;确保电路无短路和虚焊现象后,就可以通电测试所有电路板中芯片的输入和输出电压是是不是在芯片工作要求的范围内。本系统电源输入为5V电压,上电后电路各元器件没有发现过热,异味,冒烟等不良现象。然后测试各器件的电源,接地及一些电平应该固定的端口的电压。测试的结果为:各器件电源端在4.3V~4.8V之间满足器件的电源电压要求,单片机端口在未接负载时端口电压为4.5V。(3)测试串口系统的通信功能是否能够实现。串口部分的作用是单片机与上位机之间通信,检测通信是否成功可以用串口调试助手发送几组不同的数据给单片机,单片机接收到数据后在发送回电脑,如果发送和接收回来的数据一样,说明通信时正常的。5.2系统软件调试当完成硬件调试之后,就可以开始软件调试了。软件调试其实就是软件的编译和将各功能模块程序分别烧入以验证各部分功能的可实现性。软件调试,主要包括串口通信调试,无线通信调试,点阵驱动显示调试。在串口通信调试中,首先用别人的串口调试助手软件测试单片机与PC机的通信,如果通信都能正常,说明单片机的串口通信程序没有问题了。就开始用VB编写自己需要的上位机,因为以前没用过VB,所以要了解一下VB的语法,才开始编写上位机。编写本系统的上位机,难点只有两个,就是提取字模数据和实现与单片机的通信。通过上网查找资料和多次的反复修改程序,成功的实现了这两个功能。无线通信调试,理解了无线模块的工作原理,然后根据自己的需要设置无线模块的寄存器。开始的时候,只是简单的用一个字节来通信,成功之后,就设置了一次传输32个字节,然后对比传输的数据有没有发生错误。经过测试,无线通信都能正确的通信。点阵驱动显示调试部分是系统中最难的了,首先先用简单的程序让每一行亮,看看有没有不亮的点,因为点阵的管脚比较多,很多时候有些地方是没有连接上的。当每个点都能亮之后,就开始写驱动显示字了。最开始是先写静态显示汉字的程序,这个最简单实现了。成功之后,就开始写左移的功能,这个比较难,要想好用什么方法实现这个功能。经过反复的修改程序,终于实现这个功能。能实现左移了之后,要实现上移,就容易多了,不用像写左移程序那样走那么多弯路了。把各个部分的程序都写好后,就开始整体测试了。上位机用串口通信发送显示数据给单片机,再用无线发送给另外的单片机,然后再显示出来。测试这个的时候,发现当单机控制点阵显示的时候,有时接收不到无线发来的数据。那个时候接收无线发来的信息是用查询的方法的,这样不能正常的接收信息,就改为了用中断接收信息,这样就不会错过无线发来的信息了。经过整体程序的反复测试和修改,现在系统能够在上位机输入要显示的内容,然后提取字模通过串口发送给下位机,下位机再用无线发送给另外的单片机,单片机保存数据后再在点阵上显示出来。显示数据最终可以再显示终端显示出来了,实物显示图如图5-1所示,从上位机输入显示内容,可以显示中文,英文和数字,字体颜色可以选择红色、绿色和黄色,其中黄色是有红色和绿色两种基色同时点亮而成的。从实物显示图可以看出,本系统的基本功能已然实现,系统调试也就完成了。图5-1实物显示图第六章总结与展望在老师和同学的帮助下毕业设计功能基本已经实现,任务总算是成功的完成了,整个毕业设计的过程中我受益良多。我在设计中学会并运用了很多知识。我掌握了ProtelDXP软件应用、电路板印刷和焊接技术、LED点阵显示系统驱动原理等。除此之外我还学习了上位机设计有关的知识,这是之前所没有学习过的东西,VB语言的编程也是初次使用,所幸最终上位机的设计与编程最终达到了预期的效果。在设计和实现的过程中难免会遇到问题,我一方面向老师和同学求助,一方面自己也去查阅相关的资料,找出问题并解决了。在整个过程中,我克服困难的信心与决心经历了严峻的考验。毕业设计完成了,我的专业基础知识得到了巩固和提高,也是一次很好的知识与实践结合。本设计尽管还处在许多不足的地方,今后我必将努力学习,以弥补自己的不足。大屏幕LED显示屏是一种应用广泛地信息显示媒体,今后必定会往更好更高要求的方向发展的,因知识和能力的限制,本系统还有很多不足的地方,在今后有很大的提升空间,我会关注LED的发展,学习更多相关的知识,这样可以充足自己的知识。参考文献[1]关积珍.LED显示屏发展状况及趋势[J].世界电子元器件,2000,(02),277-301[2]陈玉华,王铭霞.LED大屏幕显示电路的设计[J].大连:大连海事大学学报,1997,(03),55-56[3]周兴华,单片机智能化产品C语言设计实例详解[J].北京:北京航空航天大学出版社2006.7,123-143[4]STC增强型8051单片机指南,www.MCU-Msupportmcuupdatedate[Z]:2005-9-20,2-4[5]NordicVLSIASA.nRF24L01Singlechip2.4GHzTransceiverProductSpecification[Z],2007./.2-10[6]雷晓平,屈莉莉,罗海天.微机原理与接口技术[M].北京:人氏邮电山版社.2005,195-200.[7]李样芳,肖看.单片机原理、接口及应用嵌入式系统技术基础[M].北京:清华人学出社.2005,111-113[8]NationalSemiconductor公司器件资料手册,MM74HC154,4-to-16LineDecoder[Z],2009,4-16[9]余欣.LED显示屏及控制板的设计与实现.[D],郑州大学硕士学位论文,2011年,17-19[10]SipexCorporation.SPX1117800mALowDropoutVoltageRegulatorDatasheet[Z]..2004,10-12[11]单片机发展有限公司.基T-KEILC51的高级TKS系列仿真器[Z],使用手册.2003,17-18[12]文哲雄.用单片机控制LED显示屏[D].佛山科学技术学院学位论文,佛山:佛山科学技术学院,1995,20-25[13]覃俊、林芳.C语言程序设计教程[M].北京;清华大学出版社,2008.5,3-5[14]袁于程等.基于VB下的汉字字模提取及其LED显示系统[J],中国科技信息,2008年,150-182[15]MarstonR.Radio-Electronics,WorkingwithLEDdisplaydrivers[J].War1992,Vol.63Issue3,65,8p,3charts,23diagrams;(AN920629056)[16]JeyamkondanS,JayasDS,HollyRA.16x16dotmatrixLEDhas4mmprofile[J].ElectronicsWeekly,11/26/2003Issue2125,36-36,1/9p,1c;(AN11842012).附录一、下位机原理图二、无线接收原理图三、点阵驱动原理图四、上位机程序DimsettingAsStringDimsendBytes()AsByteDimComBytes()AsByteDimcheckSumAsByteDimFsCountAsIntegerDimText2CountAsIntegerDimsendCountAsIntegerPrivateSubCom_Clear_Click()Text3.Text="0"FsCount=0EndSubPrivateSubCom_Com_Click()IfNotMSComm1.PortOpenThenMsgBox"串口没有打开!",vbOKOnlyOrvbInformation,"提示信息"ExitSubEndIfReDimComBytes(0To3)ComBytes(0)=255ComBytes(1)=ComColor.ListIndexComBytes(2)=ComWay.ListIndexComBytes(3)=ComSpeed.ListIndexFsCount=FsCount+4Text3.Text=FsCountMSComm1.Output=ComBytesEndSubPrivateSubCom_Data_Click()IfNotMSComm1.PortOpenThenMsgBox"串口没有打开!",vbOKOnlyOrvbInformation,"提示信息"ExitSubEndIfIfTrim(Text2.Text)=""ThenExitSubEndIfMSComm1.Output=sendBytesFsCount=FsCount+Text2CountText3.Text=FsCountEndSubPrivateSubCom_Open_Click()OnErrorGoToerrStrIfNotMSComm1.PortOpenThensetting=ComBaud.Text&",N,8,1"MSComm1.CommPort=ComPort.ListIndex+1MSComm1.Settings=settingMSComm1.InputMode=comInputModeBinaryMSComm1.Handshaking=comNoneMSComm1.OutBufferSize=1024MSComm1.InBufferSize=512MSComm1.InputLen=0MSComm1.SThreshold=1MSComm1.RThreshold=1MSComm1.PortOpen=TrueShape1.BackColor=RGB(255,0,0)Com_Open.Caption="关闭串口"ElseShape1.BackColor=RGB(255,255,255)MSComm1.PortOpen=FalseCom_Open.Caption="打开串口"EndIfExitSuberrStr:IfErr.Number=8002ThenMsgBox"串口不存在!",vbOKOnlyOrvbInformationElseIfErr.Number=8005ThenMsgBox"串口已打开!",vbOKOnlyOrvbInformationEndIfEndSubPrivateSubForm_Load()Text1=""Text2=""Text3.Text="0"ComPort.ListIndex=0ComBaud.ListIndex=0ComColor.ListIndex=0ComWay.ListIndex=0ComSpeed.ListIndex=0EndSubPrivateSubCommand1_Click()IfTrim(Text1.Text)=""ThenMsgBox"没有输入字符!",vbOKOnlyOrvbInformation,"提示信息"ExitSubEndIfText2=""OpenApp.Path+"\HZK16"ForBinaryAs#1'打开字库文件DimbyteCnword(1To32)AsByte'汉字DimbyteEnword(1To16)AsByte'非汉字strWord=Text1.TextintLen=Len(strWord)'字符长度DimcharWord()AsStringReDimcharWord(1TointLen)Text2Count=intLen*32ReDimsendBytes(0ToText2Count)sendBytes(0)=intLenFori=1TointLencharWord(i)=Mid(strWord,i,1)intPosition=Position(charWord(i))IfintPosition>128ThenGet#1,intPosition,byteCnword()Forj=1To32sendBytes((i-1)*32+j)=byteCnword(j)IfbyteCnword(j)<16ThenText2.Text=Text2.Text+"0"+Hex(byteCnword(j))+"H,"ElseText2.Text=Text2.Text+Hex(byteCnword(j))+"H,"EndIfNextElseGet#1,intPosition,byteEnword()Forj=1To16IfbyteEnword(j)<16ThenText2.Text=Text2.Text+"0"+Hex(byteEnword(j))+"H,"ElseText2.Text=Text2.Text+Hex(byteEnword(j))+"H,"EndIfNextEndIfText2.Text=Text2.Text+Chr(13)+Chr(13)Text2.Text=Text2.Text+charWord(i)NextClose#1EndSubPublicFunctionPosition(chAsString)AsLong'输入字符,返回字库地址Ifch>"z"Then'字符串变量ch用于存放待处理的汉字strCh=Hex(Asc(ch))'获得该汉字的十六进制的ASCII码strQh=Left(strCh,2)'对应汉字机内码的高字节strWh=Right(strCh,2)'对应汉字机内码的低字节intQh=Val("&H"&strQh)intWh=Val("&H"&strWh)Position=32*((intQh-161)*94+(intWh-161))+1ElsePosition=Asc(ch)EndIfEndFunction五、下位机接收程序#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint//******************NRF24L01端口定义*************************sbitMISO=P2^4;sbitMOSI=P2^3;sbitSCK=P2^2;sbitCE=P2^0;sbitCSN=P2^1;sbitIRQ=P2^5;sbitLED=P2^6;sbitKEY=P2^7;//***********************************发送缓冲区*********************************************ucharTxBuf[32]={0};////***********************************NRF24L01*************************************#defineTX_ADR_WIDTH5//5字节的发送地址#defineRX_ADR_WIDTH5//5字节的接收地址#defineTX_PLOAD_WIDTH32//32字节的发送数据#defineRX_PLOAD_WIDTH32//32字节的接收数据ucharcodeTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};//本地地址ucharcodeRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};//接收地址//*******************************NRF24L01寄存器指令*******************************************************#defineREAD_REG0x00//读寄存器指令#defineWRITE_REG0x20//写寄存器指令#defineRD_RX_PLOAD0x61//读取接收数据指令#defineWR_TX_PLOAD0xA0//写待发数据指令#defineFLUSH_TX0xE1//冲洗发送FIFO指令#defineFLUSH_RX0xE2//冲洗接收FIFO指令#defineREUSE_TX_PL0xE3//定义重复装载数据指令#defineNOP0xFF//保留//**************************SPI(nRF24L01)寄存器地址************//#defineCONFIG0x00//配置收发状态,CRC校验模式以及收发状态响应方式#defineEN_AA

温馨提示

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

评论

0/150

提交评论