8051单片机控制LED数码管(含源代码+仿真电路+总结报告)
资源内容介绍
使用8051单片机控制两个LED数码管,在外部中断0输入引脚(P3.2)接一个开关K1,以中断方式记录开关按下次数。程序启动时,LED数码管显示数字“00”。每按一次开关K1,LED数码管显示的值加一,超过“99”后返回“00”重新计数。使用了汇编语言进行编程,运用了Proteus、Keil等软件,包含设计的仿真电路、源代码以及总结报告。 <link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/css/base.min.css" rel="stylesheet"/><link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css" rel="stylesheet"/><link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89596310/raw.css" rel="stylesheet"/><div id="sidebar" style="display: none"><div id="outline"></div></div><div class="pf w0 h0" data-page-no="1" id="pf1"><div class="pc pc1 w0 h0"><img alt="" class="bi x0 y0 w1 h1" src="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89596310/bg1.jpg"/><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">微机原理中断作业报告</div><div class="t m0 x2 h3 y2 ff2 fs1 fc0 sc1 ls0 ws0">1. <span class="ff3">实现功<span class="_ _0"></span>能:</span></div><div class="t m0 x2 h3 y3 ff4 fs1 fc0 sc0 ls0 ws0">使用<span class="_ _1"> </span><span class="ff5">8051<span class="_ _1"> </span></span>单片机控制两个<span class="_ _1"> </span><span class="ff5">LED<span class="_ _1"> </span></span>数码管,<span class="_ _2"></span>在外部中断<span class="_ _1"> </span><span class="ff5">0<span class="_ _1"> </span></span>输入引脚<span class="_ _3"></span><span class="ff5">(P3.2)</span></div><div class="t m0 x2 h3 y4 ff4 fs1 fc0 sc0 ls0 ws0">接一个开关<span class="_ _4"> </span><span class="ff5">K1</span>,<span class="_ _5"></span>以中断方式记录开关按下次数。<span class="_ _5"></span>程序启动时,<span class="_ _5"></span><span class="ff5">LED<span class="_ _4"> </span><span class="ff4">数</span></span></div><div class="t m0 x2 h3 y5 ff4 fs1 fc0 sc0 ls0 ws0">码管显<span class="_ _0"></span>示数字<span class="_ _0"></span><span class="ff5">“00”<span class="_ _2"></span><span class="ff4">。每按<span class="_ _0"></span>一次开<span class="_ _0"></span>关<span class="_ _4"> </span><span class="ff5">K1</span>,<span class="_ _0"></span><span class="ff5">LED<span class="_ _4"> </span></span>数码<span class="_ _0"></span>管显示<span class="_ _0"></span>的值加一<span class="_ _0"></span>,</span></span></div><div class="t m0 x2 h3 y6 ff4 fs1 fc0 sc0 ls0 ws0">超过<span class="ff5">“99”</span>后返回<span class="ff5">“00”</span>重新计数。</div><div class="t m0 x2 h3 y7 ff2 fs1 fc0 sc1 ls0 ws0">2. <span class="ff3">基本原<span class="_ _0"></span>理:</span></div><div class="t m0 x2 h3 y8 ff5 fs1 fc0 sc0 ls0 ws0">8051<span class="_ _4"> </span><span class="ff4">单片机<span class="_ _6"></span>:<span class="_ _6"></span>经典的<span class="_ _4"> </span><span class="ff5">8<span class="_ _4"> </span></span>位微控制器,<span class="_ _7"></span>具有强大的中断和<span class="_ _4"> </span><span class="ff5">IO<span class="_ _4"> </span></span>控制能力。</span></div><div class="t m0 x2 h3 y9 ff5 fs1 fc0 sc0 ls0 ws0">LED<span class="_ _4"> </span><span class="ff4">数码管:由多个<span class="_ _4"> </span></span>LED<span class="_ _4"> </span><span class="ff4">组成,用于显示<span class="_ _4"> </span></span>0<span class="_ _4"> </span><span class="ff4">到<span class="_ _4"> </span></span>9<span class="_ _4"> </span><span class="ff4">的数字。</span></div><div class="t m0 x2 h3 ya ff4 fs1 fc0 sc0 ls0 ws0">外部<span class="_ _0"></span>中<span class="_ _0"></span>断<span class="_ _0"></span>:<span class="_ _0"></span>通过<span class="_ _8"> </span><span class="ff5">P3.2<span class="_ _4"> </span></span>引<span class="_ _0"></span>脚<span class="_ _0"></span>连<span class="_ _0"></span>接<span class="_ _0"></span>开关<span class="_ _8"> </span><span class="ff5">K1</span>,<span class="_ _0"></span>按<span class="_ _0"></span>下<span class="_ _0"></span>开<span class="_ _0"></span>关<span class="_ _4"> </span><span class="ff5">K1<span class="_ _8"> </span></span>会触<span class="_ _0"></span>发<span class="_ _0"></span>外<span class="_ _0"></span>部<span class="_ _0"></span>中</div><div class="t m0 x2 h3 yb ff4 fs1 fc0 sc0 ls0 ws0">断<span class="_ _4"> </span><span class="ff5">0</span>(<span class="ff5">INT0</span>)<span class="_ _2"></span>。</div><div class="t m0 x2 h3 yc ff4 fs1 fc0 sc0 ls0 ws0">计数功能<span class="_ _9"></span>:<span class="_ _9"></span>使用一个变量记录按键按下的次数,每次按下时增加计数</div><div class="t m0 x2 h3 yd ff4 fs1 fc0 sc0 ls0 ws0">值。当计数超过<span class="_ _4"> </span><span class="ff5">99<span class="_ _4"> </span></span>时,将计数值重置为<span class="_ _4"> </span><span class="ff5">0</span>。</div><div class="t m0 x2 h3 ye ff2 fs1 fc0 sc1 ls0 ws0">3. <span class="ff3">设计方<span class="_ _0"></span>案:</span></div><div class="t m0 x2 h3 yf ff5 fs1 fc0 sc0 ls0 ws0">-<span class="ff4">硬件设计:</span></div><div class="t m0 x2 h3 y10 ff4 fs1 fc0 sc0 ls0 ws0">使用<span class="_ _4"> </span><span class="ff5">8051<span class="_ _4"> </span></span>单片机<span class="_ _5"></span>(如<span class="_ _4"> </span><span class="ff5">AT89C51<span class="_ _4"> </span></span>或类似型号)<span class="_ _2"></span>,<span class="_ _5"></span>连接到两个共阳<span class="_ _5"></span>(或共</div><div class="t m0 x2 h3 y11 ff4 fs1 fc0 sc0 ls0 ws0">阴)<span class="ff5">LED<span class="_ _4"> </span></span>数码管。</div><div class="t m0 x2 h3 y12 ff4 fs1 fc0 sc0 ls0 ws0">将开关<span class="_ _4"> </span><span class="ff5">K1<span class="_ _4"> </span></span>连接到<span class="_ _4"> </span><span class="ff5">P3.2<span class="_ _4"> </span></span>引脚,<span class="ff5">P3.2<span class="_ _4"> </span></span>配置为外部中断<span class="_ _4"> </span><span class="ff5">0<span class="_ _4"> </span></span>输入。</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div><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="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89596310/bg2.jpg"><div class="t m0 x2 h3 y13 ff4 fs1 fc0 sc0 ls0 ws0">确<span class="_ _0"></span>保<span class="_ _0"></span>电<span class="_ _0"></span>路<span class="_ _0"></span>中<span class="_ _0"></span>有<span class="_ _0"></span>适<span class="_ _a"></span>当<span class="_ _0"></span>的<span class="_ _0"></span>电<span class="_ _0"></span>阻<span class="_ _0"></span>器<span class="_ _0"></span>和<span class="_ _0"></span>电<span class="_ _a"></span>容<span class="_ _0"></span>器<span class="_ _0"></span>,<span class="_ _0"></span>以<span class="_ _0"></span>稳<span class="_ _0"></span>定<span class="_ _0"></span>信<span class="_ _a"></span>号<span class="_ _0"></span>输<span class="_ _0"></span>入<span class="_ _0"></span>和<span class="_ _0"></span>防<span class="_ _0"></span>止<span class="_ _0"></span>抖<span class="_ _a"></span>动<span class="_ _0"></span>。</div><div class="t m0 x2 h3 y3 ff5 fs1 fc0 sc0 ls0 ws0">-<span class="ff4">软件设计:</span></div><div class="t m0 x2 h3 y14 ff5 fs1 fc0 sc0 ls0 ws0"> <span class="ff4">初始化<span class="_ _0"></span>:设置外<span class="_ _0"></span>部中断<span class="_ _8"> </span></span>0<span class="_ _4"> </span><span class="ff4">的中断服<span class="_ _0"></span>务程序,<span class="_ _0"></span>配置数<span class="_ _0"></span>码管显<span class="_ _0"></span>示的<span class="_ _4"> </span></span>IO</div><div class="t m0 x2 h3 y5 ff4 fs1 fc0 sc0 ls0 ws0">口,初始化计数变量为<span class="_ _4"> </span><span class="ff5">0</span>。</div><div class="t m0 x2 h3 y15 ff5 fs1 fc0 sc0 ls0 ws0"> <span class="ff4">中断服务程序<span class="_ _3"></span>(<span class="ff5">INT0</span>)<span class="_ _2"></span>:<span class="_ _6"></span>每次开关<span class="_ _4"> </span><span class="ff5">K1<span class="_ _4"> </span></span>按下时触发,<span class="_ _3"></span>增加计数变量的</span></div><div class="t m0 x2 h3 y16 ff4 fs1 fc0 sc0 ls0 ws0">值。如果计数超过<span class="_ _4"> </span><span class="ff5">99</span>,则重置为<span class="_ _4"> </span><span class="ff5">0</span>。</div><div class="t m0 x2 h3 y17 ff5 fs1 fc0 sc0 ls0 ws0"> <span class="ff4">数码管显示控制<span class="_ _6"></span>:<span class="_ _6"></span>编写函数将计数值转换为数码管可以显示的格式,</span></div><div class="t m0 x2 h3 y18 ff4 fs1 fc0 sc0 ls0 ws0">并输出到数码管对应的端口。</div><div class="t m0 x2 h3 y8 ff5 fs1 fc0 sc0 ls0 ws0"> <span class="ff4">主<span class="_ _0"></span>循<span class="_ _0"></span>环<span class="_ _0"></span>:<span class="_ _a"></span>在<span class="_ _0"></span>主<span class="_ _0"></span>程<span class="_ _0"></span>序<span class="_ _0"></span>中<span class="_ _a"></span>等<span class="_ _0"></span>待<span class="_ _0"></span>中<span class="_ _0"></span>断<span class="_ _a"></span>触<span class="_ _0"></span>发<span class="_ _0"></span>,<span class="_ _0"></span>以<span class="_ _a"></span>更<span class="_ _0"></span>新<span class="_ _8"> </span></span>LED<span class="_ _8"> </span><span class="ff4">数码<span class="_ _0"></span>管<span class="_ _a"></span>的<span class="_ _0"></span>显<span class="_ _0"></span>示<span class="_ _0"></span>值<span class="_ _a"></span>。</span></div><div class="t m0 x2 h3 y19 ff2 fs1 fc0 sc1 ls0 ws0">4.<span class="ff3">仿真结<span class="_ _0"></span>果:</span></div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>