基于单片机的无线点阵显示屏设计_第1页
基于单片机的无线点阵显示屏设计_第2页
基于单片机的无线点阵显示屏设计_第3页
基于单片机的无线点阵显示屏设计_第4页
基于单片机的无线点阵显示屏设计_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文论文题目基于单片机的无线点阵显示屏设计系别电子信息工程系专业电子信息工程班级学号学生姓名指导教师(签名)完成时间年月摘要LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体。LED点阵屏是由许多发光二极管按规律排列所组成的点阵显示屏幕,它可用来显示字符、图案等信息,具有可靠性高、使用寿命长、环境适应能力强、性能价格比高等特点,因此在信息显示领域得到了广泛的应用。本设计的显示终端是用16块8×8的单红色点阵组成16行64列的点阵,全屏能显示4个汉字,整机以40脚单片机STC89C4RD+为核心,制作出可更新内容的显示屏,通过8块74HC595级联电路来控制点阵的64列的显示,1块74HC154和16个PNP三极管(2N3906)来控制选通点阵屏的16行。本设计是一种基于无线传输的LED点阵屏显示设计。系统上位机与下位机之间的通信采用RS-232串口,再采用无线短距离通信方式,传输数据,使得LED显示终端既便于更换位置与安装,又降低了运行费用,该设计可实现中英文字符的显示,静态和多种动态显示。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。关键词:LED显示屏;串行通信;无线传输;单片机;上位机

