本次主要介绍如何驱动几个I/O口,以及硬件的最后剩余部分。
一、I/O口的驱动
连接方法如图:
高电平驱动不恰当的原因:它的电流是非常小的,电流往外,发光二极管要是这么接就比较暗
二、时钟电路与时序
时钟电路实际上有内部时钟和外部时钟,片外接晶振,再加俩电容和片内的振荡器电路构成了一个时钟发生器,驱动单片机一拍一拍的运行,一般情况下都是先取指令,然后进行译码,最后发出驱动信号使单片机运行。
注:做一个单片机系统时,要有时钟电路和复位电路,时钟频率越高,单片机运行速度越快,时钟电路的稳定性也影响单片机的运行可靠性。
CPU的时序信号有两类:
(1)对片内各个功能部件控制,用户无须了解;
(2)对片外存储器或I/O端口的控制,这部分时序对分析、设计硬件接口电路至关重要。
2.1 时钟电路设计
时钟频率直接影响单片机运行速度,电路质量直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。
2.1.1 内部时钟方式
AT89S51内部有一个用于构成振荡器的高增益反相放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器,内部时钟电路如图:
这是利用了片内的振荡器,使它产生的控制信号可以发给各个功能部件。
晶振一般选择10~12兆的即可,具体范围通常在1.2~12MHZ,取小数,是因为串行口要保证发送数据的时候,波特率为整数,就需要这样的晶振,8051最高的时钟晶振频率为33MHZ,还要考虑稳定性,电容的典型值为30P,做proteus仿真时,可以不画
注:
C1和C2的典型值通常选择为30pF。电容大小会影响振荡器频率高低、振荡器的稳定性和起振的快速性。
晶振频率范围通常是1.2~12MHz。频率越高,单片机速度就越快。速度快对存储器的速度要求就高,印制电路板的工艺要求也高,即线间寄生电容要小。晶体和电容应尽可能与单片机靠近,以减少寄生电容,保证振荡器稳定、可靠工作。为提高温度稳定性,采用温度稳定性能好的电容。
常选6MHz或12MHz的石英晶体。随着集成电路制造技术的发展,单片机的时钟频率也在逐步提高,已达33MHz。
2.1.2外部时钟方式
用现成的外部振荡器产生脉冲信号,常用于驱动多个单片机工作,便于多片单片机同步,一般为低于12MHz的方波。外部时钟源接到各个单片机的XTAL1端,XTAL2端悬空,如图:
注:
当使用片内振荡器,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需增加驱动能力。其引出的方式有两种,如图:
不需要自己在做一个振荡器驱动那些。
2.2 机器周期、指令周期与指令时序
各种指令时序与时钟周期相关。
2.2.1 时钟周期
时钟周期就是震荡器发出的时钟信号,发送这个信号的周期叫时钟周期,时钟控制信号的基本时间单位。若晶振频率为fosc,则时钟周期Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。
2.2.2机器周期
CPU完成一个基本操作所需时间为机器周期。
执行一条指令需要一个或几个机器周期。每个机器周期完成一个基本操作,如取指令、读或写数据等,这个时间段内叫做机器周期。一个机器周期是由一个或若干个时钟周期组成,51单片机是每12个时钟周期为1个机器周期,新型单片机好多一个机器周期就是一个时钟周期,所以现在新型的单片机速度都很快。
1个机器周期包括12个时钟周期,分6个状态:S1~S6。每个状态又分两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、…、S6P2,如图:
2.2.3 指令周期
执行一条指令所需的时间。
简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。
而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期。
注:
从指令执行时间看:
(1)单字节和双字节指令一般为单机器周期和双机器周期;
(2)3字节指令都是双机器周期;
(3)乘、除指令占用4个机器周期。
三、复位操作和复位电路
单片机初始化操作,给复位脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就使AT89S51复位。
3.1 复位操作
复位时,PC初始化为0000H,程序从0000H单元开始执行。
除系统正常初始化外,当程序出错(如程序跑飞)或操作错误使系统处于死锁状态时,需按复位键使RST脚为高电平,使AT89S51摆脱“跑飞”或“死锁”状态,而重新启动程序。
复位操作还对其他一些寄存器有影响,这些寄存器复位时的状态如图:
复位时,SP=07H ,而P0~P3引脚均为高电平。
在某些控制应用中,要注意考虑P0~P3引脚的高电平对接在这些引脚上的外部电路的影响。
例如,当P1口某个引脚外接一个继电器绕组,当复位时,该引脚为高电平,继电器绕组就会有电流通过,就会吸合继电器开关,使开关接通,可能会引起意想不到的后果。
3.2 复位电路设计
片内复位电路结构见图2-17。
复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个 机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路见图2-18。
对于CMOS型单片机,由于在RST引脚内部有一个下拉电阻,可将电阻R去掉,而将电容C选为10mF。
前者为片内复位电路,后者为上电复位电路,
前者为按键电平复位电路(用的较多),后者为按键脉冲复位电路。
所以,一个单片机小系统,由时钟电路、复位电路加上单片机组成即可。
有的芯片需要外扩其他芯片,需要高低电平,两种复位电路如(这是一个现成的电路,直接拿来用就行):
注:
只让单片机复位不行,它外部还有一些器件,让那些器件也要复位,有些器件的复位时间很长,所以当复位以后,PC指针指向00地址时,要在往下加几条NOP指令,即供操作指令,要对复位验实,等待其他芯片都复位好,便于系统内的其他芯片能够可靠的复位。
四、低功耗节能模式(S51特有)
两种低功耗节电工作模式:空闲模式和掉电保持模式。
掉电保持模式下,Vcc可由后备电源供电。两种节电模式的内部控制电路如图:
PD:掉电位 IDL:空闲模式
这两位实际上是寄存器内的某两位
空闲模式:
周围的所有电路仍在工作,RAM和特殊功能寄存器里的东西都保存,只是CPU始终不驱动,省电
退出空闲模式:
两种方法退出:响应中断,硬件复位(一般按一下按钮就行,或者想办法让它那个RESET脚为两个机器周期,高电平大于两个机器周期就可以退出)。
掉电运行模式:
所有的时钟信号都封死了,只要把PD位置为1即可,片内的所有部件也都不用时钟驱动了,时钟过不去,片内的内容也已经被保存了。
注:解决掉电保护问题,首先要把电源接进来,那里面就有一个低电压检测电路,当电压掉了百分之10就把备用电池接上,防止里面的RAM和特殊功能寄存器把数据丢了,用软件就可以控制。
两种节电模式可通过PCON的位IDL和位PD的设置来实现。格式如下:
PCON寄存器各位定义:
SMOD:串行通信波特率选择
— :保留位。
GF1、GFO:用户使用的通用标志位
PD:掉电保持模式控制位,PD=1,则进入掉电保持模式
IDL:空闲模式控制位,IDL=1,则进入空闲运行模式,