<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用AT89C2051設(shè)計(jì)超聲波測(cè)距儀

          用AT89C2051設(shè)計(jì)超聲波測(cè)距儀

          作者: 時(shí)間:2012-03-13 來源:網(wǎng)絡(luò) 收藏

          AT89C2051通過外部引腳P1.6輸出脈沖寬度為250μs,載波為40kHz的10個(gè)脈沖的脈沖群,以推挽形式加到變壓器的初級(jí),經(jīng)升壓變換推動(dòng)超聲波換能器發(fā)射出去。在發(fā)射的同時(shí),P1.7輸出一個(gè)高電平啟動(dòng),給電容C4充電。發(fā)射結(jié)束時(shí)高電平翻轉(zhuǎn)為低電平,C4開始對(duì)R2、R3組成的分壓器放電并輸出到比較器的負(fù)端。超聲波接收換能器將接收到的障礙物反射的超聲波送到放大器進(jìn)行放大,這是一個(gè)高增益、低噪聲放大器,在對(duì)放大后的信號(hào)進(jìn)行檢波后將檢測(cè)回波送到比較器的正輸入端。發(fā)射時(shí)P1.7輸出的電平可以抑制比較器的翻轉(zhuǎn),這樣就可以抑制發(fā)射器發(fā)射的超聲波直接輻射到接收器而導(dǎo)致錯(cuò)誤檢測(cè)。

          59.jpg

          圖3是超聲波測(cè)距原理的波形圖,從圖中可以看到,測(cè)出回波和發(fā)射脈沖之間的時(shí)間間隔,利用S=Ct/2就可以算出距離,再在LCD上顯示出來。當(dāng)然還可以設(shè)置若干個(gè)鍵,以用來控制電路的工作狀態(tài)。限制系統(tǒng)的最大可測(cè)距離存在四個(gè)因素:超聲波的幅度,反射而的質(zhì)地,反射而和入射聲波之間的夾角以及接收換能器的靈敏度。接收換能器對(duì)聲波脈沖的直接接收能力將決定最小的可測(cè)距離。

          4 系統(tǒng)軟件設(shè)計(jì)

          AT89C2051單片機(jī)和其開發(fā)應(yīng)用系統(tǒng)具有語(yǔ)言簡(jiǎn)潔、可移植性好、表達(dá)能力強(qiáng)、表達(dá)方式靈活、可進(jìn)行結(jié)構(gòu)化設(shè)計(jì)、可以直接控制計(jì)算機(jī)硬件、生成代碼質(zhì)量高、使用方便等諸多優(yōu)點(diǎn)。超聲波測(cè)距儀就是用AT89C51單片機(jī)開發(fā)設(shè)計(jì)的。它采用模塊化設(shè)計(jì),由主程序、發(fā)射子程序、查蟓接收子程序、定時(shí)子程序、顯示子程序等模塊組成。

          圖4和圖5分別為主程序和測(cè)量子程序的框圖。該系統(tǒng)的主程序處于鍵控循環(huán)工作方式,當(dāng)按下測(cè)量鍵時(shí),主程序開始調(diào)用發(fā)射子程序、查詢接收子程序、定時(shí)子程序,并把測(cè)量結(jié)果用顯示子程序在液晶屏上顯示出來。



          關(guān)鍵詞: 元器件 電子 國(guó)外

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();