<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/627867a277d3727348029017/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627867a277d3727348029017/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">扩展<span class="_ _0"> </span>I/O<span class="_ _0"> </span>接口的设计</div><div class="t m0 x2 h3 y3 ff1 fs0 fc0 sc0 ls0 ws0">11.1 I/O<span class="_ _1"> </span>接口扩展概述</div><div class="t m0 x2 h3 y4 ff1 fs0 fc1 sc1 ls0 ws0">I/O (<span class="_ _0"> </span>输入<span class="_ _0"> </span>/<span class="_ _1"> </span>输出<span class="_ _0"> </span>)<span class="_ _0"> </span>接口是<span class="_ _0"> </span>M<span class="_ _2"></span>CS-51<span class="_ _0"> </span>与外设交换数字</div><div class="t m0 x2 h3 y5 ff1 fs0 fc1 sc1 ls0 ws0">信</div><div class="t m0 x2 h3 y6 ff1 fs0 fc1 sc1 ls0 ws0"> <span class="_ _3"> </span>息的<span class="fc2 sc2">桥梁</span>。</div><div class="t m0 x2 h3 y7 ff1 fs0 fc1 sc1 ls0 ws0">I/O<span class="_ _0"> </span>扩展<span class="fc2 sc2">也属于系统扩展的<span class="_ _4"></span>一部分<span class="fc1 sc1">。</span></span></div><div class="t m0 x2 h3 y8 ff1 fs0 fc1 sc1 ls0 ws0">MCS-51<span class="_ _0"> </span>真正用作<span class="_ _0"> </span>I/O<span class="_ _0"> </span>口线的<span class="fc2 sc2">只有<span class="_ _0"> </span>P1<span class="_ _1"> </span>口的<span class="_ _0"> </span>8<span class="_ _0"> </span>位<span class="_ _0"> </span>I/O</span></div><div class="t m0 x2 h3 y9 ff1 fs0 fc2 sc2 ls0 ws0">线和</div><div class="t m0 x2 h3 ya ff1 fs0 fc2 sc2 ls0 ws0"> <span class="_ _5"> </span>P3<span class="_ _0"> </span>口的某些位线<span class="fc1 sc1">。</span></div><div class="t m0 x2 h3 yb ff1 fs0 fc1 sc1 ls0 ws0">在多数应用系<span class="_ _4"></span>统中,<span class="_ _0"> </span>MCS-51<span class="_ _0"> </span>单片机都需要外<span class="_ _4"></span>扩<span class="_ _0"> </span>I/</div><div class="t m0 x2 h3 yc ff1 fs0 fc1 sc1 ls0 ws0">O</div><div class="t m0 x3 h3 yd ff1 fs0 fc1 sc1 ls0 ws0"><span class="fc3 sc3">接</span><span class="fc3 sc3">口电</span><span class="fc3 sc3">路。</span></div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627867a277d3727348029017/bg2.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x4 h3 ye ff1 fs0 fc0 sc0 ls0 ws0">I/O<span class="_ _0"> </span>接口的功能</div><div class="t m0 x4 h3 yf ff1 fs0 fc1 sc1 ls0 ws0">I/O<span class="_ _0"> </span>接口电路应满足以下要求:</div><div class="t m0 x4 h3 y10 ff1 fs0 fc0 sc0 ls0 ws0">1.<span class="_ _0"> </span>实现和不同外设的速度<span class="_ _4"></span>匹配</div><div class="t m0 x4 h3 y11 ff1 fs0 fc2 sc2 ls0 ws0">大多数的外设的<span class="_ _4"></span>速度很慢,<span class="_ _4"></span>无法和<span class="_ _0"> </span>µs<span class="_ _0"> </span>量级的单片机速</div><div class="t m0 x5 h3 y12 ff1 fs0 fc2 sc2 ls0 ws0">度相比<span class="fc1 sc1">。</span></div><div class="t m0 x4 h3 y13 ff1 fs0 fc1 sc1 ls0 ws0">单片机只有在<span class="fc4 sc4">确<span class="_ _4"></span>认<span class="fc1 sc1">外设已为<span class="_ _4"></span>数据传送做好准备<span class="_ _4"></span>的前提</span></span></div><div class="t m0 x5 h3 y14 ff1 fs0 fc1 sc1 ls0 ws0">下才能进行<span class="_ _0"> </span>I/O<span class="_ _0"> </span>操作。</div><div class="t m0 x4 h3 y15 ff1 fs0 fc4 sc4 ls0 ws0">想知道外设是否<span class="_ _4"></span>准备好<span class="fc5 sc5">,<span class="fc2 sc2">需<span class="_ _0"> </span>I/O<span class="_ _0"> </span>接口电路与外设之间</span></span></div><div class="t m0 x5 h3 y16 ff1 fs0 fc2 sc2 ls0 ws0">传送状态信息。</div><div class="t m0 x6 h3 y17 ff1 fs0 fc1 sc1 ls0 ws0"> </div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627867a277d3727348029017/bg3.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x4 h3 y18 ff1 fs0 fc0 sc0 ls0 ws0">2. <span class="_ _0"> </span>输出数据锁存</div><div class="t m0 x4 h3 y19 ff1 fs0 fc1 sc1 ls0 ws0">由于<span class="fc2 sc2">单片机工作<span class="_ _4"></span>速度快,<span class="fc1 sc1">数<span class="_ _4"></span>据在数据总线上保<span class="_ _4"></span>留的时</span></span></div><div class="t m0 x4 h3 y1a ff1 fs0 fc1 sc1 ls0 ws0"> <span class="_ _0"> </span>间十分短暂,<span class="fc2 sc2">无法满足<span class="_ _4"></span>慢速外设的数据<span class="_ _4"></span>接收<span class="fc1 sc1">。<span class="_ _0"> </span>I/O</span></span></div><div class="t m0 x4 h3 y1b ff1 fs0 fc1 sc1 ls0 ws0">电路应具有数据<span class="_ _4"></span>输出锁存器<span class="_ _4"></span>,以保证接收设备<span class="_ _4"></span>接收。</div><div class="t m0 x4 h3 y1c ff1 fs0 fc0 sc0 ls0 ws0">3. <span class="_ _0"> </span>输入数据三态缓冲</div><div class="t m0 x4 h3 y1d ff1 fs0 fc1 sc1 ls0 ws0">输入设备向单片<span class="_ _4"></span>机输入数据<span class="_ _4"></span>时,但<span class="fc2 sc2">数据总线上<span class="_ _4"></span>面可能</span></div><div class="t m0 x4 h3 y1e ff1 fs0 fc2 sc2 ls0 ws0"> “<span class="_ _0"> </span>挂”有多个数据源<span class="fc1 sc1">,为不<span class="_ _4"></span>发生冲突,<span class="_ _4"></span><span class="fc2 sc2">只允许当前<span class="_ _4"></span>正</span></span></div><div class="t m0 x4 h3 y1f ff1 fs0 fc2 sc2 ls0 ws0"> <span class="_ _0"> </span>在进行数据传送的数据源<span class="_ _4"></span>使用数据总线,<span class="_ _4"></span>其余的应 </div><div class="t m0 x4 h3 y20 ff1 fs0 fc2 sc2 ls0 ws0"> <span class="_ _0"> </span>处于隔离状态。</div><div class="t m0 x7 h3 y21 ff1 fs0 fc1 sc1 ls0 ws0"> </div><div class="t m0 x8 h4 y22 ff2 fs0 fc1 sc3 ls0 ws0"> </div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627867a277d3727348029017/bg4.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x9 h3 y2 ff1 fs0 fc6 sc6 ls0 ws0">4.<span class="_ _0"> </span>常用的外围<span class="_ _0"> </span>I/O<span class="_ _1"> </span>接口芯<span class="_ _4"></span>片有:<span class="fc1 sc3"> </span></div><div class="t m0 x9 h3 y3 ff1 fs0 fc2 sc2 ls0 ws0">(<span class="_ _0"> </span>1<span class="_ _1"> </span>)<span class="_ _0"> </span>8255A<span class="_ _0"> </span><span class="fc1 sc1">:可编程的通用并行<span class="_ _4"></span>接口电路(<span class="_ _0"> </span>3<span class="_ _0"> </span>个</span></div><div class="t m0 x9 h3 y23 ff1 fs0 fc1 sc1 ls0 ws0">8<span class="_ _0"> </span>位</div><div class="t m0 xa h3 y5 ff1 fs0 fc1 sc1 ls0 ws0">I/O<span class="_ _0"> </span>口)。</div><div class="t m0 x9 h3 y6 ff1 fs0 fc2 sc2 ls0 ws0">(<span class="_ _0"> </span>2<span class="_ _1"> </span>)<span class="_ _0"> </span>8155H<span class="_ _1"> </span><span class="fc1 sc1">:可编<span class="_ _4"></span>程的<span class="_ _0"> </span>IO/RAM<span class="_ _0"> </span>扩展接口电路</span></div><div class="t m0 x9 h3 y24 ff1 fs0 fc1 sc1 ls0 ws0">(<span class="_ _0"> </span><span class="fc0 sc0">2<span class="_ _1"> </span>个<span class="_ _0"> </span>8<span class="_ _6"> </span>位<span class="_ _0"> </span>I/O<span class="_ _1"> </span>口<span class="_ _0"> </span>,1<span class="_ _0"> </span>个<span class="_ _0"> </span>6<span class="_ _1"> </span>位<span class="_ _0"> </span>I/O<span class="_ _1"> </span>口<span class="_ _0"> </span></span>, <span class="fc0 sc0">256<span class="_ _1"> </span>个<span class="_ _0"> </span>RAM</span></div><div class="t m0 x9 h3 y25 ff1 fs0 fc1 sc1 ls0 ws0">字节单元,<span class="_ _7"> </span>1<span class="_ _0"> </span>个<span class="_ _1"> </span><span class="fc0 sc0">14<span class="_ _0"> </span>位的减法定时器<span class="_ _0"> </span>/<span class="_ _0"> </span>计数器</span>)。</div><div class="t m0 x9 h3 y26 ff1 fs0 fc1 sc1 ls0 ws0">可与<span class="_ _0"> </span>MCS-51<span class="_ _0"> </span>单片机<span class="fc6 sc6">直接连接</span>,接口<span class="_ _4"></span>逻辑十分简<span class="_ _4"></span>单。</div><div class="t m0 x9 h3 y27 ff1 fs0 fc1 sc1 ls0 ws0">此外,<span class="_ _0"> </span><span class="fc2 sc2">74LS<span class="_ _0"> </span>系列的<span class="_ _0"> </span>TTL<span class="_ _1"> </span>电路</span>也可以作<span class="_ _4"></span>为<span class="_ _0"> </span>MCS-51</div><div class="t m0 x9 h3 y28 ff1 fs0 fc1 sc1 ls0 ws0">的扩展<span class="_ _0"> </span>I/O<span class="_ _0"> </span>口,如<span class="_ _0"> </span>74L<span class="_ _2"></span>S244<span class="_ _0"> </span>、 <span class="_ _1"> </span>74LS273<span class="_ _0"> </span>等。</div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627867a277d3727348029017/bg5.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 xb h3 y29 ff1 fs0 fc0 sc0 ls0 ws0">5. <span class="_ _0"> </span>用<span class="_ _1"> </span>74LSTTL<span class="_ _0"> </span>电路扩展并行<span class="_ _0"> </span>I/O<span class="_ _1"> </span>口</div><div class="t m0 x7 h3 y2a ff1 fs0 fc2 sc2 ls0 ws0"> <span class="_ _0"> </span>利用<span class="_ _1"> </span>74LS273<span class="_ _0"> </span>和<span class="_ _0"> </span>7<span class="_ _2"></span>4LS244<span class="_ _0"> </span>,将<span class="_ _0"> </span>P0<span class="_ _1"> </span>口扩展成简<span class="_ _4"></span>单</div><div class="t m0 x7 h3 y2b ff1 fs0 fc2 sc2 ls0 ws0">的输入、输出<span class="_ _4"></span>口的电路<span class="fc1 sc1">。</span></div><div class="t m0 xc h3 y2c ff1 fs0 fc2 sc2 ls0 ws0"> 74LS273<span class="_ _0"> </span><span class="fc1 sc1">输出端接<span class="_ _0"> </span>8<span class="_ _1"> </span>个<span class="_ _0"> </span>LED<span class="_ _1"> </span>发光二极<span class="_ _4"></span>管,以显示<span class="_ _0"> </span>8<span class="_ _0"> </span>个按</span></div><div class="t m0 xc h3 y2d ff1 fs0 fc1 sc1 ls0 ws0">钮开关状态,<span class="_ _4"></span>某位低电平<span class="_ _4"></span>时二极管发光。</div><div class="t m0 xd h3 y2e ff1 fs0 fc2 sc2 ls0 ws0"> 74LS244<span class="_ _0"> </span><span class="fc1 sc1">是缓冲驱动器,扩展输入口<span class="_ _4"></span>,接<span class="_ _0"> </span>8<span class="_ _0"> </span>个按钮</span></div><div class="t m0 xd h3 y2f ff1 fs0 fc1 sc1 ls0 ws0">开关。</div><div class="t m0 xd h3 y30 ff1 fs0 fc1 sc1 ls0 ws0"> 74LS273<span class="_ _0"> </span>和<span class="_ _1"> </span>74LS244<span class="_ _0"> </span>的工作受<span class="_ _0"> </span>8031<span class="_ _1"> </span>的<span class="_ _0"> </span>P2.0<span class="_ _1"> </span>、<span class="_ _0"> </span>RD</div><div class="t m0 xd h3 y31 ff1 fs0 fc1 sc1 ls0 ws0">*<span class="_ _0"> </span>、<span class="_ _1"> </span>WR*<span class="_ _0"> </span>三条控制<span class="_ _4"></span>线控制。<span class="fc2 sc2">电路的工<span class="_ _4"></span>作原理如下<span class="_ _0"> </span>:</span></div><div class="t m0 xd h3 y32 ff1 fs0 fc1 sc1 ls0 ws0"> <span class="_ _0"> </span>当<span class="_ _1"> </span><span class="fc6 sc6">P2.0=0,WR*=0(RD*=<span class="_ _0"> </span>1<span class="_ _0"> </span>)<span class="_ _1"> </span>选中写<span class="_ _0"> </span>74LS273<span class="_ _1"> </span>, </span></div><div class="t m0 xd h3 y33 ff1 fs0 fc1 sc1 ls0 ws0">8031</div><div class="t m0 xd h3 y34 ff1 fs0 fc1 sc1 ls0 ws0">通过<span class="_ _0"> </span>P0<span class="_ _0"> </span>口输出数据到<span class="_ _0"> </span>74LS273<span class="_ _0"> </span>,;</div><div class="t m0 xd h3 y35 ff1 fs0 fc1 sc1 ls0 ws0"> <span class="_ _0"> </span>当<span class="_ _1"> </span><span class="fc6 sc6">P2.0=0,R<span class="_ _4"></span>D*=0(WR*<span class="_ _2"></span>=1)<span class="_ _1"> </span>时选中读<span class="_ _0"> </span>74LS<span class="_ _4"></span>244,<span class="_ _2"></span><span class="fc1 sc1"> <span class="_ _0"> </span>某</span></span></div><div class="t m0 xd h3 y36 ff1 fs0 fc1 sc1 ls0 ws0">开关按下时则<span class="_ _4"></span>对应位输入<span class="_ _4"></span>为“<span class="_ _0"> </span>0”<span class="_ _0"> </span>。</div></div></div><div class="pi" data-data='{"ctm":[1.333333,0.000000,0.000000,1.333333,0.000000,0.000000]}'></div></div>