(玩电子) 电子技术学习与研究
当前位置单片机教程网 >> 基础教程 >> 浏览文章

6课:单片机并行口结构

作者:佚名   来源:本站原创   点击数:x  更新时间2007年08月16日   字体

   上两次我们做过两个实验都是让P1.0这个管脚使灯亮我们能设想既然P1.0能让灯亮那么其它的管脚可不能呢看一下图1它是8031单片机管脚的说明在P1.0旁边有P1.1P1.2….P1.7它们是否都能让灯亮呢除了以P1开头的外还有以P0P2P3开头的数一下一共是32个管脚前面我们以学过7个管脚加上这32个这39个了它们都以P字开头只是后面的数字不一样它们是否有什么联系呢它们能不能都让灯亮呢在我们的实验板上除了P10之外还有P11 -> P17都与LED相连下面让我们来做一个实验程序如下

MAIN: MOV P1,#0FFH
LCALL DELAY
MOV P1,#00H
LCALL DELAY
LJMP MAIN
DELAYMOV R7,#250
D1 MOV R6,#250
D2 DJNZ R6,D2
DJNZ R7,D1
RET
END

  将这段程序烧写到单片机中结果如何通电以后我们能看到8只LED全部在闪动因此P10->P17是全部能点亮灯的事实上凡以P开头的这32个管脚都是能点亮灯的也就是说这32个管脚都能作为输出使用如果不用来点亮LED能用来控制继电器能用来控制其它的执行机构

程序分析这段程序和前面做过的程序比较只有两处不一样第一句原来是SETB P1.0现在改为MOV P1,#0FFH第三句原来是CLR P1.0现在改为MOV P1.0,#00H从中能看出P1是P1.0->P1.7的全体的代表一个P1就表示了所有的这八个管脚了当然用的指令也不一样了是用MOV指令为什么用这条指令看图2我们把P1作为一个整体就把它当作是一个存储器的单元对一个单元送进一个数能用MOV指令

二第四个实验

除了能作为输出外这32个管脚还能做什么呢下面再来做一个单片机实验源程序如下

MAIN: MOV P3#0FFH

LOOP: MOV AP3

MOV P1A

LJMP LOOP

  先看一下这个实验的结果所有灯全部不亮然后我按下一个按钮第1个灯亮了再按下另一个按钮第2个灯亮了松开按钮灯就灭了从这个实验现象结合电路来分析一下程序

  从硬件电路的连线能看出有四个按钮被接入到P3口的P32P33P34P35第一条指令的用途我们能猜到使P3口全课高电平第二条指令是MOV AP3其中 MOV已经知道是送数的意思这条指令的意思就是将P3口的数送到A中去我们能把A当成是一个中间单元看图3第三句话是将A中的数又送到P1口去第四句话是循环就是中地重复这个过程这我们已见过当我们按下第一个按钮时第3只灯亮了所以P12口应当输出是低电平为什么P12口会输出低电平呢课们看一下有什么被送到了P1口只有从P3口进来的数送到A又被送到了P1口所以肯定是P3口进来的数使得P12位输出电平的P3口的P32位的按钮被按下使得P32位的电平为低通过程序又使P12口输出低电平所以P3口起来了一个输入的作用验证按第二三四个按钮同时按下2个3个4个按钮都能得到同样的结论所以P3口确实起到了输入作用这样我们能看到以P字开头的管脚不仅能用作输出还能用作输入其它的管脚是否能呢是的都能这32个管脚就称之为并行口下面我们就对并行口的结构作一个分析看一下它是怎样实现输入和输出的

并行口结构分析

1输出结构


<并行口结构图>

  先看P1口的一位的结构示意图只画出了输出部份从图中能看出开关的打开和合上代表了管脚输出的高和低如果开关合上了则管脚输出就是低如果开关打开了则输出高电平这个开关是由一根线来控制的这根数据总线是出自于CPU让我们回想一下数据总线是一根大家公用的线很多的器件和它连在一起在不一样的时候不一样的器件当然需要不一样的信号如某一时刻我们让这个管脚输出高电平并要求保持若干时间在这段时间里计算机当然在忙个不停在与其它器件进行联络这根控制线系电平未必能保持原来的值不变输出就会发生变化了怎么解决这个问题呢课们在存储器一节中学过存储器中是能存放电荷的我们不妨也加一个小的存储器的单元并在它的前面加一个开关要让这一位输出时就把开关打开信号就进入存储器的单元然后马上关闭开关这样这一位的状态就被保存下来直到下一次命令让它把开关再打开为止这样就能使这一位的状态与别的器件无关了这么一个小单元我们给它一个很形象的名字称之为“锁存器”

2输入结构

  这是并行口的一位的输出结构示意图再看除了输出之外还有两根线一根从外部管脚接入另一根从锁存器的输出接出分别标明读管脚和了存器这两根线是用于从外部接收信号的为什么要两根呢原来在51单片机中输入有两种方式分别称为‘读管脚’和‘了存器’第一种方式是将管脚作为输入那是真正地从外部管脚两输入的值第二种方式是该管脚处于输出状态时有时需要改变这一位的状态则并不需要真正地读管脚状态而只是读入锁存器的状态然后作持变换后再输出

  请注意输入结构图如果将这一根引线作为输入口使用我们并不能保证在任何时刻都能得到正确的结果为什么参考图2输入示意图接在外部的开关如果打开则应当是输入1而如果闭合开关则输入0但是如果单片机内部的开关是闭系ģ那么不管外部的开关是开还是闭单片机接受到的数据都是0可见要让这一端口作为输入使用要先做一个‘准备工作’就是先让内部的开关断开也就是让端口输出‘1’才行正因为要先做这么一个准备工作所以我们称之为“准双向I/O口”

  以上是P1口的一位的结构P1口其它各位的结构与之相同而其它三个口P0P2P3则除入作为输入输出口之外还有其它用途所以结构要稍复杂一些但其用于输入输出的结构是相同的看图对我们来说这些附加的功能不必由我们来控制所以我们就不去关心它了

  你如果你装了office软件的话 你可源开这个ppt动态演示文件看下加深对并口的理解http://www.hr-chem.com/f/51单片机并行口及其应用.ppt

作者(胡琴)点评根据本文的评论来看大家芯开始越来越难学了其实并行口的原理我们并不需要去深入理解不需要把内部的工作原理及电路都完全弄懂我们是要用单片机不是设计单片机芯片的所以我们只需要会用就行了比如说 给一个 CLR P3.5 这个指令就是为了让P3.5输出0这一条 MOV P3#0FFH 就是让整个P3口从P3.0-P3.7全部都输出1.

发表评论告诉好友收藏此文关闭窗口

文章评论

Ƶ