3 系统硬件设计
3.1.1 显示屏驱动显示电路
显示屏分成屏体和控制器两部分,屏体的主要部分是显示阵列以及有行列驱动电路。根据安装环境的空间以及考虑成本造价,决定使用多大尺寸的显示屏,从而决定了显示模块的数量,这里以8×8点阵为例,模块单位为256点阵,即需要16块点阵模块,如图4示。汉字一般是256点阵,那么该屏可以一次显示4个汉字。
采用扫描方式进行显示时,分成两步,对于每行有一个行驱动器,各行的同名列共用一个列驱动器,由单片机给出行选通信号,从第一行开始依次对各行进行扫描,对于列,根据各列所存数据,确定相应的列驱动器是否将该列与行接通,如果接通,那么该行该列的LED将亮,以同样方法进行显示全部各行都扫描一遍之后(一个扫描周期),再从第一行开始,进行下一个周期的扫描。只要一个扫描周期的时间比人眼1/25秒的滞留时间短,就不会感觉出闪烁现象。
显示数据从驱动芯片到显示模块是以并行方式传输的,但显示数据从单片机到驱动芯片是以串行方式传输的,由于串行传输的控制电路简单,设计容易,缺点是串行数据传输需要很长的时间,不过这可以由软件来弥补,也可考虑单片机的控制速度。
显示驱动电路由74HC595组成。74HC595输入端是8位串行移位寄存器,输出端是8位并行缓存器具有锁存功能。由于CLK、LOAD端相连,而数据线分开,这样在同一脉冲下,行列的数据可以同时进行传入,行列数据准备好后,启动LOAD信号使所有数据同时输出并锁存,这样的设计较之传统方法提高了4倍的速度,占用I/O口少,由于CLK, LOAD引线较长,为避免线间干扰,在驱动6片74Ls595之后再加驱动芯片74L5244以驱动下一级驱动电路。
行列扫描驱动相当于对发光管脉冲供电,要获得与直流驱动方式相当的发光强度,脉冲驱动电流的平均电流I1与直流电流I2相同,它们与脉冲电流幅值If的关系为If=Ton/Th,×I1是扫描周期,Ton是导通时间,占空比是1/16,扫描频率应大于24HZ,I取8mA,那么I=8×16=128mA,发光管压降取2V,那么每个发光管应串接50的电阻。行驱动最大瞬间电流能达到128×80=10.240A。
LED显示屏驱动电路的设计,与所用控制系统相配合,通常分为动态扫描型驱动及静态锁存型驱动二大类。以下就动态扫描型驱动电路的设计为例为进行分析:动态扫描型驱动方式是指显示屏上的4行、8行、16行等n行发光二极管共用一组列驱动寄存器,通过行驱动管的分时工作,使得每行LED的点亮时间占总时间的1/n,只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面。常规型驱动电路的设计一般是用串入并出的通用集成电路芯片如74HC595或MC14094等作为列数据锁存,以8050等小功率NPN三极管为行驱动,而以达林顿三极管如TIP127等作为行扫描管。如动态扫描型驱动方式是指显示屏上的4行、8行、16行等n行发光二极管共用一组列驱动寄存器,通过行驱动管的分时工作,使得每行LED的点亮时间占总时间的1/n,只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面。常规型驱动电路的设计一般是用串入并出的通用集成电路芯片如74HC595或MC14094等作为列数据锁存,以8050等小功率NPN三极管为列驱动,而以达林顿三极管如TIP127等作为行扫描管。如以单色点阵、16行×64列为一个基本单元,则需用8片74HC595、16个行扫描管,其工作原理为:将八片74HC595级连,共用一个串行时钟CLK及数据锁存信号STR。当第一行需要显示的数据经过8×8=64个CLK时钟后将全部移入74HC595中,此时产生一个数据锁存信号STR,使数据锁存在74HC595的后级锁存器中,同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行LED的正端都接高平,显然第一行LED管子的亮、灭取决于74HC595中所锁存的信号;在第一行LED管子点亮的同时,在74HC595中移入第二行需要显示的数据,随后将其锁存,并同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行LED管子点亮……以此类推,当第十六行扫描过后再回到第一行,只要扫描速度足够高,就可形成一幅完整的文字或图像,其工作时序见图4。
图3显示驱动电路
图4 串行移位工作时序图
3.1.2 显示屏主控制电路
在控制领域51系列、PIC系列以及AVR系列单片机是常用的微型控制器,每个系列都有自己的优缺点,在某些方面都有自己的长处。在具体的设计当中要综合考虑,如单片机的资源是否满足系统要求,系统是否有严格的速度要求,系统对控制器的抗干扰能力,硬件的加密性,外围电路是否简单,是否有比较齐全的成熟的开发、调试工具,如果要生产的话,则还要考虑价格和供货渠道等因素。
3.1.3 控制器的比较及选型
PIC系列单片机:PIC单片机采用精简指令使其执行效率大为提高。PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:1的代码压缩,速度提高4倍。PIC有优越开发环境。PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。自带看门狗定时器,可以用来提高程序运行的可靠性。
AVR系列单片机:是一种新型的单片机。运行速度快,一个时钟周期执行一条指令。硬件应用哈佛(Harvard)结构,具有预取指令功能,即在执行一条指令时,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。AVR单片机是多累加器型,数据处理速度快。超功能精简指令,具有32个通用工作寄存器,相当于有32条立交桥,可以快速通行。相当多的单片机只有一个累加器,就像一条独木桥,所有事都要通过累加器,速度慢。AVR单片机系列中有128B~4KB的SRAM静态随机数据存储器,可灵活使用指令运算、存放数据,中断响应速度快。AVR像8051一样,有多个固定中断向量入口地址,可快速响应中断。高级C语言编程效率高。从高级语言C代码完成同一任务实例来比较,8 MHz AVR单片机的速度相当于224 MHz的80C51单片机,AVR比80C51快28倍。AVR是低功耗单片机,具有休眠省电功能(Power Down)及闲置(Idle)低功耗功能。一般耗电在1~2.5 mA;对于典型功耗情况,WDT关闭时为100 nA,更适用于电池供电的应用设备。有的器件最低1.8 V即可工作。可多次烧写的Flash,且具有多重密码保护锁死(Lock)功能。I/O口功能强、驱动能力大,具有输入/输出、三态高阻输入,也可设定内部拉高电阻作输入端的功能,以便于应用到各种所需的场合(多功能I/O口)。
51系列单片机:51系列是指是兼容Intel公司51指令集的单片机系列的统名称。这种单片机所包括的硬件资源有: (1)一个8位的微处理器;
(2)片内数据存储器RAM,用以存放可以读/写的数据,如运算的中间结果、最终结果以欲显示的数据等;
(3)片内程序存储器ROM/EPROM,用以存放程序、一些原始数据和表格; (4)四个8位并行I/O接口P0~P3,每个口可以用作输入,也可以用作输出;
(5)两个(或三个)定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制; (6)五(或六个)个中断源的中断控制系统;
(7)一个全双工UART接口(通用异步接收发送器)的串行I/O,用于实现单片机之间或单片机与微机之间的串行通信;
(8)片内振荡器和时钟产生电路,但石英晶体和微调电容须要外接。可以看出MCS-51系列单片机也是一款功能强大的单片机。
STC89C51RC/RD+系列单片机是宏晶科技推出的新一代超强抗干扰/ 高速/ 低功耗的单片机,指令代码完全兼容传统 8051 单片机,12 时钟 / 机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。 特点如下:
(1).增强6时钟/机器周期,12时钟/机器周期8051CPU;
(2)工作电压:5.5V~3.4V(5V单片机)/3.8V~2.0V(3V单片机);
(3)工作频率范围:0~40MHz,相当于普通8051的0~80MHz实际工作频率可达48MHz; (4)用户应用程序空间4K/8K/13K/16K/20K/32K/64K字节; (5)片上集成1280字节/512字节RAM;
(6)通用I /O口(32/36个)复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8 051传统I /O口),P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I /O 口用时,需加上拉电阻; (7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真,可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片; (8)EEPROM功能; (9)看门狗;
(10)内部集成 MAX810 专用复位电路(D 版本才有),外部晶体 20M 以下时,可省外部复位电路;
(11)共3 个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用;
(12)外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒;
(13)通用异步串行口(UART),还可用定时器软件实现多个UART; (14)工作温度范围:0~75℃/-40~+85℃;
(15)封装:PDIP-40,PLCC-44,PQFP-44。 从以上几种型号单片机的比较中可以看出,PIC单片机、AVR单片机虽然在很多方面都有其特点,如在运行速度上,内部资源的配置等。但因其价格高,开发工具不及使用51系列单片机齐全,再考虑本系统对CPU的要求并不是很高,综合考虑还是选用已经普及的51内核的单片机。
3.1.4 EEPROM存储器的选用
为了能将系统所设定的常数,如更新的站点信息,设定的定时显示时间在系统掉电之后仍能恢复,在设计时必须考虑将常数保存起来。由于STC89C516RD+单片机片内没有EEPROM,须采用外部扩展方式。在系统的设计过程中,为了取得较大的系统余量,常采取存储芯片AT24C256,按照16×16的点阵来算,可以存储1000个字符,对于一个客车广告屏屏来说容量已经足够。
AT24C256接口采用I2C总线接口方式。I2C总线是一种用于IC器件之间连接的二线制总线。连接总线的器件的输出必须是集电极或漏极开路,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。它通过SDA(串行数据线)及SCL(串行时钟线)两根线和连在总线上的上位机进行通信,并根据地址识别每个器件。采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统既简单又灵活的扩展与控制。 表1 24C256的管脚介绍
3.1.5 控制单元和存储单元电路
用PC机实现的主要功能包括单片机显示子系统的(选择显示方式选择,包括静态、闪动、滚动、打字等),滚动方向选择(包括上下滚动和左右滚动),动态显示速度调节(即文字闪动频率、滚动速度、打字),显示速度等。显示采用定时器中断方式进行行扫描,每次中断显示一行,定时中断时间为1.25ms,这样整屏的刷新率为50Hz,因而无闪烁感。实现动态显示速度调节的方法通常是改变定时器的中断时间,但是当显示速度很慢的时候,该方法容易使整屏的刷新率降低,从而使显示内容出现闪烁。因此,本设计采用一种“软定时”方法,即在程序中命名一个变量作为“软定时器”,以用来设定两次动态显示的时间间隔。在对定时中断调用计数时,如果调用次数达到设定值,则改变显示内容。为保证能够正常显示,“软定时器”的设定值必须大于整屏显示周期。由于显示屏每行显示1.25ms,整屏显示周期为20ms,考虑到余量的情况,可将软定时器的设定值定在大于30ms。如此循环计数,即可实现动态显示。“软定时器”的设定值可以通过上位机PC机来改变,这样既可实现LED动态显示的速
度调节,又可保持显示内容的流畅和无闪烁感。
以上提到的静态、闪动、滚动和打字等4种显示方式,实际上是单片机定时中断程序进行行扫描处理的不同方法。下面将分别说明如何实现这4种显示方式。静态显示只需在定时中断处理程序中从显示缓冲区调入相应的一行显示数据,然后选中该行即可实现该行的显示,如此循环,便可显示整个内容。
闪动显示与此类似,不同的是要间隔一个“软定时器”的定时时间,在行扫描时,行移位寄存器的D端打入的数据全为0,可使得整屏不显示,以确保黑屏的时间与显示当然时间相等,从而实现汉字或图符的闪动显示。
滚动显示要求需要显示的内容每隔一定时间向指定方向这里以从右向左为例移动一列,这样显示屏可以显示更多的内容。为此,需要在下次移动显示之前对显示缓冲区的内容进行更改,从而完成相应点阵数据的移位操作。具体操作方法是:设置一个显示缓冲区,该区应包括两部分,一部分用来保存当前LED显示屏上显示的4个汉字点阵数据;另一部分为点阵数据预装载区,用来保存即将进入LED显示屏的1个汉字的点阵数据。滚动指针始终指向显示屏的最右边原点。当滚动指针移动到需要显示的点阵数据存储区的第1个汉字的首地址时,内容。需要注意的是,要确保该操作能在1.25ms的中断时间内完成(这里STC89C516RD+采用24MHz晶振实验证明可以实现该操作)。这样,在一个扫描周期后,整个汉字将左移一列,而显示缓冲区的内容也同时更改。由于预装载区保存了1个汉字点阵数据,即16×16点阵,所以当前显示缓冲区的内容只能移动16列。当下一个滚动到来时,滚动指针将移动到点阵数据存储区的下一个汉字的首地址,并在预装载区存入该汉字的点阵数据。然后重复执行上述操作便可实现滚动显示。特殊字符或图形的显示与此类似,这里不再赘述。打字显示要求汉字在显示屏上按从左到右的顺序一个个的出现,如同打字的效果。设计时可采用如下方法:首先将LED显示屏对应的显示缓冲区全部清零,即LED显示空白,然后每间隔一个“软定时器”设定的动态显示时间,显示缓冲区依次加入一个汉字点阵数据并进行扫描显示,这样就可达到打字显示的效果。
DS1302慢速充电时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月,月末的日期自动进行调整,还包括了闰年校正的功能。时钟的运行可以采用24小时或带AM(上午)/PM(下午)的12小时格式。使用同步串行通信,简化了DS1302与微处理器的通信。与时钟/RAM通信仅需三根线:(1)RST(复位)、(2)DO(数据线)和(3)SCLK(串行时钟)。数据可以以每次一个字节或多达31字节的多字节形式传送至时钟/RAM或从其中送出。DS 1302设计成能在非常低的功耗下工作,消耗小于1微瓦的功率便能保存数据和时钟信息。
传感器部分采用美国dallas半导体公司的DS18B20.温度测量范围为-55℃~+125℃,DS18B20是一种继DS1820之后新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测的温度。DS18B20是支持“一线总线”接口的温度传感器,对DS18B20读出或写入信息仅需要一条线路,因此电路连接简单,一条线上可同时扩展多个传感器,以增加测量的准确性,该传感器支持3.0V~5.5V的电压范围,可靠性高,体积小,更经济,更灵活。
3.1.6 远程通信电路
在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。
在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻 辑“1”,-5— -15V;逻辑“0” +5— +15V 。噪声容限为2V。即要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号作为逻辑“1”。RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在DCE端,插座在DTE端。一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%