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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機的函數(shù)發(fā)生器的設計與實現(xiàn)

          基于單片機的函數(shù)發(fā)生器的設計與實現(xiàn)

          作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
          系統(tǒng)硬件接口電路設計
          Intel公司的MCS-51系列中的8051單片機應用已很成熟,以其為基核的其他8位機都有極好的兼容性,應用十分方便。圖1所示為以8051和MAX038為核心的系統(tǒng)硬件電路。

          用8279完成鍵盤輸入和LED顯示控制兩種功能,鍵盤按鍵設置:數(shù)字鍵0~9,小數(shù)點,正弦波、方波和三角波切換鍵,頻率選擇Hz、kHz、MHz切換鍵,占空比鍵,回車鍵。采用外部譯碼方式,8279的SL0~SL2經(jīng)74LS138(2)輸出接鍵盤,同時經(jīng)74LS138(1)輸出驅(qū)動后送LED。 8279的顯示輸出B0~B3,A0~A3作8位數(shù)據(jù)輸出,當鍵盤出現(xiàn)有效閉合鍵時,數(shù)據(jù)自動進入8279的RAM存儲器,并向CPU申請中斷。

          MAX038的頻率控制電壓由10位DAC1020提供,經(jīng)Rin=50kΩ的電阻進入Lin引腳,8051的P2.6作為DAC1020的片選信號,采用雙緩沖器方式,鎖存10位數(shù)據(jù)。DADJ引腳電壓范圍-2.4V~+2.4V由8位DAC0832的雙極性輸出電壓提供,即占空比調(diào)節(jié)的控制電壓。用 8051的P2.5作為DAC0832的片選信號,基準電壓采用MAX038內(nèi)部2.5V基準電壓,接入VR端。DAC0832的ILE接+5V,片選端和數(shù)據(jù)傳送端都與74LS373輸出線A0相連。 請不要復制本站內(nèi)容

          設Lin輸入端電壓為Vin,串接電阻為Rin,則有公式:
          F0=Vin/〔Rin×CF〕
          式中,F(xiàn)0是輸出頻率,單位MHz;Vin是輸入端電壓,單位V;Rin是串接電阻,單位Ω;CF是決定輸出頻率的串入電容值,單位pF。

          取Rin=50kΩ,Vin的范圍0.5~5V,這樣對于某一電容,可提供十倍掃頻范圍,從而電容的選擇就可確定輸出頻率范圍,即頻段。第一頻段電容取 100μF,頻率范圍0.1~1Hz,第二頻段到第九頻段電容選擇按十倍衰減,即可獲得各頻段頻率范圍,第九頻段頻率范圍是10~20MHz,每一頻段步進值選各頻段低段頻率的0.5%。有九個頻段供選擇切換,8051的P1.2~P1.5通過T1042譯碼后送入頻段設定電路,由軟件啟動頻段設定電路中的開關來進行頻段選擇。

          3.2 系統(tǒng)軟件設計方案及實現(xiàn)
          系統(tǒng)的主程序流程框圖如圖2所示?! ?br />
          先對8279進行初始化,即允許中斷申請,清8279狀態(tài),置鍵盤顯示方式及時鐘編程等,再置MAX038初始波形與頻率、占空比。然后測試回車鍵是否閉合,以決定是否進行中斷處理,判斷輸出波形并輸出控制信號,有關輸出波形頻率的控制電壓及占空比的計算送DAC1020及DAC0832,最后將波形頻率及占空比送顯示緩沖區(qū),調(diào)顯示子程序顯示。


          評論


          技術專區(qū)

          關閉
          看屁屁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); })();