
本文从集成电路的角度开始了解单片机,主要介绍单片机的引脚图和引脚功能,以及单片机的简单编程。
首先,我们来看看80C51单片机的功能结构框图。
80C51单片机属于MCS-51系列单片机。它采用40 DIP(双列直插式封装,包含128个RAM单元和4K ROM。
80C51单片机功能结构框图
先介绍一下单片机的管脚图和管脚功能(如下图所示),管脚的具体功能后面会详细介绍。
单片机的40个管脚大致可以分为四类:电源、时钟、控制和I/O管脚。
1.电源:
(1) VCC芯片电源,接5V;
(2)VSS-接地端子;
2.时钟:
XTAL1、 XTAL 2-晶振电路的反相输入输出。
3.控制线:
有4条控制线。
(1) ale/Prog:数据锁存允许/片内EPROM编程脉冲。
ALE功能:用于锁存P0口发送的低位8位地址。
PROG功能:芯片上带有EPROM的芯片。在EPROM编程期间,此引脚输入编程脉冲。
PSEN:外部ROM读选通信号。
RST/VPD:复位/备用电源。
RST(复位)功能:复位信号输入。
VPD功能:当Vcc电源故障时,连接备用电源。
EA/Vpp:内外ROM选择/片内EPROM编程电源。
EA功能:内部和外部ROM选择端子。
Vpp功能:在EPROM的编程过程中,编程电源Vpp加到带有EPROM的芯片上。
4.输入输出线
80C51有四个8位并行I/O口:P0,P1、P2、P3,共有32个管脚。P3端口还有第二个功能,用于特殊信号和控制信号(属于控制总线)的输入和输出。
拿到芯片,想用,首先要知道怎么连接。我们使用一种叫做89C51的芯片。让我们来看看如何连接它。
1、供电:当然这个是必不可少的。单片机采用5V电源,其中正极接40脚,负极(地)接20脚。
2、振荡电路:单片机是一种时序电路,只有提供脉冲信号才能正常工作。一个振荡器已经集成在单片机中,使用一个晶体振荡器,连接到引脚18、19。只需要买一个晶振和一个电容连接起来,如图1所示。
3、复位引脚:如图1所示连接。至于复位的意义以及为什么要再次复位,在单片机的功能中有介绍。
4、EA引脚:EA引脚连接到电源正极端子。此时,单片机接通电源,单片机开始工作。
我们的首要任务是用单片机点亮一个发光二极管LED。很明显,这个LED必须接在单片机的一个管脚上,否则单片机控制不了。那么它连接到哪个引脚呢?除了刚才用的5个管脚,单片机上还有35个管脚。我们将用一个引脚连接这个LED。(见图1,其中R1是限流电阻)
根据这个图的连接,当一个管脚处于高电平时,LED不亮,只有当一个管脚处于低电平时,LED才会亮。因此,我们应该能够控制引脚1,也就是说,我们应该能够根据需要使引脚1变为高电平或低电平。如果我们想控制一只脚,我们必须给它一个名字。我们不能就叫它脚,对吧?我们该叫它什么?设计这种51芯片的英特尔公司已经把它安装好了。姑且称之为P1.0吧,这是规则,不是我们能改变的。
图1单片机简单应用电路图
单片机的简单编程
有了名字,怎么才能让它‘高’或者‘低’呢?请人办事,直说。这叫发布命令。如果你想让计算机做事情,你必须向计算机发送命令。计算机能够理解的命令称为计算机指令。使引脚输出高电平的指令是SETB,使引脚输出低电平的指令是CLR。所以我们想让P1.0输出高电平,就写SETB P1.0,P1.0输出低电平,就写CLR P1.0
现在我们有办法让电脑输出P10变高或变低,但是怎么执行这个指令呢?也不能对着电脑说。要解决这个问题,还有几步路要走。
第一,计算机无法读取SETBCLR之类的指令。我们要把指令翻译成计算机能理解的方式,然后让计算机去读。计算机能理解什么?它只知道一件事——数字。因此,我们必须将SETB P1.0更改为(D2H,90H),将CLR P1.0更改为(C2H,90H)。至于为什么这两个数字是由51芯片的设计者——英特尔指定的,我们就不研究了。
第二步,得到这两个数后,如何让这两个数进入单片机内部?这要靠一个硬件工具“编程器”。如果你不知道什么是程序员,我来介绍一下,就是用汇编程序等编译器生成的目标,把你在电脑上写的代码烧进单片机的eprom里的工具。对80c51这种类型的单片机编程是一件很麻烦的事情,需要安装在编程器上才能在设备上使用。目前最新的AT89s51或STC89C51单片机都可以支持在线编程(isp)的功能,不用拔出来,用简单的电路就可以将代码写入单片机。
我们把编程器和电脑连接起来,运行编程器的软件,然后在编辑区写(D2H,90H),如图2,写.好了,把贴膜取下来,把贴膜插到完成的电路板上,打开电源.什么?灯不亮了?没错,因为我们在里面写的指令是让P10输出高电平。当然灯不亮,亮了就不对了。现在我们把这个芯片拔下来,放回编程器上,把剪辑区换成(C2H,90H),也就是CLR P1.0,写完片,取下来,插到电路板上,接通电源,ok,灯亮了。因为我们写的()是让P10输出低电平的指令。这样我们就可以看到硬件电路的接线并没有改变,只要改变单片机中写入的内容就可以改变电路的输出效果。









