《公交车自动报站系统(正文)(共48页).doc》由会员分享,可在线阅读,更多相关《公交车自动报站系统(正文)(共48页).doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上第1章 绪论 1.1 研究课题的背景介绍随着国民经济的快速发展,城市建设规模不断扩大,大城市人口高度集中并大幅度增长,同时汽车保有量急剧上升,交通需求量迅速扩大,而道路交通基础设施建设的发展则相对滞后。城市交通需求与供给之间的矛盾越来越突出,城市“乘车难”、“行车难”的局面在加剧,交通堵塞呈现出点到线、由线到面的扩展趋势,交通拥挤、交通延误、交通堵塞以及由此引起的噪音、废弃污染严重影响着居民的正常生活以及社会经济的持续、健康发展。近年来,我国城市交通的现状已引起了政府、公众、社会各界的广泛关注,有关专家学者和交通工程师们在吸取各国城市交通发展经验的基础上,找到了解决我
2、国城市交通发展问题的有效途径,即优先发展城市公共交通,以公共交通为杠杆降低城市交通需求总量,实现道路交通基础设施发展与交通需求增长的均衡。实施“公交优先”是解决我国城市交通问题的有效途径,也是我国目前交通发展的基本政策。公交智能化是智能交通的一个重要子领域,同时也是落实“公交优先”,使城市交通与社会经济和谐发展的重要组成部分。实施公交智能化,必须提高公交服务质量,而到站后的准确、及时报站就是一个方面,本设计基于AT89C52单片机、LED点阵制作的公交车自动报站系统就能解决这方面的问题。从而,达到公共形象的提升。当前国内主要大城市的公交车大都采用人工报站,即每到一站由司机或者乘务员来进行报站。
3、但有时由于受到各种因素如雨雪天气的影响,会出现报错站、漏报站的情况,给乘客特别是不熟悉本市地形的乘客带来了不必要的麻烦,从而影响到了一个城市的窗口形象工程建设。于是开发研制自动报站系统成为必然。因此本次毕业设计中提出以AT89C52单片机为核心,用LED显示屏显示站名的即经济、高效、直观的公交车到站自动报站系统。1.2 研究前景及国内外发展水平随着公交优先战略的确定,公交在缓解城市交通拥堵方面的作用将越来越重要,也这种要求相比,我国大城市公共交通还有很大差距,主要表现为:为社会提供服务信息的水平低,只能是以经验为主的被动、滞后的实施服务,仍以人工作业为主。上述问题显然不利于公交对乘客的吸引,也
4、是导致公交运营组织模式落后、调度方式原始陈旧、企业管理效率不高的重要原因。因此,如何提高公交系统的服务质量,是现行公交行业急需解决的问题。我国智能运输的基础较差,因此理论研究虽在进行,但相应技术却得不到推广,在实际生活中得不到应用,达不到广泛服务社会的目的。所以发展一种自动报站系统,提高公交服务质量就成为民用科技研究的一个项目。目前在国际上已经实现了DPS定位车载智能系统,在国内的几个大城市也都有使用,实现了公交系统的全面监控和调度。公交车自动报站系统的研究也达到了无线联络,全自动报站的水平。但一般其经济投入较高。结合我国现有的公交系统现状,半自动化报站系统还有很大的应用空间。适用于一些中小城
5、市。1.3 课题研究的意义在公交车上,经常有误报站的现象,在早晚高峰期,公交车内拥挤,环境噪声大,语音报站往往听不清楚,影响报站,车箱内的喇叭分布不均匀也容易造成乘客听不清报站。而报站LED显示屏填补了语音报站的缺陷。在听不清报站的时候可以通过显示屏确认站点。而且LED显示屏的成本较低,适合在每个公交车上安装。1.4 课题任务及设计要求以单片机为核心,制作一个公交车自动报站系统。其必要的功能为:1:具有4个24*24的点阵汉字显示功能。2:功能上具有速度调整、显示控制按键和滚动控制按键。3:汉字用点阵显示,汉字显示模块采用24*24。4:在设计时应该充分考虑单片机的I/O口的扩展和单片机的存储
6、字库的问题。第2章 方案论证与方案选择 2.1 总体方案论证公交车LED显示屏电路大体上可以分成单片机本身的硬件电路、显示驱动电路和控制电路。控制电路部分包括一个51CUP和一些外围电路。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电源的一端接通)。另一方面,根据各行锁存的数据,确定相应的行驱动器是否将该列与电源的另一端接通。接通的行,就在该列该行
7、点燃相应的LED;未接通的行所对应的LED熄灭。可通过按键控制电路控制实现显示站名的移动/停止,开/关,速度的加减,下一个站名的功能。根据任务要求,该系统框图如图1所示。时钟电路复位电路单片机点阵显示器阴极驱动电路点阵显示器阳极驱动电路2424点阵LED显示屏按键控制电路图1 系统框图2.2 各方案选择与论证2.2.1单片机选择方案一: 采用通过SPCE061A单片机编写程序显示要求汉字。SPCE061A是凌阳科技公司umSPTM(microcontroller and signal processor)系列产品中的16位微控制芯片,内置32闪存,其较高的处理速度芯片能够非常容易、快速地处理复
8、杂的数字信号,适用于数字语音识别等领域。88双色LED点阵电路,用行驱动和列驱动可以亮点LED点阵模块。图中RCOL1ECOL8分别控制88LED的每一列显示成红色,成为红色LED的列驱动,低电平有效;而GCOL1GCOL8分别控制着88LED的每一列显示成绿色,成为绿色LED的列驱动,同样是低电平有效;COM1COM8使他们的数据口,当送入一个口高电平时,相应的LED被点亮,而当送入其中一个低电平时,相应的LED就会被熄灭,所以也成为行驱动。比如,当想要第一行(从下到上)的第一个LED显示成红色的时候,只需要送RCOL1一个低电平,而且送COM1一个高电平即可,也即选中红色的第一列(从右到左
9、),并给第一行(从下到上)送一个高电平,就可以使得第一行第一列(同前)的LED显示成红色。此方案也是有单片机直接驱动,性能稳定,驱动能力强,简单方便,但是由于我们系主要学习的是51系列单片机对于这一款新的单片机再去学习了解可能时间不够,故此方案也被放弃了。方案二:选用ATMEL公司的AT89C52单片机作为硬件电路的主控芯片,它是一个低电压,高性能CMOS 8位单片机,片内8K BYTES的可反复擦写的只读程序存储器和256 BYTES的随机存取数据存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置有8位中央处理器和FLASH存储器单元,功能强大
10、的AT89C52单片机可提供许多复杂系统控制应用场合。AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,因此单片机选择ATC89C52较为合适。2.2.2复位电路选择单片机刚上电时需要复位一次才能可靠工作,单片机有多种复位电路,本系统采用电平式开关复位和上电复位方式,当上电时,C1相当于短路,单片机复位,在正常工作时,按下复位键时单片机复位。复位电路如图2所示。图2 单片机复位电路2.2.3外部晶振选择AT89C52的内部有一个用于构成振荡器的高增益反相放大器。通过XTAL1,XTAL2外部接上一片作为反馈元件的晶体,与C1和C2构成了并联谐振电路,使其构成自激震荡器。电
11、容的值具有微调的作用,我们取33PF。具体的接法如图3外部晶振电路所示。图3 外部晶振电路2.2.4显示屏模块选择我们知道的用来显示的器件很多,比如数码管、LCD、点阵式LED。数码管只能显示数字,LCD可以显示汉字、符号、数字和图形。虽然LCD的显示效果要比LED好,显示电路也比较简单,因为很大一部分已经集成化,但是它的价格比较高,也不容易采购。所以综合考虑生产成本,本系统采用点阵式LED显示。它具有一下特点:1、价格比较便宜;2、容易扩展显示比较多的汉字;3、显示汉字效果好,广泛用于广告显示屏,交通屏幕。通常情况下,点阵式LED显示屏是由标准的LED显示模块组成的。HS 1088BS点阵式
12、LED显示模块是8行8列64个LED组成。单块点阵式LED显示模块能够显示各种字母,数字和常用的符号。点阵式LED显示模块在8行8列的每一个交点上装有一个LED。模块有共阳极和共阴极之分。LED的正极接行引线,负极接列引线的称为共阳极LED显示模块,反之为共阴极LED显示模块。方案一:采用9块88点阵LED显示屏相连接构成一块2424点阵LED显示屏,9块点阵屏连接起来面积较大,且需多根导线将其焊接,但是这种方案制作的显示屏的大小、形状没有限制,可以任意制作,现在制作的LED显示屏都是用此方法。 方案二:采用2424点阵LED显示屏,2424点阵屏的功能与9块88点阵屏构成2424点阵屏功能相
13、同,但是更为美观小巧美观,且单块2424点阵屏和9块88点阵屏价格相等。但市面上几乎没有2424点阵LED显示屏,都是由88点阵连接而成。故本设计采用方案一。2.2.5 驱动显示模块选择LED显示的三种方式:1、 占空比控制驱动:减少驱动电路。在需要进行灰度级控制显示的情况下要求随时调整占空比使LED达到响应的发光程度。2、 组合驱动:按照行列进行驱动。3、 扫描驱动:所谓脉冲驱动方式,就是利用人眼的视觉暂留效应,以脉冲的方式对LED器件进行供电,使之间歇性点亮。采用这种驱动方式需要对以下两个方面进行考虑:脉冲电流的幅值和其重复频率。首先,脉冲电流幅值的选择,当脉冲驱动的平均值与直流驱动的电流
14、值相等时,我们人眼的感觉就是相同的,也就是说两者的发光强度相当。扫描驱动是通过数字逻辑电路,使若干个LED器件轮流导通,用以节省控制驱动电路。LED显示屏是将发光灯按行按列布置的,驱动时也就按行按列驱动。在扫描方式下进行扫描:(1) 按列控制也叫可按列扫描,按行控制。所谓“扫描”的含义,就是指一行一行地循环接通整行的LED器件,而不问这一行的哪一列的LED器件是否应该点亮,某一列的LED器件是否应该点亮,由所谓的列控制电路来负责。(2) 按行扫描按列控制的方式。一个m行n列结构的LED显示屏,当采用行扫描列控制的驱动方式时,从H1到Hm轮流将高电位接通各行线,使连接到各行的LED器件接通正电源
15、,但具体哪一个LED导通,还是看它的负电源是否接通,这就是列控制所要完成的工作。根据驱动方式的不同,LED大屏幕显示方式可分为静态显示和动态扫描显示。方案一:采用静态锁存方式,从理论上说,不论显示图形还是文字,只要控制这些组成图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。2424的点阵共有576个发光二极管,显然单片机没有这么多端口,如果采用锁存器来扩展端口,按8位的锁存器来计算,2424的点阵需要576/8=72个锁存器。这个数字很大,因为仅仅是2424的点阵,在实际应用中的显示屏往往要大的多,这样在锁存
16、器上花的成本将是一个很大的数字。这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但此种方法太浪费单片机的I/O口,只适合于较小的系统。因此采用另一种称为动态扫描的显示方法。方案二:采用动态扫描方式,动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如24行)的同名列共用一套列驱动器。具体就由9块88组成的2424的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起,先送出对应第一列发光管亮灭的数据并锁存,然后选通第一列使其点亮一定的时间,然后熄灭;再送出第二列的数据并锁存,然后选通第二列使
17、其点亮相同的时间,然后熄灭; 第二十四列之后又重新点亮第一列,这样反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,只要刷新速率不小于25帧/秒,就不会有闪烁感,我们就能看到显示屏上稳定的图形了。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。故采用本设计方案。2.2.5行驱动模块选择采用动态扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一列中各行的数据都传送到相应的行驱动器上去,这就存在一个显示数据传输的问题。从控制电路到行驱动器的数据传输可以采用并行
18、方式或串行方式。采用串行传输的方法,控制电路可以只用一根信号线,将行数据一位一位传往行驱动器,在硬件方面无疑是十分经济的。故选择串行传输。但是,串行传输过程较长,数据按顺序一位一位地输出给行驱动器,只有当一列的各行数据都已传输到位之后,这一列的各行才能并行地进行显示。这样,对于一列的显示过程就可以分解成行数据准备(传输)和列数据显示两个部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以至影响到LED的亮度。解决串行传输中行数据准备和行数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本列各行数据的同时,传送下一列的行数据。为了达到
19、重叠处理的目的,行数据的显示就需要具有锁存功能。经过上述分析,可以归纳出行驱动器电路应具备的主要功能。对于行数据准备来说,它应能实现串入并出的移位功能;对于列行数据显示来说,应具有并行锁存的功能。这样,本列已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一列的列数据,而不会影响本行的显示。选用行驱动模块主要有两种方案:方案一:74ls164是8位串行输入转并行输出移位寄存器。74ls164的驱动电流(25mA)比74HC595(35mA)的要小,14脚封装,体积也要小一些,但74ls164只有数据清零端,不容易控制。方案二:由74HC595构成,74HC595是具有一个8位串
20、入并出的移位寄存器和一个8位输出锁存器的结构,与74ls164只有数据清零端相比,74HC595还多有使能输出控制端,可以使输出为高阻态,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,达到重叠处理的目的。由于有24个行线,需要3块74HC595串联起来。故采用方案二。第3章 系统硬件电路的设计 3.1 硬件电路设计本电路是由AT89C52单片机为控制核心;采用普通晶体时钟源,其中晶体用12MHZ的石英晶振;复位电路结合实际应用功能的实现,采用上电复位和电平式开关复位方式;显示部分由2424点阵LED显示屏显示;行驱动电路采用74HC595,
21、列驱动电路采用74LS138。3.2 各单元电路说明3.2.1 单片机主控模块设计1. AT89C52单片机介绍AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有8K bytes的可反复擦写的只读程序存储器和256的随机存取数据存储器,器件采用AEMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。图4为AT89C52外部封装。图4 AT89C52封装AT89C52单片机为40引脚双列直插芯片,有32个外部双向输入/输出端口,同时内含2个外中
22、断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和FLASH存储器结合到一起,特别是可反复擦写的FLASH存储器可有效地降低开发成本。ALE/PROG端除输出地址锁存允许脉冲外,在编程期间还作为编程脉冲输入端,参与控制对FLASH存储器的读,写,加密,擦除等操作。而EA/VPP端在寻址片内8KB FLASH程序存储器时,必须连到VCC,如果将此端连到GND端,将迫使单片机寻址外部0000H-1FFFH范围的程序存储器。如果加密位被编程了,AT89C52的CPU将对EA的状态进行采样并锁存,EA的状态
23、不得与实际使用的内部或外部程序存储器的状态发生矛盾。AT89C52振荡器特性为:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 此外,AT89C52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,停止芯片其它功能直至
24、硬件复位,直到下一个硬件复位为止。2单片机复位电路复位电路有硬件和软件两种,复位的作用是使程序自动从0000H开始执行,因此我们只要在AT89C52单片机的RESET端加上一个高电平信号,并持续10ms以上即可,RESET端接有一个上电复位电路,它是由一个小的点解电容和一个接地的电阻组成的。人工复位电路另外采用一个按钮来给RESET端加上高电平信号。如图5所示人工复位电路。图5 人工复位电路我们采用放电型人工复位电路,如图所示,上电时C通过R充电维持宽度大于10ms的正脉冲,完成上复位功能。C充电结束后,RESET端将出现低电平CPU工作。在此我们取了典型值R=10K,R1=1K,C=10uf
25、。上电复位实现的时间:T=R*C=10K*10UF=100ms=10ms。需要人工复位时,按下按钮K,C通过K和R1放电,RESET端电位上升到高电平,实现人工复位,K松开后C重新充电,充电结束后,CPU重新工作,R1是限流电阻,阻值不可以放大,否则不能起到复位作用。3. 时钟电路单片机的时钟电路如下图所示,单片机18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。如图6所示。图6 单片机时钟电路3.2.2行数据传输电路的设计行数据传输电路由3个集成电路74HC595串联
26、构成,74HC595的外形及内部结构如图7所示。74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准。74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp的上升沿输入,在STcp的上升沿进入到存储寄存器中去,下降沿时存储器数据不变。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。图7 74HC595外形及内部结
27、构通常将OE置为低电平,当移位结束后,在OE端产生一个正脉冲(5V时,大于几十纳秒就行了,通常都选微秒级),更新显示数据;OE(13脚)指高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭的效果,这样比通过数据端移位控制要省事省力。然后用三片74HC595串联起来组成行数据传输端,如图8所示。通过数据端和时钟端把数据传输到移位寄存器。图8 74HC595串联电路3.2.3列控制电路列控制器件74LS138是3-8译码器,它具有三个使能端,只有当使能端S1为高电平,而S2与S3之和为低电平时,才能正常工作,输出端低电平有效。74LS138管脚图如9所示
28、。图9 74LS138管脚图此列控制电路采用三片138和每个输出端串联一个1k的电阻起限流的作用,然后与P1口相连接作为显示屏的列选择线。ABC为译码器数据输出端,E1、E2、E3为片使能端。当E1为高电平,E2、E3为低电平时第一片译码器使能可控制(COL0COL7)列,以此类推选择列。74LS138电路连接如图10所示。图10 74LS138管脚分配连接图3.2.4点阵组合电路的设计1.LED点阵屏简介LED电子显示屏是由几万几十万个半导体发光二极管像素点均匀排列组成。利用不同的材料可以制造不同色彩的LED像素点。目前应用最广的是红色、绿色、黄色。而蓝色和纯绿色LED的开发已经达到了应用阶
29、段。88单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。本设计是一种实用的汉字显示屏的制作,制作的是单色点阵。考虑到元器件的易购性,使用9块88的点阵发光二极管模块,组成了24行24列的发光点阵。实际使用时可以根据这个原理自行扩充显示的字数。88点阵外观及引脚如图11所示。 图11 88点阵外观及引脚图 2. 点阵组合电路设计2424点阵LED显示屏由9块88点阵组成组成,此点阵是按共阴极式组合,控制列选端低电平有效。Row0Row23为行数据端,COL0COL16为列控制端,管脚分配方式如图11所示。图11 点阵管脚分配连接图3.2.5按键电路的设计键盘实际上是一
30、组按键开关的集合,控制CPU通过按键来识别特定的用户命令,从而转入相应的程序来执行用户命令。键盘的软硬件的设计涉及下面几个方面的问题:对于此设计来说我们要准确的显示我们所要对应的信息,每按下一次按键要显示所要显示的信息。这按键是主要用来报站而设计的。这样比键盘操作方便,也比较实惠。按键电路采用中断模式。当有按键按下时,系统产生中断,CPU响应中断。图12是单片机的I/O口连接电路,P1口作为连接74LS138的片选使能和译码数据端,P0作为连接74HC595的时钟端、数据端、清零端、使能端的分配。按键用P2口的P2.0、P2.1、P2.2、P2.3分别控制点阵屏移动/停止,开/关,速度的加减,
31、下一个站名的功能。单片机和按键连接电路,如图12所示。图12 单片机和按键连接电路图第4章 系统软件的设计 4.1 点阵显示原理4.1.1 2424点阵LED基本显示原理LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。2424点阵屏由9块88点阵LED显示屏组成,把9块88点阵LED显示屏所有同一行(同名行)的发光管的阳极连在一起,把所有同一列(同名列)的发光管的阴极连在一起,先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭
32、;.第24行之后,又重新燃亮第1行,反复轮回。由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,且节省单片机的资源。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。
33、即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。LED点阵显示模块进行的方式有两种:(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。能亮的列从左到右扫描完24列(相当于位码循环移动24次)即显示出一个完整的图像。(2)竖直方向(Y方向)扫描,
34、即逐行扫描方式(简称行扫描方式):此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上向下扫描完24行(相当于位码循环移位24次)即显示一帧完整的图像。本设计应用的是第二种的扫描方法,即竖直方向(Y方向)扫描。 在UCDOS中文宋体字库中,每一个字由24行24列的点阵组成显示,如图4.1所示。如果用 8位我们以UCDOS中文宋体字库为例,每一个字由24行24列的点阵组成显示。即国标汉字库中的每一个字均由576点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一
35、幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在576像素范围内的任何图形。我们以显示汉字的89C51单片机控制,由于单片机的总线为8位一个字需要拆分为3个部分。 一般我们把它拆分为左边、中间、右边,左边由248点阵组成,中间由248点阵组成,右边也由248点阵组成。 在本例中单片机首先显示的是左边的第一列左上部分,即第一列的A-H口。方向为A到H ,显示汉字“沈”时,如图4.1所示。AH全是灭的。即二进制转换为16进制为00H.。 左边第一列AH完成后,继续扫描左边的第一列,即从I向P方向扫描,从上图可以看出,为I灭,J灭, K灭, L灭, M灭, N灭,O灭, P灭。即二进制转换为1
36、6进制为00H。接着再显示左边部分的第一列的QX,从图上可以看出QX都为灭,即二进制转换为16进制为00H。先左边,再中间,最后是右边部分,依次类推,如图13。按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“沈”,它的扫描代码为:00H,00H,00H,00H,80H,00H,00H,40H,40H,10H,70H,FEH;18H,03H,E0H,0CH,3CH,00H,01H,C0H,02H,00H,00H,04H;00H,80H,08H,07H,80H,18H,02H,00H;30H,02H,00H,C0H;02H,07H,80H,3FH,FEH,00H,3FH,1FH
37、,F8H,02H,1FH,FCH;02H,00H,04H,02H,00H,04H,02H,00H,04H,03H,80H,04H;03H,00H,04H,00H;00H,7CH,00H,00H,04H,00H,00H,00H;竖直方向扫描图13 2424点阵显示字体4.1.2 2424点阵LED显示屏左跑马显示原理如果要在2424点阵屏以左跑马的方式显示以字体,则需以以下方式进行显示。在2424点阵屏中,我们可以把点阵屏看成24列LED组成,且每列有24个LED灯。在本例中单片机首先将第二列的显示信息给第一列,使第一行显示图像变成第二行所要显示的。以“沈”字为例,原第一列由上到下排列,为1灭,
38、2灭,3灭,4灭,5灭,6灭,7灭,8灭,9灭,10灭,11灭,12灭,13灭,14灭,15灭,16灭,18灭,19灭,20灭,21灭,22灭,23灭,24灭。原第二列由上到下排列,为1灭,2灭,3灭,4灭,5灭,7灭,8灭,9灭,10亮,11-24灭。单片机将第二列信息给第一列取代第一行原信息,故第一列由上到下排列,为1-9灭,10亮,11-24灭。接着将第一列的信息给第二十四列,第三列的信息给第二列,第四列的信息给第三列,依此类推,如图14所示。按照这个方法,继续进行下面的扫描。最终点阵屏在视觉上的显示效果是“沈”字慢慢向左边移动,如图15所示。 图14 左跑马原理 图15 左跑马后显示图
39、像4.2 系统软件实现本程序主要由主程序与清屏、查表、送数、循环扫描、延时几个部分组成。在主程序中使用DPTR地址寄存器作为地址取码指针,通过查表将数据送行线作控制信号,而通过138连接的列线作扫描控制开关。主程序图如图16所示。系统初始化开始数据清零、显示字数,赋字模初地址判断按键和按键处理片选和列控制字赋初值调行数据传送子程序扫描列使能延时子程序八列扫描完N取下一帧首地址字模地址改变24列扫描和数据传输完扫描次数到显示字数到YNNNYYY图16 主流程序图4.2.1 行数据传输子程序设计DPTR置数据表地址的基值,R2作地址指针,以两者之和查找相应的数据,R2的初值为0,当DPTR为表首地
40、址时,在子程序的循环中R2从0加到3,取出显示一列字符的全部字节并与列扫描配合逐列显示,完成一帧扫描的全部操作。为保证第一屏能移动显示,该设计将数据表的最前一屏用了0数据,开始以黑屏显示完成全部的扫描显示。帧扫描子程序流程图如图17所示。行数据传送子程序595呈现高电平,设传送字节数取当前一个字节位传送8位传送完传送字节完取码指针加一595管脚输出数据子程序返回YYNN图17 帧扫描子程序流程图4.2.2 单片机延时子程序延时程序在单片机编程中使用非常广泛,也很重要,在本毕业设计的程序中用到了延时子程序,所以在此详细的叙述一下。在弄清延时程序指令的用法之前,要清楚的了解延时程序的基本概念,机器
41、周期和指令周期的区别和联系、相关指令的用法等。 我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。例如在本设计中,列向的扫描要控制每列的扫描时间,还有所有的字移动有一定的时间间隔,而在所有的字移动一遍结束的一瞬间到下一遍移动开始的一瞬间要有延时,这时的延时可以和移动的时间相同以保持移动的连贯性,也可以不同作为每次从头开始的停顿,在上述就可以通过延时程序来完成。1. 延时指令 在单片机编程里面并没有真正的延时指令,从上面的概念中我们知道单片机每执行一条指令都需要一定的时间,所以要达到延时的效果,只须让单片机不断地执行没有具体实际意义的指令,从而达到了延时 的效果
42、。 (1)数据传送指令 MOV 数据传送指令功能是将数据从一个地方复制、拷贝到另一个地方。 如:MOV R7,#80H ;将数据80H 送到寄存器R7,这时寄存器R7 里面存放着80H,就单这条 指令而言并没有任何实际意义,而执行该指令则需要一个机器周期。 (2)空操作指令 NOP 空操作指令功能只是让单片机执行没有意义的操作,消耗一个机器周期。 (3)循环转移指令 DJNZ 循环转移指令功能是将第一个数进行减1 并判断是否为0,不为0 则转移到指定地点;为0 则往下执行。 循环转移指令(DJNZ )除了可以给定地址标号让其跳转外,还可以将地址标号改成$,这样 程序就跳回本指令执行。例如: D
43、JNZ R7,$ ;R7 内容减1 不为0,则再次执行本指令;为0 则往下执行,当R7 的值改为10 时,则执行完该条程序所需的时间为2*10=20 s。利用以上三条指令的组合就可以比较精确地编写出所需要的延时程序。下面是本设计的程序中延时程序的计算: 机器周期:MS: MOV R6,#5; 1 DELAY: MOV R7,#190; 1 DJNZR7,$; 2*R7 DJNZR6,DELAY; 2*R6+(1+2*R7)*R6 RET 2上面这个子程序共有四条指令,现在分别就每一条指令 被执行的次数和所耗时间进行分析。 第一句:MOV R6,#5 在整个子程序中只被执行一次,且为单周期指令,
44、所以耗时1s 第二句:MOV R7,#190 从看到只要R6-1不为0,就会返回到这句,共执行了R6次,共耗时190s 第三句:DJNZ R5,F1 只要R5-1不为0,就反复执行此句(内循环R7次),又受外循环R6控制,所以共执行R6*R7次,因是双周期指令,所以耗时2*R6*R7s。所以精确延时时间为:1+(15)+(21905)+(25)+2 =(2*190+3)*5+3 =1918s 2ms 4.2.3 按键控制子程序1.按键程序设计本次设计中按键控制电路共有4个按键,分别控制点阵屏移动/停止,开/关,速度的加减,下一个站名的功能。根据硬件电路,当按键没有按下时,接按键的单片机接口处于
45、高电平状态。当按下时,接口处于低电平状态,松开时又恢复到高电平状态。所以根据硬件情况在本程序中的按键程序中有两句是相同的,如下:JIAN:JB KEY3,Q_OUT JNB KEY3,$ 第一句意思是KEY3为高电平,程序直接跳转到 Q_OUT第二句意思是KEY3为低电平时,继续执行本条语句,直到按键释放。2.按键四的程序设计按键四实现的主要功能是当按键第一次按下后,LED显示屏将显示下一个站名,再按一下是,LED显示屏将显示下一个站名,由于设计中运用的主芯片是AT89C51,它的内存有限,所以本次设计中共存有四个四字站名。当按第四次时,又恢复到第一个站名,接着依次类推,是一个循环的过程。以下
46、是按键四的子程序。NEXT4: CPL 0BHNEXT: JB KEY4,JIANJNB KEY4,$CPL 0DHNEXT1:JB 0DH , NEXT2 JNB 0BH, NEXT4 MOV DPTR,#TAB2CPL 0BHAJMP JIANNEXT2: JB 0CH ,NEXT3 MOV DPTR,#TAB1CPL 0CHAJMP JIANNEXT3:MOV DPTR,#TAB3 CPL0CHJIAN:进入到按键四子程序后,首先判断按键四是否被按下,没有按下则直接跳到JIAN程序,即跳出按键四子程序,如果按下将标志位0DH取反(0BH,0CH,0DH为标志位,起始位低电平),进入到程序NEXT1,判断0DH是否为1,若为1跳到程序NEXT2,再判断0CH是否为零,将表TAB1的地址赋予DPTR,再将0CH取反,跳到JIAN,即结束按键四的子程序。以上是按键四按第一次使得程序原理,按第二、三、四原