在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

介紹了MCS251單片機和PC機間的串口通信原理與通信協議

電子設計 ? 作者:電子設計 ? 2018-11-09 08:13 ? 次閱讀

隨著計算機技術的快速發展和廣泛應用,上位機和下位機的主從工作方式為工業控制及自動控制系統所采用。由于PC機分析能力強、處理速度更快及單片機使用靈活方便等特點,所以一般都將PC機作為上位機,單片機作為下位機,二者通過RS2232或者RS2485接收、發送數據和傳送指令。單片機可單獨處理數據和控制任務,同時也將數據傳送給PC機,由PC機對這些數據進行處理或顯示。

本文介紹PC機和單片機通信在一種基于C8051F單片機的波形發生器中的應用,在上位機上顯示正弦波的幅值和頻率,由上位機發送指令可以改變波形幅度及頻率。

1 硬件電路的設計

MCS251 單片機有一個全雙工的串行通訊口UART,利用其RXD和TXD與外界進行通信,其內部有2 個物理上完全獨立的接收、發送緩沖器SBUF,可同時發送和接收數據。所以單片機和PC機之間可以方便地進行串口通訊。單片機串口有3條引線: TXD (發送數據) 、RXD (接收數據)和GND(信號地) .因此在通信距離較短時可采用零MO2DEM方式,簡單三連線結構。IBM2PC機有兩個標準的RS2232串行口,其電平采用的是E IA電平,而MCS251單片機的串行通信是由TXD (發送數據)和RXD (接收數據)來進行全雙工通信的,它們的電平是TTL電平;為了PC機與MCS251機之間能可靠地進行串行通信,需要用電平轉換芯片,我們采用了MAXIM公司生產的專用芯片MAX232 進行轉換。

電路如圖1所示。

介紹了MCS251單片機和PC機間的串口通信原理與通信協議

圖1 轉換芯片電路

2 系統軟件設計

軟件設計分上位機軟件設計和下位機軟件設計。這兩部分雖然在不同的機器上編寫和運行,但它們要做的工作是對應的:一個發送,另一個接收。

為了保證數據通信的可靠性,要制定通信協議,然后各自根據協議分別編制程序。現約定通信協議如下: PC機和單片機都可以發送和接收。上位機和下位機均采用查詢方式發送控字符和數據、中斷方式接收控制字符和數據。采用RS2232串口異步通信,1位起始位, 8位數據位, 1位停止位,無奇偶校驗,波特率9 600 b / s.每次PC機向單片機發送數據時,先發送握手信號"FF",下位單片機收到握手信號則發送應答信號"EE"至PC機,上位PC機收到應答信號后即發送數據。同樣,當單片機要向PC機發送數據時,也先向PC機發聯絡信號"EB90",PC機收到聯絡信號后發應答信號"EBOO",單片機收到應答信號后則發送數據。

2.1 上位機通信程序設計

PC機的串口都采用的是INS8250芯片。PC機中有2個異步通信口,一個是COM1,其端口地址范圍是3F8H-3 FFH,另一個是COM2,其端口地址是2F8H-2FFH.其與MODEM配合可以實現遠距離通信。其波特率是標準波特率(50-9 600) b / s。

8250內部有10個寄存器端口,其中有一個除數鎖存器,可以通過編程除數的大小來確定異步通信的波特率。8250使用的頻率是2 MHz的基準時鐘輸入信號,所以必須用分頻的方法產生所需要的波特率(移位脈沖) .除數鎖存器的值必須在8250初始化時設置, 即把通信線路控制器的最高位(DLAB)置1,然后分兩次把除數鎖存器的高8位和低8位分別寫入端口地址3F8H和3F9H (COM1) ,8250傳送或接收串行數據時使用的時鐘信號的頻率是數據傳輸波特率的16 倍,即波特率= 16 ×除數/1 843 200.

在Windows平臺上的串行通信多使用其提供的AP I函數來實現,這種方法使用起來需要許多底層設置,因而較為繁瑣,并且難以理解。Microsoft推出的ActiveX技術提供了另外一種實現串行通信的方法。這種方法不僅相對較為簡單,而且非常實用。

尤其是Visual C + +這種可視化面向對象的編程環境中,可以真正把串口看作一個對象,編程時只需簡單的設置,理解起來也很容易。本文上位機通信程序使用VC + +提供的串行通信控件MSComm (Mi2crosoft Communication Control) ,主要步驟如下:打開VC + + 610集成開發環境,選擇菜單項File /New,在出現的對話框中選中Projects標簽中的MFC App2Wizard ( exe) ,生成一個基于對話框的應用程序。選擇菜單項Project/Add to p roject/Components andControls?,在彈出的對話框中選擇Registered Ac2tiveX Controls文件夾下的Microsoft CommunicationsControl, 選擇Registered ActiveX Controls 來注冊MSComm,將該控件從工具箱中拉到對話框中即可實現控件的插入。選擇ClassWizard為新創建的通信控件加入一個成員變量,將其命名為m_commute.

通過該成員變量便可以對串口屬性進行設置。以下是通過設置控件屬性對串口進行初始化:

