㈠ 單片機與單片機之間如何進行串列通信
1、將兩個單片機的RXD與TXD相連
2、根據需要傳輸的數據編寫傳輸協議
3、編寫串列通信程序,將自己需要發送的數據按照協議進行發送
4、編寫接收程序,按照協議進行接收
5、將兩個程序分別寫入兩個單片機,運行。
㈡ 兩個單片機之間的串口通信問題
單片機串口通信的問題,其實你只有一個問題,就是:
p0=0xf0;
s2buf=0xfc;
p0=s2buf;
//為什麼這里p0是0x00
?
你覺得p0應該等於0xfc對不對?之所以出乎你的預料,是因為s2buf寄存器地址是一個,實際是兩個寄存器,一個只讀,一個只寫。s2buf=0xfc是寫發送緩沖寄存器s2buf,p0=s2buf是讀接收緩沖寄存器s2buf,在沒有接收的字元時,接收緩沖寄存器s2buf是未知的,現在恰好是0,p0當然等於0x00。
㈢ 兩個8051單片機之間用方式2串列通信
串列口是單片機與外界進行信息交換的工具,8051單片機的通信方式有兩種:
並行通信:數據的各位同時發送或接收。
串列通信:數據一位一位次序發送或接收。
串列通信的方式
非同步通信
用一個起始位0表示字元的開始,用停止位1表示字元的結束,中間夾著8個數據位,字元能一個接一個傳送
CPU與外設之間必須有字元格式和波特率兩項規定
字元格式規定能使雙方把0和1串理解成同一種意義,原則上自由制定,通用角度使用標准如ASCII
波特率即數據傳輸速率,每秒傳送的二進制位數,如120字元/s,每個字元10數位,則傳送波特率為1200波特
同步通信
去掉了開始結束標志提高速度,但由於數據塊傳遞開始要用同步字元來指示,同時要求由時鍾來實現發送端與接收端之間的同步,故硬體較復雜。
通信方向
在串列通信中,把通信介面只能發送或接收的單向傳送辦法叫單工傳送;把數據能雙向傳遞稱為雙工傳送。半雙工傳送兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。全雙工傳送是能同時發送接收。
串列介面結構
51單片機一個可編程的全雙工串列通信介面。可用作非同步通信方式(UART),與串列傳送信息的外部設備相連接。或用於通過同步或非同步標准通信協議進行全雙工的8051多機系統,使用TTL或CMOS移位寄存器來擴充I/O口。
8051單片機通過管腳RXD(P3.0,串列數據接收端)和管腳TXD(P3.1,串列數據發送端)與外界通信。SBUF是串列口緩沖寄存器,包括發送寄存器和接收寄存器。它們有相同名字和地址空間,但不會出現沖突,因為它們兩個一個只能被CPU讀出數據,一個只能被CPU寫入數據。
㈣ 兩個單片機串口通信程序
兩個單片機串口通信,用模擬來實現比較容易做,兩個單片機的引腳TXD和RXD交叉連接即可。為了顯示通信效果,P2口接兩個數碼管可顯示接收的數據,P1口接兩個四位數字開關,用於輸入數據,然後從串口發送到另一單片機,兩個單片機互發數據,電路相同,程序也相同。模擬圖如下。
㈤ 兩個單片機串口通訊故障問題
電壓問題,電腦輸出電壓與單片機不符 2、通訊問題,查看連介面,及協議 3、單片機問題,晶元程序是否正確 4、連接線問題,換連接線試試。串口通訊如果波特率如果有誤差的話,有時候會出現數據錯誤的,這很正常。比如12M晶振,如果波特率為9600,就會又一些誤差。一個用12V電池經過7805穩壓管供電,電源沒有問題,不至於會影響到通信。兩個不同的板子不同的電源,那麼兩個板子的地(GND)是必須接到一起的,即要共地的。你的兩個板子的串口是TXD,RXD直接連接的,即是TTL連接還是用RS232或RS485連接只有在RS485模式下,只接兩條線就可以通信的,TTL連接或RS232連接都必須共地,另外,TTL連接的距離要很短的,最好還是接成RS232連接可靠。單片機 與 單片機 直接 串口通信,需要連接 RXD、TXD、GND, 如果 用同一個 電源 只連接 RXD、TXD 是沒有問題 的, 如果 不是 同一個 電源,則必須 連接RXD、TXD、GND。 如果 距離比較 長 幾百米,可以轉換成 RS485 連接 只要RS485 的 A、B 兩根線就可以。單片機 通過RS232串口 與PC 通訊,一般來說應該不成問題的, 現在的單片機應該抗干擾也是不成問題的, 你可以 先試試 不接 強電,光控制繼電器,和其它的所有正常操作,如果這樣正常, 才能說明干擾問題,否則可能是軟體問題。用排除法找到問題的所在。