版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、項目9 串口通信9.1 RS-232接口原理RS232接口是1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調制解調器廠家及計算生產機終端廠家共同制定的用于串行通訊的標準。它的全名是“數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通訊設備(DCE)之間串行二進制數(shù)據(jù)交換接 術標準”該標準規(guī)定采用一個25個腳的DB25連接 器,對連接器的每個引腳的信號內容加以規(guī)定,還對各種信號的電平加以規(guī)定。DB25的串口一般只用到的管腳只有2(RXD)、3(TXD)、7(GND)這三個。隨著設備的不斷改進,現(xiàn)在DB25針很少看到了,代替它的是DB9的接口,DB9所用到的管腳比DB25有所變化,是2(RXD)、3(TXD)、
2、5(GND)這三個。被廣泛用于計算機的串行接口(COM1、COM2等)與單片機或其它終端之間的近地連接。因此現(xiàn)在都把RS232接口叫做DB9。該標準在數(shù)據(jù)傳輸速率20Kbps時,最長的通信距離為15米。由于RS232接口標準出現(xiàn)較早,難免有不足之處,主要有以下四點:1. 接口的信號電平值較高,易損壞接口電路的芯 片,又因為與TTL電平不兼容故需使用電平轉換電路方能與TTL電路連接。2. 傳輸速率較低,在異步傳輸時,波特率為0Kbps; 因此在“南方的老樹51CPLD開發(fā)板”中,綜合程序波特率只能采用19200bps,也是這個原因。3. 接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這
3、種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱。VS+C1-C1+C1 30PIC STC89C51CY 12MHz 19C2 30P18XTAL1XTAL2R1 1K39 38 37 36 35 34 33 32 9P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7RESETVCCC3 10 29 30 ALEPSEN31EAP2.0/A8 P2.1/A9 P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A1521 22 23 24 25 26 27 28 C
4、4 10 C5 1012VCC 1 P1.02 P1.13 P1.24 P1.35 P1.46 P1.57 P1.68 P1.7P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD101112 13 14 15 16 17 1314871211910DB9-2 DB9-34 56C7 10C6 10 T2OUTT2INR1INR1OUTT1OUTT1INR2INR2OUT34. 傳輸距離有限,最大傳輸距離標準值為50英尺, 實際上也只能用在50米左右。VS-C2- C2+圖9-1 單片機RS-232接口805
5、1系列單片機上有UART(Universal Asynchronous Receiver/Transmitter通用異步接收/發(fā)送)用于串行通信,發(fā)送數(shù)據(jù)時由TXD(P3.1)端送出,接收數(shù)據(jù)時由于RXD(P3.0)端輸入。單片機內部有兩個數(shù)據(jù)傳輸緩沖器SCON是串行口控制和狀態(tài)寄存器,其格式如下:SBUF,一個作為發(fā)送,一個作為接收。UART是可編程的全雙工串行口,短距離單片機之間通行可以直接互聯(lián),使用接口芯片MAX232可以接成RS-232接口與計算機COM口進行通行。圖7-1是單片機常用的RS-232接口電路原路。9.3 單片機串行口設置一、串行口通信有關的SFR1. 串行口控制寄存器S
6、CON(1)SM0,SM1:串行口工作方式控制位具體工作方式見表3-6-1。fOSC為單片機外接晶體振蕩頻率。表9-1 串行口工作方式控制D7D6D5D4D3D2D1D0SM 0SM 1SM 2RE NTB8RB 8TIRISM0SM1工作方式應用波特率00方式0同步移位寄存器fOSC/1201方式110位異步收發(fā)由定時器控制101方式211位異步收發(fā)fOSC/32或fOSC/6411方式311位異步收發(fā)由定時器控制(2)SM2:多機通信控制位。用于工作方式2、3。SM2 = 1時,只有接收到第九位(RB8)為1時,RI才置位;SM2 = 0時,只要接收到數(shù)據(jù)RI就置位。(3)REN:串行口接
7、收允許位。REN = 1,允許串行口接收數(shù)據(jù);REN = 0,禁止串行口接收數(shù)據(jù)。(4) TB8:工作在方式2、3時,為發(fā)送數(shù)據(jù)的第九位,也可以作奇偶校驗位。(5) RB8:工作在方式2、3時,為接收數(shù)據(jù)的第九位,在工作方式1時,為接收數(shù)據(jù)的停止位。(6) TI:發(fā)送中斷標志位,當數(shù)據(jù)向外發(fā)送(SBUF=DATE,數(shù)據(jù)寫入SBUF)后,TI 自動置位,必須軟件清零。(7)RI:接收中斷標志位,當數(shù)據(jù)向外發(fā)送(a = SBUF,數(shù)據(jù)從SBUF讀出, a為變量)后,RI 自動置位,必須軟件清零。2. 電源控制寄存器PCOND7D6D5D4D3D2D1D0SMODGF1GF0PDIDL這里只用到了P
8、CON的第七位SMOD,它是與串行通信波特率設置有關,SMOD也叫串行口通信波特率的加倍位。當SMOD = 1時,工作方式1、3時的波特率為定時器1 溢出率/16;工作方式2時的波特率為fOSC/32。當SMOD= 0時,工作方式1、3時的波特率為定時器1溢出率/32; 工作方式2時的波特率為fOSC/64。GF0、GF1:通用標志位,PD、IDL:CHMOS器件類型的單片機的低功耗控制位。二、串行口的工作方式1. 方式0方式0為移位寄存器輸入/輸出方式。串行數(shù)據(jù)通過RXD端輸入輸出,TXD則用于輸出移位同步脈沖。此時收發(fā)的數(shù)據(jù)為8位,低位在前,且波特率為fOSC/12,數(shù)據(jù)發(fā)送以寫入SBUF
9、指令開始,8位數(shù)據(jù)輸出結束后,TI置位。數(shù)據(jù)接收是在REN = 1、RI = 0同時滿足時開始,接收的數(shù)據(jù)從SBUF讀出結束后,RI置位。移位寄存器工作方式對節(jié)省硬件資源很有用,串行口外接移位寄存器芯片74HC164就可以構成輸出接口,接74HC165可以工程輸入接口,在如果晶體振蕩頻率為12MHz,8為數(shù)據(jù)通過串行口傳輸大約10微秒就可以完成。移位寄存器工作方的另一種用法是直接構成兩個單片機的數(shù)據(jù)通信,晶體振蕩頻率為12MHz,數(shù)據(jù)傳輸波特率為1M,只是通信距離較短。2. 方式1方式1為10位異步通信方式,由1位起始位(第0位, 默認為0)、8位數(shù)據(jù)位和1位停止位(第9位,由TB8決 定,默
10、認為1)組成,起始位和停止位在發(fā)送數(shù)據(jù)(數(shù)據(jù)寫入SBUF)時自動插入。任何1條寫入SBUF指令都啟動1次發(fā)送中斷,發(fā)送的前提是寄存器SCON中的TI = 0,發(fā)送結束后TI置位。方式1接收數(shù)據(jù)的前提是REN = 1,同時RI = 0且SM2=0或接收停止位為1。如果接收有效,將接收數(shù)據(jù)裝入SBUF和寄存器SCON的RB8(接收數(shù)據(jù)的第9位),否則舍棄接收結果。方式1的波特率由一下公式計算得到,即: 方式1波特率= 2SMOD(定時器溢出率)/32其中SMOD是PCON的第7位,定時器的溢出率為定時定時時間的倒數(shù),定時器工作模式0、1和2都可以使用。3. 方式2和方式3這兩種方式都是11位異步接
11、收/發(fā)送方式,操作方式完全一樣,只是波特率有所區(qū)別,方式3波特率同方式1, 方式1波特率為:方式2波特率 = 2SMOD(定時器溢出率)/64方式2和方式3的發(fā)送起始于數(shù)據(jù)寫入SBUF指令,當?shù)?位數(shù)據(jù)TB8輸出之后,TI置位。方式2和方式3接收數(shù)據(jù)的前提也是REN = 1,在第9位數(shù)據(jù)接收到之后,如果下列提條件滿足,即RI = 0且SM2= 0或接收到的第9位數(shù)據(jù)為1,則將已經接受的數(shù)據(jù)裝SBUF和RB8,并置位RI,如果條件不滿足,則接收無效。三、串行口通信初始化1. 串行口的波特率與定時器設置單片機的晶體振蕩頻率比較固定,常用的有6MHz、12 MHz、11.0592 MHz,單片機串行
12、口用于和計算機通信。選用的波特率也相對固定,可以通過查表獲得相應置,表7-2給出了單片機常用的波特率與定時器設置。表7-2單片機常用的波特率與定時設置2. 初始化步驟下面以波特率為9600bps,串口工作方式3,允許發(fā)送/ 接收數(shù)據(jù)的初始化步驟程序舉例:/*/TMOD = 0x20;/第一步,編程TMODTL1 = 0xfd;/第二步,裝載定時器1的初值TH1 = 0xfd;TR1 = 1;/第三步,啟動定時器1, TR1 = 1SCON = 0xd8;/第四步編程SCON,確定串行口工作方式3/SM2、TB8 = 1,TI、RI = 0PCON = 0x00;/第四步,編程PCON,SMOD
13、 = 0 SBUF = date1;/發(fā)送1字節(jié)數(shù)據(jù)date1,進入串行中斷while(TI = 0);/等待發(fā)送,發(fā)送完畢后TI自動置位 TI = 0;/ TI軟件清零date2 = SBUF;/接收1字節(jié)數(shù)據(jù)并保存date2,進入串行中斷while(RI = 0);/等待接收,接收完畢后RI自動置位RI = 0;/RI軟件清零/*/9.4 單片機與計算機之間通信本案例實現(xiàn)計算機鍵盤輸入的字符通過計算機的COM1向單片機發(fā)送,單片機接收后隨即把這個字符再向計算機發(fā)送,并在計算機的屏幕上顯示出來。電路原理見圖3-6-1,計算機和單片機之間通過串行電纜連接。一、 程序設計由于計算機作為上位機控制
14、,因此本案例程序包括計算機的發(fā)送/接收程序和單片機的數(shù)據(jù)接收/發(fā)送程序。上位機程序采用BASIC編寫,編寫的文件后保存為RS232.BAS。單片機串口通信采用同樣的參數(shù)設置。1. 上位機程序/*/10 OPEN”COM1:9600,N,8,1,CS,DS,CD”AS#120 IF LOC(1)0 THEN GOSUB 100030 A$ = INKEY$:IF A$”THEN GOSUB 200040 GOTO 201000 A$ = INPUT$(LOC(1),#1)1010 PRINT A$;1020 RETURN2000 PRINT #1,A$2010 RETURN/*/2. 單片機通信
15、程序#includevoid main(void)unsigned char date; TMOD = 0x20;TL0 = 0xfd;TL1 = 0xfd; SCON = 0xd8;PCON = 0x00; TR1 = 1;While(1)while(RI = 0);/等待接收RI = 0;date = SBUF;/接收數(shù)據(jù)保存在date中 SBUF = date;/再保存在date的數(shù)據(jù)向外發(fā)送while(TI = 0);/等待發(fā)送TI = 0;3. 程序說明(1) 計算機串行口發(fā)送/接收數(shù)據(jù)的波特率為9600,1 位停止位,無奇偶校驗。其設置參考有關書籍。(2) 也可以采用VB編寫,也可
16、以直接使用51單片機的串行通信調試助手ComAssistant等小軟件。9.5 單片機串口中斷應用使用8051串行口實現(xiàn)中斷驅動串行I/O。中斷程序使用8字節(jié)的環(huán)形緩沖器處理發(fā)送中斷和接收中斷。#include #include#define XTAL11059200/CPU振蕩器頻率#define baudrate9600/9600通信波特率#define OLEN8/串行發(fā)送緩沖區(qū)的大小unsigned char ostart;/發(fā)送緩沖區(qū)起始索引unsigned char oend;/發(fā)送緩沖區(qū)結束索引char idata outbufOLEN;/發(fā)送緩沖區(qū)的存儲#define ILEN
17、8/串行接收緩沖區(qū)的大小unsigned char istart;/接收緩沖區(qū)起始索引unsigned char iend;/接收緩沖區(qū)結束索引char idata inbufILEN;/接收緩沖區(qū)的存儲bit sendfull;/標志:標識發(fā)送緩沖區(qū)滿bit sendactive;/標志:標識發(fā)送器激活/* 串行中斷服務程序 */static void com_isr(void)interrupt 4char c;/ * 接收數(shù)據(jù)中斷 * / if(RI)c=SBUF;/讀字符RI=0;/清零中斷請求標志if(istart+ILEN!=iend inbufiend+&(ILEN-1=c;字符
18、送入緩沖區(qū)/ * 發(fā)送數(shù)據(jù)中斷 * /if(TI!=0) TI=0;/清零中斷請求標志if(ostart!=oend) /若字符在緩沖區(qū)SBUF=outbufostart+ &(OLEN-1;/則發(fā)送字符sendfull=0;/清零sendfull標志else/若所有字符發(fā)送sendactive=0;/則清零sendactive/ *初始化串行口和UART波特率函數(shù) */ void com_initiaize(void)istart=0;/清空接收緩沖區(qū)iend = 0;ostart=0;/清空發(fā)送緩沖區(qū)iend=0;sendactive=0;/發(fā)送器未激活sendfull=0;/清零send
19、full標志/配置定時器1作為波特率發(fā)生POCN |= 0x80;/0x80=SMOD:設置波特率加倍TMOD |= 0x20;/置定時器1為方式2 TH1=(unsigned char)(16L*12L*baudrate);TR1=1;/啟動定時器1SCON=0x50;/串行口方式1,允許串行接收ES=1;/允許串行中斷/* putbuf:寫字符到SBUF或發(fā)送緩沖區(qū) */void putbuf(char c)if(!sendactive)/若發(fā)生器未激活sendactive=1;/則直接傳送第一字符到SBUF = 0;/SBUF啟動發(fā)生器elseES=0;/在緩沖區(qū)更新期間禁止串行中斷outbufoend+&(OLEN-1)=c; /放字符到發(fā)送緩沖區(qū)if(oend ostart)&(OLEN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 東風汽車集團有限公司介紹
- 2023年UPS電源項目構思建設方案
- 2024版餐飲空間裝修工程施工協(xié)議樣本版B版
- 專題05:散文閱讀(考題練習)(原卷版)
- 2024年銷售合作伙伴代理業(yè)務協(xié)議樣本
- 初級會計職稱考試《經濟法基礎》基礎習題及答案
- 二零二五年度房地產合作開發(fā)項目安全責任協(xié)議3篇
- 二建市政工程實務-二建《市政公用工程管理與實務》押題密卷1356
- 二建建筑工程實務-二建《建筑工程管理與實務》預測試卷8273
- 推動縣中課堂改革的路徑與創(chuàng)新措施
- GB/T 20279-2024網(wǎng)絡安全技術網(wǎng)絡和終端隔離產品技術規(guī)范
- 2024貴州省體育彩票管理中心招聘工作人員44人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- GB/T 15568-2024通用型片狀模塑料(SMC)
- “莞能提升”計劃能力提升培養(yǎng)資助申請表
- ISO9001-ISO14001-ISO45001三體系內部審核檢查表
- JT∕T 1477-2023 系列2集裝箱 角件
- 危險廢物處置項目實施方案
- 人教版初三化學上冊講義
- 乙酸鈉危化品安全信息卡、周知卡及MSDS-
- 人工造林項目與其他單位的協(xié)調配合
- (高清版)DZT 0426-2023 固體礦產地質調查規(guī)范(1:50000)
評論
0/150
提交評論