




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章單片機(jī)的串口通信
5.1單片機(jī)串行口通信知識1.并口通信和串口通信(數(shù)據(jù)通信的兩種常用形式)并行傳送特點:傳送速度快,但因需要多根傳輸線,故一般只在近距離(3米、5米、7米)通信中使用。否則,相互干擾大,無法快速傳送(1)并口方式——數(shù)據(jù)的各位同時發(fā)送或同時接收。一、串口工作原理(2)串行方式——數(shù)據(jù)的各位依次逐位發(fā)送或接收。串行傳送特點:傳輸速度慢,但因只需較少傳輸線,抗干擾強(qiáng),故適合于遠(yuǎn)距離通信。RXD(P3.0)和TXD(P3.1)用于串行信號或時鐘信號的傳入或傳出。計算機(jī)串行接口按照傳輸數(shù)據(jù)流向,串行通信具有3種傳輸形式:在單工制式下,通信線的一端為發(fā)送器(TXD),一端為接收器(RXD),數(shù)據(jù)只能按照一個固定的方向傳送。在半雙工制式下,系統(tǒng)由一個TXD和一個RXD組成,但不能同時在兩個方向上傳送,收發(fā)開關(guān)由軟件方式切換。在全雙工制式下,通信系統(tǒng)每端都有TXD和RXD,可以同時發(fā)送和接收,即數(shù)據(jù)可以在兩個方向上同時傳送。實際應(yīng)用中,盡管多數(shù)串行通信接口電路具有全雙工功能,但仍以半雙工為主(簡單實用)。2.同步通信同步傳輸方式中發(fā)送方和接收方的時鐘是統(tǒng)一的、字符與字符間的傳輸是同步無間隔的。
——以字符為單位組成字符幀進(jìn)行的數(shù)據(jù)傳送。3.異步通信一幀數(shù)據(jù)由起始位、數(shù)據(jù)位、[可編程位]和停止位構(gòu)成異步傳輸方式并不要求發(fā)送方和接收方的時鐘完全一樣,字符與字符間的傳輸是異步的。起始位:位于數(shù)據(jù)幀開頭,占1位,始終為低電平,用于向接收設(shè)備表示發(fā)送端開始發(fā)送1幀數(shù)據(jù)。數(shù)據(jù)位:要傳輸?shù)臄?shù)據(jù)信息,可以是字符或數(shù)據(jù),一般為5~8位,由低位到高位依次傳送??删幊涛唬何挥跀?shù)據(jù)位之后,占1位,用于發(fā)送數(shù)據(jù)的校驗,或傳送多機(jī)串行通信的聯(lián)絡(luò)信息。停止位:位于數(shù)據(jù)位末尾,占1位,始終為高電平,用于向接收端表示1幀數(shù)據(jù)已發(fā)送完畢。異步通信特點:對收發(fā)雙方的時鐘精度要求較低(收發(fā)雙方不同步時,能依靠在每幀開始時的不斷對齊,自行糾正偏差);傳送速度較低(每個字節(jié)都要建立一次同步)。波特率:每秒發(fā)送二進(jìn)制數(shù)碼的位數(shù),即bps(bitpersecond)(位/秒)4.波特率國際推薦波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等。串行通信的收發(fā)雙方必須采用相同的波特率。在串行通信的數(shù)據(jù)是按位進(jìn)行傳送的,數(shù)據(jù)傳輸速率用波特率指標(biāo)衡量。5.串行數(shù)據(jù)緩沖器,SBUF在物理上有兩個SBUF:一個用于發(fā)送,另一個用于接收。在邏輯上只有一個SBUF(99H)。可根據(jù)用法區(qū)分功能:ucharcounter;
待發(fā)送存放變量…SBUF=counter;完成一次數(shù)據(jù)發(fā)送…counter=SBUF;完成一次數(shù)據(jù)接收CPU(1)串口控制寄存器,SCON(98H)SM2、TB8、RB8主要用于多機(jī)通訊二、串行口工作方式SM0和SM1:串行工作方式定義位。通過SM0和SM1不同的取值,可定義4種串行通信工作方式。串行口工作方式SM0SM1工作方式功能說明波特率00方式0同步移位寄存器,用于I/O擴(kuò)展fosc/1201方式110位異步收發(fā)器由定時器T1溢出率控制10方式211位異步收發(fā)器fosc/32或fosc/6411方式311位異步收發(fā)器由定時器T1溢出率控制(2)電源控制寄存器,PCON(87H)SMOD可使由定時器產(chǎn)生的通信時鐘速率加倍(3)波特率的計算在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。串行口的四種工作方式對應(yīng)三種波特率。由于輸入的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)·fosc方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)當(dāng)T1作為波特率發(fā)生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決于TH1中的計數(shù)值。
T1溢出率=fosc/{12×32[256-(TH1)]}
在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。串口工作方式波特率晶振foscSMOD定時器初值TH1方式1或方式31920011.059MHz1FDH960011.059MHz0FDH480011.059MHz0FAH240011.059MHz0F4H串行口工作之前,應(yīng)對其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:確定T1的工作方式(編程TMOD寄存器);計算T1的初值,裝載TH1、TL1;啟動T1(編程TCON中的TR1位);確定串行口控制(編程SCON寄存器);串行口在中斷方式工作時,要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。
5.2單片機(jī)與單片機(jī)的串口通信項目項目單片機(jī)與單片機(jī)之間交換信息,常稱為雙機(jī)通信。對于雙機(jī)通信常采用查詢方式和中斷方式設(shè)計應(yīng)用程序。中斷方式實現(xiàn)接收數(shù)據(jù)提高了單片機(jī)的工作效率。動手做——畫出硬件電路圖
單片機(jī)A的P1口的P1.0和P1.7連接按鍵開關(guān)K1和K2,按鍵開關(guān)控制了P1口的輸入數(shù)據(jù),該數(shù)據(jù)通過串行口送到B單片機(jī)的P1口,控制了D1和D2二個紅色LED燈的亮暗。同樣,單片機(jī)B的P2口的P2.0和P2.3連接按鍵開關(guān)K3和K4,按鍵開關(guān)控制了P2口的輸入數(shù)據(jù),該數(shù)據(jù)通過串行口送到B單片機(jī)的P2口,控制了D3和D4二個紅色LED燈的亮暗。單片機(jī)與單片機(jī)的串口通信項目可以采用查詢方式和中斷方式二種。1.查詢方式串口程序設(shè)計單片機(jī)A的程序設(shè)計如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定時器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//串口方式3,接收允許,發(fā)送數(shù)據(jù)
TR1=1;//開定時器1 while(1) { SBUF=P1;//將單片機(jī)A按鍵形成的P1口數(shù)據(jù)送串口
while(!TI);//等待數(shù)據(jù)送完
TI=0;//數(shù)據(jù)送完,軟件清零
while(!RI);//等待接收單片機(jī)B的數(shù)據(jù)
RI=0;//數(shù)據(jù)接收完,軟件清零
P2=SBUF;//將接收B的數(shù)據(jù),從AP2口送出
}} 單片機(jī)B的程序設(shè)計如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定時器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//設(shè)置串行口方式3:接收允許,發(fā)送數(shù)據(jù) TR1=1;//開定時器1 P1=0xff;//關(guān)閉LED while(1) { while(!RI);//串口等待接收單片機(jī)A按鍵形成的數(shù)據(jù)
RI=0;//接收完數(shù)據(jù)后,軟件清零
P1=SBUF;//將接收A數(shù)據(jù)送B的P1口輸出
SBUF=P2;//將單片機(jī)B的P2口的數(shù)據(jù)送串口
while(!TI);//等待送完數(shù)據(jù)
TI=0;//送完數(shù)據(jù),軟件清零
}} 單片機(jī)B的程序設(shè)計如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定時器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//設(shè)置串行口方式3:接收允許,發(fā)送數(shù)據(jù) TR1=1;//開定時器1 P1=0xff;//關(guān)閉LED while(1) { while(!RI);//串口等待接收單片機(jī)A按鍵形成的數(shù)據(jù)
RI=0;//接收完數(shù)據(jù)后,軟件清零
P1=SBUF;//將接收A數(shù)據(jù)送B的P1口輸出
SBUF=P2;//將單片機(jī)B的P2口的數(shù)據(jù)送串口
while(!TI);//等待送完數(shù)據(jù)
TI=0;//送完數(shù)據(jù),軟件清零
}} 2.中斷方式串口程序設(shè)計單片機(jī)A的程序設(shè)計如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定時器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//設(shè)置串行口方式3:接收允許,發(fā)送數(shù)據(jù)
ES=1;//允許串口
EA=1;//允許中斷
TR1=1;//開定時器1 while(1) { SBUF=P1;//將A按鍵形成的P1口數(shù)據(jù)送串口
while(!TI);//等待數(shù)據(jù)送完
TI=0;//數(shù)據(jù)送完,軟件清零
}} voidS_receive()interrupt4{ EA=0; RI=0;//數(shù)據(jù)接收完,軟件清零
P2=SBUF;//將接收到的B數(shù)據(jù),從A的P2口輸出
EA=1;//開中斷}單片機(jī)B的程序設(shè)計如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定時器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//設(shè)置串行口方式3:接收允許,發(fā)送數(shù)據(jù)
P1=0xff;//關(guān)閉LED ES=1;//允許串口
EA=1;//允許中斷
TR1=1;//開定時器1 while(1) { SBUF=P2;//將單片機(jī)B的P2口的數(shù)據(jù)送串口
while(!TI);//等待送完數(shù)據(jù)
TI=0;//送完數(shù)據(jù),軟件清零
}} voidS_receive1()interrupt4{ EA=0; RI=0;//接收完數(shù)據(jù)后,軟件清零
P1=SBUF;//將接收到的A的數(shù)據(jù)送B的P1口輸出
EA=1;}仿真運(yùn)行圖
5.3單片機(jī)與PC之間的通信項目設(shè)計項目單片機(jī)與PC電腦之間的通信是串口通信,需采用RS-232C或USB串行接口,單片機(jī)與電腦的串行接口不能直接相連,需要轉(zhuǎn)換。動手做——畫出硬件電路圖
RS-232C串行通信總線標(biāo)準(zhǔn)及其接口
。
1.單片機(jī)串口RXD/TXD電平為TTL電路
邏輯“1”:+5V邏輯“0”:0V2.計算機(jī)RS-232C的電氣標(biāo)準(zhǔn)采用負(fù)邏輯,即:邏輯“0”:+5V~+15V
邏輯“1”:-5V~-15V
因此,RS-232C不能和TTL電平直接相連,否則將使TTL電路燒壞,實際應(yīng)用時必須注意。RS-232C和TTL電平之間必須進(jìn)行電平轉(zhuǎn)換,常用的電平轉(zhuǎn)換集成電路MAX232。
MAX232引腳圖。
RS-232C標(biāo)準(zhǔn)總線為25根,可采用標(biāo)準(zhǔn)的DB-25和DB-9的D型插頭。目前計算機(jī)上只保留了兩個DB-9插頭,作為提供多功能I/O卡或主板上COM1和COM2兩個串行接口的連接器。引腳名稱功能引腳名稱功能1DCD載波檢測6DSR數(shù)據(jù)準(zhǔn)備完成2RXD發(fā)送數(shù)據(jù)7RTS發(fā)送請求3TXD接收數(shù)據(jù)8CTS發(fā)送清除4DTR數(shù)據(jù)終端準(zhǔn)備完成9RI振鈴指示5SG(GND)信號地線在簡單的RS232-C標(biāo)準(zhǔn)穿性通信中,僅連接發(fā)送數(shù)據(jù)(2)、接收數(shù)據(jù)(3)和信號地(5)三個引腳即可。實現(xiàn)TTL電平、S-232C電平轉(zhuǎn)換,常用MAX232芯片。單片機(jī)TXD(P3.1)RXD(P3.2)
與RS232串口連接硬件的器件極化電容CAP-POL232串口COMPIMMAX232仿真中的虛擬終端
電腦USB接口隨著技術(shù)的發(fā)展,工業(yè)上還有RS232串口通信的大量使用,但是商業(yè)技術(shù)的應(yīng)用上,已經(jīng)慢慢的使用USB取代了RS232串口,絕大多數(shù)筆記本電腦已經(jīng)沒有RS232串口,需要在電路上添加一個USB轉(zhuǎn)串口芯片,就可以成功實現(xiàn)USB通信協(xié)議和標(biāo)準(zhǔn)串行口通信協(xié)議的轉(zhuǎn)換,常使用的轉(zhuǎn)換器件是CH340芯片。CH340驅(qū)動的安裝為了CH340系列芯片能夠正常工作,需要在PC電腦上安裝CH340系列的USB轉(zhuǎn)串口驅(qū)動,如CH340驅(qū)動、CH341SER等,兼容Win10等操作系統(tǒng)。首先,下載CH340的USB轉(zhuǎn)串口驅(qū)動程序,下載好以后,雙擊運(yùn)行“CH341SE”應(yīng)用程序,如圖所示。
成功安裝單片機(jī)PC電腦端下載軟件的使用各個單片機(jī)的制造公司都有響應(yīng)的PC電腦端下載編程燒錄軟件。STC-ISP是一款單片機(jī)下載編程燒錄軟件,是STC公司的單片機(jī)ISP下載編程軟件,是針對STC系列單片機(jī)而設(shè)計的,可下載STC8951等系列的STC單片機(jī),使用簡便,現(xiàn)已被廣泛使用。在下載軟件以前,先要完成單片機(jī)程序的編譯,。但對STC公司的芯片,還需要先打開STC-ISP程序中的Keil仿真設(shè)置,如圖所示。仿真設(shè)置將“STC”單片機(jī)型號添加到Keil安裝目錄中,如c:\Keil彈出STCMCU型號添加成功!按確定完成。打開Keil軟件,新建一個工程文件后,就可以通過下拉箭頭選擇STCMCUDatabase,確定后就中以選擇對應(yīng)單片機(jī)型號了,如圖所示。將USB線的一端插入電腦的USB口,另一端插入51單片機(jī)開發(fā)板的USB口,開始下載燒錄程序。燒錄程序的使用方法如下。打開的STC-ISP燒錄軟件操作界面,選擇該COM的端口號,一般,軟件會自動掃描確認(rèn),如圖。根據(jù)開發(fā)系統(tǒng)使用的單片機(jī)芯片的型號,選擇正確的51單片機(jī)型號,如STC89C52RC,如圖所示。設(shè)置串口的波特率最高為115200最低為2400打開事先編譯好的程序.HEX可執(zhí)行文件的波特率最高為115200最低為2400先點擊“Download/下載”按鈕,下載程序然后再給開發(fā)板上電,程序燒錄成功
燒錄程序常見故障為:一直檢測單片機(jī),可按以下步驟排查。TXD和RXD接錯了,下載器TXD接單片機(jī)RXD,RXD接單片機(jī)TXD。單片機(jī)型號選擇錯了,如果是STC89C52RC就要選后面加RC的,STC89C52就不行。單片機(jī)芯片損壞了,需要更換。需要冷啟動,就是給單片機(jī)斷一次電,有的直接按電源開關(guān)就可以了。該項目的工程中,設(shè)計了串口通信和LCD顯示二個程序。串口通信程序如下。#include<reg51.h>#defineucharunsignedcharucharPCtoMCS[16]="";//電腦傳送到單片機(jī)的字符數(shù)組ucharMCStoPC[]="**receiveddatafromMCS51**";//單片機(jī)傳送給電腦的字符voidLCD_write_command(uchar);//LCD寫命令函數(shù)聲明voidLCD_write_data(uchar);//LCD寫數(shù)據(jù)函數(shù)聲明voidLCD_init();//LCD初始化函數(shù)聲明voiddelay(uchar);/*************主程序***************/voidmain(void){ unsignedchari,n; TMOD=0x20;//定時器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//設(shè)置串行口方式3:接收允許,發(fā)送數(shù)據(jù)
TR1=1;//開定時器1 while(1) { i=0;
while(MCStoPC[i]!='\0')//單片機(jī)發(fā)送給電腦字符串
{ SBUF=MCStoPC[i];//發(fā)送字符
while(TI==0);//TI發(fā)送中斷標(biāo)記等待發(fā)送完成TI=1 TI=0;//軟件清0 i++;//下一個字符
} i=0;//i清0,為接收作準(zhǔn)備
while(RI==0);//等待接收完成RI=1 RI=0;//軟件清0 PCtoMCS[i]=SBUF;//啟動接收
while(PCtoMCS[i]!='#')//傳完后,應(yīng)答A機(jī)并顯示收到的字符串
{ i++; while(RI==0);//接收應(yīng)答
RI=0;//軟件清0 PCtoMCS[i]=SBUF;//一個一個接收字符
} PCtoMCS[i]='\0';//置數(shù)組結(jié)束符\0 LCD_init(); n=0;
LCD_write_command(0x80); while(PCtoMCS[n]!='\0') { LCD_write_data(PCtoMCS[n]); n++; delay(1); } }}
液晶顯示程序如下。#include<reg51.h>#defineucharunsignedcharsbitLCD_RS=P2^0;//將P2.0取名為LCD_RS,控制寄存器選擇sbitLCD_E=P2^2;//將P2.2取名為LCD_E,使能端sbitLCD_RW=P2^1;//將P2.1取名為LCD_RW,控制讀寫選擇/*************延時ms**************/voiddelay(uchart){ ucharj,k;
for(j=0;j<t;j++) { for(k=0;k<255;k++){} }}/*************忙檢測函數(shù)**************/bitLCD_Busy(){ bitLCD_Busy; LCD_RS=0; LCD_RW=1; LCD_E=1; delay(1); LCD_Busy=(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45223-2025電力廠站低壓用電系統(tǒng)信息架構(gòu)及接口技術(shù)規(guī)范
- 合肥小型商鋪出租合同樣本
- 公司并購合同管理與風(fēng)險防范
- 心理康復(fù)師實習(xí)勞動合同
- 設(shè)計師合作開發(fā)合同模板專業(yè)版
- 標(biāo)準(zhǔn)版勞動合同范本合同
- 國際倉儲業(yè)務(wù)合作合同范本
- 度中國員工境外工作勞務(wù)合同
- 供應(yīng)鏈合作協(xié)議合同法全文
- 中小學(xué)教師職務(wù)合同范本
- 政府機(jī)關(guān)保安服務(wù)項目整體服務(wù)方案
- 酒店前臺績效考核表
- 精神發(fā)育遲滯的護(hù)理查房
- 簡易施工方案模板范本
- 制作拉線課件
- 中華人民共和國文物保護(hù)單位登記表
- 不符合項和糾正措施記錄表
- DBJ∕T13-354-2021 既有房屋結(jié)構(gòu)安全隱患排查技術(shù)標(biāo)準(zhǔn)
- 溫室大棚、花卉苗圃采暖方案(空氣源熱泵)
- 部編人教版五年級下冊道德與法治全冊知識點整理歸納
- 繪本閱讀《鐵絲網(wǎng)上的小花》
評論
0/150
提交評論