BOOL CMyCOMMDlg: : OnlnitDialog( )

{

CDialog: : OnlnitDialog( ) ;

/ /此處為應用框架自動生成代碼

m_commute. SetCommPort(1) ; / /使用串口1

m_commute. SetSettings("9600,N, 8, 1") ; / /波特率為9600,無奇偶校驗, 8位數據位, 1位停止位

m_commute. SetRThreshold (10) ; / /每接收10個字符就觸發1次接收事件

m_commute. SetSThreshold (0) ; / /不觸發發送事件

m_commute. SetInputLen (10) ; / /每次讀操作從緩沖區中取10個字符

m_commute. SetInputMode (1) ; / /二進制數據傳輸形式

m_commute. SetPortOpen ( TRUE) ; / /打開串口

return TRUE; / /返回

}

事件驅動是處理串行端口交互作用的一種非常有效的方法。OnComm 事件的CommEvent屬性可以捕捉并檢查通信事件和錯誤。發生通信事件或錯誤時,將觸發OnComm 事件, CommEvent屬性的值將被改變,應用程序檢查CommEvent屬性值并作出相應的反應。雙擊對話框中CMSComm控件,添加OnComm事件的代碼:

if (m_commute. GetCommEvent( ) = = 2) / /判斷comEvReceive事件發生否

{

shortm_size =m_commute. GetinBufferCount( ) ;

if (m_size = = 11) / /緩沖區為11個字符為滿

{

m_commute. SetInputLen (L) ; / /讀取接收到的數據

VAR IANT vRep ly =m_commute. GetInput ( ) ; / /處理接收到的數據

}

}

2.2 下位機通信程序設計

在上位機與多片單片機通信中,要保證主機與從機間可靠的通信,必須保證通信接口具有識別功能。而單片機串行口控制寄存器SCON中的控制位SM2就是為了滿足這一要求而設置的。且SM2控制位只在MCS51單片機的串行工作方式2與方式3才起作用。在串行口以方式2或方式3接收時,若SM2 =1,表示置多機通信功能位,這時出現兩種可能情況:接收到第9位數據為1時,數據才裝入SBUF,并置R I = 1向CPU發出中斷請求;如果接收到第9位數據為0時,則不發生中斷,信息被掉失。若SM2=0,則接收到的第9位數據無論是0還是1都產生R I =1中斷標志,接收到的數據裝入SBUF中。根據上述情況MCS - 51多機通信過程安排如下:

(1)開始時設所有的從機SM2位為1 ,處于只接收地址幀的狀態(串行幀的第9位為1 ) ,對數據幀(串行口的第9位為0)則不做響應。

(2)當從機接收到主機發來的地址幀后,將所接收的地址與本機地址相比較,若地址與本機地址相符,便使SM2清零以接收主機隨后發來的數據,對于地址不相符合的從機,仍保持SM2 = 1狀態,故不能接收主機隨后發來的數據信息。

(3)當主機改為與另外從機聯系時,可再發出地址幀來尋找其它從機。而先前被尋址過的從機在分析出主機是對其它從機尋址時,恢復其SM2 = 1,等待主機的再一次尋址。

(4)從機要呼叫主機時,可先發送握手信號,主機檢測到有從機呼叫后,發出應答信號,從機接收到主機應答后,便可發送數據給主機。主機通過該信號來判斷從機所處的狀態,從而作出相應的反應。

設計單片機通信程序時,必須充分發揮單片機的效率。由于單片機多應用于實時性較強的控制場合,因此,應將及時響應和控制對象的動作放在優先考慮的位置,以盡量減少通信等輔助性操作所占用的CPU時間。基于上述考慮,筆者在設計單片機通信程序時,將通信程序分為接收中斷處理程序、發送中斷處理程序和通信處理程序3部分,并將這3部分程序巧妙地進行組合,從而構成整個單片機的通信程序。圖2給出了接收中斷處理子程序,圖3給出了發送中斷子程序。

介紹了MCS251單片機和PC機間的串口通信原理與通信協議

圖2 接收中斷處理程序

介紹了MCS251單片機和PC機間的串口通信原理與通信協議

圖3 發送中斷處理程序

3 結束語

本文給出了上位PC機與下位單片機之間進行異步串行通信的解決方案,上位機通過友好的用戶界面,可給下位機發送控制指令。此方案在實際運行過程中,運行穩定,效果良好,從而較好地解決了上位機與下位機之間的通信問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6039

    文章

    44575

    瀏覽量

    636382
  • PC
    PC
    +關注

    關注

    9

    文章

    2089

    瀏覽量

    154334
  • 計算機
    +關注

    關注

    19

    文章

    7518

    瀏覽量

    88191
