1.6 8051单片机输入输出口
8051有4组8位1/0口:P0, P1,P2和P3口,P1、P2和P3为准双向口,PO口则为双向三态输入输出口,下面分别介绍这几个口线:
PO口和P2口:PO口和P2口电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/0扩展口,而不能像Pl、P3直接用作输出口。它们一起可以作为外部地址总线,PO口身兼两职,既可作为地址总线,也可作为数据总线
[5][7]
。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15。 PO口由ALE选通作为地址总线的低8位输出ABO-AB7。外部的程序存储器由PSEA信号选通,数据存储器则由WR和RD读写信号选通, 8051最大可外接64kB的程序存储器和数据存储器。
P1口:P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,内上拉电阻将电位拉至“1”,此时该口输出为1,当0写入锁存器,Q(非)=1,输出则为0。
作为输入口时,锁存器置l, Q(非)=0,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,P1口常称为准双向口。需要说明的是,作为输入口使用时,有两种情况,其一是:首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读一修改一写操作,像JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。其二是:读P1口线状态时,打开三态门G2,将外部状态读入CPU。
P3口:P3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况,分别加以说明。P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出端口,同样具有字节操作和位操作两种方
式,在位操作模式下,每一位均可定义为输入或输出。着重讨论P3口的第二功能,P3口的第二功能各管脚定义如下:
P3.0 串行输入口(RXD) P3.1 串行输出口((TXD) P3.2 外中断0 (INTO) P3.3 外中断1(INT1)
P3.4 定时/计数器0的外部输入口(TO) P3.5 定时/计数器1的外部输入口(T1) P3.6 外部数据存储器写选通(WR) P3.7 外部数据存储器读选通(RD)
第二功能为输出引脚,当作I/0口使用时,第二功能信号线应保持高电平与非门开通,以维持从锁存器到输出口数据输出通路畅通。当作第二功能口线用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。而作为I/0口线输入端时,取自三态缓冲器的输出端。这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。
1.7 8051单片机的指令时序
时序是用定时单位来描述的,8051的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来分别加以说明。
节拍与状态:把振荡脉冲的周期定义为节拍 (为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍定义为1(P) ,后半周期对应的节拍定义为2(P)。机器周期:
8051有固定的机器周期,规定一个机器周期有6个状态,分别表示S1-S6。
而一个状态包含两个节拍,那么一个机器周期就有12个节拍,可以记着SIP2,SIP2...... S6P1, S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHZ的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是lus。
指令周期:执行一条指令所需要的时间称为指令周期,8051的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期。
8051的指令时序:8051指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:单字节指令单机器周期;单字节指令双机器周期;双字节指令单机器周期;双字节指令双机器周期;三字节指令双机器周期;单字节指令四机器周期(如单字节的乘除法指令)。
单字节单周期指令:单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,读出的还是原指令,属于一次无效的读操作。
双字节单周期指令:这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
单字节双周期指令:两个机器周期需进行四次读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
单字节双周期指令有一种特殊的情况,像MOVX这类指令,执行这类指令时,先在ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
外部程序存储器(ROM)读时序: 8051外部程序存储器读时序图时PO口提供低8位地址,P2口提供高8位地址,S2结束前,PO口上的低8位地址是有效的,之后出现在PO口上的就不再是低8位的地址信号,而是指令数据信号。当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求在S2期间必须把低8位的地址信号锁存起来,这时是用ALE选通脉冲去控制锁存器把低8位地址予以锁存,P2口只输出地址信号,而没有指令数据
信号。整个机器周期地址信号都是有效的,因而无需锁存地址信号。
从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ALE信号,还有一个PSEN(外部ROM读选通脉冲)。PSEN开始有效,直到将地址信号送出和外部程序存储器的数据读入CPU后方才失效,接着从S4P2开始执行第二个读指令操作。
外部数据存储器(RAM)读时序: 从ROM中读取需执行的指令,而CPU对外部数据存储的访问是对RAM进行数据的读或写操作,属于指令的执行周期,读或写是两个不同的机器周期,但他们的时序却是相似的,只对RAM的读时序进行分析。
上一个机器周期是取指阶段,是从ROM中读取指令数据,接着的下个周期才开始读取外部数据存储器RAM中的内容。在S4结束后,先把需读取RAM中的地址放到总线上,包括PO口上的低8位地址AO-A7和P2口上的高8位地址A8-A15。当RD选通脉冲有效时,将RAM的数据通过PO数据总线读进CPU。第二个机器周期的ALE信号仍然出现,进行一次外部ROM的读操作,但是这一次的读操作属于无效操作。
对外部RAM进行写操作时,CPU输出的则是WR(写选通信号),将数据通过P0数据总线写入外部存储中。
2 方案设计
从前两节的论述中可以看出LED点阵显示技术已经相当成熟。实现方案非常多。本文要设计的是客车内LED点阵显示屏,根据客车内的特殊环境,选择方案时就要考虑公交车的车身尺寸、震动、温度等对显示屏的影响,以及客车内电源的局限性,为了节约电能,采用太阳能电池供电,就要使显示屏功耗降到最低。
2.1 显示方案
根据论文的设计要求,本文提出了以下几种方案,对比论证,选取较合适的方案。
(1)CRT监视器设计方案:在站牌出安装一小型彩色监视屏,将站点信息显示在CRT监视器上,供行人查阅。站点信息放在存储器内,通过无线广播的方式进行数据更新。这种方案的优点:是成本比较低,可以采用淘汰下来的电视机作为监视器;缺点是:耗电量巨大, CRT显示器在阳光下的显示效果不理想。
(2)LED点阵显示屏设计方案:整个站牌由LED显示屏构成,站点信息在点阵屏幕上显示,并且可以以静态的方式固定显示站点或者以动态的方式轮流显示所有的站点。系统通过RS485或者互联网进行更新、升级。这种方案的优点是:成本相对比较低廉,能及时动态的显示站点信息,显示的信息容量也比较大,便于远程控制和升级。缺点是:受目前LED显
示技术的限制,对于图像和视频显示的效果不是很理想。
(3)液晶显示器(或者等离子)设计方案:由液晶(等离子)显示器构成站牌,不但能显示站点信息,还可以显示图象或者视频信息,站点信息经过专用电缆或者互联网络传送。这种方案的优点是能在有限的站牌上显示更多的信息,尤其是图像和视频信息,缺点是成本太高,数据传输量巨大,不适合推广使用。
通过比较上述三种方案,可以发现LED点阵显示方案有很大的可行性,而且其系统的升级也比较方便,便于推广使用,适应现代化建设的发展需求。
2.2 控制电路方案
控制电路有两种选择,数字电路控制和CPLD控制。
数字电路控制的原理是LED点阵显示屏由单片机控制电路和显示驱动电路两大部分组成,一般的单片机控制部分采用ATMEL公司的51系列单片机,考虑到它的ROM相对较小,这里采用增强型的51单片机STC89C516RD+(宏晶科技)单片机,显示驱动部分由16片8×8 LED点阵模块和相应的驱动电路组成,位码扫描信号和段码信号都有单片机提供。 由CPLD器件组成的控制电路,具有很高的可靠性和设计灵活性,所实现的显示效果样式较多,但采用可编程逻辑器件CPLD的设计成本相对较高。 由于采用由单片机组成的控制电路已能完成设计的要求,且其性价比要优于采用由CPLD组成的控制电路。因此,本文采用前者作为控制电路。
2.3 系统框图
整个系统由两大模块组成:主控制单元和辅助控制单元模块。其框图如下所示。
主控制单元结构框图
为主控制单元结构框图,它主要完成的功能是LED点阵的显示和定时显示控制。DS1302为时钟芯片,为显示准确的时间; DS18B02是温度控制芯片,显示车内的温度;AT24C256是容量为256Kbit的E2ROM,用来保存扫描方式的数据的信息,以及广告信息和更新广告信息等其它待显示的信息。RS232通信模块用来更新显示信息和升级系统。