




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一講80C51串行接口第一講80C51串行接口1學(xué)習(xí)目標(biāo):單片機(jī)串行通信I/O接口的結(jié)構(gòu)串行通信控制寄存器單片機(jī)串行通信的工作方式以及串行通信應(yīng)用。學(xué)習(xí)目標(biāo):單片機(jī)串行通信I/O接口的結(jié)構(gòu)2一、串行通信基本概念
通訊:信息交換計(jì)算機(jī)計(jì)算機(jī)計(jì)算機(jī)外設(shè)應(yīng)用:多機(jī)系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)方式并行通信串行通信異步通信方式—按字符傳輸
同步通信方式—按數(shù)據(jù)塊傳輸
單工半雙工全雙工一、串行通信基本概念通訊:信息交換計(jì)算機(jī)計(jì)3并行通信:數(shù)據(jù)多位同時(shí)傳送控制簡(jiǎn)單,傳輸速度快,傳輸線較多并行通信:數(shù)據(jù)多位同時(shí)傳送控制簡(jiǎn)單,傳輸速度快,傳輸線較多4串行通信:數(shù)據(jù)字節(jié)一位一位在一條傳輸線上逐個(gè)傳送。傳輸線少,可利用電話網(wǎng),但傳送控制復(fù)雜。
串行通信:數(shù)據(jù)字節(jié)一位一位在一條傳輸線上逐個(gè)傳送。傳輸線少,5異步通信:收、發(fā)設(shè)備使用各自時(shí)鐘。
字符之間是異步的,但同一字符內(nèi)是同步的(各位間距均為”位間隔”的整數(shù)倍)異步通信:收、發(fā)設(shè)備使用各自時(shí)鐘。字符之間是異步的,但同6同步通信:發(fā)送方時(shí)鐘與接收方時(shí)鐘同步。既保持位同步,也保持字符同步。
外同步自同步保持位同步,也保持字符同步.同步通信:發(fā)送方時(shí)鐘與接收方時(shí)鐘同步。既保持位同步,也保持7
單工半雙工全雙工
例如:廣播大哥大手機(jī)串行通信的傳輸方向
單工半雙工8傳輸速率比特率:每秒鐘傳輸二進(jìn)制代碼的位數(shù)bps波特率:每秒鐘調(diào)制信號(hào)變化的次數(shù)。單位是:波特(Baud)。例如:數(shù)據(jù)傳送的速率為120個(gè)字符每秒,每個(gè)字符由1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位組成,則其傳送波特率為:10b×120/s=1200b/s=1200波特傳輸距離與傳輸速率的關(guān)系:傳輸距離隨傳輸速率的增加而減小。傳輸速率與傳輸距離傳輸速率傳輸速率與傳輸距離9
1、RS-232C接口
EIA(美國(guó)電子工業(yè)協(xié)會(huì))1969年修訂RS-232C標(biāo)準(zhǔn),它定義了DTE與DCE間的物理接口標(biāo)準(zhǔn)。二、串行通信接口標(biāo)準(zhǔn)
1、RS-232C接口二、串行通信接口標(biāo)準(zhǔn)10
過(guò)程特性規(guī)定了信號(hào)間的時(shí)序關(guān)系
。
機(jī)械特性使用25針連接器,連接器的尺寸及每個(gè)插針的排列位置都有明確的定義。(陽(yáng)頭)功能特性:電氣特性:負(fù)邏輯,DC(-3~-15v)為1。DC(+3~+15v)為0,DC(-3~+3v)為過(guò)渡區(qū)。過(guò)程特性機(jī)械特性功能特性:電氣特性:11近程通信連接
遠(yuǎn)程通信連接近程通信連接遠(yuǎn)程通信連接122、PC與外設(shè)的RS-232直接連接2、PC與外設(shè)的RS-232直接連接13PC機(jī)與單片機(jī)串行通信接口示意圖PC機(jī)與單片機(jī)串行通信接口示意圖14三、串行接口的結(jié)構(gòu)
主要由兩個(gè)數(shù)據(jù)緩沖寄存器SBUF和一個(gè)輸入移位寄存器,以及一個(gè)串行控制寄存器SCON(TI\RI)等組成。
ASCON三、串行接口的結(jié)構(gòu)主要由兩個(gè)數(shù)據(jù)緩沖寄存器SBUF和一個(gè)15
設(shè)定工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志
1、80C51串行口的控制寄存器-SC0N
SM0SM1SM2RENTB8RB8TIRISCON(98H)SM0、SM1:工作方式設(shè)置位00:移位寄存器,fosc/1201:10位異步收發(fā)器(8位數(shù)據(jù)),波特率可變
10:11位異步收發(fā)器(9位數(shù)據(jù)),fosc/64或fosc/3211:11位異步收發(fā)器(9位數(shù)據(jù)),波特率可變
設(shè)定工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志1、816SM2,多機(jī)通信控制位。主要用于方式2和方式3。對(duì)于接收機(jī)SM2=0,收到RB8(0或1)即可使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI。SM2=1,收到的RB8=0時(shí),收到的信息丟棄,不激活RI;若收到的RB8=1時(shí),收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走。方式0時(shí),SM2必須是0。方式1時(shí),SM2=1時(shí),只有接收到有效停止位時(shí),RI才激活。REN,允許串行接收位。置REN=1,啟動(dòng)串口接收過(guò)程置REN=0,則禁止串口接收SM2,多機(jī)通信控制位。REN,允許串行接收位。17
TB8,在方式2、3中,是發(fā)送數(shù)據(jù)的第9位
數(shù)據(jù)的奇偶校驗(yàn)位地址幀/數(shù)據(jù)幀的標(biāo)志位RB8,在方式2、3中,是接收到數(shù)據(jù)的第9位奇偶校驗(yàn)位地址幀/數(shù)據(jù)幀的標(biāo)志位。方式1時(shí),若SM2=0,則RB8是接收到的停止位。TB8,在方式2、3中,是發(fā)送數(shù)據(jù)的第9位RB8,在方式18TI,發(fā)送中斷標(biāo)志位。方式0時(shí),串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)其它方式,串行發(fā)送停止位的開(kāi)始時(shí)硬件使TI置1,發(fā)中斷申請(qǐng)。必須在中斷服務(wù)程序中用軟件將其清0。RI,接收中斷標(biāo)志位。方式0時(shí),串行接收第8位數(shù)據(jù)結(jié)束時(shí)其它方式,串行接收停止位的中間時(shí)硬件使RI置1,發(fā)中斷申請(qǐng)。必須在中斷服務(wù)程序中用軟件將其清0。TI,發(fā)送中斷標(biāo)志位。RI,接收中斷標(biāo)志位。192、PCON
電源控制寄存器:SMOD,波特率倍增位。在方式1、2、3時(shí),波特率與SMOD有關(guān):SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí)SMOD=0。SMODPCON(97H)注:PCON不能進(jìn)行位尋址,只能字節(jié)尋址,串行通信只用了其中的最高位。2、PCON電源控制寄存器:SMOD,波特率倍增位。S20四、80C51串行口的工作方式1.方式0_8位數(shù)據(jù)
串行接口工作方式0為同步移位寄存器方式,多用于I/O口的擴(kuò)展,其波特率是固定的,為fosc/12。TXD引腳輸出同步移位脈沖,RXD引腳串行輸入/輸出。方式0接收和發(fā)送電路四、80C51串行口的工作方式1.方式0_8位數(shù)據(jù)211.方式0:移位寄存器方式寫SBUF內(nèi)部移出脈沖RXD(數(shù)據(jù)輸出)TXD(移位時(shí)鐘)TID0D1D2D3D4D5D6D7方式0發(fā)送時(shí)序?qū)慡CON,清RI,置REN內(nèi)部移出脈沖RIRXD(數(shù)據(jù)輸入)TXD(移位時(shí)鐘)D0D1D2D3D4D5D6D7方式0接收時(shí)序方式0時(shí)序1.方式0:移位寄存器方式寫SBUF內(nèi)部移出脈沖RXD(數(shù)據(jù)22方式0掌握:1、8位數(shù)據(jù),波特率為F0SC/122、低位在前,高位在后3、TI,再發(fā)送數(shù)據(jù),軟件清0,CLRTI4、RI,再接收數(shù)據(jù),軟件清0,CLRRI5、同步通信,無(wú)起始位和停止位方式0掌握:1、8位數(shù)據(jù),波特率為F0SC/12232.方式1_10位數(shù)據(jù)
在方式l時(shí),串行口被設(shè)置為波特率可變的8位異步通信接口。發(fā)送/接收1幀數(shù)據(jù)為10位,其中1位起始位、8位數(shù)據(jù)位(先低位后高位)和一位停止位10位數(shù)據(jù)的異步通信。幀格式如圖所示.2.方式1_10位數(shù)據(jù)10位數(shù)據(jù)的異步通信。幀格24方式1掌握:1、一幀為10位信息,1位起始(0),8位數(shù)據(jù),1位停止(1)2、波特率=P1243、異步通信4、接收時(shí),RB8里是停止位,數(shù)據(jù)位在SBUF(SM2=0)方式1掌握:1、一幀為10位信息,1位起始(0),8位數(shù)據(jù),25方式1時(shí)序一幀數(shù)據(jù)為10位:1位起始位、8位數(shù)據(jù)位和1位停止位。寫SBUFTXD起始位停止位TID0D1D2D3D4D5D6D7方式1發(fā)送時(shí)序:起始位停止位RXDRI采樣時(shí)間D0D1D2D3D4D5D6D7方式1接收時(shí)序:方式1時(shí)序方式1時(shí)序?qū)慡BUFTXD起始位停止位TID0D1D2D3D263.方式2_11位數(shù)據(jù)
串行口工作為方式2時(shí),被定義為9位異步通信接口。發(fā)送/接收1幀數(shù)據(jù)為11位,其中1位起始位、8位數(shù)據(jù)位、1位控制/校驗(yàn)位和1位停止位。控制/校驗(yàn)位為第9位數(shù)據(jù)。4.方式3_11位數(shù)據(jù)方式3為波特率可變的11位異步通信方式,除了波特率有所區(qū)別之外,其余同方式2。11位數(shù)據(jù)的異步通信3.方式2_11位數(shù)據(jù)11位數(shù)據(jù)的異步通信27工作方式掌握:1、幾種工作方式波特率不同2、傳送的位數(shù)不同,方式0是8位(數(shù)據(jù)位),方式1是10(8位數(shù)據(jù)——SBUF,1個(gè)起始、1位停止——RB8),方式2和方式3都是11位(8位數(shù)據(jù),1位控制/校驗(yàn)位——RB8、TB8,1位起始和1位停止位)3、方式0是同步,方式1、2、3是異步工作方式掌握:1、幾種工作方式波特率不同285、波特率的計(jì)算方式0、2的波特率是固定的,而方式1、3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定。
方式0波特率=fosc/12方式2波特率=(2SMOD/64)·fosc方式1波特率=(2SMOD/32)·(T1溢出率)方式3波特率=(2SMOD/32)·(T1溢出率)K為定時(shí)器T1的位數(shù)。5、波特率的計(jì)算方式0波特率=fosc/12K為定時(shí)器29方式1和方式3的波特率可變,由定時(shí)器1的溢出率決定波特率/(b/s)fosc/MHzSMOD定時(shí)器1C/模式初始值方式0:1M方式2:375k方式1,3:62.5k19.2k9.6k4.8k2.4k1.2k137.5k11011012121211.05911.05911.05911.05911.05911.986612×1110000000××000000000××222222221××FFHFDHFDHFAHF4HE8H1DH72HFEEBHT方式1和方式3的波特率可變,由定時(shí)器1的溢出率決定波特率/(30例:要求串行口以方式1工作,通信波特率為2400b/s,設(shè)振蕩頻率fosc為6MHz,請(qǐng)初始化T1和串口。解:若選SMOD=1,則T1時(shí)間常數(shù)N=256-216106/(3842400)=242.98≈243=F3H則,定時(shí)器T1和串行口的初始化程序如下: MOV TMOD,#20H ;設(shè)置T1為方式2 MOV TH1,#0F3H ;置時(shí)間常數(shù) MOV TL1,#0F3H SETB TR1 ;啟動(dòng)T1 ORL PCON,#80H ;SMOD=1 MOV SCON,#50H ;設(shè)串行口為方式1設(shè)置通訊波特率例:要求串行口以方式1工作,通信波特率為2400b/s,設(shè)振311.單片機(jī)與單片機(jī)的通信點(diǎn)對(duì)點(diǎn)的通信
實(shí)現(xiàn)A機(jī)向B機(jī)發(fā)數(shù)據(jù)B接收并顯示接收到的數(shù)據(jù)
單片機(jī)串行口應(yīng)用舉例
1.單片機(jī)與單片機(jī)的通信點(diǎn)對(duì)點(diǎn)的通信單片機(jī)串行口應(yīng)用舉例32常用總線(串行部分)課件331.單片機(jī)與單片機(jī)的通信點(diǎn)對(duì)點(diǎn)的通信
借助MAX232A,實(shí)現(xiàn)RS232標(biāo)準(zhǔn)完成A、B通信。
單片機(jī)串行口應(yīng)用舉例
1.單片機(jī)與單片機(jī)的通信點(diǎn)對(duì)點(diǎn)的通信單片機(jī)串行口應(yīng)用舉34常用總線(串行部分)課件35常用總線(串行部分)課件36最簡(jiǎn)發(fā)送端代碼#include<reg52.h>unsignedcharSend_Num[5]={1,2,3,4,5};voiddelay(unsignedintaa){while(aa--);}voidmain(){unsignedcharii=0;SCON=0X80;delay(50000);while(1){SBUF=Send_Num[ii];while(!TI);TI=0;ii++;if(ii==5)ii=0;delay(50000);}}最簡(jiǎn)發(fā)送端代碼#include<reg52.h>37最簡(jiǎn)接收端代碼#include<reg52.h>unsignedcharcodeDuanM[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79};unsignedcharcodeWeiM[]={0x0fe,0x0fd,0x0fb,0x0f7,0x0ef,0x0df,0x0bf,0x7f};sbitduan=P2^0;sbitwei=P2^1;voidDelay(unsignedinti){while(i--);}unsignedcharRecv_Num[5]={0,0,0,0,0};unsignedcharnum=0;最簡(jiǎn)接收端代碼#include<reg52.h>38最簡(jiǎn)接收端代碼voidDis_Byte(unsignedcharrr,unsignedcharww){duan=1;P1=DuanM[rr];duan=0;wei=1;P1=WeiM[ww];wei=0;Delay(200);P1=0x00;}最簡(jiǎn)接收端代碼voidDis_Byte(unsigned39最簡(jiǎn)接收端代碼voidmain(){SCON=0X90;IE=0x90;IP=0x10;while(1){
Dis_Byte(Recv_Num[0],3);Dis_Byte(Recv_Num[1],4);Dis_Byte(Recv_Num[2],5);Dis_Byte(Recv_Num[3],6);Dis_Byte(Recv_Num[4],7);}}最簡(jiǎn)接收端代碼voidmain()40最簡(jiǎn)接收端代碼voidSerial_ISR(void)interrupt4using1{if(RI==1){EA=0;RI=0;Recv_Num[num]=SBUF;num++;if(num==5)num=0;EA=1;}}最簡(jiǎn)接收端代碼voidSerial_ISR(void)i41串行通信接口標(biāo)準(zhǔn)1.RS-232C通信接口接口信號(hào):9針D型頭1569載波檢測(cè)DCD接收數(shù)據(jù)RXD發(fā)送數(shù)據(jù)TXD數(shù)據(jù)終端就緒信號(hào)地GND數(shù)據(jù)裝置就緒請(qǐng)求發(fā)送RTS清除發(fā)送CTS振鈴指示MCS-51系列單片機(jī)串行通信接口串行通信接口標(biāo)準(zhǔn)1569載波檢測(cè)DCD接收數(shù)據(jù)RXD發(fā)送數(shù)據(jù)42電氣特性:邏輯“1”:-3V~-15V;邏輯“0”:+3V~+15V。傳輸距離≤15米。最大負(fù)載電容≤2500pF。波特率≤20kb/s。接受器輸入阻抗:3~7kΩ。驅(qū)動(dòng)器輸出阻抗≤300Ω。驅(qū)動(dòng)器轉(zhuǎn)換速率≤30V/μs。輸出短路電流≤0.5A。RS232特性電氣特性:RS232特性43常用總線(串行部分)課件44⒉RS-422A通信接口(9針D型頭)1569發(fā)送數(shù)據(jù)負(fù)TX-發(fā)送數(shù)據(jù)正TX+接收數(shù)據(jù)正RX+接收數(shù)據(jù)負(fù)RX-信號(hào)地GND請(qǐng)求發(fā)送負(fù)RTS-清除發(fā)送正CTS+請(qǐng)求發(fā)送負(fù)RTS+清除發(fā)送負(fù)CTS–⒉RS-422A通信接口(9針D型頭)1569發(fā)送數(shù)據(jù)負(fù)T45RS-422標(biāo)準(zhǔn)接口電路的特性:4根信號(hào)線+信號(hào)地,共5根線。允許在相同傳輸線上連接多個(gè)接收節(jié)點(diǎn),最多可接10個(gè)節(jié)點(diǎn)。一個(gè)主設(shè)備(Master),其余為從設(shè)備(Salve),從設(shè)備之間不能通信。支持點(diǎn)對(duì)多的雙向通信。接收器輸入阻抗為4k,故發(fā)端最大負(fù)載能力是10×4k+100Ω(終接電阻)。RS-422標(biāo)準(zhǔn)接口電路的特性:46RS-422四線接口由于采用單獨(dú)的發(fā)送和接收通道,需要一對(duì)單獨(dú)的雙絞線連接。RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mb/s。傳輸距離與傳輸速率成反比,在100kb/s速率以下,才可能達(dá)到最大傳輸距離。100米長(zhǎng)的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。只有在很短的距離下才能獲得最高速率傳輸。RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。RS-422四線接口由于采用單獨(dú)的發(fā)送和接收通道,需要一對(duì)單47RS422接口芯片MAX3095/MAX3096是RS-422接收器滿足國(guó)際ESD,標(biāo)準(zhǔn)是同類產(chǎn)品中首批通過(guò)嚴(yán)格的、工業(yè)界公認(rèn)的內(nèi)置ESD保護(hù)標(biāo)準(zhǔn)測(cè)試的芯片。要求MAX3095采用+5V供電,MAX3096由+3.3V供電,接收器傳輸延遲小于+8ns,器件之間\器件與其它不同設(shè)備間的最大時(shí)延小于16ns,這一特性使其成為遠(yuǎn)距離通訊設(shè)備的理想選擇。以10Mbps的速率傳輸數(shù)據(jù)時(shí),MAX3095/MAX3096具有1/4負(fù)載的輸入阻抗,總線節(jié)點(diǎn)數(shù)可達(dá)128個(gè)。附加使能輸入可將器件置于低功耗關(guān)斷模式,此時(shí)接收器輸出為高阻態(tài)。電流損耗降至1nA,工作時(shí)電源電流僅2.4mA。RS422接口芯片MAX3095/MAX3096是RS-42483.RS-485通信接口:將RS-422A的發(fā)送數(shù)據(jù)信號(hào)正端與接收數(shù)據(jù)信號(hào)正端連起來(lái),發(fā)送數(shù)據(jù)信號(hào)負(fù)端與接收數(shù)據(jù)信號(hào)負(fù)端連起來(lái)就成為RS-485通信接口。
RS232通常是九針腳的,RS422一般只接四線通信,RS485通常用兩根帶屏蔽的絞線通信,沒(méi)有必要九針腳的接口。3.RS-485通信接口:RS232通常是九針腳的,RS4249RS-485可以采用二線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙向通信。RS-485采用半雙工工作方式。RS-485可聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),其允許最多并聯(lián)32臺(tái)驅(qū)動(dòng)器和32臺(tái)接收器。RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mbps。在100Kbps速率以下,才可能使用規(guī)定最長(zhǎng)的電纜長(zhǎng)度。一般100米長(zhǎng)雙絞線最大傳輸速率僅為1Mbps。所有器件都工作在5V單電源下。采用單一電源+5V工作,額定電流為300μA,它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。RS-485可以采用二線與四線方式,二線制可實(shí)現(xiàn)真正的多點(diǎn)雙50MAX485接口芯片MAX485接口芯片51常用總線(串行部分)課件52MAX485接口芯片是Maxim公司的一種RS-485芯片。
采用單一電源+5V工作,額定電流為300μA,采用半雙工通訊方式。它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。RO和DI端分別為接收器的輸出和驅(qū)動(dòng)器的輸入端,與單片機(jī)的RXD和TXD相連;/RE和DE端分別為接收和發(fā)送的使能端,當(dāng)/RE為邏輯0時(shí),器件處于接收狀態(tài);當(dāng)DE為邏輯1時(shí),器件處于發(fā)送狀態(tài),因?yàn)镸AX485工作在半雙工狀態(tài),所以只需用單片機(jī)的一個(gè)管腳控制這兩個(gè)引腳即可;A端和B端分別為接收和發(fā)送的差分信號(hào)端,當(dāng)A引腳的電平高于B時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時(shí),代表發(fā)送的數(shù)據(jù)為0。A和B端之間加匹配電阻,一般可選100Ω的電阻。MAX485接口芯片是Maxim公司的一種RS-485芯片。53常用總線(串行部分)課件54RS-485常用芯片標(biāo)準(zhǔn)RS-485接口的輸入阻抗為≥12kΩ、相應(yīng)的標(biāo)準(zhǔn)驅(qū)動(dòng)節(jié)點(diǎn)數(shù)為3232個(gè)節(jié)點(diǎn):SN75176、SN75276、SN75179、SN75180、MAX485、MAX488、MAX49064個(gè)節(jié)點(diǎn):SN75LBC184128個(gè)節(jié)點(diǎn):MAX1480、MAX487、MAX1487256個(gè)節(jié)點(diǎn):MAX1482、MAX1483、MAX3080~MAX3089RS-485常用芯片標(biāo)準(zhǔn)RS-485接口的輸入阻抗為≥12k55應(yīng)用中的常見(jiàn)問(wèn)題注意防靜電最好使用光電隔離隔離辦法1:用光耦、帶隔離的DC-DC、RS-485芯片構(gòu)筑電路隔離辦法2:用2次集成芯片如MAX1480(內(nèi)含光耦、DC-DC、MAX1487)應(yīng)用中的常見(jiàn)問(wèn)題注意防靜電56常用總線(串行部分)課件57常用總線(串行部分)課件58常用總線(串行部分)課件59常用總線(串行部分)課件60接口性能RS-232CRS-422ARS-485功能雙向,全雙工雙向,全雙工雙向,半雙工傳輸方式單端差分差分邏輯“0”電平3V~15V2V~6V1.5V~6V邏輯“1”電平-3V~-15V-2V~-6V-1.5V~-6V最大速率20kb/s10Mb/s10Mb/s最大距離30m1200m1200m驅(qū)動(dòng)器加載輸出電壓±5V~±15V±2V±1.5V接受器輸入敏感度±3V±0.2V±0.2V接收器輸入阻抗3~7KΩ>4KΩ>7KΩ組態(tài)方式點(diǎn)對(duì)點(diǎn)1臺(tái)驅(qū)動(dòng)器:10臺(tái)接收器32臺(tái)驅(qū)動(dòng)器:32臺(tái)接收器抗干擾能力弱強(qiáng)強(qiáng)傳輸介質(zhì)扁平或多芯電纜二對(duì)雙絞線一對(duì)雙絞線RS232、RS422、RS485對(duì)比接口性能RS-232CRS-422A61USB總線總線電壓(差值):“1”:1.3~2.0V;“0”:-1.3~-2.0V通訊距離:<5m通訊速率:<480Mb/S應(yīng)用:可實(shí)現(xiàn)近距離高速點(diǎn)對(duì)點(diǎn)通訊USB總線總線電壓(差值):“1”:1.3~2.62CAN總線CAN總線63PC機(jī)與單片機(jī)通信寄存器名稱端口地址復(fù)位后初始值COM1COM2發(fā)送器保持寄存器(TBR)3F8H2F8HXXXXXXXXB接收器數(shù)據(jù)寄存器(RBR)3F8H2F8HXXXXXXXXB波特綠因子低位寄存器(DLL)3F8H2F8H00000000B波特綠因子高位寄存器(DLH)3F9H2F9H00000001B中斷允許寄存器(IER)3F9H2F9H00000000B中斷標(biāo)識(shí)寄存器(IIR)3FAH2FAH00000000B線路控制寄存器(LCR)3FBH2FBH01100000B調(diào)制解調(diào)器控制寄存器(MCR)3FCH2FCHXXXX0000B線路狀態(tài)寄存器(LSR)3FDH2FDHXXXXXXXXB調(diào)制解調(diào)器狀態(tài)寄存器(MSR)3FEH2FEHXXXXXXXXBPC機(jī)與單片機(jī)通信寄存器名稱端口地址復(fù)位后初始值COM1CO64使用串口必須先初始化,有以下4個(gè)步驟。DLHDLL波特率DLHDLL波特率DLHDLL波特率09H00H5000HC0H60000H18H480006H00H7500H60H120000H10H720004H17H11000H40H180000H0CH960003H59H134.500H3AH200000H06H1920003H00H15000H30H240000H03H3840001H80H30000H20H360000H01H115200例:設(shè)COM1的波特率為9600,則outportb(0x3fb,0x80);/*寫線路控制寄存器,訪問(wèn)波特率因子寄存器*/
outportb(0x3f8,0x0c);/*寫入波特率因子低字節(jié)*/
outportb(0x3f9,0x00);/*寫入波特率因子高字節(jié)*/
⒈設(shè)置波特率PC機(jī)串口初始化使用串口必須先初始化,有以下4個(gè)步驟。DLHDLL波特率DL65⒉設(shè)置數(shù)據(jù)格式設(shè)數(shù)據(jù)為7位,1位起始位,1位停止位,偶校驗(yàn),則設(shè)置如下:outportb(0x3fb,0x1a);⒊設(shè)置操作方式不允許中斷:outportb(0x3fc,0x03);允許中斷:outportb(0x3fc,0x0b);自測(cè)試工作方式,且不允許中斷:outportb(0x3fc,0x13);⒋設(shè)置中斷允許寄存器開(kāi)放中斷語(yǔ)句:outportb(0x3f9,0x0f);PC機(jī)串口初始化⒉設(shè)置數(shù)據(jù)格式PC機(jī)串口初始化66例1將PC機(jī)的COM1初始化為9600波特率、7位數(shù)據(jù)、偶校驗(yàn)、1位停止位、不中斷,則初始程序如下:initcom1(){outportb(0x3fb,0x80);/*寫線路控制寄存器,訪問(wèn)波特率因子寄存器*/
outportb(0x3f8,0x0c);/*寫入波特率因子低字節(jié)*/outportb(0x3f9,0x00);/*寫入波特率因子高字節(jié)*/
outportb(0x3fb,0x1a);/*設(shè)數(shù)據(jù)為7位,1位起始位,1位停止位,偶校驗(yàn)*/outportb(0x3fc,0x03);/*不允許中斷*/}PC機(jī)的發(fā)送、接收程序例1將PC機(jī)的COM1初始化為9600波特率、7位數(shù)據(jù)、67例2PC機(jī)從COM1發(fā)送一個(gè)字符,程序如下:send(charsendchar){intcoms;do{ /*查詢發(fā)送緩沖器是否空*/coms=inportb(0x3fd)&0x20;}while(coms!=0x20);outportb(0x3f8,sendchar);}例2PC機(jī)從COM1發(fā)送一個(gè)字符,程序如下:68例3.PC機(jī)從COM1接收一個(gè)字符,程序如下:charreceive(){charcoms,receivechar;waitok: /*查詢接收數(shù)據(jù)是否有效*/coms=inportb(0x3fd);if((coms&0x01)==0)gotowaitok;receivechar=inportb(0x3f8);returnreceivechar;}例3.PC機(jī)從COM1接收一個(gè)字符,程序如下:69二、PC機(jī)與單片機(jī)雙機(jī)通信PC機(jī)與單片機(jī)構(gòu)成主從式上下位計(jì)算機(jī)系統(tǒng)。例:從PC機(jī)鍵盤上輸入一個(gè)字符,然后將這個(gè)字符發(fā)送給單片機(jī),單片機(jī)接收到這個(gè)字符后,不做任何處理,又將它發(fā)回給PC機(jī),PC機(jī)將這個(gè)字符顯示在屏幕上。連接電路如下:PC機(jī)RXDTXDMAX232T1OUTR1INT1IN(R1OUTRXDTXDMCS-51約定:波特率:2400b/s信息格式:8位數(shù)據(jù),1位停止位傳送方式:PC機(jī)采用查詢式收發(fā)數(shù)據(jù),單片機(jī)采用中斷式收發(fā)數(shù)據(jù)由于PC機(jī)是RS-232C電平,單片機(jī)是TTL電平,用MAX232進(jìn)行電平轉(zhuǎn)換。PC機(jī)與單片機(jī)通信設(shè)計(jì)二、PC機(jī)與單片機(jī)雙機(jī)通信PC機(jī)RXDTXDMAX232T70⒈PC機(jī)的通信軟件#include“stdio.h”main(){charc1,c2;intcoms;outportb(0x3fb,0x80);/*初始化8250*/outportb(0x3f8,0x30);outportb(0x3f9,0x00);outportb(0x3fb,0x03);/*8位數(shù)據(jù),1位停止位*/outportb(0x3fc,0x03);c1=getchar();}開(kāi)始初始化8250有鍵輸入嗎?取鍵盤字符發(fā)送寄存器空否?向單片機(jī)發(fā)送字符接收單片機(jī)發(fā)回的字符接收的數(shù)據(jù)有效碼?顯示發(fā)回的字符NNNYYY結(jié)束PC機(jī)發(fā)送程序⒈PC機(jī)的通信軟件開(kāi)始初始化8250有鍵輸入嗎?取鍵71do{coms=inportb(0x3fd)&0x20;/*查詢發(fā)送緩沖器是否空*/}while(coms!=0x20);outportb(0x3f8,c1);waitok: /*查詢接收數(shù)據(jù)是否有效*/coms=inportb(0x3fd);if((coms&0x01)==0)gotowaitok;c2=inportb(0x3f8);printf(“Thereturncharis:”);putchar(c2);}do72開(kāi)始初始化定時(shí)器T1初始化串行口啟動(dòng)定時(shí)器T1開(kāi)放中斷主程序踏步中斷服務(wù)程序關(guān)中斷清接收中斷標(biāo)志RI保護(hù)現(xiàn)場(chǎng)接收PC機(jī)發(fā)來(lái)的字符將字符發(fā)送回PC機(jī)開(kāi)中斷,恢復(fù)現(xiàn)場(chǎng)中斷返回MCS-51單片機(jī)通信軟件主程序中斷服務(wù)程序開(kāi)始初始化定時(shí)器T1初始化串行口啟動(dòng)定時(shí)器T1開(kāi)放中斷主73主程序: ORG 0000H LJMP MAIN ORG 0023H LJMP SERVEMAIN:MOV TMOD,#20H;初始化T1 MOV TH1,#0F3H MOV TL1,#0F3H MOV SCON,#50H;串行口為方式1,REN=1 MOV PCON,#80H;SMOD=1 SETB TR1 SETB EA SETB ESHERE: SJMP HERE單片機(jī)接收程序主程序:?jiǎn)纹瑱C(jī)接收程序74中斷服務(wù)程序:SERVE:CLR EA ;中斷服務(wù)程序 CLR RI PUSH PSW ;保護(hù)現(xiàn)場(chǎng) SETB RS0 CLR RS1 PUSH ACC MOV A,SBUF ;接收PC機(jī)發(fā)來(lái)的字符 MOV SBUF,A ;將字符回送給PC機(jī)WAIT:JNB TI,WAIT ;等待發(fā)送完畢 CLR TI POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP PSW SETB EA RETI END中斷服務(wù)程序:75三、PC機(jī)與單片機(jī)通訊多機(jī)通信多機(jī)通信的關(guān)鍵問(wèn)題:識(shí)別單片機(jī)!給單片機(jī)編號(hào)。怎樣識(shí)別單片機(jī)?起始位D0D1D2D3D4D5D6D7奇偶位停止位起始位D0D1D2D3D4D5D6D7TB8停止位
從PC機(jī)和單片機(jī)幀格式可知:通過(guò)軟件編程,使得PC機(jī)在發(fā)送地址(單片機(jī)編號(hào))時(shí),奇偶位為1,發(fā)送數(shù)據(jù)時(shí)為0;單片機(jī)接收時(shí),TB8為1表示收到的地址,為0表示收到的數(shù)據(jù)。
PC機(jī)與單片機(jī)通訊多機(jī)通信三、PC機(jī)與單片機(jī)通訊多機(jī)通信起始位D0D1D2D3D4D576例:從PC機(jī)的鍵盤上輸入單片機(jī)的編號(hào),要求PC機(jī)與該單片機(jī)進(jìn)行通信測(cè)試,從鍵盤上輸入一個(gè)字符,發(fā)送給某單片機(jī),單片機(jī)受到該字符后,又發(fā)回給PC機(jī),在屏幕上顯示出來(lái)。由于RS-232C不能實(shí)現(xiàn)多機(jī)通信,故采用RS-422標(biāo)準(zhǔn)。電路如下:PC機(jī)TXDRXD……232/422轉(zhuǎn)換器RXDTXDMCS-5175175751741號(hào)RXDTXDMCS-5175175751742號(hào)RXDTXDMCS-517517575174n號(hào)PC機(jī)與單片機(jī)的多級(jí)通信例:從PC機(jī)的鍵盤上輸入單片機(jī)的編號(hào),要求PC機(jī)與該單片機(jī)進(jìn)77⒈PC機(jī)軟件設(shè)計(jì)
開(kāi)始初始化8250輸入單片機(jī)編號(hào)發(fā)送單片機(jī)編號(hào)接收單片機(jī)送回的編號(hào)取鍵盤字符編號(hào)一致嗎?向單片機(jī)發(fā)送字符接收單片機(jī)發(fā)回的字符顯示發(fā)回的字符NY結(jié)束多機(jī)通訊程序設(shè)計(jì)⒈PC機(jī)軟件設(shè)計(jì)開(kāi)始初始化8250輸入單片機(jī)編號(hào)發(fā)送78程序清單:#include“stdio.h”main(){charc1,c2,n1,n2;intcoms;outportb(0x3fb,0x80); /*初始化8250*/outportb(0x3f8,0x30);outportb(0x3f9,0x00);outportb(0x3fb,0x2b); /*8位數(shù)據(jù),1位停止,奇偶校驗(yàn)位為1*/outportb(0x3fc,0x03); /*PC機(jī)處于發(fā)送地址狀態(tài)*/outportb(0x3f9,0x00); /*禁止8250中斷*/printf(“PleaseinputthenumberofMCS:\n”);scanf(“%c”,&n1);do{ /*查詢發(fā)送移位寄存器是否空*/coms=inportb(0x3fd)&0x40;}while(coms!=0x40);outportb(0x3f8,n1); /*PC機(jī)發(fā)送單片機(jī)地址編號(hào)*/outportb(0x3fc,0x01); /*PC機(jī)處于接收狀態(tài)*/waitok1: /*查詢單片機(jī)返回的編號(hào)是否有效*/coms=inportb(0x3fd);if((coms&0x01)==0)PC機(jī)端的程序程序清單:PC機(jī)端的程序79gotowaitok1;n2=inportb(0x3f8); /*讀入單片機(jī)返回的編號(hào)*/if(n1!=n2){ printf(“ThenumberofMCSiserror!\n”); break;}else {outportb(0x3fc,0x03); /*PC機(jī)處于發(fā)送狀態(tài)*/ outportb(0x3fb,0x3b); /*PC機(jī)處于發(fā)送數(shù)據(jù)狀態(tài)*/c1=getchar(); do{ /*查詢發(fā)送移位寄存器是否空*/coms=inportb(0x3fd)&0x40;}while(coms!=0x40);outportb(0x3f8,c1);outportb(0x3fc,0x01); /*PC機(jī)處于接收狀態(tài)*/waitok2: /*查詢單片機(jī)返回的字符是否有效*/coms=inportb(0x3fd);if((coms&0x01)==0)gotowaitok2;c2=inportb(0x3f8); /*讀入單片機(jī)返回的字符*/printf(“Thereturncharis:”);/*顯示返回的字符*/putchar(c2);}}gotowaitok1;80⒉單片機(jī)程序流程中斷服務(wù)程序保護(hù)現(xiàn)場(chǎng)接收地址與本機(jī)地址相等否?回送本機(jī)地址接收PC機(jī)發(fā)來(lái)的字符將收到的字符回送PC機(jī)恢復(fù)現(xiàn)場(chǎng)中斷返回NY單片機(jī)軟件設(shè)計(jì)⒉單片機(jī)程序流程中斷服務(wù)程序保護(hù)現(xiàn)場(chǎng)接收地址與本機(jī)地址相等813、程序清單: ORG 0000H LJMP MAIN ORG 0023H LJMP SERVEMAIN: MOV TMOD,#20H ;初始化T1 MOV TH1,#0F3H MOV TL1,#0F3H MOV SCON,#0F0H ;串行口為方式3,REN=1 MOV PCON,#80H ;SMOD=1 SETB TR1 SETB EA SETB ESHERE: SJMP HERESERVE: CLR EA PUSH ACC PUSH PSW CLR RS1 SETB RS03、程序清單:82
MOV A,SBUF ;接收地址 XRL A,#01H ;與本機(jī)地址進(jìn)行比較 JNZ RETURN ;與本機(jī)地址不符,則返回 CLR SM2 ;置單片機(jī)為接收數(shù)據(jù)狀態(tài) CLR RI MOV A,#01H MOV SBUF,A ;發(fā)送本機(jī)地址給PC機(jī) JNB TI,$ ;等待發(fā)送完畢 CLR TI JNB RI,$ ;等待PC機(jī)發(fā)來(lái)的字符接收完畢 MOV A,SBUF ;讀入字符 CLR RI MOV SBUF,A JNB TI,$ ;等待發(fā)送完畢 CLR TIRETURN:POP PSW POP ACC SETB EA RETI END MOV A,SBUF ;接收地址832、多機(jī)通信
硬件連接主從系統(tǒng)在實(shí)際系統(tǒng)中,常采用RS-485標(biāo)準(zhǔn)進(jìn)行數(shù)據(jù)傳輸。2、多機(jī)通信84DOS環(huán)境下,要實(shí)現(xiàn)通信只要直接對(duì)微機(jī)接口芯片8250進(jìn)行口地址操作即可
WINDOWS環(huán)境下,不允許用戶直接操作串口地址??梢哉{(diào)用API函數(shù),但較為復(fù)雜。使用VB通信控件(Mscomm)很容易完成通信任務(wù)
VB簡(jiǎn)明易用,實(shí)用性強(qiáng)。它具備基本的串行通信能力:即通過(guò)串行口發(fā)送和接收數(shù)據(jù)。DOS環(huán)境下,要實(shí)現(xiàn)通信只要直接對(duì)微機(jī)接口芯片8250進(jìn)行口85
MSComm控件主要屬性如下:CommPort:設(shè)置并返回通信端口號(hào);Settings:以字符串的方式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位;PortOpen:設(shè)置并返回端口的狀態(tài),也可以打開(kāi)和關(guān)閉端口;Input:從接收緩沖區(qū)返回字符和刪除字符;Output:向傳輸緩沖區(qū)寫一個(gè)字符。MSComm控件主要屬性如下:86
單片機(jī)程序清單如下:
ORG3000HMAIN:MOVTMOD,#20H;在11.0592MHz下,串行口波特率MOVTH1,#0FDH;9600bps,方式3MOVTL1,#0FDH MOVPCON,#00H SETBTR1 MOVSCON,#0D8HLOOP:JBCRI,RECEIVE;接收到數(shù)據(jù)后立即發(fā)出去 SJMPLOOPRECEIVE:MOVA,SBUF MOVSBUF,ASEND:JBCTI,SENDEND SJMPSENDSENDEND:SJMPLOOP單片機(jī)程序清單如下: ORG300087單片機(jī)串行口的應(yīng)用
1、串行口擴(kuò)展顯示器
【例】用8位串入并出移位寄存器74HC164擴(kuò)展顯示器。
單片機(jī)串行口的應(yīng)用1、串行口擴(kuò)展顯示器882、串行口擴(kuò)展的鍵盤在方式0下,串行口作同步移位寄存器用,以8位數(shù)據(jù)為一幀,先發(fā)送或接收最低位,每個(gè)機(jī)器周期發(fā)送或接收一位,故其波特率是固定的,為fosc/12。串行數(shù)據(jù)由RXD(P3.0)端輸入或輸出。
2、串行口擴(kuò)展的鍵盤在方式0下,串行口作同步移位寄存器用,以89
CJNE R1,#08,LP1
SJMP RCVI
N1:MOV A,R0
ADD A,A
JMP @A+DPTR
TAB:AJMP OPR0
AJMP OPR1
…
AJMP OPR7
OPR0: …
LJMP START
OPR7: …
LJMP START
END
ORG 0100HSTART: MOV R7,#20 MOV R0,#50H MOV DPTR,#TAB RCVI:MOV SCON,#10HJNB RI,$ CLR RI MOV A,SBUF MOV R0,#0 MOVR1,#0 LP1:RRC A JNC N1 INC R0 INC R1CJNE R1,#08,LP1
SJMP RCVI
90二.內(nèi)部串行總線二.內(nèi)部串行總線911.Intel總線(MCS-51)地址總線(16位)數(shù)據(jù)總線(8位)控制總線由I/O口和其他控制信號(hào)對(duì)其他外設(shè)編碼、選擇數(shù)據(jù)總線由P0口提供,與存儲(chǔ)器、I/O擴(kuò)展芯片等進(jìn)行數(shù)據(jù)交換Motorola總線與Intel總線類似,有些可以直接相連1.Intel總線(MCS-51)地址總線(16位)922.SPI總線3.I2C總線2.SPI總線93SPI總線(SerialPeripheralInterface)SPI接口簡(jiǎn)介SPI硬件結(jié)構(gòu)SPI總線時(shí)序SPI總線實(shí)例SPI總線(SerialPeripheralInterf94SPI接口簡(jiǎn)介SPI是MOTOROLA推出的一種芯片間四線同步接口。數(shù)據(jù)按位傳輸,高位在前,低位在后,速度可達(dá)到幾十Mbps。具有標(biāo)準(zhǔn)的傳輸協(xié)議,為全雙工通信,能夠同時(shí)收發(fā)。SPI接口簡(jiǎn)介SPI是MOTOROLA推出的一種芯片間四線95SPI主要應(yīng)用領(lǐng)域數(shù)據(jù)信號(hào)處理器、數(shù)據(jù)信號(hào)解碼器存儲(chǔ)器(如靜態(tài)RAM、E2PROM和FlashEPROM等)A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器實(shí)時(shí)時(shí)鐘(RTC)顯示驅(qū)動(dòng)器件(如LED顯示驅(qū)動(dòng)器件和LCD顯示驅(qū)動(dòng)器)。SPI主要應(yīng)用領(lǐng)域數(shù)據(jù)信號(hào)處理器、數(shù)據(jù)信號(hào)解碼器96使用SPI總線的好處采用SPI總線接口可以簡(jiǎn)化電路設(shè)計(jì),提高設(shè)計(jì)的可靠性。在MCS–51使用SPI總線可以增加應(yīng)用系統(tǒng)接口器件的種類,提高應(yīng)用系統(tǒng)的性能。采用統(tǒng)一的讀寫函數(shù),縮短芯片軟件開(kāi)發(fā)周期。使用SPI總線的好處采用SPI總線接口可以簡(jiǎn)化電路設(shè)計(jì),提高97SPI總線的基本原理SPI接口是以主從方式工作的,此模式通常有一個(gè)主器件和一個(gè)或多個(gè)從器件,并且同一時(shí)間內(nèi)總線上只能有一個(gè)主器件,其接口包括以下四種信號(hào):1)MOSI–主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入;
2)MISO–主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出;
3)SCLK–時(shí)鐘信號(hào),由主器件產(chǎn)生;
4)/SS
–從器件使能信號(hào),由主器件控制(也稱為片選信號(hào),常由I/O口作為片選)。其中,SCLK用于同步主器件和從器件之間在MISO和MOSI線上的串行數(shù)據(jù)傳輸,決定傳輸?shù)乃俾?,由主器件輸出。SPI總線的基本原理SPI接口是以主從方式工作的,此模式通常98
如果一個(gè)SPI從機(jī)沒(méi)有被選中,他的數(shù)據(jù)輸出端SDO將處于高阻狀態(tài),從而與當(dāng)前處于激活狀態(tài)的隔離開(kāi)。
SPI從機(jī)的內(nèi)部結(jié)構(gòu)如果一個(gè)SPI從機(jī)沒(méi)有被選中,他的數(shù)據(jù)輸出端SDO將處99SPI從機(jī)的內(nèi)部結(jié)構(gòu)SPI接口實(shí)際上是兩個(gè)簡(jiǎn)單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號(hào)和移位脈沖下,按位傳輸,高位在前,低位在后。上升沿發(fā)送,下降沿接收。(有的器件是上升沿接收,下降沿發(fā)送)D7....D0D0....D7SPI從機(jī)的內(nèi)部結(jié)構(gòu)SPI接口實(shí)際上是兩個(gè)簡(jiǎn)單的移位寄存器100全雙工通信模式SPI內(nèi)部硬件結(jié)構(gòu)框圖全雙工:在接收數(shù)據(jù)的同時(shí)也在發(fā)送數(shù)據(jù)(即使另一端沒(méi)有發(fā)送數(shù)據(jù))通過(guò)存儲(chǔ)器映射通過(guò)存儲(chǔ)器映射全雙工通信模式SPI內(nèi)部硬件結(jié)構(gòu)框圖全雙工:在接收數(shù)據(jù)的同時(shí)101SPI接口缺點(diǎn):(1)缺乏流控制機(jī)制,無(wú)論主器件還是從器件均不對(duì)消息進(jìn)行確認(rèn),主器件無(wú)法知道從器件是否繁忙。因此,需要軟件彌補(bǔ),增加了軟件開(kāi)發(fā)工作量。(2)沒(méi)有多主器件協(xié)議,必須采用很復(fù)雜的軟件和外部邏輯來(lái)實(shí)現(xiàn)多主器件架構(gòu)。SPI接口缺點(diǎn):(1)缺乏流控制機(jī)制,無(wú)論主器件還是從器件均102SPI總線接口硬件電路結(jié)構(gòu)
SPI總線接口硬件電路結(jié)構(gòu)103
單主機(jī)--多從機(jī)模式單主機(jī)--多從機(jī)模式104多主機(jī)--多從機(jī)模式多主機(jī)--多從機(jī)模式105SPI總線的配置SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,輸出的串行同步時(shí)鐘極性和相位可以進(jìn)行配置。時(shí)鐘極性(CPOL)對(duì)傳輸協(xié)議沒(méi)有重大的影響。如果CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠用于選擇兩種不同的傳輸協(xié)議進(jìn)行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。注:SPI主模塊和與之通信的外設(shè)間時(shí)鐘相位和極性應(yīng)該一致。
SPI總線的配置SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工106傳輸模式根據(jù)時(shí)鐘極性(CPOL)及相位(CPHA)不同可以組合成4種工作模式:SPI0,SPI1,SP2,SP3.傳輸模式根據(jù)時(shí)鐘極性(CPOL)及相位(CPHA)不同107SPI總線的4種模式/時(shí)鐘時(shí)序圖SPI總線的4種模式/時(shí)鐘時(shí)序圖108傳輸模式對(duì)比傳輸模式對(duì)比109
SPI總線簡(jiǎn)單時(shí)序SPI總線簡(jiǎn)單時(shí)序110時(shí)序分析時(shí)序分析111使用SPI的注意要點(diǎn)作為主機(jī)時(shí),片選引腳必須要與上拉電阻連接,并且不能作為I/O口使用;作主機(jī)時(shí),在發(fā)送一字節(jié)數(shù)據(jù)時(shí)同時(shí)也接收一字節(jié)數(shù)據(jù);數(shù)據(jù)寄存器與內(nèi)部移位寄存器之間沒(méi)有緩沖區(qū),寫數(shù)據(jù)寄存器會(huì)使數(shù)據(jù)直接進(jìn)入移位寄存器。因此,數(shù)據(jù)只能在上一次數(shù)據(jù)發(fā)送完成后寫入數(shù)據(jù)寄存器;一個(gè)主機(jī)可以連接多個(gè)從機(jī),但是一次只允許一個(gè)從機(jī)給主機(jī)發(fā)送數(shù)據(jù)。使用SPI的注意要點(diǎn)作為主機(jī)時(shí),片選引腳必須要與上拉電阻連接112SPI時(shí)序軟件模擬寫總線子程序write_spi:movr7,#08HSpi_loop:clrSCLKrlca movMOSI,c setbSCLK djnzr7,spi_loop clrMOSI ret讀總線子程序read_spi:movr7,#08HSpi_loop:setbSCLKmovc,MISO rlca clrSCLK djnzr7,spi_loop retSPI時(shí)序軟件模擬寫總線子程序讀總線子程序113SPI軟件模擬----發(fā)送端代碼send_byte(uchara){inti=0;for(i=0;i<8;i++){SCLK=0;_RCL_(a);MOSI=CF;SCLK=1;}MOSI=0;}SPI軟件模擬----發(fā)送端代碼send_byte(ucha114SPI軟件模擬----接收端代碼ucharrecv_byte(){inti=0;uchara;for(i=0;i<8;i++){SCLK=0;CF=MISO;_RCL_(a);SCLK=1;}}SPI軟件模擬----接收端代碼ucharrecv_byt115SPI接口常見(jiàn)芯片GM8142SPI轉(zhuǎn)4串口S25FL064A64Mb串行閃存(Spansion)Atmel公司AT250404Kb的EEPROMTLC5615DACTLC1543ADCSPI接口常見(jiàn)芯片GM8142SPI轉(zhuǎn)4串口116AD轉(zhuǎn)換芯片TLC1543AD轉(zhuǎn)換芯片TLC1543117A/D—TLC154310位串行A/D、11路輸入1無(wú)需外部時(shí)鐘2價(jià)格在15元左右3可到TI公司免費(fèi)申請(qǐng)4A/D—TLC154310位串行A/D、11路輸入1無(wú)需外部118TLC1543特點(diǎn)CS(15腳)為片選端,在CS端的一個(gè)下降沿變化將復(fù)位內(nèi)部計(jì)數(shù)器并控制和使能ADDRESS、I/OCLOCK(18腳)和DATAOUT(16腳)。ADDRESS(17腳)為串行數(shù)據(jù)輸入端,選擇下一個(gè)輸入通道。DATAOUT為A/D轉(zhuǎn)換結(jié)果3態(tài)串行輸出端。I/OCLOCK片內(nèi)輸入/輸出同步時(shí)鐘。EOC(19腳)轉(zhuǎn)換結(jié)束引腳(10μS轉(zhuǎn)換時(shí)間)。TLC1543特點(diǎn)CS(15腳)為片選端,在CS端的一個(gè)下降119A/D轉(zhuǎn)換芯片TLC1543A/D轉(zhuǎn)換芯片TLC1543120芯片管腳圖芯片管腳圖121外圍電路圖外圍電路圖122驅(qū)動(dòng)時(shí)序圖驅(qū)動(dòng)時(shí)序圖123A/D—TLC154910位串行A/D1單路模擬輸入2無(wú)需外部時(shí)鐘38腳封裝,體積較小4A/D—TLC154910位串行A/D1單路模擬輸入2無(wú)需外124芯片管腳圖芯片管腳圖125外圍電路圖外圍電路圖126驅(qū)動(dòng)時(shí)序圖驅(qū)動(dòng)時(shí)序圖127D/A轉(zhuǎn)換芯片TLC5615用單片機(jī)D/A轉(zhuǎn)換實(shí)現(xiàn)方波和鋸齒波波形D/A轉(zhuǎn)換芯片TLC5615用單片機(jī)D/A轉(zhuǎn)換實(shí)現(xiàn)方波和鋸齒128串行D/A芯片TLC5615特點(diǎn)5V單電源工作;10位CMOS電壓輸出;與微處理器3線串行接口(SPI);最大輸出電壓是基準(zhǔn)電壓的2倍;輸出電壓具有和基準(zhǔn)電壓相同的極性;建立時(shí)間12.5μs;內(nèi)部上電時(shí)把DAC寄存器復(fù)位至全0;低功耗,最高為1.75mW;引腳與MAX515兼容。串行D/A芯片TLC5615特點(diǎn)5V單電源工作;10位CM129功能方框圖TLC5615功能方框圖功能方框圖TLC5615功能方框圖130引腳排列及功能TLC5615引腳圖引腳排列及功能TLC5615引腳圖131引腳功能引腳I/O說(shuō)明名稱序號(hào)DIN1I串行數(shù)據(jù)輸入SCLK2I串行時(shí)鐘輸入/CS3I芯片選擇。低有效DOUT4O用于菊花鏈(daisychaining)的串行數(shù)據(jù)輸出AGND5模擬地REFIN6I基準(zhǔn)電壓輸入OUT7ODAC模擬電壓輸出VDD8正電源(4.5~5.5V)菊花鏈(DaisyChain)一種沿總線傳輸信號(hào)的方法,其中設(shè)備串聯(lián),而信號(hào)則從一臺(tái)設(shè)備傳向下一臺(tái)設(shè)備。菊花鏈連接方法可根據(jù)設(shè)備在總線上的電氣地位分配其優(yōu)先級(jí)。引腳功能引腳I/O說(shuō)明名稱序號(hào)DIN1I串行數(shù)據(jù)輸入SCLK132
TLC5615內(nèi)部結(jié)構(gòu)TLC5615內(nèi)部結(jié)構(gòu)133TLC5615使用要點(diǎn)TLC5615輸入數(shù)字量和輸出電壓表達(dá)式:VO=2×VREF×CODE/1024(其輸出具有與基準(zhǔn)輸入相同的極性;CODE是串口輸入的待轉(zhuǎn)換的數(shù)據(jù);VREF是基準(zhǔn)電壓。)TLC5615最大串行時(shí)鐘速率不超過(guò)14MHz,10位DAC的建立時(shí)間為12.5μs,通常更新速率限制在80kHz以內(nèi)。TLC5615使用要點(diǎn)TLC5615輸入數(shù)字量和輸出電壓表達(dá)134TLC5615的時(shí)序分析時(shí)序波形圖TLC5615的時(shí)序分析時(shí)序波形圖135當(dāng)片選CS為低電平時(shí),在SCLK的上升沿把DIN引腳數(shù)據(jù)移入內(nèi)部16位移位寄存器,SCLK下降沿DOUT輸出串行數(shù)據(jù),最高位在前,低位在后。片選CS的上升沿把數(shù)據(jù)傳送至DAC寄存器。當(dāng)片選CS為高電平時(shí),串行輸入DIN無(wú)效;輸出引腳DOUT保持最后的數(shù)值狀態(tài)。為了使時(shí)鐘的內(nèi)部饋通最小,當(dāng)片選CS為高電平時(shí),輸入時(shí)鐘SCLK應(yīng)當(dāng)為低電平。當(dāng)片選CS為低電平時(shí),在SCLK的上升沿把DIN引腳數(shù)據(jù)移入136非級(jí)聯(lián)方式:
DIN只需輸入12位數(shù)據(jù)。DIN輸入的12位數(shù)據(jù)中,前10位為D/A轉(zhuǎn)換數(shù)據(jù),輸入時(shí)高位在前,低位在后,后兩位數(shù)據(jù)補(bǔ)0。(因?yàn)門LC5615的DAC輸入鎖存器為12位寬)級(jí)聯(lián)方式:
如果使用TL5615的級(jí)聯(lián)功能,完成一次數(shù)據(jù)輸入需要16個(gè)時(shí)鐘周期,即DOUT引腳在16個(gè)下降沿有輸出。輸入的數(shù)據(jù)必須為16位,前4位為高虛擬位,中間10位為D/A轉(zhuǎn)換數(shù)據(jù),最后2位補(bǔ)零。TLC5615的兩種使用方式非級(jí)聯(lián)方式:TLC5615的兩種使用方式13712位非級(jí)聯(lián)方式DIN輸入數(shù)據(jù)格式:10位××16位級(jí)聯(lián)方式DIN輸入數(shù)據(jù)格式:4個(gè)虛位10位××MSBLSBMSBLSB12位非級(jí)聯(lián)方式DIN輸入數(shù)據(jù)格式:10位××16位級(jí)聯(lián)方式138TLC5615與51單片機(jī)的接口電路TLC5615與51單片機(jī)的接口電路139TLC5615的DA轉(zhuǎn)換關(guān)系數(shù)字量輸入模擬量輸出1111111111(00)2VREFIN×1023/1024┇
┇1000000001(00)2VREFIN×513/10241000000000(00)2VREFIN×512/10240111111111(00)2VREFIN×511/1024┇┇0000000001(00)2VREFIN×1/10240000000000(00)0VTLC5615的DA轉(zhuǎn)換關(guān)系數(shù)字量輸入模擬量輸出11111140TLC5615與89C51DA轉(zhuǎn)換程序設(shè)計(jì)入口參數(shù):TLC5615要輸入的12位數(shù)據(jù)存在R0和R1寄存器中。 CLR P1.0 ;片選有效 MOV R2,#4 ;將要送入的前4位數(shù)據(jù)位數(shù) MOV A,R0 ;前4位數(shù)據(jù)送累加器低4位 SWAPA ;A中高、低4位互換 LCALLWRdata ;由DIN輸入前4位數(shù)據(jù) MOV R2,#8 ;將要送入的后8位數(shù)據(jù)位數(shù) MOV A,R1 ;8位數(shù)據(jù)送入累加器A LCALLWRdata ;由DIN輸入后8位數(shù)據(jù) CLR P1.1 ;時(shí)鐘低電平 SETBP1.0 ;片選高,上升沿轉(zhuǎn)換開(kāi)始 RET ;結(jié)束送數(shù) TLC5615與89C51DA轉(zhuǎn)換程序設(shè)計(jì)入口參數(shù):TLC5141WRdata:NOP ;空操作LOOP:CLR P1.1 ;時(shí)鐘低電平 RLC A ;數(shù)據(jù)送入進(jìn)位位CY MOV P1.2,C;數(shù)據(jù)輸入TLC5615 SETBP1.1;時(shí)鐘高電平 DJNZR2,LOOP ;循環(huán)送數(shù) RETSPI數(shù)據(jù)寫入子程序WRdata:NOP ;空操作SPI數(shù)據(jù)寫入子142#include<reg51.h>#include<intrins.h>sbitCS=P1^0;sbitCLK=P1^1;sbitDATA=P1^2;#defineucharunsignedchar#defineuintunsignedintTLC5615輸出方波C程序#include<reg51.h>TLC5615輸出方波143voidda5615(uintda)//DA轉(zhuǎn)換函數(shù){ uchari; da<<=6;//有效數(shù)字10位 CS=0;CLK=0; for(i=0;i<12;i++) { DATA=(bit)(da&0x8000); CLK=1;//上升沿?cái)?shù)據(jù)輸入到寄存器 da<<=1; CLK=0; } CS=1;CLK=0; for(i=0;i<12;i++);//下次轉(zhuǎn)換延時(shí)}voidda5615(uintda)//DA轉(zhuǎn)換函數(shù)144voiddelay(uintz){while(z--);}voidmain()//方波輸出主程序{while(1){da5615(0x03ff);//輸出最高電壓delay(100);da5615(0);//輸出最低電壓delay(100);}}voiddelay(uintz)145#include<reg51.h>#include<intrins.h>sbitCS=P1^0;sbitCLK=P1^1;sbitDATA=P1^2;#defineucharunsignedchar#defineuintunsignedintTLC5615輸出鋸齒波C程序#include<reg51.h>TLC5615輸出鋸齒146voidda5615(uintda)//DA轉(zhuǎn)換函數(shù){ uchari; da<<=6;//有效數(shù)字10位 CS=0;CLK=0; for(i=0;i<12;i++) { DATA=(bit)(da&0x8000); CLK=1;//上升沿?cái)?shù)據(jù)輸入到寄存器 da<<=1; CLK=0; } CS=1;CLK=0; for(i=0;i<12;i++);//下次轉(zhuǎn)換延時(shí)}voidda5615(uintda)//DA轉(zhuǎn)換函數(shù)147voidmain(){uintDA=0;while(1){da5615(DA+20);If(Da>=0x03fff)Da=0;}}TLC5615輸出鋸齒波主程序voidmain()TLC5615輸出鋸齒波主程序148SPI總線的E2PROM設(shè)計(jì)
SPI總線的E2PROM設(shè)計(jì)149日歷時(shí)鐘芯片并行日歷時(shí)鐘芯片DS12887串行日歷時(shí)鐘芯片DS1302DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路。日歷時(shí)鐘芯片并行日歷時(shí)鐘芯片DS12887150DS1302引腳功能其中:X1、X2:32.768KHz晶振接入引腳。GND:地。/RST:復(fù)位引腳,低電平有效。I/O:數(shù)據(jù)輸入/輸出引腳,具有三態(tài)功能。SCLK:串行時(shí)鐘輸入引腳。VCC1:工作電源引腳。VCC2:備用電源引腳。DS1302引腳功能其中:151DS1302供電
DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2>Vcc1+0.2V時(shí),Vcc2供電。當(dāng)Vcc2小于Vcc1時(shí),Vcc1供電。DS1302供電DS1302由Vcc1或Vcc2兩者中152一.DS1302的主要性能指標(biāo)(1)DS1302實(shí)時(shí)時(shí)鐘具有能計(jì)算2100年之前的秒、分、時(shí)、日、日期、星期、月、年的能力,還有閏年調(diào)整的能力。(2)內(nèi)部含有31個(gè)字節(jié)靜態(tài)RAM,可提供用戶訪問(wèn)。(3)采用串行數(shù)據(jù)傳送方式,使得管腳數(shù)量最少,簡(jiǎn)單3線接口。(4)工作電壓范圍寬:2.0~5.5V。(5)工作電流:2.0V時(shí),小于300nA。(6)時(shí)鐘或RAM數(shù)據(jù)的讀/寫有兩種傳送方式:?jiǎn)巫止?jié)傳送和多字節(jié)傳送方式。(7)采用8腳DIP封裝或SOIC封裝。(8)與TTL兼容,VCC=5V。(9)可選工業(yè)級(jí)溫度范圍:-40C~+85C。(10)具有涓流充電能力。(11)采用主電源和備份電源雙電源供應(yīng)。(12)備份電源可由電池或大容量電容實(shí)現(xiàn)。一.DS1302的主要性能指標(biāo)(1)DS1302實(shí)時(shí)時(shí)鐘具有153三.DS1302的寄存器及片內(nèi)RAMDS1302有一個(gè)控制寄存器、12個(gè)日歷、時(shí)鐘寄存器和31個(gè)RAM。1.控制寄存器控制寄存器用于存放DS1302的控制命令字,DS1302的RST引腳回到高電平后寫入的第一個(gè)字就為控制命令。它用于對(duì)DS1302讀寫過(guò)程進(jìn)行控制,它的格式如下:D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0RD/W其中:D7:固定為1D6:RAM/CK位,片內(nèi)RAM或日歷、時(shí)鐘寄存器選擇位。D5~D1:地址位,用于選擇進(jìn)行讀寫的日歷、時(shí)鐘寄存器或片內(nèi)RAM。對(duì)日歷、時(shí)鐘寄存器或片內(nèi)RAM的選擇見(jiàn)表。三.DS1302的寄存器及片內(nèi)RAMDS1302有一個(gè)控制寄154其中:D7:固定為1D6:RAM/CK位,=1片內(nèi)RAM,=0日歷、時(shí)鐘寄存器選擇位。D5~D1:地址位,用于選擇進(jìn)行讀寫的日歷、時(shí)鐘寄存器或片內(nèi)RAM。對(duì)日歷、時(shí)鐘寄存器或片內(nèi)RAM的選擇見(jiàn)表。D0:讀寫選擇,=0寫,=1讀其中:155寄存器名稱D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0R/W秒寄存器10000000或1分寄存器10000010或1小時(shí)寄存器10000100或1日寄存器10000110或1月寄存器10001000或1星期寄存器10001010或1年寄存器10001100或1寫保護(hù)寄存器10001110或1慢充電寄存器10010000或1時(shí)鐘突發(fā)模式10111110或1RAM011000000或1110或1RAM30111111
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TY/T 2101-2024體育場(chǎng)館智慧化信息系統(tǒng)配置要求
- 智慧城市課題申報(bào)書(shū)
- 省級(jí)中學(xué)課題申報(bào)書(shū)格式
- 籃球特色課題申報(bào)書(shū)
- 班干部申請(qǐng)書(shū)模板
- 員工加工合同范本
- 人生導(dǎo)師合同范例
- 譯者的課題申報(bào)書(shū)
- 合作伙伴現(xiàn)金交易合同范例
- 吳江區(qū)試用期勞動(dòng)合同范本
- 16防沖工題庫(kù)題庫(kù)(238道)
- 2023年常州工業(yè)職業(yè)技術(shù)學(xué)院高職單招(語(yǔ)文)試題庫(kù)含答案解析
- GB/T 3452.2-2007液壓氣動(dòng)用O形橡膠密封圈第2部分:外觀質(zhì)量檢驗(yàn)規(guī)范
- GB/T 30797-2014食品用洗滌劑試驗(yàn)方法總砷的測(cè)定
- GB/T 20057-2012滾動(dòng)軸承圓柱滾子軸承平擋圈和套圈無(wú)擋邊端倒角尺寸
- GB/T 19808-2005塑料管材和管件公稱外徑大于或等于90mm的聚乙烯電熔組件的拉伸剝離試驗(yàn)
- GB/T 10051.1-2010起重吊鉤第1部分:力學(xué)性能、起重量、應(yīng)力及材料
- 2022年人民交通出版社股份有限公司招聘筆試試題及答案解析
- 班組建設(shè)工作體系課件
- 第章交通調(diào)查與數(shù)據(jù)分析課件
- 穆斯林太巴熱咳慶念詞文
評(píng)論
0/150
提交評(píng)論