收藏 人收藏

    評論

    相關推薦

    MCS251PC串口通信電路設計

    本文介紹PC 單片機通信在一種基于C8051F 單片機的波形發生器中的應用,在上位機上顯示正
    發表于 12-19 14:47 ?2042次閱讀
    <b class='flag-5'>MCS251</b>和<b class='flag-5'>PC</b><b class='flag-5'>機</b><b class='flag-5'>間</b>的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>電路設計

    MCS251PC怎么實現串口通信電路?

    MCS251PC串口通信電路設計
    發表于 11-04 02:20

    51單片機串口通信協議的特點是什么

    介紹51單片機串口通信協議,以下簡稱串口
    發表于 02-23 07:46

    單片機串口通信協議的實現實例分享

    調試和做一些簡單人機交互的一種重要的通信方式,其原理網上有一大堆,這里就不再贅述,下面主要和大家分享一種我在實際項目中經常用到的一個簡單的串口通信協議和實現方式。下面以STM32F1
    發表于 01-20 07:35

    單片機PC串口通信編程

    單片機PC串口通信編程實驗目的利用PROTUES仿真軟件、串口調試助手、虛擬
    發表于 02-16 07:00

    基于MCS2-51單片機的PS/2模擬鍵盤接口的設計研究

    摘 要:本文通過對標準PS/2鍵盤協議的分析,用MCS251單片機模擬鍵盤通信時序,實現單片機通過PS/2鍵盤接口與
    發表于 07-15 11:52 ?169次下載

    PC與多MCS-51單片機的串行通信設計?

    【摘 要】 主要講解了IBM-PCMCS-51單片機系統的通信原理,給出了其硬件接口框圖
    發表于 05-16 19:43 ?1909次閱讀
    <b class='flag-5'>PC</b><b class='flag-5'>機</b>與多<b class='flag-5'>MCS</b>-51<b class='flag-5'>單片機</b><b class='flag-5'>間</b>的串行<b class='flag-5'>通信</b>設計?

    PC鍵盤通信協議及其在單片機應用系統右的實現

    本文對標準鍵盤接口的通信協議及傳輸時序進行了研究,全面介紹鍵 盤掃描碼、系統命令碼及鍵盤響應碼,解決單片機 系統中應用標準
    發表于 03-28 16:56 ?3次下載

    單片機PC串口通信顯示

    單片機基礎學習,串口學習。使單片機PC串口通信
    發表于 06-01 17:48 ?15次下載

    PC單片機串口通信協議

    PC單片機串口通信協議
    發表于 12-26 22:12 ?0次下載

    單片機C語言之串口通信協議

    本文首先介紹串口的基本結構,其次介紹串口通信方式
    發表于 05-22 12:37 ?4934次閱讀
    <b class='flag-5'>單片機</b>C語言之<b class='flag-5'>串口</b><b class='flag-5'>通信協議</b>

    單片機:Modbus 通信協議介紹

    實用串口通信程序的時候,我們通過串口發給單片機三條指令,讓單片機做了三件不同的事情,分別是“buzz on”、“buzz off”和“sho
    發表于 11-13 20:51 ?11次下載
    <b class='flag-5'>單片機</b>:Modbus <b class='flag-5'>通信協議</b><b class='flag-5'>介紹</b>

    制定通信協議,實現單片機PC通信

    單片機PC串口通信編程實驗目的利用PROTUES仿真軟件、串口調試助手、虛擬
    發表于 12-17 18:30 ?22次下載
    制定<b class='flag-5'>通信協議</b>,實現<b class='flag-5'>單片機</b>與<b class='flag-5'>PC</b><b class='flag-5'>機</b><b class='flag-5'>通信</b>

    如何利用MODBUS通信協議實現觸摸屏與單片機通信和控制

    講解如何利用MODBUS通信協議,實現觸摸屏與單片機通信和控審I。詳細介紹觸摸屏與單片機的硬
    發表于 08-02 09:50 ?18次下載

    單片機通信協議有哪些 單片機和wifi模塊怎么通信

    單片機和WiFi模塊通信的方法有以下幾種: 1. 串口通信:將單片機與WiFi模塊通過串口連接,
    的頭像 發表于 06-13 17:56 ?1.6w次閱讀
    主站蜘蛛池模板: 国产逼逼视频| 欧美一级特黄乱妇高清视频| 天天操91| 天天插综合| 天堂网www天堂在线资源链接| 岛国一级毛片| 久久综合亚洲| 国模视频在线| 免费色网址| 精品国内一区二区三区免费视频| 色多多高清在线观看视频www| 日本一区二区三区视频在线| 亚洲男人的天堂久久香蕉网| 日本69sexmovies| 18videosex欧美69| 日本免费一区视频| 一级黄色毛片免费看| 色婷婷成人| 色老板在线视频一区二区| 欧美人成网站免费大全| 日本黄色视屏| 日韩美女拍拍免费视频网站| 欧美大片一区| www.亚洲黄色| 躁天天躁中文字幕在线| 成人在线色视频| 天天色综合1| 天天干夜夜叭| 寡妇影院首页亚洲图片| 亚洲一区二区三区免费视频| 一级特级aaa毛片| 欧美香蕉视频| 美国色网站| 麻豆国产一区二区在线观看| 成人a毛片免费全部播放| 色屁屁www影院免费观看视频| 日本精品视频一视频高清| 日日骑夜夜操| 黑人40厘米全进去xxxx猛交| 看黄在线| 亚洲综合色站|