《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 串口波特率轉(zhuǎn)換的實現(xiàn)
串口波特率轉(zhuǎn)換的實現(xiàn)
摘要: 串口波特率轉(zhuǎn)換的實現(xiàn)武漢波仕電子有限公司孫漢華027-51518044串口通信,就是RS-232/RS-485通信,要求通信的雙方波特率等通信格式一樣才可以通信成功,。
Abstract:
Key words :

串口波特率轉(zhuǎn)換的實現(xiàn)

                    武漢波仕電子有限公司 孫漢華 027-51518044

 

串口通信,就是RS-232/RS-485通信,,要求通信的雙方波特率等通信格式一樣才可以通信成功??墒窃谠S多情況下,,兩種不同格式比如不同波特率的串口也要相互通信,這就必須進行串口波特率等格式的轉(zhuǎn)換,。本文介紹了如何實現(xiàn)串口波特率的轉(zhuǎn)換,。

如果串口設(shè)備1與串口設(shè)備2之間需要通信,但是它們之間的通信波特率不一樣,。實現(xiàn)串口波特率的轉(zhuǎn)換的原理就是利用波特率轉(zhuǎn)換器的兩個串口,,稱為串口A和串口B,分別設(shè)置為不同的波特率,。串口A的波特率通過產(chǎn)品的J2,、J1J0來設(shè)置,,串口B的波特率通過產(chǎn)品的K2,、K1K0來設(shè)置,,見表格,。其中串口A按照串口A設(shè)置的波特率接收串口設(shè)備1的數(shù)據(jù)并且立即從串口B按照串口B設(shè)置的波特率發(fā)送出去,,同樣串口B以串口B設(shè)置波特率收到串口哦設(shè)備2的數(shù)據(jù)立即從串口A以串口A設(shè)置的波特率向串口設(shè)1發(fā)送出去。

 

     RS-232波特率轉(zhuǎn)換器用于實現(xiàn)不同波特率的RS-232口的通信轉(zhuǎn)換,,純硬件跳線設(shè)置,,無需任何軟件設(shè)置。還可以與RS-232/485轉(zhuǎn)換器配合使用,,可以實現(xiàn)RS-485的不同波特率之間的通信,。串口波特率轉(zhuǎn)換器的外形為DB-9/DB-9轉(zhuǎn)接盒大小,如圖的產(chǎn)品左邊串口ADB-9孔的RS-232口,,右邊串口BDB-9針的RS-232口,上邊為波特率設(shè)置的跳線,,下面為5V電源接線端子,。左邊DB-9孔可以直接外插計算機的RS-232口,右邊的DB-9針引腳分配同計算機的RS-232口,,但是都只有RXD,、TXDGND三根線,。

波特率轉(zhuǎn)換器的兩邊的串口可以分別獨立設(shè)置波特率,,見下表。0-斷開,,1-短路,。獨有波仕零延時自動收發(fā)轉(zhuǎn)換技術(shù),確保適合所有格式的串口軟件包括16進制!

串口A的波特率設(shè)置

 

串口B的波特率設(shè)置

J2

J1

J0

 波特率

K2

K1

 K0

 波特率

 0

 0

 0

 1200

 0

 0

 0

 1200

 0

 0

 1

 2400

 0

 0

 1

 2400

 0

 1

 0

 4800

 0

 1

 0

 4800

 0

 1

 1

 9600

 0

 1

 1

 9600

 1

 0

 0

19200

 1

 0

 0

19200

 1

 0

 1

38400

 1

 0

 1

38400

 1

 1

 0

57600

 1

 1

 0

57600

 1

 1

 1

115200

 1

 1

 1

115200

  

 

波特率轉(zhuǎn)換器的內(nèi)部有一個帶雙串口的單片機,。單片機自動完成兩個串口之間的數(shù)據(jù)交換,。單片機程序用C語言編寫,核心功能就是先將兩個串口UART1UART2根據(jù)跳線設(shè)置的狀態(tài)進行波特率等初始化設(shè)置,,然后隨時將UART1接收的數(shù)據(jù)立即送到UART2的發(fā)送區(qū),、以及將UART2接收的數(shù)據(jù)立即送到UART1的發(fā)送區(qū)。核心代碼如下:

               //串口1發(fā)送字符數(shù)組函數(shù)

            void Uart1_Sendstr(uchar len,uchar stemp[])

           {          uchar i="0";

                for(i=0;i

                {       TI=0;

                       SBUF=stemp[i];

                        while(TI==0);

                       TI=0;       }      }

            //串口2發(fā)送字符數(shù)組函數(shù)

                void Uart2_Sendstr(uchar len,uchar s[])

            {    uchar i="0";

                while(len--)

              {    Uart2_Senddat(s[i]);

                      i++;    }     }

         //      ★★主函數(shù)★★★

void main()

{          uchar Uart1Set=0,Uart2Set=0;

  PortInit();   //按鍵端口初始化                 Uart1_Init();      //串口1初始化

  Uart2_Init();       //串口2初始化 

Uart1Set=J2;         Uart1Set=(Uart1Set<<1)|J1;

  Uart1Set=(Uart1Set<<1)|J0;  //讀取端口值              

  switch(Uart1Set)

  {       case 0x00:TH1=0xFF;TL1=0xFF;break;         //       115200

            case 0x01:TH1=0xFE;TL1=0xFE;break;        //       57600

            case 0x02:TH1=0xFD;TL1=0xFD;break;        //       38400

            case 0x03:TH1=0xFA;TL1=0xFA;break;         //       19200

            case 0x04:TH1=0xF4;TL1=0xF4;break; //       9600

            case 0x05:TH1=0xE8;TL1=0xE8;break; //       4800

            case 0x06:TH1=0xD0;TL1=0xD0;break;         //       2400

            case 0x07:TH1=0xA0;TL1=0xA0;break;         //       1200

            default:break;

  }

本文介紹的串口波特率轉(zhuǎn)換的硬件方法和單片機代碼,,對不同波特率之間的串口通信具有一定的使用價值,。波特率轉(zhuǎn)換器的優(yōu)點在于使用簡單方便,不足之處在于只能夠轉(zhuǎn)換波特率而沒有對數(shù)據(jù)位,、停止位,、校驗位進行轉(zhuǎn)換,而且對于不常見的波特率的轉(zhuǎn)換還需要定做,。如果要實現(xiàn)功能全面的波特率等各種格式的全面轉(zhuǎn)換,,還是要用計算機加上專門的波特率轉(zhuǎn)換軟件,通過對計算機的兩個串口進行波特率等格式的設(shè)置,,而兩個串口在計算機內(nèi)部進行數(shù)據(jù)透明傳輸,。我們已經(jīng)以另外文章《串口波特率轉(zhuǎn)換的純軟件實現(xiàn)》予以了介紹,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。