图3-2 STC89C52管脚图
?
P3口:带内部上拉电阻的8位双向I/O,P3的输出缓冲级也可以驱动4个TTL逻辑门电路。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,还有第二功能,见表3-1所示: 表3-1 P3口的第二功能图
端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD<串行输入口) TXD<串行输出口) INT0<外中断0) INT1<外中断1)T0<定时/计时器0外部输入)T1<定时/计时器1外部输入)WR<外部数据存储器写选通)RD<外部数据存储器读选通) ?
RST:复位输入端口。当振荡器工作时,RST引脚出现两个以上高电平机器周期将使单片机复位。设置SFR
AUXR的DISRT0可打开或关闭该功能。DISRT0位缺省为打开状态。
?
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,所以它可用于定时,每当访问外部数据存储器时将跳过一个ALE脉冲。
?
EA/VPP:允许外部访问端口。欲使CPU仅访问外部程序存储器<地址为0000H—
FFFFH),EA端必须保持低电平。需要注意的是:如果加密位 Flash存储器编程时,该引脚加上+12V的变成电压Vpp. ? 7 / 32 PSEN:程序存储允许 ? XTAL1:振荡器反相放大器及内部时钟发生器的输入端口。 ? XTAL2:振荡器反相放大器的输出端口。 <2)STC89C52单片机与MCS-51完全兼容 ? 看门狗 和0E1H以激活WDT。WDT激活后,晶振工作,WDT在每个机器周期都会增加。除了复位<硬件复位或WDT溢出复位),无法停止WDT工作。当WDT溢出,它将驱动RSR引脚输出一个高电平。 ? 可编程串口 一样。STC89C52系列单片机的串行通信口可以工作于同步和异步通信方式,当工作于异步方式时,可以同时进行数据的发送和接收。串行口内的接收器采用的是双缓冲结构,可以在接收到的第一个字节被读走之前开始接收第二个字节。串行口的发送和接收操作都是在特殊功能寄存器中的数据缓冲寄存器SBUF中进行的,如果将数据写入SBUF,数据会被送入发送寄存器准备发送。如果执行SBUF指令,则读出的数据一定来自接收缓存器。因此,这2个寄存器的功能决不能混淆[11]。 ? 振荡电路:STC89C52系列单片机的内部振荡器,由一个单极反相器组成。XTAL2为反相器的输出,XTAL1反相器的输入。在组成一个单片机应用系统时,常采用的方式是由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。这种方式结构紧凑,成本低廉,可靠性高。在电路中,如果使用高质的晶振, C1、C2通常都选择30pF。 ? RAM:高于7FH内部数据存储器的地址是8位的,也就是说其地址空间只有256 8 / 32 字节,但内部RAM的寻址方式实际上可提供384字节。低于7fh的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,虽然高128字节区分于专用寄存器 ,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。访问哪一个区是通过不同的寻址方式加以区分的。 ? 定时/计数器:STC89C52单片机内含有2个16位的定时器/计数器。当用于定时器方式时,它的输入来自内部时钟发生电路,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是8位的,用于控制定时器的工作状态,方式寄存器也是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分[12]。 ? SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80H~FFH中。未被占用的单元,内容是不确定的。所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器ACC、B寄存器、堆栈指针SP、程序状态字寄存器PSW、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、捕捉寄存器、定时器寄存器、控制寄存器。 ? 中断系统:STC89C52单片机有6个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中CPU所执行的操作步骤如下: <1)完成当前指令的操作; <2)将PC内容压入堆栈; <3)保存当前的中断状态; <4)阻止同级的中断请求; <5)将中断程序入口地址送PC寄存器; <6)执行中断服务程序; 9 / 32 <7)返回<2)。 3.2.2 显示模块的设计 <1)LCD1602功能介绍 LCD1602各引脚功能如表3-2所示。 表3-2 LCD1602管脚功能表 <2)基本操作时序: LCD1602读写操作时序是直接记忆和总结读写时电平高低和变化,下面就列出典型读写的时序要求,以方便编写程序[13]。 读状态--输入:RS=L,R/W=H,E=H 输出:D0-D7=状态字 写指令--输入:RS=L,R/W=L,D0-D7=指令码,E=高脉冲输出:无 读数据--输入:RS=H,R/W=H,E=H 输出:D0-D7=数据 写数据--输入:RS=H,R/W=L,D0-D7=数据,E=高脉冲输出:无 <3)状态字说明: 表3-3 状态字表 对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0。 <4)指令说明: 表3-4 显示模式设置表 10 / 32 表3-5 显示开/关及背光灯设置表 <5)数据控制 控制器内部有一个数据地址指针,用户可通过它们访问内部的全部80字节RAM[15]。 <6)数据指针设置 表3-6 数据指针设置表 <7)其他设置 表3-7 其他设置指令表 <8)LCD1602初始化过程 a、延时15ms。 b、写指令38H(不检测忙信号>。 c、延时5ms。 11 / 32