与SED1520配合使用,以便扩展列驱动口数目。
2.1.3.3 SED1520指令与显示RAM结构
SED1520指令系统比较简单,共13条,除读状态指令、读显示RAM数据指令外,其他指令均为写操作,并且读写指令均为单字节指令。在送出每条指令时,必须进行控制器状态检测,状态字节的含义如下: D7:1/0,模块忙/准备就绪; D5:1/0,模块显示关/开; D4:1/0,模块复位/正常; D3-D0:未用;
在指令使用中,关键要分清显示行、列设置和显示页面设置的关系。单片SED1520可驱动61×16液晶屏,其部显示RAM相对于COM0每8行为一个显示页面。本设计所用的字符液晶模块由两块SED1520级联驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520。这样两片SED1520级联可驱动122×32图形点阵液晶显示屏,可完成图形显示,也可显示七个半(16×16点阵)汉字。
图2.1.3.3-1 图形点阵液晶显示屏
2.2 设计方法
2.2.1 51单片机定时器/计数器的基本结构及工作原理
单片机部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。
. . .
2.2.1.1 定时器/计数器的结构如下
图2.2.1.1-1 定时器/计数器的结构
从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
2.2.1.2 定时计数器的原理
16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率
?Hz?1/12?1us。10^6 fcount?1/12osc。如果晶振为12MHz,则计数周期为: T?1/?12?这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的
. . .
S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间在一个机器周期以上。
当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU 当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。
2.2.1.3 控制寄存器
定时器/计数器T0和T1有2个控制寄存器TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。 定时器/计数器方式寄存器TMOD
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。TMOD的格式如下图所示。
表2.2.1.3-1 TMOD的格式
D7 D6 D5 D4 D3 D2 D1 D0
GATE C\\T M1 M0 GATE C\\T M1 M0 控制定时器T1
控制定时器T0 GATE:门控位。GATE=0时,定时器由软件控制位TR0或TR1来控制启停。TRi位为1时,定时器启动开始工作;为0时定时器停止工作。
GATE=1时,定时器的启动停止由外部中断引脚和TRi位共同控制。只有当外部中断引脚INT0或INT1为高时,TR0或TR1置1才能启动定时器工作。
C\\T:功能选择位。当C\\T=0时设置为定时器工作模式;当C\\T=1时设置为计数器工作模式。
M1、M0:工作方式选择位。定时器\\计数器有4种工作方式,由M0、M1来定义:
. . .
表2.2.1.3-2 M1、M0定义
M0 M1 操作方式 功能说明 0 0 方式0 0 1 方式1 1 0 方式2 13位定时器\\计数器,TLi只用低5位 16位定时器\\计数器 自动重装初值的8位定时器\\计数器,THi的值在保持不变,TLi溢出时,THi的值自动装入TLi中。 1 1 方式3 仅适用于T0,T0分成2个独立的8位计数器;T1停止计数。
定时器/计数器方式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。复时,TMOD所有位均为0。
2.2.1.4 定时器/计数器控制寄存器TCON
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H~8FH,由于有位地址,十分便于进行位操作。 TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。
表2.2.1.4-1 定时器/计数器控制寄存器TCON
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H (位地址) TF1
各位定义如下:
TF1和TF0: 分别为定时器1和定时器0溢出标志。当计数器计满产生溢出时,由硬件
自动置“1”,并可申请中断。进入中断服务程序后,由硬件自动清零。
TR1和TR0: 定时器1和定时器0启动控制位。
IE1和IE0: 外部中断引脚INT0或INT1中断请求标志位。当外部中断源有请求时其
对应的中断标志位置“1”。其复位方式由触发方式来设置。
IT1和IT0: 为外部中断1和外部中断0的触发方式选择位。ITi设置为“0”时为电
平触发;设置为“1”时为边沿触发方式。
TR1 TF0 TR0 IE1 IT1 IE0 IT0 . . .
TCON中低4位与中断有关。由于TCON 是可以位寻址的,因而如果只是清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作。
2.2.1.5 定时器/计数器的初始化
由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤如下:
★ 确定工作方式(即对TMOD赋值);
★ 预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); ★ 根据需要开放定时器/计数器的中断(直接对IE位赋值);
★ 启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若
已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。
2.2.1.6 定时器/计数器的四种工作方式
定时器T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。通过对方式寄存器TMOD中M1、M2位的设置,可选择四种工作方式。 工作方式0
工作方式0是一个13位的定时/计数器,16位计数器只用了高8位THi和低5位(TLi的D4~D0位),TLi的高3位未用。 工作方式1
16位的定时/计数器,原理同工作方式0 工作方式2
自动重装计数器。16位计数器拆成两个8位计数器,低8位作计数器用,高8位用于保存计数初值。当低8位计数产生溢出时,将TFi位置1,同时又将保存在高8位中的计数初值重新装入低8位计数器中,又继续计数,循环重复不止。 工作方式3
方式3只适用定时器T0,T0在该模式下被拆成两个独立的8位计数器TH0和TL0。其中TL0使用原来T0的一些控制位和引脚,它们是:C/T,GATE,TR0,TF0和T0(P3.4)引脚INT0(P3.2)引脚。此方式下的TL0除作8位计数器外,其功能和操作与方式0,方式1完全相同,可作计数也可作定时用。
该方式下的TH0,此时只可作简单的部定时器功能。它借用原定时器1的控制位和
. . .