我们已经大概知道了单片机是一个什么东西,那么接下来我们就正式开始单片机的学习吧。
单片机是一门实践性很强的课程,假如单纯的去学习理论知识,而不实践,是很难完全把握单片机的。
单片机虽然是一个只能化的集成芯片,其本质上还是一个电子元件的。既然是电子元件,那么,就必须在一定的电路中才能运行起来,才能实现它的功能。这就像电阻一样,如果把一个电阻独立的放着,是没有任何意义的,只有将电阻接在电路中,才能实现它的功能,毕竟是分压,分流,还是限流,还得看详细电路。
单片机里虽然集成了很多电路,但仍旧不能独立运行,必须要外连一些电路,才能使单片机运行起来。这种能使单片机工作的最简电路,我们叫做单片机最小系统。图2-1中,有40个引脚的就是AT89C51单片机,这是单片机家族众多型号中的一种,为什么选择这个单片机来学习呢,是因为这款单片机的核心是MCS-51单片机,而MCS-51单片机是一款非常经典的单片机,简朴易学,而且资料非常丰富。当然,如果有特别的需求,也可以选择其他的单片机进行学习。
闲话少说,现在我们就来分析图2-1所示电路。
首先,我们来看看单片机的时钟电路,如上图用红圈包着的并且有晶振两字的部分。通过连接一个晶振和两个30pF的电容,构成了单片机的时钟电路。晶振是一种能够输出稳定的震荡周期的元件,通过它,单片机才能有了时间的概念。
不过晶振并不能独立的使用,必须配合合适的负载电容,否则会产生错误,或者是使晶振不能工作。
负载电容的选择可以根据单片机的技术文档上的说明来选择。对于51单片机一般选择不大于40pF的瓷片电容。既然我们知道由晶振和晶振负载电容组成的时钟振荡电路,那么为什么要加这个电路呢?
我们来看一个例子:
一个人在某一时刻,在正常情况下是只能做一件事请(当然三心二意的不算),可是一个人却不可能一整天就做一件事啊,于是我们得把这一天需要做的事按照某一个时间顺序进行安排,那么用什么东西来对时间进行划分呢?智慧的古代人在很早就是用了日晷来进行时间的标记,通过日晷,将一日划分成12个等分,就是我们常说的时辰。有了,时辰这个时间概念,我们就可以方便的进行时间安排了单片机是一个智能设备,能处理很多事情,那么这些事情的安排,又是怎样实现的呢?
为了给单片机一个“日晷”,我们使用了能够输出振荡时钟的晶振。通过晶振输出的时钟脉冲,来安排单片机的工作。于是,我们就能对单片机做一些安排,第一个时钟脉冲出现,单片机做什么,第二个时钟脉冲出现,单片机又做什么?……第n个时钟脉冲出现,单片机又做什么……一直这样的安排下去,我们就能通过使用单片机来实现我们想要做的事了,而我们这种安排从专业的角度上来讲就叫做编程。
其次,我们来看看,51单片机的复位电路,它由一个10uF的电容和一个4.7K的电阻组成。为什么要这样接线了,原因是这样的:在设计51单片机的时候,规定在51单片机的第9引脚为复位功能引脚。当在这个引脚有连续两个以上机器周期(2us以上)【注2】的高电平时,这个单片机就会复位。而我们的电路设计是,电容充电的瞬间,是导通,在这个瞬间,电流通过电容器,然后想电阻方向放电,此时,电容的“-”端就能有一个很高的电势,在高于3V的情况下,均可认为是高电平。而电容的充电是有时间的,当选择合适的电容,其充电时间会大于2us,这时,复位的条件就成立了。当然,我们为了能够更稳定的复位,我们经常会把单片机的复位引脚的高电平时间控制得更长一点,通常会达到ms级别。
你也许会问,为什么要复位呢?
在我回答你的问题之前,我先反问你几个问题,如果能将这几个问题解决了,那么你的答案也能够找到了。
问题1:当你要做一件事的时候,是希望从什么地方开始?是重最初位置开始,还是中间阶段亦或者是末尾阶段。
问题2:当你的机器出现故障了,你希望他能还能回到正常工作?
显然,我们在开始工作或是出现故障时,都希望能回到原来的初始状态下。
那么,我们的答案跃然纸面,复位的作用是时单片机的工作能回到设定的最初工作状态下开始工作。
知道了复位和晶振电路,现在让我们来看看,单片机右边的电路,该电路时将单片机的31引脚EA上接到电源VCC端。
在单片机的引脚定义中,EA口是访问外部存储器使能端,因为在“EA”这两个字母上加了一个横线,就表示,在该引脚,是低电平有效,(在数字电路数,常用这种方法表示,如果字母上边没有横线,就表示高电平有效,有横线,就表示低电平有效)即当“EA”引脚为低电平时,就直接访问外部存储器。
当EA引脚为高电平时,访问内部存储器,当要访问的存储器地址,超出内部存储器的地址范围时,自动会访问外部存储器相应的地址。
我们现在使用的单片机,我们学习用的单片机是有内部存储器的,其存储器空间为4kb,为了不浪费这些存储空间,我们就将EA引脚直接接高电平,这样单片机会首先运行内部存储器的程序。不过,有一种单片机除外,那就是8031单片机,该单片机也是基于8051单片机内核的,不过,在设计这种单片机时,是没有将存储器集成在单片机里边的,需要外置存储器,这时,这必须将EA引脚接地,否则,该单片机没办法工作。
常常有人说,单片机系统,单片机是整个系统中最重要的部分,可是我却觉得并不是这样的,既然是一个系统,那么系统中的各部分都是统一不可分割的,缺了任何哪一部分,单片机系统就不能正常的工作。就像一个人身上,并不是除了大脑其他器官就都不怎么重要一样,事实上其他器官也非常重要。
单片机是一个电子设备,所以必须要有电源才能工作,否则,任你能力再强,也就一个小小什么都不是的“黑色百脚怪”。
我们使用的51单片机需要在+5V的直流电的坏境下,才能够稳定的工作(并不是所有的单片机都是工作在+5V,有的低电压单片机的工作电压为3.3V,有的甚至更低)。而在直流电源中,一般会有正电源和地两根线。单片机的接+5V的引脚为40引脚VCC,而接地引脚为20引脚GND。
供应单片机工作的+5V直流电源,必须是很稳定的,否则可能会导致单片机频频复位,这在单片机正常工作中,是必须避免的,除非是有特定需要或者是出现故障。
单片机时钟周期
在几十年前,因为技术原因,单片机的速度很慢,晶振的时钟脉冲相对于单片机来说太过迅速,无法做到来一个脉冲就执行一条指令,为了解决这个问题,我们伟大的工程师就做出了一点点改进,设定为几个脉冲出现,才执行一次指令,这样,单片机的速度就能够按照时钟工作了。
这就像秒对于我们一般人来说,也太过细,我们在日常工作中很难精确到秒,为了解决这一问题,就出现了分和小时这些时间概念。
在51单片机中,晶振输出的脉冲周期为脉冲周期,12个脉冲周期为机器周期,单片机工作时间的最小单片机是机器周期。