日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]   單片機間通信的方式通常有并行通信和串行通信兩種。并行通信優(yōu)點是傳送的速度快,缺點是占用的數(shù)據(jù)傳輸線多,長距離傳輸成本高。單片機間通信通常采用串行通信方式。本例實現(xiàn)在單片機甲與單片機乙之

  單片機間通信的方式通常有并行通信和串行通信兩種。并行通信優(yōu)點是傳送的速度快,缺點是占用的數(shù)據(jù)傳輸線多,長距離傳輸成本高。單片機間通信通常采用串行通信方式。本例實現(xiàn)在單片機甲與單片機乙之間傳送數(shù)據(jù)。
  
  通信雙方約定發(fā)送方為甲機,接收方為乙機。首先甲機向乙機發(fā)送一聯(lián)絡(luò)數(shù)據(jù)(0xAA),乙機接收到后響應(yīng)應(yīng)答信號(0xDD),然后接收甲機發(fā)送的數(shù)據(jù)。如果乙機接收到的數(shù)據(jù)不正確,就向甲機發(fā)送0xFF,甲收方收到OxFF后重傳數(shù)據(jù)。

  在串行通信中,如果兩單片機系統(tǒng)之間的距離很短(lm以內(nèi)),可利用單片機的串口直接相連的方法實現(xiàn)雙機通信,連接時注意一方的TXD與另一方的RXD引腳相連接。如下圖所示。


  
  如果通信距離較遠(30m以內(nèi)),可利用RS-232C接口延長通信距離,此時必須將單片機的TTL電平與RS-232C標(biāo)準電平進行轉(zhuǎn)換。這就需要在雙方的單片機接口部分增加RS-232C電平轉(zhuǎn)換芯片,常用的此類芯片有MAX232等,系統(tǒng)框圖如下圖所示。

  單片機間雙機通信的結(jié)構(gòu)框圖如下圖所示,系統(tǒng)的硬件主要包括單片機和電平轉(zhuǎn)換芯片。單片機選用89C51,由于單片機的信號為TTL電平(0V~5V),如果利用RS-232標(biāo)準總線接口進行較遠距離的通信,必須把單片機輸出的TTL電平轉(zhuǎn)換為RS-232標(biāo)準電平。運用電平轉(zhuǎn)換芯片MAX232進行單片機雙機串行通信的電路如圖所示,圖中只畫出了通信一方的單片機接口電路。

  整個系統(tǒng)包括單片機最小系統(tǒng)和MAX232電平轉(zhuǎn)換電路。MAX232具有兩路收發(fā)器,這里只使用了其中的一路。注意另一方的單片機RXD、TXD的連接方式與本圖不同,通信雙方MAX232的TOUT、RIN應(yīng)分別與對方的RJN、TOUT相連,注意通信的雙方地線也要連接起來。

  下面的程序中,單片機的晶振選用頻率為11.0592MHz,串口工作在方式1,通信的波特率為9 600bit/s,發(fā)送和接收數(shù)據(jù)均采用的是查詢方式。程序流程圖如下圖所示。


  主要由以下子程序構(gòu)成。
  
  ·voidinit():完成串口初始化功能。
  
  ·voidsend0:完成甲機發(fā)送數(shù)據(jù)功能。
  
  ·voidrecv():乙機根據(jù)制定的聯(lián)絡(luò)信號接收數(shù)據(jù)的功能。
  
  具體程序如下:

  1.串口初始化子程序voidinit()
  
  串口初始化子程序init()設(shè)定串行口工作在方式1,波特率為9600bit/s,程序代碼如下:

  2.甲機發(fā)送子程序voidsend()
  
  甲機發(fā)送子程序send()完成甲機發(fā)送數(shù)據(jù)功能。首先發(fā)送聯(lián)絡(luò)信號,然后等待乙機響應(yīng)。
  
  乙機準備好后響應(yīng)甲機的聯(lián)絡(luò),然后計算校驗和并發(fā)送數(shù)據(jù),等待乙機響應(yīng),若乙機響應(yīng)正確則從子程序中返回,否則再次發(fā)送數(shù)據(jù)并等待乙機響應(yīng),程序代碼如下:

  3.乙機接收程序voidrecv()
  
  乙機接收程序根據(jù)制定的聯(lián)絡(luò)信號接收數(shù)據(jù)。接收到數(shù)據(jù)后,如果收到的數(shù)據(jù)不是0×AA,則發(fā)送0×FF數(shù)據(jù)表明未收到聯(lián)絡(luò)信號并繼續(xù)等待。收到聯(lián)絡(luò)信號后,接收數(shù)據(jù)并計算校驗和,若校驗正確則發(fā)送0×00表明數(shù)據(jù)正確,否則發(fā)送0×FF說明數(shù)據(jù)接收錯誤。程序代碼如下:

  單片機利用串行口發(fā)送數(shù)據(jù),可以用查詢方式發(fā)送數(shù)據(jù),也可以采用中斷方式。而接收數(shù)據(jù)時一般采用串行口中斷的方式接收數(shù)據(jù)。本例程中發(fā)送和接收均采用查詢方式。
  
  為保證通信的正常進行,發(fā)送方和接收方的數(shù)據(jù)幀格式、波特率要設(shè)置一致,通信雙方單片機系統(tǒng)的晶振頻率盡量選用一樣的。
  
  只知道對方的波特率時,要合理選用晶振,使兩個通信設(shè)備間的波特率誤差小于2.5%。
  
  如我們?yōu)榈玫浇?jīng)常使用的l200bit/s、9600bit/s波特率而采用11.0592MHz的晶振。例如晶振選用11.0592MHz時,若要求通信波特率為9600bit/s,SMOD=0,則根據(jù)公式計算得定時器Tl的初值TH1正好等于253;若采用12MHz的晶振,則得到THl=252.74,經(jīng)取整(253)后計算得到的波特率為10416bit/s,波特率存在著較大的誤差。
  
  另外通信的雙方還必須遵守一定的通信協(xié)議,通信協(xié)議是通信的雙方的一種預(yù)先約定,包括對數(shù)據(jù)格式、同步方式、傳送速度、傳送方法、糾錯方式等做出的統(tǒng)一規(guī)定,通信的雙方必須嚴格遵守通信協(xié)議。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