欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      RS232串口通信原理簡介

      時(shí)間:2019-05-12 03:07:07下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《RS232串口通信原理簡介》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《RS232串口通信原理簡介》。

      第一篇:RS232串口通信原理簡介

      串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。

      串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線總常不得超過20米,并且任意兩個(gè)設(shè)備間的長度不得超過2米;而對于串口而言,長度可達(dá)1200米。

      典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配:

      波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就是指波特率例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。

      數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。

      停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。

      奇偶校驗(yàn)位:在串口通信中一種簡單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對于偶和奇校驗(yàn)的情況,串口會設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位位1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

      第二篇:串口通信實(shí)驗(yàn)報(bào)告范文

      華南農(nóng)業(yè)大學(xué)

      實(shí)驗(yàn)報(bào)告

      ----------目錄----------

      1、實(shí)驗(yàn)任務(wù)和目的..............................................................................................................2、實(shí)驗(yàn)準(zhǔn)備..........................................................................................................................3、實(shí)驗(yàn)步驟................................................................................................................................4、實(shí)驗(yàn)分析與總結(jié)....................................................................................................................(1)、分析.............................................................................................................................(2)、總結(jié).............................................................................................................................1、實(shí)驗(yàn)任務(wù)和目的

      了解串行通信的背景知識后,通過三線制制作一條串口通信線(PC-PC),并編程實(shí)現(xiàn)兩臺PC間通過RS-232C通信。要求兩臺PC機(jī)能進(jìn)行實(shí)時(shí)的字符通信,并了解工業(yè)自動化控制中的基本通信方式。

      2、實(shí)驗(yàn)準(zhǔn)備

      1、檢查PC是否具有串行通信接口,并按其針腳類準(zhǔn)備一條串口通信線纜。

      2、串口包的安裝,下載javacomm20-win32.zip并解壓,將win32com.dll復(fù)制到bin目錄下;將comm.jar復(fù)制到lib;把javax.comm.properties也同樣拷貝到lib目錄下,再將上面提到的文件放到JRE相應(yīng)的目錄下就可以了。

      3、實(shí)驗(yàn)步驟

      1、將實(shí)驗(yàn)所需RS-232纜線準(zhǔn)備好,并將JAVA串口包復(fù)制到相應(yīng)地目錄下。

      2、查找有關(guān)串口通信的書籍以及在網(wǎng)上查找相應(yīng)地串口通信代碼。

      3、用JAVA編程軟件JCreator編寫代碼。

      4、實(shí)驗(yàn)分析與總結(jié)

      (1)、分析

      (I)、對串口讀寫之前需要先打開一個(gè)串口并檢測串口是否被占用: public void open(){//打開串口以及輸入輸出流

      recieve=false;

      try

      {serialPort=(SerialPort)portId.open(“Serial Communication”, 2000);}

      catch(PortInUseException e){System.out.println(“端口正被占用!”);}

      try

      {serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);}

      catch(UnsupportedCommOperationException e){System.out.println(“不支持通信”);}

      try

      {

      outputStream=serialPort.getOutputStream();

      inputStream=serialPort.getInputStream();

      1-完整運(yùn)行程序如圖所示:

      圖1

      (2)、總結(jié)

      通過本次串口實(shí)驗(yàn),我對串口通信的知識了解的更透徹,這是在剛開始對串口通信知識不了解的情況下就編程而造成許多錯(cuò)誤之后才得到的結(jié)果。在網(wǎng)上查找資料的時(shí)候也接觸到了不少其他的編程語言例如VB,delphi,C#等,這也讓我對這些從沒有學(xué)過的語言有所了解,我想這些知識對以后的實(shí)驗(yàn)工作都有幫助。

      3--

      第三篇:單片機(jī)串口通信方式總結(jié)

      IIC總線通信協(xié)議————數(shù)據(jù)傳輸高位在前p233 1,起始和停止條件

      開始信號:SCL為高電平,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。void start()// 開始位 { SDA = 1;

      //SDA初始化為高電平“1”

      SCL = 1;

      //開始數(shù)據(jù)傳送時(shí),要求SCL為高電平“1”

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      SDA = 0;

      //SDA的下降沿被認(rèn)為是開始信號

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      SCL = 0;

      //SCL為低電平時(shí),SDA上數(shù)據(jù)才允許變化(即允許以后的數(shù)據(jù)傳遞)} 結(jié)束信號:SCL為高電平,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。void stop()// 停止位 { SDA = 0;

      //SDA初始化為低電平“0”

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      SCL = 1;

      //結(jié)束數(shù)據(jù)傳送時(shí),要求SCL為高電平“1”

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      SDA = 1;

      //SDA的上升沿被認(rèn)為是結(jié)束信號 }

      2,數(shù)據(jù)格式(數(shù)據(jù)輸入)

      在IIC總線開始信號后,送出的第一個(gè)字節(jié)數(shù)據(jù)是用來選擇器件地址和數(shù)據(jù)方向的,其格式為

      從器件收到地址型號后與自己的地址比較,一致則此器件就是主器件要找的器件,并返回ACK(不管是寫數(shù)據(jù)還是地址都會返回)。IIC傳送數(shù)據(jù)時(shí)SCL為低電平時(shí)SDA可改變高低電平,SCL轉(zhuǎn)跳為高時(shí)數(shù)據(jù)輸入(此時(shí)SDA不能跳變),發(fā)送數(shù)據(jù):bit WriteCurrent(unsigned char y){ unsigned char i;bit ack_bit;

      //儲存應(yīng)答位

      for(i = 0;i < 8;i++)// 循環(huán)移入8個(gè)位

      {

      SDA =(bit)(y&0x80);

      //通過按位“與”運(yùn)算將最高位數(shù)據(jù)送到S

      //因?yàn)閭魉蜁r(shí)高位在前,低位在后

      _nop_();

      //等待一個(gè)機(jī)器周期

      SCL = 1;

      //在SCL的上升沿將數(shù)據(jù)寫入AT24Cxx

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      SCL = 0;

      //將SCL重新置為低電平,以在SCL線形成傳送數(shù)據(jù)所需的8個(gè)脈沖

      y <<= 1;

      //將y中的各二進(jìn)位向左移一位

      } SDA = 1;

      // 發(fā)送設(shè)備(主機(jī))應(yīng)在時(shí)鐘脈沖的高電平期間(SCL=1)釋放SDA線,//以讓SDA線轉(zhuǎn)由接收設(shè)備(AT24Cxx)控制

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      SCL = 1;

      //根據(jù)上述規(guī)定,SCL應(yīng)為高電平

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      _nop_();

      //等待一個(gè)機(jī)器周期

      ack_bit = SDA;//接受設(shè)備(AT24Cxx)向SDA送低電平,表示已經(jīng)接收到一個(gè)字節(jié)

      //若送高電平,表示沒有接收到,傳送異常

      SCL = 0;

      //SCL為低電平時(shí),SDA上數(shù)據(jù)才允許變化(即允許以后的數(shù)據(jù)傳遞)

      return ack_bit;

      // 返回AT24Cxx應(yīng)答位 } 讀數(shù)據(jù):unsigned char ReadData()// 從AT24Cxx移入數(shù)據(jù)到MCU { unsigned char i;unsigned char x;

      //儲存從AT24Cxx中讀出的數(shù)據(jù)

      for(i = 0;i < 8;i++){

      SCL = 1;

      //SCL置為高電平

      x<<=1;

      //將x中的各二進(jìn)位向左移一位

      x|=(unsigned char)SDA;//將SDA上的數(shù)據(jù)通過按位“或“運(yùn)算存入x中

      SCL = 0;

      //在SCL的下降沿讀出數(shù)據(jù)

      } return(x);

      //將讀取的數(shù)據(jù)返回 } 發(fā)送數(shù)據(jù)步驟:

      oid WriteSet(unsigned char add, unsigned char dat)// 在指定地址addr處寫入數(shù)據(jù)WriteCurrent { start();

      //開始數(shù)據(jù)傳遞

      WriteCurrent(OP_WRITE);//選擇要操作的AT24Cxx芯片,并告知要對其寫入數(shù)據(jù)

      WriteCurrent(add);

      //寫入指定地址

      WriteCurrent(dat);

      //向當(dāng)前地址(上面指定的地址)寫入數(shù)據(jù)

      stop();

      //停止數(shù)據(jù)傳遞

      delaynms(4);

      //1個(gè)字節(jié)的寫入周期為1ms, 最好延時(shí)1ms以上 } 讀數(shù)據(jù)步驟:

      /*************************************************** 函數(shù)功能:從AT24Cxx中的當(dāng)前地址讀取數(shù)據(jù) 出口參數(shù):x(儲存讀出的數(shù)據(jù))

      ***************************************************/ unsigned char ReadCurrent(){ unsigned char x;start();

      //開始數(shù)據(jù)傳遞

      WriteCurrent(OP_READ);

      //選擇要操作的AT24Cxx芯片,并告知要讀其數(shù)據(jù)

      x=ReadData();

      //將讀取的數(shù)據(jù)存入x stop();

      //停止數(shù)據(jù)傳遞

      return x;

      //返回讀取的數(shù)據(jù) } /*************************************************** 函數(shù)功能:從AT24Cxx中的指定地址讀取數(shù)據(jù) 入口參數(shù):set_add 出口參數(shù):x

      ***************************************************/ unsigned char ReadSet(unsigned char set_add)// 在指定地址讀取 { start();

      //開始數(shù)據(jù)傳遞

      WriteCurrent(OP_WRITE);

      //選擇要操作的AT24Cxx芯片,并告知要對其寫入數(shù)據(jù)

      WriteCurrent(set_add);

      //寫入指定地址

      return(ReadCurrent());

      //從指定地址讀出數(shù)據(jù)并返回 }

      單總線協(xié)議————數(shù)據(jù)傳輸?shù)臀辉谇啊穑玻常?1,初始化單總線器件

      初始化時(shí)序程序:

      函數(shù)功能:將DS18B20傳感器初始化,讀取應(yīng)答信號 出口參數(shù):flag

      ***************************************************/ bit Init_DS18B20(void){ bit flag;

      //儲存DS18B20是否存在的標(biāo)志,flag=0,表示存在;flag=1,表示不存在

      DQ = 1;

      //先將數(shù)據(jù)線拉高

      for(time=0;time<2;time++)//略微延時(shí)約6微秒

      ;DQ = 0;

      //再將數(shù)據(jù)線從高拉低,要求保持480~960us for(time=0;time<200;time++)//略微延時(shí)約600微秒

      ;

      //以向DS18B20發(fā)出一持續(xù)480~960us的低電平復(fù)位脈沖

      DQ = 1;

      //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高)

      for(time=0;time<10;time++)

      ;//延時(shí)約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)

      flag=DQ;

      //讓單片機(jī)檢測是否輸出了存在脈沖(DQ=0表示存在)

      for(time=0;time<200;time++)//延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢

      ;return(flag);

      //返回檢測成功標(biāo)志 }

      單總線通信協(xié)議中存在兩種寫時(shí)隙:寫0寫1。主機(jī)采用寫1時(shí)隙向從機(jī)寫入1,而寫0時(shí)隙向從機(jī)寫入0。所有寫時(shí)隙至少要60us,且在兩次獨(dú)立的寫時(shí)隙之間至少要1us的恢復(fù)時(shí)間。兩種寫時(shí)隙均起始于主機(jī)拉低數(shù)據(jù)總線。產(chǎn)生1時(shí)隙的方式:主機(jī)拉低總線后,接著必須在15us之內(nèi)釋放總線,由上拉電阻將總線拉至高電平;產(chǎn)生寫0時(shí)隙的方式為在主機(jī)拉低后,只需要在整個(gè)時(shí)隙間保持低電平即可(至少60us)。在寫時(shí)隙開始后15~60us期間,單總線器件采樣總電平狀態(tài)。如果在此期間采樣值為高電平,則邏輯1被寫入器件;如果為0,寫入邏輯0。

      下圖為寫時(shí)隙(包括1和0)時(shí)序

      上圖中黑色實(shí)線代表系統(tǒng)主機(jī)拉低總線,黑色虛線代表上拉電阻將總線拉高。下面是代碼:

      WriteOneChar(unsigned char dat){ unsigned char i=0;for(i=0;i<8;i++)

      {

      DQ =1;

      // 先將數(shù)據(jù)線拉高

      _nop_();

      //等待一個(gè)機(jī)器周期

      DQ=0;

      //將數(shù)據(jù)線從高拉低時(shí)即啟動寫時(shí)序

      DQ=dat&0x01;

      //利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù),//并將其送到數(shù)據(jù)線上等待DS18B20采樣

      for(time=0;time<10;time++)

      ;//延時(shí)約30us,DS18B20在拉低后的約15~60us期間從數(shù)據(jù)線上采樣

      DQ=1;

      //釋放數(shù)據(jù)線

      for(time=0;time<1;time++)

      ;//延時(shí)3us,兩個(gè)寫時(shí)序間至少需要1us的恢復(fù)期

      dat>>=1;

      //將dat中的各二進(jìn)制位數(shù)據(jù)右移1位

      }

      for(time=0;time<4;time++)

      ;//稍作延時(shí),給硬件一點(diǎn)反應(yīng)時(shí)間 }

      對于讀時(shí)隙,單總線器件僅在主機(jī)發(fā)出讀時(shí)隙時(shí),才向主機(jī)傳輸數(shù)據(jù)。所有主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)隙至少需要60us,且在兩次獨(dú)立的讀時(shí)隙之間至少需要1us恢復(fù)時(shí)間。每個(gè)讀時(shí)隙都由主機(jī)發(fā)起,至少拉低總線1us。在主機(jī)發(fā)出讀時(shí)隙后,單總線器件才開始在總線上發(fā)送1或0。若從機(jī)發(fā)送1,則保持總線為高電平;若發(fā)出0,則拉低總線。

      當(dāng)發(fā)送0時(shí),從機(jī)在讀時(shí)隙結(jié)束后釋放總線,由上拉電阻將總線拉回至空閑高電平狀態(tài)。從機(jī)發(fā)出的數(shù)據(jù)在起始時(shí)隙之后,保持有效時(shí)間15us,因此主機(jī)在讀時(shí)隙期間必須釋放總線,并且在時(shí)隙起始后的15us之內(nèi)采樣總線狀態(tài)。

      下圖給出讀時(shí)隙(包括0或1)時(shí)序

      圖中黑色實(shí)線代表系統(tǒng)主機(jī)拉低總線,灰色實(shí)線代表總局拉低總線,而黑色的虛線則代表上拉電阻總線拉高。代碼為:

      unsigned char ReadOneChar(void){

      unsigned char i=0;

      unsigned char dat;//儲存讀出的一個(gè)字節(jié)數(shù)據(jù)

      for(i=0;i<8;i++)

      {

      DQ =1;

      // 先將數(shù)據(jù)線拉高

      _nop_();

      //等待一個(gè)機(jī)器周期

      DQ = 0;

      //單片機(jī)從DS18B20讀書據(jù)時(shí),將數(shù)據(jù)線從高拉低即啟動讀時(shí)序

      dat>>=1;

      _nop_();

      //等待一個(gè)機(jī)器周期

      DQ = 1;

      //將數(shù)據(jù)線“人為”拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備

      for(time=0;time<2;time++)

      ;

      //延時(shí)約6us,使主機(jī)在15us內(nèi)采樣

      if(DQ==1)

      dat|=0x80;//如果讀到的數(shù)據(jù)是1,則將1存入dat

      else

      dat|=0x00;//如果讀到的數(shù)據(jù)是0,則將0存入dat

      //將單片機(jī)檢測到的電平信號DQ存入r[i]

      for(time=0;time<8;time++)

      ;

      //延時(shí)3us,兩個(gè)讀時(shí)序之間必須有大于1us的恢復(fù)期

      }

      return(dat);

      //返回讀出的十進(jìn)制數(shù)據(jù) }

      每個(gè)單總線器件內(nèi)部都光刻了一個(gè)全球唯一的64位二進(jìn)制序列碼,用于該單總線器件的識別

      SPI總線協(xié)議

      SPI總線有四種工作方式(SP0, SP1, SP2, SP3),其中使用的最為廣泛的是SPI0和SPI3方式。

      SPI是一個(gè)環(huán)形總線結(jié)構(gòu),由ss(cs)、sck、sdi、sdo構(gòu)成,其時(shí)序其實(shí)很簡單,主要是在sck的控制下,兩個(gè)雙向移位寄存器進(jìn)行數(shù)據(jù)交換。

      上升沿發(fā)送、下降沿接收、高位先發(fā)送。

      上升沿到來的時(shí)候,sdo上的電平將被發(fā)送到從設(shè)備的寄存器中。

      下降沿到來的時(shí)候,sdi上的電平將被接收到主設(shè)備的寄存器中。讀代碼:

      unsigned char ReadCurrent(void){

      unsigned char i;unsigned char x=0x00;

      //儲存從X5045中讀出的數(shù)據(jù)

      SCK=1;

      //將SCK置于已知的高電平狀態(tài)

      for(i = 0;i < 8;i++){

      SCK=1;

      //拉高SCK

      SCK=0;

      //在SCK的下降沿輸出數(shù)據(jù)

      x<<=1;//將x中的各二進(jìn)位向左移一位,因?yàn)槭紫茸x出的是字節(jié)的最高位數(shù)據(jù)

      x|=(unsigned char)SO;//將SO上的數(shù)據(jù)通過按位“或“運(yùn)算存入 x

      } return(x);

      //將讀取的數(shù)據(jù)返回

      } 寫代碼:

      void WriteCurrent(unsigned char dat){

      unsigned char i;SCK=0;

      //將SCK置于已知的低電平狀態(tài)

      for(i = 0;i < 8;i++)// 循環(huán)移入8個(gè)位

      {

      SI=(bit)(dat&0x80);

      //通過按位“與”運(yùn)算將最高位數(shù)據(jù)送到S

      //因?yàn)閭魉蜁r(shí)高位在前,低位在后

      SCK=0;

      SCK=1;

      //在SCK上升沿寫入數(shù)據(jù)

      dat<<=1;

      //將y中的各二進(jìn)位向左移一位,因?yàn)槭紫葘懭氲氖亲止?jié)的最高位

      } } RS232通訊協(xié)議 串行通訊方式3 RS485通訊協(xié)議 串行通訊方式1

      第四篇:串口通信實(shí)驗(yàn)報(bào)告

      實(shí)驗(yàn)三

      雙機(jī)通信實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      UART 串行通信接口技術(shù)應(yīng)用

      二、實(shí)驗(yàn)實(shí)現(xiàn)的功能

      用兩片核心板之間實(shí)現(xiàn)串行通信,將按鍵信息互發(fā)到對方數(shù)碼管顯示。

      三、系統(tǒng)硬件設(shè)計(jì)

      (1)單片機(jī)的最小系統(tǒng)部分

      (2)電源部分

      (3)人機(jī)界面部分

      數(shù)碼管部分

      按鍵部分

      (4)串口通信部分

      四、系統(tǒng)軟件設(shè)計(jì)

      #include #define uchar unsigned char #define uint unsigned int void send();uchar code0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的數(shù)碼管顯示

      sbit H1=P3^6;sbit H2=P3^7;sbit L1=P0^5;sbit L2=P0^6;sbit L3=P0^7;

      uint m=0,i=0,j;uchar temp,prt;/***y延時(shí)函數(shù)***/ void delay(uint k){ uint i,j;

      }

      /***鍵盤掃描***/ char scan_key(){ H1=0;H2=0;

      L1=1;L2=1;L3=1;if(L1==0){ delay(5);if(L1==0){ L1=0;H1=1;H2=1;if(H1==0)} //定義局部變量ij

      //外層循環(huán) for(i=0;i

      { m=1;return(m);} if(H2==0){ m=4;return(m);} } }

      //KEY1鍵按下

      //KEY4鍵按下

      if(L2==0){ delay(5);if(L2==0){ L2=0;H1=1;H2=1;if(H1==0)

      { m=2;return(m);} if(H2==0){ m=5;return(m);} } }

      //KEY5鍵按下 //KEY2鍵按下

      if(L3==0){ delay(5);if(L3==0){ L3=0;H1=1;H2=1;if(H1==0){ m=3;

      //KEY3鍵按下

      }

      return(m);} if(H2==0){ m=6;return(m);} } } return(0);

      // KEY6鍵按下

      /***主函數(shù)***/ main(){ P1M1=0x00;P1M0=0xff;

      SCON=0x50;//設(shè)定串行口工作方式1 TMOD=0x20;//定時(shí)器1,自動重載,產(chǎn)生數(shù)據(jù)傳輸速率 TH1=0xfd;//數(shù)據(jù)傳輸率為9600 TR1=1;//啟動定時(shí)器1 P0&=0xf0;while(1){

      //如果有按鍵按下 if(scan_key()){ SBUF=scan_key();//發(fā)送數(shù)據(jù) while(!TI);TI=0;}

      if(RI){ RI=0;}

      // //

      等待數(shù)據(jù)傳送 清除數(shù)據(jù)傳送標(biāo)志

      //是否有數(shù)據(jù)到來

      // 清除數(shù)據(jù)傳送標(biāo)志

      temp=SBUF;

      // 將接收到的數(shù)據(jù)暫存在temp中

      P1=code0[temp];// 數(shù)據(jù)傳送到P1口輸出 delay(500);} } //延時(shí)500ms

      五、實(shí)驗(yàn)中遇到的問題及解決方法

      (1)串行口和定時(shí)器的工作方式設(shè)定是關(guān)鍵,本次是按需傳輸?shù)氖莾晌皇M(jìn)制數(shù),串行口為工作方式1,定時(shí)器為8位自動重載;(2)采用P0&=0xf0語句使4個(gè)數(shù)碼管靜態(tài)點(diǎn)亮;

      (3)在發(fā)送和接受過程中,用標(biāo)識位TI和RI來檢測發(fā)送和接受是否完成;(4)在用電腦和單片機(jī)進(jìn)行串口通信測試時(shí),電腦的傳世速率一定要和單片機(jī)的傳輸速率相等,否則顯示會出現(xiàn)錯(cuò)誤。

      指導(dǎo)老師簽字:

      日期:

      第五篇:通信原理

      通信的目的:傳遞消息中所包含的信息。

      消息:是物質(zhì)或精神狀態(tài)的一種反映,例如語音、文字、音樂、數(shù)據(jù)、圖片或活動圖像等。信息:是消息中包含的有效內(nèi)容。

      信道:將來自發(fā)送設(shè)備的信號傳送到接收端的物理媒質(zhì)。分為有線信道和無線信道兩大類。模擬通信系統(tǒng)是利用模擬信號來傳遞信息的通信系統(tǒng)。

      數(shù)字通信系統(tǒng)是利用數(shù)字信號來傳遞信息的通信系統(tǒng)。

      信源編碼與譯碼目的:提高信息傳輸?shù)挠行?、完成?數(shù)轉(zhuǎn)換

      信道編碼與譯碼目的:增強(qiáng)抗干擾能力

      加密與解密目的:保證所傳信息的安全

      數(shù)字調(diào)制與解調(diào)目的:形成適合在信道中傳輸?shù)膸ㄐ盘?/p>

      同步目的:使收發(fā)兩端的信號在時(shí)間上保持步調(diào)一致。

      數(shù)字通信的特點(diǎn)

      優(yōu)點(diǎn):

      抗干擾能力強(qiáng),且噪聲不積累

      傳輸差錯(cuò)可控

      便于處理、變換、存儲

      便于將來自不同信源的信號綜合到一起傳輸

      易于集成,使通信設(shè)備微型化,重量輕

      易于加密處理,且保密性好

      缺點(diǎn):

      需要較大的傳輸帶寬

      對同步要求高

      通信系統(tǒng)的分類

      按通信業(yè)務(wù)分類:電報(bào)通信系統(tǒng)、電話通信系統(tǒng)、數(shù)據(jù)通信系統(tǒng)、圖像通信系統(tǒng) … … 按調(diào)制方式分類:基帶傳輸系統(tǒng)和帶通(調(diào)制)傳輸系統(tǒng)

      調(diào)制傳輸系統(tǒng)又分為多種調(diào)制,詳見書中表1-1。

      按信號特征分類:模擬通信系統(tǒng)和數(shù)字通信系統(tǒng)

      按傳輸媒介分類:有線通信系統(tǒng)和無線通信系統(tǒng)

      按工作波段分類:長波通信、中波通信、短波通信 … …

      按信號復(fù)用方式分類:頻分復(fù)用、時(shí)分復(fù)用、碼分復(fù)用

      通信方式:

      單工通信:消息只能單方向傳輸?shù)墓ぷ鞣绞?/p>

      半雙工通信:通信雙方都能收發(fā)消息,但不能同時(shí)收發(fā)的工作方式

      全雙工通信:通信雙方可同時(shí)進(jìn)行收發(fā)消息的工作方式

      并行傳輸:將代表信息的數(shù)字信號碼元序列以成組的方式在兩條或兩條以上的并行信道上同時(shí)傳輸

      優(yōu)點(diǎn):節(jié)省傳輸時(shí)間,速度快:不需要字符同步措施

      缺點(diǎn):需要 n 條通信線路,成本高

      串行傳輸 :將數(shù)字信號碼元序列以串行方式一個(gè)碼元接一個(gè)碼元地在一條信道上傳輸優(yōu)點(diǎn):只需一條通信信道,節(jié)省線路鋪設(shè)費(fèi)用

      缺點(diǎn):速度慢,需要外加碼組或字符同步措施

      下載RS232串口通信原理簡介word格式文檔
      下載RS232串口通信原理簡介.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        51藍(lán)牙串口通信給親參考

        /**********51藍(lán)牙串口調(diào)試程序**************/ //串口接收的數(shù)據(jù)送至P1口,可接幾個(gè)led試一下 #include void main(void) { TMOD=0x20;//T0方式2,作為波特率發(fā)生器 TH1=0xfd;......

        通信原理課程設(shè)計(jì)[范文]

        通 題目: 信 原 理課程設(shè)計(jì) 基于MATLAB的系統(tǒng)的2ASK仿真 - 1 五、 設(shè)計(jì)心得和體會??????????????????????? 1、 心得和體會……………………………......

        通信原理課程設(shè)計(jì)

        通 信 原 理 課 程 設(shè)計(jì)班級:姓名: 學(xué)號: 任課教師:Simulink建模仿真實(shí)現(xiàn)頻分復(fù)用 ? 設(shè)計(jì)目的 1 掌握頻分復(fù)用工作原理 2 學(xué)會使用Simulink建模仿真 ? 設(shè)計(jì)題目涉及的理論知......

        計(jì)算機(jī)通信原理

        第2章 TCP/IP協(xié)議 2.1IP v4協(xié)議 2.1.1IP v4數(shù)據(jù)報(bào)格式 圖2-1IP數(shù)據(jù)報(bào)的格式 1. 固定字段的含義 圖2-2ToS字段內(nèi)部結(jié)構(gòu) 計(jì)算機(jī)網(wǎng)絡(luò)原理與通信技術(shù) 2. IP頭部的可變部分 圖2-3......

        通信原理課程設(shè)計(jì)[大全]

        二○一○~二○一一學(xué)年第二學(xué)期 電子信息工程系 課程設(shè)計(jì)計(jì)劃書 課程名稱:通信原理班級:姓名:學(xué)號:指導(dǎo)教師:二○一一年六月一日 1、課程設(shè)計(jì)目的: 通過課程設(shè)計(jì),鞏固已經(jīng)學(xué)過的有關(guān)......

        通信原理自薦信

        尊敬的領(lǐng)導(dǎo): 您好! 我是xx大學(xué)信息學(xué)院電子工程系通信原理的一名學(xué)生,即將面臨畢業(yè)。 四年的大學(xué)生活使我學(xué)到了許多東西,我把大部分時(shí)間和精力投在學(xué)習(xí)上,并取得了優(yōu)異的成績。......

        通信原理實(shí)驗(yàn)報(bào)告

        1, 必做題目 1.1 無線信道特性分析 1.1.1 實(shí)驗(yàn)?zāi)康?1) 了解無線信道各種衰落特性; 2) 掌握各種描述無線信道特性參數(shù)的物理意義; 3) 利用MATLAB中的仿真工具模擬無線信道的衰落......

        通信原理課程設(shè)計(jì)

        通信原理課程設(shè)計(jì) AM超外差收音機(jī)仿真 院系: 班級:姓名: 學(xué)號:指導(dǎo)老師: 完成日期: (一)課程設(shè)計(jì)目的: 為了將理論應(yīng)用到實(shí)踐,我們進(jìn)行了在整整半個(gè)月的課程設(shè)計(jì),我學(xué)到很多很多的東西......