TheDesignofWirelessLEDDisplayScreenBasedonMicroprocessorAbstractLEDdisplayscreenisanewinformationdisplaymediathatrapiddevelopmentoftheglobalinthelate80,LEDlatticescreeniscomposedofmanylight-emittingdiodesarearrangedaccordingtotheruleofthecompositionofthedotmatrixdisplayscreen,whichcanbeusedtodisplayinformationsuchascharacters,patterns,andhastheadvantagesofhighreliability,longservicelife,environmentaladaptationability,higherratioofperformancetoprice,sointheinformationdisplayhasbeenwidelyappliedinthefield.Thedesignofthedisplayterminalistouse16piecesof8x8singlereddotmatrixcolorconsistsof16rowsand64columnsofthematrix,thefullscreencandisplay4Chinesecharacters,the40footSTC89C4RD+MCUasthecore,madetoupdatethecontentofthedisplay,64columnstocontrolmatrixby8block74HC595cascadecircuit,one74HC154andsixteenPNPtriode(2N3906)tocontrolthe16linesselectionmatrixscreen.ThedesignisaLEDlatticescreendisplaysystembasedonwirelesstransmission.CommunicationbetweenhostcomputerandlowercomputerbyRS-232serialport,datatransmissionbywirelessshortdistancecommunication,LEDdisplayterminal,whichisconvenientforinstallationandreplacement,butalsoreducetheoperatingcosts,displaymodecanbedisplayChineaseandEnglishcharacter,staticanddynamicdisplay.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点阵控制电路设计 12第四章系统软件设计 194.1软件开发平台及开发语言介绍 194.2上位机管理系统软件设计 204.3下位机编程 22第五章系统调试 255.1系统硬件调试 255.2系统软件调试 255.2系统调试结果与分析 28第六章总结与展望 30参考文献 31附录 32致谢 79第一章前言在快速发展的社会,作为新型的一种的显示电子显示屏已经由最早时的灯泡构造变为现在的由显像管构成。LED显示屏是八十年代后期发展起来的,以其优势突出应用于各行各业,比如:高亮度、动态显示效果好、能耗、故障很低而且寿命长、丰富的显示方式、高性价。LED显示屏制作技术已经相当成熟,售价也不高,因此随处可见,它作为信息显示媒体,应用领域广泛,如商场、机场、车站和室外广告都有LED显示屏。本课题是根据信息显示需求,考虑安装和更换位置的基础上,提出了一种利用无线传输数据的LED显示屏的设计。1.1项目背景系统设计的是一个无线LED显示屏,也就是说采用无线通信的方式,更新显示显示内容,这样做就可以达到便于安装和更换位置的目的,同时也是为了节省费用。这样对LED显示屏的发展也有促进作用的,更利于它的发展,控制技术有所创新。不管无线LED显示屏应用在哪里,都能够达到塑造良好形象的目的,有很好的社会效益。本系统的设计很利于自己专业知识的提升,同时对LED显示屏的发展也有积极的意义。1.2国内外发展状况及发展趋势八十年代后期LED点阵显示屏的应用极少,显示屏控制技术也没有的到提高。初期的LED点阵显示屏一般是红、绿双基色,成本较高,已广泛的在国外应用、但在国内很少。九十年代,全球信息产业发展迅速,信息技术不断突破,我国的LED显示屏也突飞猛进,技术也达到了国际先进水平。现在开发的LED大屏幕达到成熟期,LED器件成本大大下降,LED点阵显示屏更得到了广泛应用。我国LED点阵显示屏,发展迅速,几年下来,取得了很好地成绩,不少是具有相当规模的企业,位居骨干企业之中。我国LED点阵显示屏水平处于领先地位,例如,目前世界最大LED点阵显示屏是一个9500平米巨型LED显示屏,面积达400平方,在上海世博会2010年开幕式上,这个屏幕使用P18表面贴装技术制造,压铸铝盒结构。LED点阵显示屏产业日益发展壮大,如今成为我国电子信息技术产业的相当重要组成部分。据美国斯坦福资源国际市场开发的LED显示屏产品,在LED显示产品的当前和未来市场都将采用以全高清为主。目前,LED显示屏技术已经基本把遇到的难关解决了,发光显示装置亮度很高,质量好,价格降低了许多,从而推动需求的LED显示屏的发展,很有市场发展潜能。LED显示屏在未来将会更完美,应用必定更广泛。LED控制器设计个屏幕设计开始逐渐分离,我国LED产业发展迅速,从几家年产值不高的企业发展到了几十家年产值几亿元的骨干企业,对整个行业来讲具有很强的开发能力,在LED显示屏系统中,中国与国际上拥有相同的技术水平。我国的在显示屏的制造上,在几十年间发展的非常迅速,但在显示器件的封装和设计上还是跟不上发达国家的技术水平,还有更加努力去研制。现代社会是一个信息社会,显示技术必将发展迅速,二十一世纪必将发展成直流式平板显示。如此说来,LED点阵显示屏发展方向很有可能是平板显示的直流产品,那么其发展趋势就是标准化和规范化。1.3论文主要内容根据设计要求,拟定论文的内容和结构安排如下:(1)题目的选定根据选题要求,并结合自身兴趣和所掌握的知识,决定做有关点阵显示屏的题目,有你定了几套方案,经过分析和比较,最终决定以PC为上位机,以单片机做主控制器,以及点阵屏的驱动电路,并选用单红色LED点阵,制作出一个可以更新信息的LED点阵显示屏。(2)方案实现根据设计思想与要求,应选择合适的器件来实现。根据功能要求,选定了以40脚单片机STC89C4RD+为核心,74HC595组成级联电路来做64列列驱动,控制点阵行驱动的74HC154和16个PNP型三极管(2N3906)来做点阵屏的行驱动。论文中详细介绍了这些器件参数和在设计中的应用。(3)软件编程根据硬件的特点和要求,选用C语言编写下位机管理模块程序,而上位机管理模块则选用VB语言来编写,用模块化的方法编写程序。(4)系统调试硬件的制作和软件编程设计都完成之后,还有要对系统进行调试,先进行硬件调试,然后进行软件调试,完善设计中的不足,实现设计的功能,最终完成设计。(5)结论在完成设计后仔细分析设计过程中遇到的问题,总结如何解决问题,以及积累经验和教训。第二章系统总体设计2.1功能设计本方案设计一个LED显示屏,具体要求满足以下条件:(1)需选用51系列单片机作为微控制器MCU;(2)可以用上位机提取要显示内容的字模数据,上位机可以通过串口发送数据给单片机;(3)单片机控制无线模块发送数据给LED显示屏,显示屏以大小为16行64列进行字符显示;(4)在肉眼观察下LED点阵显示屏每点都显示清晰、均匀、稳定。2.2总体方案要知道,LED作为信息显示媒体,是要给更多的人提供信息的,所以应用来流动人口比较多的户外的,户外环境很容易损坏电子器件的,所以硬件要求很高。硬件的设计一般采用模块化设计,根据本设计功能的要求,本设计包括了上位机上的数据提取软件设计,上位机与单片机的串口传输数据的设计,无线发送接收数据的设计,16块8×8的的单红色点阵组成的16×6红点阵驱动电路设计。设计总体框图如图2-1所示:上位机上位机无线发送模块无线接收模块点阵控制电路16*64点阵显示屏串口图2-1设计总体框图2.2.1主控器的选择单片机是一种集成器件,其本质是一种微型计算机,它由英特尔开发,最初第一代是MCS-85,现在是MCS-51。单片机作为一种微机,当然就要进行数学运算或逻辑运算,面向控制而设计的集成电路,可以用它来完成很多不同的控制任务。当前应用的MCS-51单片机最基本的配置:集成了CPU、ROM、RAM、32个I/O端口、全双工串行口、计数器/定时器,并有控制功能较强的布尔处理器。单片机品种众多,型号更是多样化,CPU处理的位数选择当然也是很丰富的,有8,16,32到64位几种选择,根据需要来选择。单片机片有丰富的I/O端口,部分单片机还集成有A/D转换、“看门狗”等。它们的价格也不同,因此就很好地满足了开发者的方便选择。系统下位机的核心控制器是单片机,所以单片机的选择尤为重要,选对了单片机,就基本上保证了系统工作的灵活性和稳定性,其实对于单片机的选择就是对其本身的性能和片内资源的选择。本设计的单片机要接收上位机发送的数据并进行存储,在既没有没有外扩程序存储器也没有外扩数据存储器的情况下,本系统选择了STC89C54RD+加强型51单片机,它有大容量的数据存储区。STC89C54RD+单片机最高时钟频率是80M,极大限度地提高了控制器的运行速度,集成了大容量的16KB程序存储器及1280B的数据存储器,并有在系统可编程功能以及在应用可编程功能,可以远程软件升级,不需要编程器,这样就降低了开发复杂度。2.2.2数据传输方案论证(1)并行传输顾名思义,并行传输方式就是多个数据并排地进行传输,每个数据单独使用一条线路,同时进行数据的传输,例如,8位的数据就要用8根并排的线路同时传输。并行传输方式传输速度很快,但是数据位多信道也要多,投资就相当大了。(2)串行传输在MCS-51和AT89中使用的是全双工异步串行通信,分为异步传输、同步传输方式,串行传输是通过一条线路实现从一方到达另一方的数据传送,同步传输时,数据是以数据块的形式进行传输的。传输方式的速度慢但只需一条线路通道传输,所以成本低、投资少、易实现。如果选用并行传输方式,控制电路驱动的线数、相应的硬件数多。当控制列数较多时,并行传输的方案就不易采取了。选用串行传输方式则数据传输采用的主要传输方式是控制电路可以只用一条通道线路,将列显示的数据一位一位传送到列驱动器。相比较下选用串行通信较合理。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个列驱动器。显示终端部分模块的结构框图如图2-2所示:单片单片机微控制器行驱动8X8点阵8X8点阵行驱动8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵8X8点阵列驱动 列驱动列列驱动列驱动列驱动列驱动列驱动列驱动 列驱动列驱动列驱动列驱动列驱动列驱动列驱动图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下位机软件编程结构图第三章系统硬件电路设计根据上位机的无线单红色点阵显示系统的功能可将整个设计方案划分为上位机操作管理模块、无线NRF24L01发送与接收、点阵屏控制和电源模块四个部分,具体工作流程为:上位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引脚直接短接到GND。图3-1STC89C54RD+单片机的实物图STC89C54RD+单片机的封装图如图3-2所示:图3-2STC89C54RD+单片机的封装图[4]3.1.2nrf24l01+无线收发模块Nrf24L01+是挪威NordicVLSI公司出品的一款新型射频收发器件,采用4mmX4mmQFN20封装;Nrf24L01+工作在ISM频段:2.4-2.5GHz。且内置频率合成器、功率放大器、晶体振荡器、调制器等功能,并融合增强型SchockBurst技术,其中地址、输出功率和通信频道可通过程序进行配置,适合用于多机通信。nrf2401+功耗很低,在以-6dBm的功率发射时,工作电流只有9mA;而对应接收机的工作电流只有12.3mA,多种低功率工作模式(掉电模式和待机模式)使节能设计更方便。nrf2401实物图如图3-3所示:图3-3nrf24l01实物图工作模式nRF24L01可以设置为下列几种主要的模式表3-1nRF24L01主要工作模式[5]模式PWR_UPPRIM_RXCEFIFO寄存器状态接收模式111-发送模式101数据在TX发送模式101→0停留在发送模式直至数据发送完待机模式II101TX待机模式I1-0无数据传输掉电模式03.1.3AMS1117-3.3芯片介绍AMS1117是一个正向低压降稳压器,在1A电流下压降为1.2V,AMS1117有两个版本:固定输出版本和可调版本,固定输出电压为1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V,具有1%的精度;固定输出电压为1.2V的精度为2%。AMS1117内部集成过热保护和限流电路,是电池供电和便携式计算机的最佳选择。其引脚图如图3-4所示。图3-4AMS1117管脚图3.1.4nrf24l01+无线收发模块原理图nRF24L01+的应用电路原理图如图3-5所示。nRF24L01+的应用电路并不复杂,它采用了增强型SchockBurstTM模式控制器,其中通过程序进行可能够对通信频道和输出功率进行配置。低压供电,需要输入3.3V,电源供电时5V的,所以设计中通过AMS1117正向低压稳压器输出电压为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器件,4位二进制作为译码器74HC154的地址输入,低有效输出是16个互斥的。输入使能门电路18、19号引脚作为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)与大部分DTL和TTL电路兼容三极管2N3906是一种常用的普通PNP型小功率三极管。2N3906特性及应用(1)集电极-基极电压Vcbo:40V(2)工作温度:-55℃to+150℃(3)与NPN型2N3903做互补对称管主要用途:(1)开关应用(2)射频放大2N3906三极管(TO-92封装)管脚图如图3-9所示:图3-92N3906管脚图注:(1)发射极(2)基极(3)集电极在行驱动电路中,Y0-Y15是16路独立的低电平输出口,刚好接到点阵的16行,因为只要OE1和OE2中有一个为高,A,B,C,D电平输入都是无效的,只有它们都是低电平时,才能操作芯片,所以把这两脚同时接到单片机一个I/O上进行控制。Y0-Y15输出经过一个限流电阻再接到三极管8550的基极,当74HC154的输出端输出低电平时,2N3906就可以导通,电流就经过2N3906放大再流入点阵。这样才有足够的电路供点阵驱动,否则LED屏幕亮度不够或者不亮。LED点阵行驱动电路原理图如图3-10所示。图3-10行驱动电路3.2.2LED点阵列驱动电路本系统采用的列驱动芯片的74HC595,因为该芯片是串入并出,而且具有输出锁存功能。当锁存着本行的数据输出时,还可以输入下一行的数据,这样就可以实现重叠的处理数据。要控制的LED点阵的显示,所以每一个8*8的LED点阵就要用一片74HC595控制。以下介绍74HC595芯片。74HC595芯片是硅结构的CMOS器件,一种串入并出的芯片,电子显示屏一般采用它做驱动芯片。74HC595是具有8位二进制串行输入,输出并行的移位寄存器和存储器,三种输出状态:高阻、关、断。可以完成串行输出控制下一级级联芯片。8位移位寄存器和一个存储器分别是时钟SCHcp的上升沿时输入数据,在STcp的上升沿进入到存储寄存器中去。倘若两个时钟连在一起,移位寄存器就比存储寄存器提前一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出,和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当OE使能时即低电平,总线的数据由存储寄存器输出。74HC595芯片引脚图如图3-11所示,其特点如下[9]:特点:(1)高速移位时钟频率最大值大于25MHz(2)标准串行(SPI)接口(3)串行输出CMOS,可以用于多个器件的级联(4)功耗低:TA=25℃,Icc=4μA(最大)74595的数据端:(1)QA--QH:595的并行口输出端,可以方便控制点阵的8个脚。(2)Q’H:级联输出端。我将它接下一个595的SI端。(3)SI:串行数据输入端。74595的控制端说明:SRCLR(10脚):主复位(低电平),接GND时数据清零,通常将它接Vcc。SRCK(11脚):移位寄存器时钟输入,数据移位发生在上升沿。下降沿移位寄存器数据不变。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*64LED点阵显示屏有16行,用一个4-16线译码器74HC154,刚好就可以驱动点阵的16行,它的输入是0到15,输出低电平有效,2N3906为PNP型三极管,低电平导通2N3906可以起到扩大驱动电流的作用。16*64LED点阵显示线路如图3-14所示。图3-1416*64LED点阵显示线路图第四章系统软件设计在硬件设计好之后,还要进行系统的软件设计。系统软件设计分为上位机软件设计和下位机软件设计,上位机软件是上位机管理模块功能设计,而下位机软件是在硬件的基础上,主要是无线数据传输模块和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语言是当前国际上最通用的、很有发展前途的程序设计语言之一,具有高级、低级语言特性。既可编写系统软件,又可编写应用程序。C语言其实是把高级的语言的基本机构和低级的语言的实用性统一在一起的编程语言,所以它既有了高级语言的特性,也有低级语言的功能。该编程语言可以以函数的方式给编程者运用,而且有循环、选择和条件等基本语句,可以让编程结构化。目前,一般的程序员都是用C语言做程序设计的,它已成为软件开发的主力。用C语言设计开发系统能够很好的缩短开发时间周期,显然增强了程序的可读性,便于改善、移植和扩充。4.1.4VB语言介绍VisualBasic,简称VB,VisualBasic是一种基于Basic的编程语言,它是一种面向对象的可视化的高级语言。该语言不仅仅执行速度快,而且运用的方法简单。无论是用来开发功能复杂的商用应用软件,还是用来开发简单的个人应用软件,都非常的方便。因为该语言的编程环境采用的可视化编程环境,还有面向对象的设计方式,所以开发应用程序操作简单方便。只要是你能想到的编程项目,强大功能的VB语言一般都能帮你实现。不管你是要设计各种类型的用户界面还是要利用其它应用程序的对象,又或者是要处理文字图象到使用数据库,从开发个人或集体使用的小工具,到大型企业应用系统,更甚者是要通过Internet的遍及全球分布式应用程序,都可在VisualBasic提供的工具找到。4.2上位机管理系统软件设计上位机管理系统软件是用RS-232串口和下位机通信的,所以要对串口发送和接收进行操作。首先根据系统建立主界面对话框,对串口进行初始化,串口处理等,进而实现给下位机发送数据,在可视化界面上显示出来,便进行操作。4.2.1上位机功能设计上位机软件管理系统可以实现:设置波特率,选择串口,在上位机软件上输入想要显示的汉字,字母,数字,按下提取字模按钮,可以看到相应的16进制数据,按发送数据可以传显示信息给下位机;控制命令有;显示方式有动态闪烁、静止方式可选,显示速度有慢速,中速和快速三种调节方式,选择想要的控制方式,按发送命令按钮,可以控制点阵的显示。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电压,上电后电路各元器件没有发现过热,异味,冒烟等不良现象。然后测试每个器件的工作电源,接GND及一些电平可以稳定的端口的电压。测试的结果为:每个元器件电源端在4.3V~4.8V之间满足它们的电源电压的需求,单片机I/O口在没有接负载时端口电压为4.5V。(3)测试串口系统的通信功能是否能够实现。串口部分的作用是单片机与上位机之间通信,检测通信是否成功可以用串口调试助手发送几组不同的数据给单片机,单片机接收到数据后在发送回电脑,如果发送和接收回来的数据一样,说明通信是正常的。5.2系统软件调试当完成硬件调试之后,就可以开始软件调试了。软件调试实质就是编译软件以及将每个功能模块程序分别下载进去以检验各部分功能是否能实现。软件调试,主要包括串口通信调试,无线通信调试,点阵驱动显示调试。在串口通信调试中,首先用别人的串口调试助手软件测试单片机与PC机的通信,如果通信都能正常,说明单片机的串口通信程序没有问题了。就开始用VB编写自己需要的上位机,因为以前没用过VB,所以要了解一下VB的语法,才开始编写上位机。编写本系统的上位机,难点只有两个,就是提取字模数据和实现与单片机的通信。通过上网查找资料和多次的反复修改程序,成功的实现了这两个功能。无线通信调试,理解了无线模块的工作原理,然后根据自己的需要设置无线模块的寄存器。开始的时候,只是简单的用一个字节来通信,为了检测通信接收到的数据是否正确,我先让带串口的下位机作为无线通信的接收端,利用无线接收到的数据通过串口返回给电脑,在串口调试助手的窗口里显示收到的数据,然后对比发送端发送的数据,多次调试后,通信成功并且接收数据正确。然后我就设置了一次传输32个字节,相当于一次发送一个汉字要显示的字模数据。然后对比传输的数据有没有发生错误。经过测试,无线通信都能正确的通信。点阵驱动显示调试部分是系统中最难的了,首先先用简单的程序让每一行亮,看看有没有不亮的点,因为点阵的管脚比较多,很多时候有些地方是没有连接上的。当每个点都能亮之后,就开始写驱动显示字了。最开始是先写静态显示汉字的程序,这个最简单实现了。成功之后,就开始写左移的功能,这个比较难,要想好用什么方法实现这个功能。经过多次认真的对程序进行改善,最终实现这个功能。把各个部分的程序都写好后,就开始整体测试了。上位机用串口通信发送显示数据给单片机,再用无线发送给另外的单片机,然后再显示出来。测试这个的时候,发现当单机控制点阵显示的时候,有时接收不到无线发来的数据。那个时候接收无线发来的信息是用查询的方法的,这样不能正常的接收信息,就改为了用中断接收信息,这样就不会错过无线发来的信息了。5.3系统调试结果与分析5.3.1调试结果本系统的基本功能已然实现,整个系统设计实现了在电脑上位机窗口操作系统进行汉字字模的提取,并且可以对实现对串口端口、波特率、字体显示方式和速度进行选择,然后上位机通过串口将字模数据发送给无线发射端,无线发射端又将数据发送,无线接收端接收数据后就控制点阵屏的显示方式及内容了。显示屏最后可以显示中文,英文和数字。从实物显示图5-4可以看出,系统调试也就完成了。经过整体程序的反复测试和修改,现在系统能够在上位机输入要显示的内容,然后提取字模通过串口发送给下位机,下位机再用无线发送给另外的单片机,单片机保存数据后再在点阵上显示出来。下面如图5-1是下位机无线发射端电路板实物图,如图5-2是LED点阵屏控制无线接收端,如图5-3是控制点阵屏的驱动行的实物图,实物显示图如图5-4所示。图5-1下位机无线发射端图5-1无线接收端图5-3控制点阵屏的行驱动图5-4实物显示图5.3.2调试分析整个系统调试的时候,出现过许多的问题,比如调试点阵屏显示模块的时候,刚开始无法正确显示,总是出现闪屏、乱屏的情况,这时候我就首先开始检查硬件,发现有部分引脚虚焊,硬件排除问题之后还是不能正确显示,我仔细检查出现发现是控制点阵屏行扫描的时间要扫描比较快,所以就要选用高的晶振,我把12M的晶振换成25M,而且列驱动送显示数据的时候也要把握好时间,最后实现的稳定正确的显示了。另外就是进行NRF24L01无线通信的调试,刚开始也是无法正常通信,检查之后发现硬件封装有个引脚画错了,结果导致程序中的位定义就错了,无线通信是还要注意整个电路板的工作电压,我用万用表检测NRF24L01的接VCC引脚的电压也是3.31V,然后就排除了硬件问题,但是还是不能进行正确通信,而且作为无线接收端的串口总是有数据OXFF一直返回,但是我发送的数据并不是OXFF,这说明没有正确接收,仔细检查程序之后发现无线发射端的程序是正确的,问题出在无线接收端的NRF24L01程序里接收函数与初始化配置。花了一周的时间修改之后,终于能够正常通信了。还有一个问题就是串口通信部分的MAX232芯片偶尔会发热,甚至发烫,但是居然还能正常的通信,关电一段时间后再调试,MAX232芯片又不发烫了,这个问题我现在还不明白,但还好是实现了串口的通信。我发现自己做的设计还有一些不足之处,就是电路板硬件做的不够美观整齐,小小的板我也有几条跳线,我明白自己在画PCB电路图的时候还要继续加强学习。程序写的也不够优化,还要加强提升。第六章总结与展望在老师和同学的帮助下毕业设计功能基本已经实现,任务总算是成功的完成了,整个毕业设计的过程中我受益良多。我在设计中学会并运用了很多知识。我掌握了ProtelDXP软件应用、电路板印刷和焊接技术、LED点阵显示系统驱动原理等。除此之外我还学习了上位机设计有关的知识,这是之前所没有学习过的东西,VB语言的编程也是初次使用,所幸最终上位机的设计与编程最终达到了预期的效果。在设计和实现的过程中难免会遇到问题,我一方面向老师和同学求助,一方面自己也去查阅相关的资料,找出问题并解决了。毕业设计完成了,我的专业基础知识得到了巩固和提高,也是一次很好的知识与实践结合。本设计尽管还处在许多不足的地方,今后我必将努力学习,以弥补自己的不足。大屏幕LED显示屏是一种应用广泛地信息显示媒体,今后必定会往更好更高要求的方向发展的,因知识和能力的限制,本系统还有很多不足的地方,在今后有很大的提升空间,我会关注LED的发展,学习更多相关的知识,这样可以充足自己的知识。参考文献[1]关积珍.LED显示屏发展状况及趋势[J].世界电子元器件,2000,(02),277-301[2]陈玉华,王铭霞.LED大屏幕显示电路的设计[J].大连:大连海事大学学报,1997,(03),55-56[3]李江全,汤智辉,朱东芹.VisualBasic数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2010.6[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,[9]余欣.LED显示屏及控制板的设计与实现[D],郑州大学硕士学位论文,2011年,17-19[10]SipexCorporation.SPX1117800mALowDropoutVoltageRegulatorDatasheet[Z]..2004,10-12[11]张建华,刘玉玲,吴允志.基于单片机串口通信的LED点阵显示系统的设计与实现[J],数字技术与应用,2013.5[12]文哲雄.用单片机控制LED显示屏[D].佛山科学技术学院学位论文,佛山:佛山科学技术学院,1995,20-25[13]覃俊、林芳.C语言程序设计教程[M].北京;清华大学出版社,2008.5,3-5[14]袁于程等.基于VB下的汉字字模提取及其LED显示系统[J],中国科技信息,2008年,150-182[15]吴磊,江训艳.基于nRF2401和nRF24E1射频芯片的无线通信系统的设计[J].计算机光盘软件与应用,2012.7[16]MarstonR.Radio-Electronics,WorkingwithLEDdisplaydrivers[J].War1992,Vol.63Issue3,65,8p,3charts,23diagrams;(AN920629056)[17]JeyamkondanS,JayasDS,HollyRA.16x16dotmatrixLEDhas4mmprofile[J].ElectronicsWeekly,11/26/2003Issue2125,36-36,1/9p,1c;(AN11842012).附录一、下位机原理图二、无线接收原理图点阵驱动原理图上位机程序DimsendBytes()AsByteDimComBytes()AsByteDimcheckSumAsByteDimFsCountAsIntegerDimText2CountAsIntegerDimsendCountAsIntegerPrivateSubcmdClearCount_Click()txtSendCount.Text="0"FsCount=0EndSubPrivateSubcmdGetCharCode_Click()DimstrWordAsStringDimintLenAsIntegerDimiAsInteger,jAsIntegerDimintPositionAsLongIfTrim(txtGetChar.Text)=""ThenMsgBox"没有输入字符!",vbOKOnlyOrvbInformation,"提示信息"ExitSubEndIftxtShowCharCode.Text=""OpenApp.Path+"\Res\HZK16"ForBinaryAs#1'打开字库文件DimbyteCnword(1To32)AsByte'汉字DimbyteEnword(1To16)AsByte'非汉字DimcharWord()AsStringstrWord=txtGetChar.TextintLen=Len(strWord)'字符长度ReDimcharWord(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)<16ThentxtShowCharCode.Text=txtShowCharCode.Text+"0"+Hex(byteCnword(j))+"H,"ElsetxtShowCharCode.Text=txtShowCharCode.Text+Hex(byteCnword(j))+"H,"EndIfNextElseGet#1,intPosition,byteEnword()Forj=1To16IfbyteEnword(j)<16ThentxtShowCharCode.Text=txtShowCharCode.Text+"0"+Hex(byteCnword(j))+"H,"ElsetxtShowCharCode.Text=txtShowCharCode.Text+Hex(byteCnword(j))+"H,"EndIfNextEndIftxtShowCharCode.Text=txtShowCharCode.Text+Chr(13)+Chr(13)txtShowCharCode.Text=txtShowCharCode.Text+charWord(i)NextClose#1EndSubPrivateSubcmdOpenSerialPort_Click()OnErrorGoToOpenSerialPortErrWithMSComm1IfcmdOpenSerialPort.Caption="打开串口"ThencmdOpenSerialPort.Caption="关闭串口"'设置串口号.CommPort=Right(cmbSerialPort.Text,1).Settings=LeftStr(cmbBaudRate.Text,"bps")&","&MidStr(cmbVerifyBit.Text,"[","]")&","&LeftStr(cmbDataLength.Text,"位")&","&LeftStr(cmbStopBit.Text,"位")If.PortOpen=FalseThen'判断通信口是否打开.PortOpen=True'打开通信口shpSerialStates.FillColor=vbRedEndIfElsecmdOpenSerialPort.Caption="打开串口".PortOpen=FalseshpSerialStates.FillColor=vbBlackEndIfEndWithExitSubOpenSerialPortErr:shpSerialStates.FillColor=vbBlackcmdOpenSerialPort.Caption="打开串口"SelectCaseErr.NumberCase8002MsgBox"串口"&cmbSerialPort.Text&"不存在!",vbOKOnly+vbExclamation,App.Title+"-Error!"Case8005MsgBox"串口"&cmbSerialPort.Text&"已打开!",vbOKOnly+vbExclamation,App.Title+"-Error!"CaseElseMsgBox"串口"&cmbSerialPort.Text&"无效!",vbOKOnly+vbExclamation,App.Title+"-Error!"EndSelectEndSubPrivateSubcmdSendCommand_Click()IfNotMSComm1.PortOpenThenMsgBox"串口没有打开!",vbOKOnlyOrvbInformation,"提示信息"ExitSubEndIfReDimComBytes(0To3)ComBytes(0)=255ComBytes(1)=LeftStr(cmbFontColor.Text,"-")ComBytes(2)=LeftStr(cmbShowMode.Text,"-")ComBytes(3)=LeftStr(cmbMoveSpeed.Text,"-")FsCount=FsCount+4txtSendCount.Text=FsCountMSComm1.Output=ComBytesEndSubPrivateSubcmdSendData_Click()IfNotMSComm1.PortOpenThenMsgBox"串口没有打开!",vbOKOnlyOrvbInformation,"提示信息"ExitSubEndIfIfTrim(txtShowCharCode.Text)=""ThenExitSubEndIfMSComm1.Output=sendBytesFsCount=FsCount+Text2CounttxtSendCount.Text=FsCountEndSubPrivateSubForm_Load()WithMe.MoveScreen.Width/2-.Width/2,Screen.Height/2-.Height/2,7340,6690EndWithtxtGetChar.Text="请输入字符"WithcmbSerialPort.AddItem"COM1".AddItem"COM2".AddItem"COM3".AddItem"COM4".AddItem"COM5".AddItem"COM6".AddItem"COM7".AddItem"COM8".AddItem"COM9".Text=.List(0)EndWithWithcmbBaudRate.AddItem"110bps".AddItem"300bps".AddItem"1200bps"

温馨提示

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

评论

0/150

提交评论