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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于上位機控制自動接線的單片機實驗系統(tǒng)研究

          基于上位機控制自動接線的單片機實驗系統(tǒng)研究

          作者: 時間:2014-01-08 來源:網絡 收藏

            0 引言

            對的基本需求是:在有限的IO 接口上可以進行多個項目的實驗。為了實現這個基本需求,在進行多個不同項目實驗時,要對單片機各個IO口進行現場重接線。傳統(tǒng)的單片機實驗裝置現場重接線方法有2類:

            一類是現場手工插拔自鎖緊接插件;

            另一類是現場手工插拔積木式實驗模塊。

            這兩類接線方式的實質都屬于機械式金屬接觸。經過較長時間的使用,都難免會發(fā)生金屬接觸件之間的接觸不良現象。特別是自鎖緊接插件,問題更為嚴重:即使線芯開路了,從表面也難以通過肉眼發(fā)覺。導致實驗成功率低下,占用學生甚至指導老師的排故時間,嚴重影響了實驗效果。現代單片機實驗或單片機開發(fā)都離不開上位機對軟件的編譯和程序的下載。在實驗現場進行手工重接線時上位機處于空閑狀態(tài)。利用對實驗現場進行自動重接線,是該研發(fā)項目研究的重要內容。

            1 項目研發(fā)思路概述

            項目的研發(fā)思路見圖1 所示的流程圖。首先從底層做起,經過深入調研,對自己要研制的項目進行定位,根據各個學校提出的具體要求進行篩選,制定出總共需要多少個實驗項目,并為各個實驗項目設計出對應的實驗電路圖,這些實驗電路圖作為項目研發(fā)的基礎理論依據。根據這實驗電路圖研制實驗系統(tǒng)硬件裝置,各個實驗項目對應的元器件(包含單片機)布置在電路板的頂層,控制現場自動重接線的電子式交叉開關電路所用到的元器件( 包含FPGA 和專用模擬開關陣列ADG1161)布置在電路板的底層。

            上位機和實驗系統(tǒng)通信采用USB連接,共要傳輸兩類數據,實驗項目編號和單片機實驗的目標程序。上位機應用軟件程序采用Visual C++編制,應用程序將各個實驗電路圖與實驗編號一一對應。當要做某個實驗項目時,可以啟動該實驗編號,自動調出實驗電路圖,將實驗編號通過接口電路傳送給實驗系統(tǒng)的控制部分,實驗系統(tǒng)控制部分獲得該實驗編號后,由FPGA內的51核,根據項目編號對應出電子式交叉開關的接通與斷開,實現現場自動重接線,使實驗系統(tǒng)滿足實驗電路圖接線要求。

            

            此時便可以在上位機上做編程實驗,由專門的編譯系統(tǒng)(如Keil uV4或IAR)編譯實驗程序,產生目標代碼(*.bin 或*.hex),再由上位機通過所編制的應用程序將該目標代碼傳送給實驗系統(tǒng)的單片機內ROM中保存。單片機復位后便開始運行該目標程序,實現用戶實驗目的。

            2 實驗系統(tǒng)中的電子式交叉開關及其控制電路設計

            項目研發(fā)的關鍵是具有能按照不同的實驗電路指導現場自動重接線的裝置。即實驗系統(tǒng)的控制器按照上位機下達的實驗項目號對應出實驗電路,控制交叉開關進行現場。實現該控制功能所需的主要控制器件為2種:一種是超大規(guī)?,F場可編程的FPGA芯片;另一種是高性能的模擬開關陣列。通過對這兩種器件的有機組合,得到控制器電路結構框圖如圖2所示。


          上一頁 1 2 下一頁

          評論


          技術專區(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); })();