本节书摘来自异步社区《例说8051:单片机程序设计案例教程》一书中的第1章,第1-2节,作者 张义和,陈敌北,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1-2 8051基本知识
“8051”源自Intel公司的MCS-51系列,而目前所使用的8051并不是都采用Intel公司所生产的芯片,而多采用其他厂商所推出的兼容芯片,如Atmel公司的89C51/89S51系列,其价格低廉,质量稳定,开发工具齐全,广为学校或培训机构所欢迎。
在此,先介绍8051的基本结构,包括基本结构、引脚、基本电路及51系列等,其中很多知识最好要“记”在脑中,本书也会提供很多快速记忆的技巧,让读者能在极短的时间里记住40个引脚、基本电路等。
1-2-1 8051的结构
8051单片机发展至今,虽然有许多厂商各自开发不同的兼容芯片,但其基本结构并没有多大的变动,标准的8051结构图如图1-3所示。现说明如下:
上述结构中,最好能把加波浪线的知识“记忆”下来。
1 8位指的是微处理器内部数据总线、寄存器的宽度是8位。比如计算机(PC)所用的CPU:第一代PC的CPU 8088/8086到第二代PC的CPU 80286都是16位CPU,而从80386到Pentium 4都是32位的CPU。尽管如此,目前所采用的单片机仍是以8位为主,只有在特殊场合才会采用16位的单片机,如8096等。
2 通常存储器的操作是以字节(B)为单位,“可位寻址”是访问存储器、寄存器或输入/输出端口时,可指定其中的一个位,例如要指定P0输入/输出口中的bit 1,则指定为P0.1即可,如图1-4所示。
1-2-2 89C51/89S51的封装与引脚
89C51的封装方式有3种,除了这3种外,89S51的封装方式还有PDIP42封装,说明如下。
QFP封装
89C51/89S51的PQFP或TQFP(Thin Plastic Gull Wing Quad Flatpack)封装为扁平的44个引脚表面贴片式封装,这种封装的体积很小,成本较低,是目前主流的商用芯片;但不适合学校或培训机构使用。如图1-5所示,在俯视图中,左上方有个圆形记号“○”的是第1脚,然后按逆时针排序,分别为2~44脚,其中包括3个空脚,而相邻两个引脚的间距为0.8mm,芯片厚度为1.2mm。
PLCC封装
PLCC(Plastic J-Leaded Chip Carrier)封装也是89C51/89S51常用的封装方式,这也是一个44个表面贴片式引脚(SMT)的封装,其中包括4个空引脚,其引脚编号与QFP封装非常类似(兼容),如图1-6所示,在俯视图里,上面中间有个圆形记号“○”的是第1脚,然后按逆时针排列,分别为2~44脚,相邻两引脚的间距为0.05英寸(即1.270mm),芯片高度(含引脚)为4.572mm。
一般来说,采用这种面贴片式封装的部件可直接贴装于电路板上,而不必钻孔(其引脚如图1-7所示)。在研发、实验或教学时,可利用插座,以缩短开发与生产的时间。
直插式封装PDIP42
89S51的直插式封装有两种,第一种是42个引脚双列直插式的封装(Plastic Dual Inline Package),简称PDIP42。第二种是40个引脚双列直插式封装,与89C51、MCS51兼容,稍后说明。如图1-8所示,在双列直插式封装里,俯视图左上方有个三角形记号“△”是第1脚,然后按逆时针排列,分别为2~42脚。相邻两引脚的间距为1.588mm,长度为36.96mm,而两排引脚的间距为13.97mm,芯片厚度为4.826mm(不含引脚),与一般的面包板或IC插座不符。
直插式封装PDIP40
89C51/89S51的第二种直插式封装为40个引脚双列直插式的PDIP40,这种封装与MCS-51完全兼容。PDIP40与PDIP42除引脚数量不同外,尺寸差异也很大,PDIP40刚好可插在面板或40个引脚的插座上,如图1-9所示,俯视图左上方有个三角形记号“△”是第1脚,然后按逆时针排列,分别为2~40脚。相邻两引脚的间距为0.1英寸(即2.540mm),长度为52.578mm,而两排引脚的间距为0.6英寸(即15.875mm),芯片厚度为4.826mm(不含引脚),特别适合学校、培训机构使用。不过,由于直插式封装体积较大,电路板制作成本较高,已很少用作商用芯片。
本书将以采用PDIP40封装的89S51为探讨对象,当然,要学习8051,笔者强烈建议先将其引脚“背”下来,而要背40个引脚却有点伤脑筋,所以在此提供一些技巧,让大家轻松记住这40个引脚。
电源引脚
几乎所有IC都需要接电源,而8051的电源引脚与大部分数字IC的电源引脚类似,右上角接VCC,左下角接GND。所以8051的40脚为VCC引脚,连接5V10%的电源;20脚为GND引脚,必须接地。
输入/输出口
有了电源之后,再来看看8051的主要部分,也就是输入/输出口。紧接于刚才介绍的VCC引脚下的是第39脚,为Port 0的开始引脚,即39脚到32脚等8个引脚为Port 0;Port 0的对面就是Port 1,也就是第1脚到第8脚。Port 1从第1脚开始,所以Port 2从其斜对角第21脚开始,也就是在右下方,21脚到28脚就是Port 2。同样地,Port 2的斜对面就是Prot 3,第10脚到第17脚就是Port 3。39、1、21、10就是这四个Port的开始引脚,我们可通过图1-10来记住这4个输入/输出口。
复位引脚
几乎所有微处理器都需要复位(Reset)的操作,对于8051而言,只要复位引脚接高电平超过2个机器周期(约2ms),即可产生复位的动作。而8051的复位引脚在Port 1与Port 3之间,即第9脚,辅助记忆的方法是“系统久久不动,就要按一下Reset按钮,以复位系统”,这久久就是第9脚的谐音。
时钟引脚
微处理器都需要时钟脉冲,而在接地引脚的上方两个引脚,即19、18脚,就是时钟脉冲引脚,分别是XTAL1、XTAL2。
存储器引脚
8051内部有存储器,外部也可接存储器,至于使用内部存储器还是外部存储器,则必须视31脚(Port 0下面那个引脚)而定。31脚就是引脚,即外部存储器访问使能(External Access Enable)引脚。当=1时,系统使用内部存储器;当=0时,系统使用外部存储器。对于简单的程序,大多只使用内部存储器,所以就把31脚直接接到VCC。若使用无内部存储器的8031/8032,则31脚接到GND。
外部存储器控制引脚
现在只剩下引脚下面的两个引脚,而这两个引脚与引脚有点类似,都是针对存储器的控制,说明如下:
● 30脚为地址锁存允许信号ALE(Address Latch Enable),其功能是在访问外部存储器时,送出一个将原本在Port 0的地址信号(A0~A7)锁存到外部锁存IC(如74373),让Port 0空出来,以便传输数据。
● 29脚为程序存储器使能(Program Store ENable),其功能也是访问外部存储器。通常此引脚连接到外部程序存储器(ROM)的引脚,当8051要读取外部存储器的数据时,此引脚就会输出一个低电平信号。
相对于前面的38个引脚,29、30脚比较难以理解,所幸的是,只要不动用到外部存储器,就可当它们不存在!具体将留到外部存储器的章节再作说明。
根据上述要诀可以很轻松地记住这些引脚。
或许有人会质疑,“有这么简单吗?”当然没这么容易!8051的40个引脚里,其中有很多是多任务引脚,简单讲就是多用途的引脚,以39~32脚为例,平时为Port 0;若是连接外部存储器时,则当成AD0~AD7引脚,而AD0~AD7就是地址引脚与数据引脚复用的多任务引脚,好像有点复杂,但如果不接外部存储器时,就可当它不存在。
1-2-3 8051的基本电路
所谓“基本电路”是指若要8051电路工作不可缺少的基本连接线路,所以,这是必要的!当然,在此我们也有熟记基本电路的方法,基本电路包括四部分,说明如下。
先接电源
电路都需要电源,8051电路也是如此。首先将40脚接VCC,也就是+5V、20脚接地GND,如图1-11所示。
再接时钟脉冲
8051内部已具备振荡电路,只要将GND引脚上方的两个引脚(即19、18脚)连接简单的石英振荡晶体(Crystal)即可。至于8051的时钟脉冲频率,目前的MCS-51芯片的工作频率已大为提升,例如Atmel公司的89C51的工作频率为0~24MHz,而华邦电子(Winbond)更提供了40MHz的版本,未来必然还会有更高频率的版本。尽管如此,目前还是采用12MHz时钟脉冲。如果懒得再设计一个振荡电路,则可按图1-11连接即可。如果非得自行设计一个振荡电路不可,则可按图1-12连接。
复位电路
8051的复位引脚(Reset)是第9脚,当此引脚连接高电平超过2个机器周期(1个机器周期包含12个时钟脉冲),即可产生复位的动作。以12MHz的时钟脉冲为例,每个时钟脉冲为1/12s,2个机器周期为2s,因此,我们可在第9脚上连接一个可让该引脚上产生一个2s以上的高电平脉冲,即可产生复位的动作,如图1-13(a)所示。
电源接上瞬间,电容C上没有电荷,相当于短路,所以第9脚直接连接到VCC,即8051执行复位动作。随着时间的增加,电容上的电压逐渐增加,而第9脚上的电压逐渐下降,当第9脚上的电压降至低电平时,8051即恢复正常状态,称为“Power On Reset”(加电复位)。在此使用10k电阻、10F电容,其时间常数为1ms,所以第9脚上的电压可保持2s以上的高电平,足以使系统复位。而约1ms(一个时间常数)的时间系统是处于复位状态。
通常,我们还会在电容两端并接一个按钮开关,如图1-13(b)所示,此按钮开关就是一个手动的Reset(复位)开关。
存储器设置电路
基本电路的最后一个部分是存储器的设置,如果把31脚()接地,则使用外部存储器;如果把31脚()接VCC,则使用内部存储器。在本书里大多采用内部存储器,所以把31脚与40脚及VCC相连接。整个基本电路如图1-14所示。
其中的元件如表1-1所示。
1-2-4 MCS-51系列
一般来说,MCS-51系列(Micro Controller System,MCS)可分为51与52两大类,52类是51类的增强型,其最大的特色就是内部存储器加倍,增加了一个定时器/计数器,但价格更加昂贵。
若按芯片内的ROM来区分,可分为无ROM型(8031/8032)、Mask ROM型(8051/8052)、EPROM型(8751/8752),及EEPROM型(89C51/89C52、89S51/89S52),如表1-2所示。
表1-2 MCS-51系列芯片的分类
以下简要介绍这几种8051。
无ROM型
8031/8032为无ROM型单片机,如图1-15左图所示。使用这种单片机必须外接程序存储器。由于其封装成本与含ROM型的单片机很接近,且必须外接程序存储器,反而使电路成本大增;目前除了程序太大,无法完全存入单片机外,已很少人采用此类单片机。
Mask ROM型
8051/8052为Mask ROM型单片机,如图1-15右图所示。这种单片机直接将程序放入芯片中的程序存储器,所以不必“烧录”程序(也不能烧录),价格低廉。但由于这种芯片必须要制作其独有的掩膜(Mask),必须大批量生产。例如键盘里所用的单片机(8048,是8051的前一代)就是Mask ROM型单片机。
EPROM型
8751/8752为EPROM型单片机,如图1-16左图所示。这种单片机是可将程序烧录到芯片中的程序存储器,也可以紫外线擦除程序存储器里的数据,所以可重复使用不同的程序。IC上面有一个窗口,可看到内部的芯片与连接线,通常在烧录完毕后,在窗口上贴黑色胶布,以防止数据消失。如果要擦除ROM里的数据,则使用紫外线照射窗口,15~30min即可。由于这种封装成本较高,再加上其擦除动作麻烦且费时,目前几乎不再生产这种芯片了。
EEPROM型
89C51/89C52、89S51/89S52为EEPROM型单片机,如图1-16右图所示。这种单片机可以将程序“下载”到芯片中的程序存储器,只要施以5V或12V电压,即可轻松、快速擦除程序存储器里的数据,已成为目前的主流。在厂商的技术数据手册中亦称,这种芯片可重复写入与擦除达1000次。根据经验,如果不是操作上的失误,或者是引脚折断,就算是经常烧写,的确是很难把它烧坏!
1-2-5 关于Atmel的51系列
Atmel半导体公司所提供的89C51系列已成为MCS-51兼容单片机中的主流。在89C51系列中,当然是以停产的89C51最具代表性,取而代之的是更强劲的89S51,这两种单片机的结构比较如表1-3所示。
由上可知,只要89C51/52有的,89S51/52都有。而其中比较特别的是89S51/52新增了一个14位看门狗计数器(Watchdog Timer,WDT)。虽然,89S51/52的工作频率提升为0~33MHz,但实质帮助不大。就像0~24MHz的89C51/52一样,还是会使用12MHz的工作频率,这样就可以直接延用原有的程序设计;另外,设计程序时也比较容易计算,且耗用的资源也比较少。
虽然89C51停产了,但其核心仍存在于89S51及许多89C51的高级版本中,例如:
● AT89C51RC单片机具有32KB程序存储器、512B数据存储器、WDT等,除存储器比较多外,其他都和89S51相同。
● AT89C51CC001、AT89C51CC002、AT89C51CC003等单片机以89C51为核心,并扩展外围设备,除配置更多的存储器外,增加了10位的ADC1、CAN2控制器等,而其重复数据烧录/擦除的次数更可达到10万次。
1 ADC为Analog to Digital Converter的缩写,也就是将模拟信号转换成数字信号的转换器。
2 CAN为Controller Area Network的缩写,这是一种微处理器与CAN总线的接口,而CAN控制器应用BOSCH CAN 2.0B Data Link Layer Protocal通信协议。