234彩票代理

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

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

    6课:单片机并行口结构

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

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

    MAIN: MOV P1,#0FFH
    LCALL DELAY
    MOV P1,#00H
    LCALL DELAY
    LJMP MAIN
    DELAY:MOV 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 A,P3

    MOV P1,A

    LJMP LOOP

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

      从硬件电路的一连线能看出,有四个按钮被接入到P3口的一P32,P33,P34,P35 。第一条指令的一用途我们能猜到:使P3口全部为高电平 。第二条指令是MOV A,P3,其中 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口其它各位的一结构与之相同,而其它三个口:P0、P2、P3则除入作为输入输出口之外还有其它用途,所以结构要稍复杂一些,但其用于输入、输出的一结构是相同的一 。看图() 。对我们来说,这些附加的一功能不 必由我们来控制,所以我们就不 去关心它了 。

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

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

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

    文章评论