新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PC機與單片機多機實時通信的設計與實現

        PC機與單片機多機實時通信的設計與實現

        作者: 時間:2012-02-06 來源:網絡 收藏

        VB可以發送文本數據和二進制數據。發送二進制數據時,必須傳遞一個包含字節數組的 Variant到 Output 屬性。接收二進制數據時,Input屬性通過一個Variant返回一二進制數據的數組。為便于命令的表達,本系統采用二進制格式的數據。

        為更深入了解該控件,這里對接收數據緩沖區進行了分析,該控件開辟的接收數據緩沖區類似一個隊列,Windows95低層驅動程序負責將接收到的數據填入隊列尾部,同時修改尾指針,當OnComm事件發生后用Input讀取InputLen長度個字節后,將隊列頭指針后移InputLen位。可以把這個緩沖區開得大一點,這樣即使暫時來不及處理也不會丟失數據。接收數據緩沖區數據結構示意圖如圖3所示。

        3 多機通信的實現

        89C51單片機的串行口工作方式3可實現多機通信。接收時,若SM2=1,表示置多機通信功能位,這時出現兩種可能情況:接收到第9位數據為1時,數據才裝入SBUF,并置RI=1向CPU發出中斷請求;如果接收到第9位數據為0,則不產生中斷標志,信息將拋棄。若SM2=0,則接收到的第9位數據不論是0還是1都產生RI=1中斷標志,接收到的數據裝入SBUF中。根據這個功能,可實現多個 89C51應用系統的串行通信。

        機定時中斷服務程序框圖

        多機通信過程安排如下:使所有從機的SM2位置1,處于只接收地址幀的狀態;主機發送一幀地址信息,其中包含8位地址,第9位為地址、數據標志位,第9位置1表示發送的是地址;從機接收到地址幀后 ,各自將所接收的地址與本從機的地址相比較,對于地址相符的從機,使SM2清0以接收主機隨后發來的信息,對于地址不相符的從機,仍保持SM2=1狀態,對主機隨后發送的數據不予理睬,直至發送新的地址幀;主機發送控制指令與數據,給被尋址的從機數據幀的第9位置0,表示發送的是數據。

        單片機程序采用PLM51語言設計,主單片機定時中斷服務程序框圖如圖4所示。主單片機串行口接收和發送中段服務程序框圖如圖5所示。主單片機串行口接收中斷服務程序如圖6所示。從單片機串行口接收和發送中段服務程序框圖如圖7所示。主單片機在主程序中以查詢方式將各從機送來的數據從內存中讀出后順序發送給上位PC機。程序清單略。


        從實際使用來看,本系統具有較高的性價比,且穩定可靠,稍加改進即可用于自動化測量和實時控制系統的數據通信。

        參考文獻

        1 何立民.MCS-51系列單片機應用系統設計系統配置與接口技術.北京:北京航天航空大學出版社,1990.1

        2 陳功富,韓賢東.計算機網設計與實現.北京:人民郵電出版社,1994.10


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兴安盟| 理塘县| 濮阳市| 海丰县| 固原市| 麻城市| 台中市| 尚志市| 银川市| 河东区| 崇义县| 靖安县| 云浮市| 衡山县| 蓝山县| 汶川县| 岑巩县| 施秉县| 双柏县| 榕江县| 江津市| 祁阳县| 大安市| 临西县| 广南县| 乐山市| 都昌县| 宝坻区| 武功县| 惠安县| 隆林| 贞丰县| 长宁区| 镇巴县| 武城县| 文化| 海林市| 新昌县| 潜江市| 银川市| 屏南县|