2.2.9 AT89S51功能特点介绍 (1)主要性能参数:
1与 MCS-51 产品指令系统完全兼容 ○
24k字节在线系统编程(ISP)Flash 闪速存储器 ○
31000次擦写周期 ○
44.0-5.5V 的工作电压范围 ○
5全静态工作模式:0Hz-33MHz ○
6三级程序加密锁 ○
7128×8字节内部RAM ○
832个可编程I/O口线 ○
92个16位定时/计数器 ○
106个中断源 ○
11全双工串行UART通道 ○
12低功耗空闲和掉电模式 ○
13看门狗(WDT)及双数据指针 ○
14掉电标识和快速编程特性 ○
15灵活的在线系统编程(ISP字节或页写模式) ○
(2)串行编程指令设置:
串行编程指令设置为一个4字节协议。 (3)并行编程接口:
采用控制信号的正确组合可对Flash闪速存储阵列中的每一代码字节进行写入和存储器的整片擦除,写操作周期是自身定时的,初始化后,它将自动定时到操作完成。 (4)功能特性概述:
AT89S51 提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM
20
中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 (5)芯片擦除:
在并行编程模式,利用控制信号的正确组合并保持ALE/PROG引脚200ns-500ns的低电平脉冲宽度即可完成擦除操作。在串行编程模式,芯片擦除操作是利用擦除指令进行。在这种方式,擦除周期是自身定时的,大约为500ms。擦除期间,用串行方式读任何地址数据,返回值均为00H。 (6)Flash闪速存储器的串行编程:
将RST接至Vcc,程序代码存储阵列可通过串行ISP接口进行编程,串行接口包含SCK线、MOSI(输入)和MISO(输出)线。将RST拉高后,在其它操作前必须发出编程使能指令,编程前需将芯片擦除。芯片擦除则将存储代码阵列全写为FFH。外部系统时钟信号需接至XTAL1端或在XTALl和XTAL2接上晶体振荡器。最高的串行时钟(SCK)不超过l/16晶体时钟,当晶体为33MHz时,最大SCK频率为2MHz。Flash闪速存储器的串行编程方法:
1上电次序:将电源加在Vcc和GND引脚,RST置为“H”○,如果XTAL和XTAL2接
上晶体或者在XTAL1接上3-33MHz的时钟频率,等候10ms。
2将编程使能指令发送到MOSI(Pinl.5)○,编程时钟接至SCK(Pinl.7),此频率
需小于晶体时钟频率的l/16。
3代码阵列的编程可选字节模式或页模式。写周期是自身定时的,一般不大于 ○
0.5ms(5V 电压时)。
4任意代码单元均可由MISO(Pinl.6)和读指令选择相应的地址回读数据进行校○
验。
5编程结束应将RST置为“L”以结束操作。 ○
6断电次序:○如果需要的话按这个方法断电,假如没有使用晶体,将XATL置为低,
RST置低,关断Vcc。 (7)数据校验:
数据校验也可在串行模式下进行,在这个模式下,在一个写周期中,通过输出引脚MISO串行回读一个字节数据的最高位将作为最后写入字节的反码。 (8)AT89S51单片机最小系统
AT89S51单片机最小系统由AT89S51单片机及其外围电路组成,外围电路包括时钟电路和复位电路两部分。
1时钟电路:时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是○
在统一的时序脉冲的驱动下的进行的,时钟电路就好比人的心脏。同样,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。当采用内部时钟时,
21
连接方法如下图所示,在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,如30PF。
单片机内部有一个高增益反向放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片外部XTAL1和 XTAL2之间跨接晶体震荡器和微调电容,从而构成一个稳定的自激振荡器。外接晶体(石英或陶瓷,陶瓷的精度不高,但价格便宜)振荡器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中, C1和C2的大小会对振荡器频率的高低、振荡器的稳定性、起振的快速性和温度特性有一定的影响。因此建议在采用石英晶体振荡器时取C=30+/-10pF,陶瓷振荡器时取C=40+/-10pF,典型值为40pF。在设计电路板时,振荡器和电容应尽量安装得与单片机靠近,以减小寄生电容的存在,更好的保障振荡器稳定、可靠的工作。在任何情况下,振荡器始终驱动内部时钟发生器向主机提供时钟信号,因为时钟发生器的输入是一个二分频电路,所以对外部振荡信号的脉宽无特殊要求,但必须保证高、低电平的最小宽度。
2复位电路:单片机的复位电路分上电复位和按键手动复位。它是利用外部复位○
电路来实现的。当Vcc上升时间不超过1ms(RC=τ),振荡器启动时间不超过10ms。在加电情况下,这个电路可以使单片机复位。在加电开机时,RST上的电压从Vcc逐渐下降,RST引脚的电位是Vcc与电容电压的差,RST上的电压必须保证在斯密特触发器的阀值电压以上足够长时间,以满足复位操作的要求。按键电平复位是将复位端通过电阻与Vcc相连。在按键电平复位和按键脉冲复位两种简单的复位电路中,干扰易串入复位端,在大多数情况下,不会造成单片机的错误复位,但会引起内部寄存器错误复位,这里可在复位端引脚上接一个去藕电容。需说明的是,如复位电路中R、C的值选择不当,使复位时间过长,单片机将处于循环复位状态。
为了使用方便和设计电路简化及设计要求,我们采用上电复位和按键电平复位相结合的方法。复位后,单片机从0000H单元开始执行程序,并初始化一些专用寄存器为复位状态值,受影响的专用寄存器如下表所示:
表3.3 专用寄存器状态表 寄存器 PC ACC PSW SP DPTR P0 -- P3 状态 0000H 00H 00H 07H 0000H FFH 22
寄存器 TCON TL0 TH0 TL1 TH1 SCON 状态 00H 00H 00H 00H 00H 00H IP IE TMOD xxx00000H 0xx00000H 00H SBUF PCON 不确定 0xxx0000H
图3.14 单片机最小系统
R2R1S1SW-PB123VCC4567C3891011121314C715WR16RD1733pF18Y11920C111.0596MHz33pFP1.0VCCP1.1P0.0(AD0)P1.2P0.1(AD1)P1.3P0.2(AD2)P1.4P0.3(AD3)P1.5P0.4(AD4)P1.6P0.5(AD5)P1.7P0.6(AD6)RSTP0.7(AD7)P3.0(RXD)EA/VppP3.1(TXD)ALE/PROGP3.2(INT0)PSENP3.3(INT1)P2.7(A15)P3.4{T0}P2.6(A14)P3.5(T1)P2.5(A13)P3.6(WR)P2.4(A12)P3.7(RD)P2.3(A11)XTAL2P2.2(A10)XTAL1P2.1(A9)GNDP2.0(A8)403938373635343332313029282726252423222123
AT89S51AT89S51 第4章 软件系统设计软
软件软是电路必不可少的一部分,是整个电路的灵魂部分,只有软硬件完美的配合才是一个完整的电路设计,下面将着重介绍系统的软件部分设计
软件设计由主程序,键扫描子程序及若干功能模块子程序组成。其中主控制器子程序包括A/D转换子程序(水位、水温),键盘处理及显示子程序,加热控制子程序(使用输出比较功能),漏电保护子程序等组成。主程序要先初始化系统的工作参数,主要是单片机的定时器,COP模块、A/D转换、端口、键中断等的工作模式参数设定,之后系统主程序循环调用各个功能模块子程序,对相关事件的处理依靠标志位和判断标志位实现。
4.1 主程序流程框图
水温时继电器常开触头闭合,电热丝加热,否则返回。当水温大于临界温度值时,蜂鸣器报警并且停止加热。图4.1显示了本系统的主程序流程图。
24