久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1561|回復: 0
收起左側

I/O 口模擬串行通信

[復制鏈接]
ID:308296 發表于 2018-4-15 00:11 | 顯示全部樓層 |閱讀模式







                                                                89C51 單片機 I/O 口模擬串行通信的實現方法

目前普遍采用的 MCS51 和 PIC 系列單片機通常只有一個(或沒有)UART

異步串行通信接口,在應用系統中若需要多個串行接口(例如在多機通信系

統中,主機既要和從機通信又要和終端通信)的情況下,通常的方法是擴展

一片 8251 或 8250 通用同步/異步接收發送芯片(USART),需額外占用單

片機 I/O 資源。本文介紹一種用單片機普通 I/O 口實現串行通信的方法,可

在單片機的最小應用系統中實現與兩個以上串行接口設備的多機通信。

1.串行接口的基本通信方式 .串行接口的基本通信方式 .串行接口的基本通信方式 .串行接口的基本通信方式  串行接口的有異步和同步兩種基本通信

方式。異步通信采用用異步傳送格式,如圖 1 所示。數據發送和接收均將起

始位和停止位作為開始和結束的標志。在異步通信中,起始位占用一位(低



電平),用來表示字符開始。其后為 7 或 8 位的數據編碼,第 8 位通常做為

奇偶校驗位。最后為停止位(高電平)用來表示字符傳送結束。上述字符格

式通常作為一個串行幀,如無奇偶校驗位,即為常見的 N.8.1 幀格式。

串行通信中,每秒傳送的數據位稱為波特率。如數據傳送的波特率為

1200 波特,采用 N.8.1 幀格式(10 位),則每秒傳送字節為 120 個,而字節

中每一位傳送時間即為波特率的倒數:T=I/1200=0.833ms。同樣,如數據傳

送的波特率為 9600 波特,則字節中每一位傳送時間為 T=1/9600=0.104 ms。

根據數據傳送的波特率即字節中每一位的傳送時間,我們便可用普通 I/O 口

來模擬實現串行通信的時序。

2.硬件電路   89C51 單片機通過普通 I/O 口與 PC 機 RS232 串口實現

通信的硬件接口電路如圖 2 所示。由于 PC 系列微機串行口為 RS232C 標準

接口,與輸入、輸出均采用 TTL 電平的 89C51 單片機在接口規范上不一致,

因此 TTL 電平到 RS232 接口電平的轉換采用 MAXIM 公司的 MAX232 標準

RS232接口芯片,該芯片可以用單電壓(+5V)實現RS232接口邏輯“1”(-3V~

2

15V)和邏輯“0”(+3V~15V)的電平轉換。圖中 89C51 的 P1.0 模擬發送

端,P1.1 模擬接收端。



    3.接口程序設計    軟件設計中,89C51 單片機的 P1.0 和 P1.1 口分別

模擬串行通信的發送和接收,其接口程序主要由 INPUT 發送子程序和

OUTPUT 接收子程序組成。通信速率 1200 bit /s,幀格式為 N.8.1。發送時,

先發送一個起始位(低電平),接著按低位在先的順序發送 8 位數據,最后

發送停止位。接收時,先判斷 P1.1 接收端口是否有起始低電平出現,如有

則按低位在先的順序接收 8 位數,最后判斷 P1.1 口是否有停止高電平出現,

如有則完成一個數據接收,否則繼續等待。其中軟件編寫要嚴格按照異步通

信的時序進行,每 bit 位傳送時間間隔按通信速率 1200 bit /s 計算為 833μs。

其模擬串行通信程序清單見下,系統要求單片機晶振為 6M。程序清單如下:      TXD EQU P1.0      RXD EQU P1.1   ;定義 89C51  P1.0 為發送端,P1.1 為接收端      ORG  0000H      AJMP MAIN      ORG  0100H MAIN: MOV A, #30H      MOV R5,#N      SETB RXD       ;P1.0 置高 TX:  LCALL INPUT    ;調用發送子程序,將寄存器 A 中內容發給 PC 機 ;      SETB  TXD      ;P1.1 置高      MOV   R0,#40H RX:   LCALL OUTPUT   ;調用接收子程序,將接收的 N 個數據存放在以 40H 開始的地址中      MOV   @R0,A      INC   R0      DJNZ  R5, RX   ;N 個數據接收結束,則等待,否則轉 RX 繼續接收

3

       AJMP  $ ;**************延時 833μs 子程序***** DEL833: MOV  R7 ,#205 MS11:   DJNZ R7,MS11        RET ; ********************************** ;******** 89C51 發送數據給 PC 機子程序**** INPUT: CLR   C       MOV   TXD,C         ;發送起始位       LCALL DEL833        ;延時       MOV   R3,#8 REP:   RRC   A       MOV   TXD ,C       LCALL DEL833       DJNZ  R3,REP        ;發送 8 位數據       SETB  C             ;發送停止位       MOV   TXD,C       LCALL DEL833       RET ;********從 PC 機接收數據子程序******** OUTPUT: JB  RXD, $        ; 判斷是否有起始位出現        LCALL DEL833        MOV R3,#8 OUT:   MOV C ,RXD        RRC A        LCALL DEL833        DJNZ R3,OUT      ; 接收 8 位數據        JNB RXD ,$       ; 判斷是否有停止位出現        RET    本文介紹的用 89C51 單片機 I/O 口模擬實現串行通信的方法,已成功

地應用在某電壓數據采集系統中,實踐證明能可靠地傳送和接收數據。










回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产a级 | 国产精品欧美一区二区三区不卡 | 亚洲午夜三级 | 99精品视频一区二区三区 | 天天天操 | 日本不卡一区二区三区 | 激情欧美日韩一区二区 | 99国内精品 | 久久久精品网 | 2018国产大陆天天弄 | 日韩一区二区在线免费观看 | 国产福利91精品 | 久久综合av | 亚洲高清在线 | 久久精品欧美一区二区三区麻豆 | 亚洲一在线 | 亚洲一区二区在线电影 | 精品欧美激情在线观看 | 欧美激情久久久 | 日韩欧美在线观看 | 国产午夜精品一区二区三区嫩草 | 99精品久久久久久久 | 免费在线观看成人av | 在线视频 中文字幕 | 黄色日本视频 | 欧美成人自拍 | 最新中文字幕在线 | 日本精品视频 | 国产清纯白嫩初高生在线播放视频 | 岛国av免费看 | 亚洲精品久久国产高清情趣图文 | 欧美日韩不卡合集视频 | 国产在线视频一区二区 | 超碰人人插 | 一区二区三区中文字幕 | 精品久久国产老人久久综合 | 日韩精品视频在线 | 国产成人福利在线观看 | 国产精品18hdxxxⅹ在线 | 亚洲精品在线看 | 成人在线一区二区 |