单片机中级教程 第11章 AT89系列及串行总线Word文档格式.docx
《单片机中级教程 第11章 AT89系列及串行总线Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机中级教程 第11章 AT89系列及串行总线Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
AT89LV52
高档
AT89S8252
可下载8KFPEROM
+2KEEPROM
256
SPI接口
11.1.1AT89C52
AT89C52是低功耗、高性能的CMOS8位单片机。
片内带有8KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C52的指令系统和引脚与80C52完全兼容。
所以,近几年AT89C52单片机应用极为广泛。
AT89C52单片机除了含有8KB的Flash存储器外,片内还有256B的RAM、32条I/O口线、3个16位定时器/计数器、6个中断源、一个全双工串行口等。
同时,与80C52一样,有空闲和掉电两种节电运行方式。
1.AT89C52单片机的结构和引脚
AT89C52单片机的结构与第2章所述的8051单
片机的结构基本相同,不同之处有4点:
(1)有CHMOS工艺的节能运行方式;
(2)增加了一个16位的定时器T2;
(3)片内RAM由128B增加为256B;
(4)ROM类型属于Flash存储器。
AT89C52单片机采用40引脚双列直插式封装和
44引脚方形封装。
双列直插式封装配置如图11-1所示。
由图可见AT89C52单片机的引脚与80C52完全相同。
与8051的引脚相比增加了定时器T2,P1.0作为T2的
外部计数输入,P1.1作为T2的外部控制输入。
2.AT89C52的节能运行方式
采用CHMOS工艺制造的AT89C52单片机,特别
适合于要求低功耗的系统。
它有两种节能运行方式:
(1)待机运行方式图11-1AT89C52引脚图
当特殊功能寄存器PCON的D0位(IDL)置位时,AT89C52即进入待机(即空闲)运行方式。
此时片内振荡器仍在工作,但送往CPU的时钟信号被封锁,CPU停止工作,处于睡眠冻结的状态。
在进入待机运行前一瞬间CPU及RAM的状态被完全地保存下来,如SP、PC、PSW、累加器A、其他所有的寄存器均保存为待机前的状态。
而ALE、
则进入无效状态。
虽然CPU在睡眠状态,但内部时钟电路仍然向中断电路、定时/计数器及串行口提供时钟信号,所以中断电路、定时/计数器及串行口仍在继续工作。
结束待机运行的方法有两种,一种是中断,另一种是复位。
任何已开放的中断提出中断申请都会引起硬件对IDL位的清0,从而终止待机运行状态,并转向中断服务程序。
在执行中断返回指令RETI后,返回到主程序中申请待机操作指令(即置位IDL指令)的下一条指令,继续主程序的运行。
用中断方法结束待机状态可以通过检测标志位GF0、GF1来区分是正常中断还是待机状态下的中断。
一般在置位IDL的同时,将GF0或GF1置位。
结束待机状态的第二种方法是硬件复位。
因为这时时钟电路仍在工作,所以硬件复位信号只要存在两个机器周期,就可以完成复位操作,并结束待机状态。
PCON寄存器是电源控制寄存器,也称功耗控制寄存器,其各位的功能定义已在表2-5中列出。
其中的IDL为待机位,PD为掉电位。
相应位置1时有效。
(2)掉电运行模式
当特殊功能寄存器PCON的D1位(PD)置位时,AT89C52即进入掉电运行方式。
此时片内振荡器由于PD=0而关闭,因此,CPU停止了工作。
RAM和各功能寄存器还保持着原来的状态。
输出低电平。
掉电方式主要用于掉电时片内RAM中的数据保存。
这时单片机的电源电压可以降至2V,单片机的功耗也降至最小。
但是电源电压的下降必须十分小心,一定要保证在掉电运行方式未开始前Vcc电压不能降低。
而且电源电压Vcc在单片机结束掉电运行方式之前一定要恢复到正常水平,这样才能保证RAM中的数据有效保存。
结束掉电运行的唯一方法是硬件复位。
复位操作将重新初始化各特殊功能寄存器的值,但片内RAM的数值不变。
待机和掉电的硬件结构如图11-2所示。
图11-2待机和掉电硬件结构
3.AT89C52的定时/计数器
AT89C52单片机有3个16位的定时/计数器,与8051相比多了一个定时/计数器T2。
定时/计数器T0和T1与8051的T0、T1完全相同,T2与8052的T2完全相同,有关定时器T2的结构及功能详见第5章
4.AT89C52的中断
AT89C52单片机与8051相比增加了一个定时/计数器T2,从而使中断源从5个扩展为6个。
增加的T2中断源由T2溢出标志TF2和T2外部中断标志EXF2逻辑或产生。
CPU响应中断请求后,需要由软件来判别是TF2还是EXF2产生的中断,并由软件将引起该中断的标志清0,而TF0和TF1是由硬件清0,这点应特别引起注意。
图11-3列出了AT89C52单片机的中断源及中断优先级。
图11-3AT89C52的中断源及优先级
由于T2的增加,使得中断控制寄存器IE中也增加了相应的控制位ET2,IE的格式为:
D7D6D5D44D3D2D1D0
EA
―
ET2
ES
ET1
EX1
ET0
EX0
ET2为T2溢出或捕获中断允许控制位。
ET2=0,禁止T2中断;
ET2=1,允许T2中断。
同样,中断优先级寄存器IP的格式为:
D7D6D5D4D3D2D1D0
―
PT2
PS
PT1
PX1
PT0
PX0
IP中的各位由用户设置,若对应位设为1,即设定该中断源为高优先级中断;
若对应位设为0,设定该中断源为低优先级中断。
另外,T2的中断服务程序入口地址为:
002BH。
5.AT89C52的Flash存储器及其编程
AT89C52提供了8KB片内Flash程序存储器,它允许系统在线改写或用编程器编程。
1)Flash存储器加密位
AT89C52单片机有3个加密位。
可以编程(P)或不编程(U)以获得不同的加密功能。
加密功能如表11-2所示。
表11-2AT89C52单片机加密功能表
LB1
LB2
LB3
加密功能
U
无加密功能
P
禁止从外部ROM执行MOVC指令读取内部ROM内容和对Flash再编程
U
除上述功能外,还禁止程序校验
P
除上述功能外,还禁止外部执行
加密位内容的擦除只能通过片擦除操作来完成.
2)Flash存储器的编程和程序校验
AT89C52单片机的片内Flash存储器在编程以前处于擦除状态(全1)。
其编程接口即可接受高电平(12V)允许信号,也可接受低电平(VCC)允许信号。
低电平编程方式为用户在线对AT89C52单片机编程提供了方便,而高电平编程方式与通用的EPROM编程器兼容。
(1)AT89C52单片机的片内Flash存储器编程模式
AT89C52单片机的片内Flash存储器编程模式如表11-3所示。
表11-3AT89C52单片机编程模式表
模式
RST
P2.6
P2.7
P3.6
P3.7
写入代码数据
H
L
H/12V
读出代码数据
写加密位LB1
写加密位LB2
写加密位LB3
芯片擦除
读信号字节
注:
①特征字节032H单元的内容,表明是使用Vpp=12V还是Vpp==5V来编程,当(032H)=FFH时,表示用12V编程电压,当032V)=05H时,表示用5V编程电压;
②片擦除需要10mv的
脉冲。
(2)AT89C52单片机的片内Flash存储器编程步骤
①在地址线上提供所要编程单元的地址;
②在数据线上输入相应的数据字节;
③启动一组编程控制信号;
④在高电压模式下,将
/VPP接12V;
⑤发一次ALE/
脉冲,对存储器或加密位编程一个字节。
重复步骤①~⑤,直到编程结束。
(3)编程及校验电路
编程及校验电路如图11-4、图11-5所示。
图11-4编程电路图11-5校验电路
(4)编程及校验时序
编程及校验时序如图11-6、图11-7所示。
特性如表11-4所示。
图11-6高压方式下编程时序和校验时序
说明几点:
(1)数据查询。
利用数据查询功能可以检测一个写周期是否结束。
在写周期内,如果读出数据的最高位(P0.7)是原来写入字节最高位的反码,则表示读出的是最后写入的那个字节,写周期完成,在所有输出端就会出现有效的数据。
然后,可以开始下一个写周期。
数据查询可以在一个写周期的任何时间开始。
(2)准备就绪(RDY)/忙信号(
)。
字节编程过程可以通过(RDY/
)输出信号来监视。
在编程期间,P3.4(RDY/
)端的电平被拉低,表示忙状态(正在编程)。
编程完毕后,P3.4(RDY/
)端变成高电平,表示准备就绪状态(READY)。
图11-7低压方式下编程时序和校验时序
表11-4AT89C52单片机编程和校验特性表
符号
含义
最小值
最大值
VPP*/v
编程允许电压
11.5
12.5
IPP*/mA
编程允许电流
1.0
1/TGLGL/MHz
晶振频率
4
24
TAVGL/μs
地址建立到
变低的时间
48TGLGL
TGHAX/μs
变高后地址保持时间
TDVGL/μs
数据建立到
TGHDX/μs
变高后数据保持时间
TEHSH*/μs
P2.7变高到VPP有效时间
TSHGL*/μs
VPP建立到
10
TGHSL*/μs
变高后VPP保持时间
TGLGH/μs
脉冲宽度
1
110
TAVQV/μs
地址有效到数据有效时间
TELQV/μs
变低到数据有效时间
TEHQZ/μs
变高后数据悬空时间
TWC
字节写周期
2.0
TGHBL/μs
变高到
注:
①*表示用于12V编程模式;
②TWC为字节写入周期,最小值为2ms。
(3)程序校验。
若加密位LB1和LB2尚未被编程,则程序源代码数据可以通过用于校验的地址线和数据线读回。
加密位不能直接校验,可通过观察其功能是否被允许来校验。
(4)读特征字节。
与程序读出类似,只是P3.6和P3.7必须保持低电平。
返回值意义为:
(030H)=1EH,表示由Atmel公司制造;
(031H)=52H,表示芯片型号为89C52;
(032H)=FFH,表示用12V编程电压,(032H)=05H,表示用5V编程电压。
11.1.2AT89C2051
1.AT89C2051的结构及性能
AT89C2051的内部结构如图11-8所示
图11-8AT89C2051的内部结构
AT89C2051是与8051兼容的CHMOS微控制器。
其Flash存储器容量为2KB。
与CHMOS工艺的80C51一样,具有空闲和掉电两种节电运行方式。
其性能如下:
8位CPU;
工作电压范围2.7~6V;
全静态工作方式:
0Hz~24MHz;
一个可编程串行口;
有片内精密模拟比较器;
2KB的Flash存储器;
128KB的数据存储器;
15根输入/输出线;
2个16位定时/计数器;
图11-9AT89C2051的引脚
5个中断源,2个优先级。
2.AT89C2051的芯片引脚
为适应智能仪表的嵌入要求,AT89C2051在芯片的引脚配置上进行了简化,如图11-9所示。
主要变化为:
⑴引脚由40根减为20根;
⑵增加了一个模拟比较器。
3.AT89C2051的软硬件约束
AT89C2051单片机由于引脚的限制,没有设置外部存储器的接口,所以,对于外部存储器的读/写指令如MOVX等不起作用。
由于ROM空间为2KB,所以,对于跳转指令要注意转移的目的地址范围(000H~7FFH),超出地址范围时,将产生不可预见的错误结果。
数据存储器的范围是(00H~7FH),堆栈操作时亦应加以注意。
模拟比校器的输入信号经原来的P3.6引脚引入到单片机内,所以原来的P3.6脚已无法在外部使用。
模拟比较器可以方便地比较两个模拟电压的大小,若外接一个D/A转换器并将其输出作为模拟比较器的一个输入,而由模拟比较器的另一输入端引入被测电压,通过软件的方法也可以实现A/D转换。
4.AT89C2051的Flash存储器编程
AT89C2051单片机提供了2KB的片内Flash程序存储器,它允许在线改写或用非易失性存储编程器编程。
AT89C2051单片机有2个加密位。
加密功能如表11-5所示。
表11-5AT89C2051单片机加密功能表
加密功能
禁止对Flash再编程
禁止对Flash再编程,还禁止程序校验
加密位内容的擦除只能通过片擦除操作来完成。
(1)AT89C2051单片机的片内Flash存储器编程模式
AT89C2051单片机的片内Flash存储器编程模式如表11-6所示。
表11-6AT89C2051单片机编程模式表
P3.3
P3.4
P3.5
12V
①内部EPROM的计数器在RST的上升沿复位到000H,并由XTAL1引脚正脉冲执行计数;
②片擦除需要10ms的
脉冲;
③编程期间P3.1被拉低来指示RDY/
(2)AT89C2051单片机的片内Flash存储器编程步骤
①上电次序是在VCC、GND引脚加工作电压,RST、XTAL1引脚接到GND,悬浮其他引脚,等待大于10ms以上时间;
②在RST、P3.2引脚加高电平;
③在P3.3、P3.4、P3.5、P3.7引脚加模式电平;
④经P1.0~P1.7对000H单元加入数据字节;
⑤升高RST到12V激活编程;
⑥使P3.2跳变一次,编程一个字节或加密位;
⑦校验已被编程数据,使RST从12V降到逻辑电平“H”并设置P3.3~P3.7为正确的电平,可以在P1口输出数据;
⑧进行下一地址单元的字节编程。
在XTAL1加一脉冲,使地址计数器加1,在P1口加入编程数据;
重复步骤①~⑧,完成整个2KB的编程;
下电次序为:
设置XTAL1、RST为“L”,浮空其他I/O引脚,关闭VCC电源。
(3)编程及校验电路
编程及校验电路如图11-10、图11-11所示。
图11-10编程电路图11-11校验电路
(4)编程及校验时序
编程及校验时序如图11-12所示。
图11-12编程及校验时序
AT89C2051的编程特性见表11-7所示。
表11-7AT89C2051单片机编程和校验特性表
符号
含义
最小值
最大值
VPP/V
IPP/μA
250
有效后数据保持时间
TEHSH/μs
P3.4变高到VPP变高的时间
TSHGL/μs
从VPP建立到
TGHSL/μs
从
变低到数据有效的时间
变低时间
50
TWC/ms
2.0
TBHIH/μs
变高到地址增1脉冲变高时间
TIHIH/μs
地址增1脉冲宽度
200
(1)编程期间P3.1被拉低来指示RDY/
。
(2)单片擦除需要10ms的
(3)内部EEPROM地址计数器在RST的上升沿复位到000H,并由XTAL1引脚正脉冲执行计数。
11.2I2C串行总线扩展技术
近年来,芯片间的串行数据传输技术被大量采用。
串行扩展接口和串行扩展总线的设置大大简化了系统的结构。
由于串行总线连接线少,总线的结构比较简单,不需要专用的插座而直接用导线连接各种芯片即可。
因此,采用串行总线可以使系统的硬件设计简化、系统的体积减小、可靠性提高。
同时,系统的更改和扩充极为容易。
目前,单片机应用系统中使用的串行总线主要有I2C总线(InterICBUS)、SPI总线(SeralPeripheralInterfaceBUS)和SMBus(SystemManagementBus)。
这里主要对I2C总线进行介绍。
11.2.1I2C串行总线概述
I2C总线是PHLIPS公司推出的一种高性能芯片间串行传输总线,与SPI、MicroWire接口不同,它仅以二根连线实现了完善的全双工同步数据传送,可以极方便地构成多机系统和外围器件扩展系统。
I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址的弊端,从而使硬件系统具有更简单、更灵活的扩展方法。
I2C总线进行数据传输时只需两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。
所有连接到I2C总线上的设备,其串行数据都接到总线的SDA线上,而各设备的时钟均接到总线的SCL线上。
I2C总线是一个多主机总线。
即一个I2C总线可以有一个或多个主机,总线运行由主机控制。
这里所说的主机是指启动数据的传送(发起始信号),发出时钟信号,传送结束时发出终止信号的设备。
通常,主机由各种单片机或其他微处理器担当。
被主机寻访的设备叫从机,它可以是各种单片机或其它微处理器,也可以是其他器件,如存储器、LED或LCD驱动器、A/D或D/A转换器、时钟日历器件等。
I2C总线的基本结构如图11-13示。
图11-13I2C总线的基本结构
为了进行通讯,每个接到I2C总线上的设备都有一个唯一的地址。
主机与从机之间的数据传送可以是由主机发送数据到总线上其他设备,这时主机称为发送器。
从总线上接收数据的设备称为接收器。
在多主机系统中,可能同时有几个主机企图启动总线传送数据。
为了避免混乱,保证数据的可靠传送,任一时刻总线只能由某一台主机控制。
所以,I2C总线要通过总线裁决,以决定由哪一台主机控制总线。
若有两个或两个以上的主机企图占用总线,一旦一个主机送“1”,而另一个(或多个)送“0”,送“1”的主机则退出竞争。
在竞争过程中,时钟信号是各个主机产生异步时钟信号线“与”的结果。
I2C总线上产生的时钟总是对应于主机的。
传送数据时,每个主机产生自己的时钟,主机产生的时钟仅在慢速的从机拉宽低电平或在竞争中被另一主机所改变。
I2C总线为双向同步串行总线,因此I2C总线接口内部为双向传输电路。
总线端口输出为开漏结构,所以总线上必须有上拉电阻。
如图11-14所示。
图11-14I2C总线接口电路结构
当总线空闲时,两根总线均为高电平。
连到总线上的器件其输出级必须是漏极或集电极开路,任一设备输出的低电平,都将使总线的信号变低,既各设备的SDA及SCL都是线“与”的关系。
11.2.2I2C总线的数据传送
1.总线上数据的有效性
在I2C总线上,每一位数据位的传送都与时钟脉冲相对应,逻辑“0”和逻辑“1”的信号电平取决于相应的正端电源VDD的电压。
I2C总线进行数据传送时,在时钟信号为高电平期间,数据线上必须保持有稳定的逻辑电平状态,高电平为数据1,低电平为数据0。
只有在时钟线低电平期间,才允许数据线上的电平状态变化,如图11-15所示。
图11-15数据位的有效性规定
2.数据传送的起始信号和终止信号
根据I2C总线协议的规定,SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;
SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
起始和终止信号如图11-16所示。