版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章MCS-51擴(kuò)展I/O接口設(shè)計(jì)在單片機(jī)的I/O口線不夠用的情況下,可以借助外部器件對(duì)I/O口進(jìn)行擴(kuò)展??晒┻x用的器件很多,方案也有多種。
(1)并行總線擴(kuò)展的方法(2)串行口擴(kuò)展方法(3)I/O端口模擬串行方法I/O接口是MCS-51與外設(shè)交換數(shù)字信息的橋梁。1第9章MCS-51擴(kuò)展I/O接口設(shè)計(jì)在單片9.1I/O接口并行擴(kuò)展概述I/O接口電路應(yīng)滿足以下要求:1.實(shí)現(xiàn)和不同外設(shè)的速度匹配2.輸出數(shù)據(jù)鎖存I/O電路應(yīng)具有數(shù)據(jù)鎖存器,以保證接收設(shè)備接收。3.輸入數(shù)據(jù)三態(tài)緩沖數(shù)據(jù)總線可“掛”有多個(gè)數(shù)據(jù)源,為不發(fā)生沖突,只允許當(dāng)前時(shí)刻正在進(jìn)行數(shù)據(jù)傳送的數(shù)據(jù)源使用數(shù)據(jù)總線,其余的數(shù)據(jù)源應(yīng)處于隔離狀態(tài)。29.1I/O接口并行擴(kuò)展概述I/O接口電路應(yīng)滿足以下要I/O數(shù)據(jù)的幾種傳送方式為實(shí)現(xiàn)和不同的外設(shè)的速度匹配,I/O接口必須根據(jù)不同外設(shè)選擇恰當(dāng)?shù)腎/O數(shù)據(jù)傳送方式。I/O數(shù)據(jù)傳送的幾種傳送方式是:(1)同步傳送(2)查詢傳送(3)中斷傳送。3I/O數(shù)據(jù)的幾種傳送方式為實(shí)現(xiàn)和不同的外設(shè)的速度匹配,I/O接口和I/O端口I/O端口:簡(jiǎn)稱I/O口,指具有端口地址的寄存器或緩沖器。I/O接口:是指單片機(jī)與外設(shè)間的I/O接口芯片。一個(gè)I/O接口芯片可以有多個(gè)I/O端口:(1)數(shù)據(jù)口(2)命令口(3)狀態(tài)口I/O端口編址是給所有I/O接口中的寄存器編址。4I/O接口和I/O端口I/O端口:簡(jiǎn)稱I/O口,指具有端口地并行總線擴(kuò)展I/O接口①訪問(wèn)擴(kuò)展I/O口的方法與訪問(wèn)數(shù)據(jù)存儲(chǔ)器完全相同,使用相同的指令,所有擴(kuò)展的I/O口與片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址。②利用并行總線擴(kuò)展的方法擴(kuò)展外部并行I/O口時(shí),必須注意P0,P2口的負(fù)載問(wèn)題,若負(fù)載能力不夠,必須進(jìn)行總線驅(qū)動(dòng)能力擴(kuò)展。③擴(kuò)展外部并行I/O口對(duì)外設(shè)的硬件具有依賴性(驅(qū)動(dòng)功率、電平匹配、干擾抑制、隔離等)。5并行總線擴(kuò)展I/O接口①訪問(wèn)擴(kuò)展I/O口的方法與訪問(wèn)數(shù)據(jù)存4.3.3可編程并行I/O接口64.3.3可編程并行I/O接口6778255A應(yīng)用實(shí)例88255A應(yīng)用實(shí)例88255A各端口的地址A口:0111111111111100B7FFCHB口:0111111111111101B7FFDHC口:0111111111111110B7FFEH控制:0111111111111111B7FFFH98255A各端口的地址A口:0111111111118255的應(yīng)用例:從8255A的A口讀入數(shù)據(jù),送到8255A的B口輸出解:MOVDPTR,#7FFFHMOVA,#90H;MOVX@DPTR,AMOVDPTR,#7FFCHMOVXA,@DPTRMOVDPTR,#7FFDHMOVX@DPTR,A108255的應(yīng)用例:從8255A的A口讀入數(shù)據(jù),送到8255A9.4用鎖存器或緩沖器擴(kuò)展并行I/O口利用TTL或CMOS電路的緩沖驅(qū)動(dòng)器(74244、74245)和鎖存器(74273、74373、74377),通過(guò)P0口構(gòu)成各種類型的輸入/輸出口。這些類型的芯片具有數(shù)據(jù)緩沖或鎖存功能,但沒(méi)有地址線和讀寫(xiě)控制線,僅有數(shù)據(jù)輸入/輸出線和選通控制端。因此這類芯片擴(kuò)展并行I/O口的方法與擴(kuò)展數(shù)據(jù)存儲(chǔ)器不同。其選通端應(yīng)由地址線和控制線的組合控制。119.4用鎖存器或緩沖器擴(kuò)展并行I/O口擴(kuò)展并行輸出口帶數(shù)據(jù)使能端正邊沿觸發(fā)的高速D觸發(fā)器7437712擴(kuò)展并行輸出口帶數(shù)據(jù)使能端正邊沿觸發(fā)的高速D觸發(fā)器743擴(kuò)展并行輸出口三態(tài)正邊沿觸發(fā)的高速D觸發(fā)器7437413擴(kuò)展并行輸出口三態(tài)正邊沿觸發(fā)的高速D觸發(fā)器7437413141415159.5用MCS-51的串行口擴(kuò)展并行口169.5用MCS-51的串行口擴(kuò)展并行口16用74LS164擴(kuò)展并行輸出口例9-8編寫(xiě)將內(nèi)部RAM單元30H、31H的內(nèi)容經(jīng)串行口由74LS164并行輸出子程序。START:MOVR7,#02H ;設(shè)置要發(fā)送的字節(jié)個(gè)數(shù) MOVR0,#30H ;設(shè)置地址指針 MOVSCON,#00H;設(shè)置串行口為方式0SEND:MOVA,@R0 MOVSBUF,A;啟動(dòng)串行口發(fā)送過(guò)程WAIT: JNBTI,WAIT ;1幀數(shù)據(jù)未發(fā)完,循環(huán)等待CLRTI INCR0 ;取下一個(gè)數(shù)DJNZR7,SEND ;未完,發(fā)完從子程序返回 RET17用74LS164擴(kuò)展并行輸出口例9-8編寫(xiě)將內(nèi)部RAM單元用74LS165擴(kuò)展并行輸入口例9-7從16位擴(kuò)展口讀入5組數(shù)據(jù)(每組二個(gè)字節(jié)),并把它們轉(zhuǎn)存到內(nèi)部RAM20H開(kāi)始的單元中。18用74LS165擴(kuò)展并行輸入口例9-7從16位擴(kuò)展口讀入5MOVR7,#05H;設(shè)置讀入組數(shù)MOVR0,#20H;設(shè)置內(nèi)部RAM數(shù)據(jù)區(qū)首址START:CLRP1.0 ;并行置入數(shù)據(jù),S/L*=0 SETBP1.0 ;允許串行移位,S/L*=1MOVR1,#02H ;設(shè)置每組字節(jié)數(shù),即外擴(kuò) ;74LS165的個(gè)數(shù)RXDAT:MOVSCON,#10H;設(shè)串口方式0,允許接收,啟動(dòng)WAIT:JNBRI,WAIT;未接收完一幀,循環(huán)等待 CLRRI ;清RI標(biāo)志,準(zhǔn)備下次接收MOVA,SBUF ;讀入數(shù)據(jù)MOV@R0,A ;送至RAM緩沖區(qū)INCR0 ;指向下一個(gè)地址DJNZR1,RXDAT;未讀完一組數(shù)據(jù),繼續(xù)DJNZR7,START ;5組數(shù)據(jù)未讀完重新并行置入…… ;對(duì)數(shù)據(jù)進(jìn)行處理19MOVR7,#05H;設(shè)置讀入組數(shù)START:串行擴(kuò)展總線接口技術(shù)一、串行擴(kuò)展特點(diǎn):⑴最大程度發(fā)揮最小系統(tǒng)的資源功能。⑵簡(jiǎn)化連接線路,縮小印板面積。⑶擴(kuò)展性好,可簡(jiǎn)化系統(tǒng)的設(shè)計(jì)。⑷串行擴(kuò)展的缺點(diǎn):
數(shù)據(jù)吞吐容量較小,信號(hào)傳輸速度較慢,但隨著CPU芯片工作頻率的提高,以及串行擴(kuò)展芯片功能的增強(qiáng),這些缺點(diǎn)將逐步淡化。20串行擴(kuò)展總線接口技術(shù)一、串行擴(kuò)展特點(diǎn):⑴最大程度發(fā)揮最小系串行擴(kuò)展總線接口技術(shù)二、串行擴(kuò)展方式分類:1、一線制一線制的典型代表為Dallas公司推出的單總線(1-wire)。21串行擴(kuò)展總線接口技術(shù)二、串行擴(kuò)展方式分類:1、一線制一線制的串行擴(kuò)展總線接口技術(shù)2、二線制:二線制的典型代表為philips公司推出的I2C總線(SMBus)。22串行擴(kuò)展總線接口技術(shù)2、二線制:二線制的典型代表為串行擴(kuò)展總線接口技術(shù)⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三線制23串行擴(kuò)展總線接口技術(shù)⑴由Motorala公司推出的SPI(串行擴(kuò)展總線接口技術(shù)虛擬串行擴(kuò)展概念:用通用I/O口來(lái)模擬串行接口,構(gòu)成虛擬的串行擴(kuò)展接口。只要嚴(yán)格控制模擬同步信號(hào),并滿足串行同步數(shù)據(jù)傳送的時(shí)序要求,就可滿足串行數(shù)據(jù)傳送的可靠性要求。24串行擴(kuò)展總線接口技術(shù)虛擬串行擴(kuò)展概念:用通用I/O口I2C總線I2C總線是一種具有自動(dòng)尋址、高低速設(shè)備同步和仲裁等功能的高性能串行總線,能夠?qū)崿F(xiàn)完善的全雙工數(shù)據(jù)傳輸。I2C總線只有兩根信號(hào)線:數(shù)據(jù)線SDA和時(shí)鐘線SCL。各節(jié)點(diǎn)供電可以不同,但需共地,另外SDA和SCL需分別接上拉電阻。I2C總線傳輸速率為100kb/s(改進(jìn)后的規(guī)范為400kb/s),總線驅(qū)動(dòng)能力為400pF。25I2C總線I2C總線是一種具有自動(dòng)尋址、高低速設(shè)備同步和仲裁I2C總線26I2C總線26一、I2C總線的接口電路結(jié)構(gòu)I2C總線由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成。SDA和SCL都是雙向傳輸線,平時(shí)均處于高電平備用狀態(tài),只有當(dāng)需要關(guān)閉I2C總線時(shí),SCL線才會(huì)箝位在低電平。27一、I2C總線的接口電路結(jié)構(gòu)I2C總線由數(shù)據(jù)線SDA二、I2C總線信號(hào)定義28二、I2C總線信號(hào)定義28三、I2C總線的數(shù)據(jù)傳送29三、I2C總線的數(shù)據(jù)傳送29三、I2C總線的數(shù)據(jù)傳送應(yīng)答信號(hào)在第9個(gè)時(shí)鐘位上出現(xiàn),接收器在SDA線上輸出低電平為應(yīng)答信號(hào)(A),輸出高電平為非應(yīng)答信號(hào)(A)。30三、I2C總線的數(shù)據(jù)傳送應(yīng)答信號(hào)在第9個(gè)時(shí)鐘位上出現(xiàn)三、I2C總線的數(shù)據(jù)傳送當(dāng)主控器作為接收器接收被控器送來(lái)的最后一個(gè)數(shù)據(jù)時(shí),必須給被控器發(fā)送一個(gè)非應(yīng)答信號(hào)(A),令被控器釋放SDA線,以便主控器可以發(fā)送停止信號(hào)來(lái)結(jié)束數(shù)據(jù)的傳輸。I2C總線上的應(yīng)答信號(hào)是比較重要的,在編制程序時(shí)應(yīng)該著重考慮。31三、I2C總線的數(shù)據(jù)傳送當(dāng)主控器作為接收器接四、I2C總線數(shù)據(jù)傳輸協(xié)議總線節(jié)點(diǎn)的尋址字節(jié):主機(jī)產(chǎn)生起始信號(hào)后,發(fā)送的第一個(gè)字節(jié)為尋址字節(jié)。該字節(jié)的頭7位(高7位)為從機(jī)地址,最后位(LSB)決定了報(bào)文的方向:0表示主機(jī)寫(xiě)信息到從機(jī),1表示主機(jī)讀從機(jī)中的信息。當(dāng)發(fā)送了一個(gè)地址后,系統(tǒng)中每個(gè)器件都將頭7位與自己的地址比較,如果一樣器件會(huì)應(yīng)答主機(jī)的尋址,至于是接收還是發(fā)送由R/W位決定。32四、I2C總線數(shù)據(jù)傳輸協(xié)議總線節(jié)點(diǎn)的尋址字節(jié):四、I2C總線數(shù)據(jù)傳輸協(xié)議從機(jī)地址由一組固定位和一組可編程位部分構(gòu)成。例如,某些器件有4個(gè)固定的位(高4位)和3個(gè)可編程的地址位(低3位),那么同一總線上共可以連接8個(gè)相同的器件。器件地址SLAR/WA0A1
A2DA0DA1DA2DA3D7D0從機(jī)地址和1位方向位構(gòu)成了I2C總線器件的尋址字節(jié)SLA。引腳地址33四、I2C總線數(shù)據(jù)傳輸協(xié)議從機(jī)地址由一組固定位和一組I2C總線數(shù)據(jù)傳輸協(xié)議種類型號(hào)SLA引腳地址備注靜態(tài)RAMPCF8570/711010A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8570C1011A2A1A0R/W3位數(shù)字引腳地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C021010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C041010A2A1P0R/W2位數(shù)字引腳地址A2A1AT24C081010A2P1P0R/W1位數(shù)字引腳地址A2AT24C0161010P2P1P0R/W無(wú)引腳地址,A2A1A0懸空處理I/O口PCF85740100A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8574A0111A2A1A0R/W3位數(shù)字引腳地址A2A1A0LED/LCD驅(qū)動(dòng)控制器SAA106401110A1A0R/W2位數(shù)字引腳地址A1A0PCF8576011100A0R/W1位數(shù)字引腳地址A0PCF8578/79011110A0R/W1位數(shù)字引腳地址A0ADC/DACPCF89511001A2A1A0R/W3位數(shù)字引腳地址A2A1A0日歷時(shí)鐘PCF8583101000A0R/W1位數(shù)字引腳地址A034I2C總線數(shù)據(jù)傳輸協(xié)議種類型號(hào)SLA引腳地址備注靜態(tài)RAMPI2C總線數(shù)據(jù)傳輸?shù)母袷降刂纷止?jié)和數(shù)據(jù)字節(jié)都是高位在前,低位在后。35I2C總線數(shù)據(jù)傳輸?shù)母袷降刂纷止?jié)和數(shù)據(jù)字節(jié)都是高位在前,低位I2C總線數(shù)據(jù)傳輸?shù)母袷?1)主控器的寫(xiě)數(shù)據(jù)操作格式Adata2Adata1ASLAWSAdata2Adata1ASLAWS…PAdataNAdataN-1PA/AdataNAdataN-1(2)主控器的讀數(shù)據(jù)操作格式Adata2Adata1ASAdata2Adata1ASLARS…AdataNAdataN-1PAdataNAdataN-1無(wú)論哪種工作方式,都是由主控器來(lái)啟動(dòng)總線,發(fā)送尋址字節(jié)和終止運(yùn)行;在I2C總線接口的外圍器件中,器件內(nèi)部有多個(gè)地址空間時(shí),其讀寫(xiě)操作都有地址自動(dòng)加1功能。36I2C總線數(shù)據(jù)傳輸?shù)母袷?1)主控器的寫(xiě)數(shù)據(jù)操作格式Ada五、51單片機(jī)與I2C總線的接口37五、51單片機(jī)與I2C總線的接口37六、I2C總線數(shù)據(jù)傳送軟件包
MCS-51只能采用虛擬I2C總線方式,并且只能用于單主系統(tǒng),虛擬I2C總線接口可用通用I/O口中任一端線充任,數(shù)據(jù)線定義為SDA,時(shí)鐘線定義為SCL。MCS-51單主系統(tǒng)虛擬I2C總線軟件包由二大類共9個(gè)歸一化子程序組成。二大類程序分別為典型信號(hào)模擬子程序和數(shù)據(jù)傳送通用子程序。38六、I2C總線數(shù)據(jù)傳送軟件包MCS-51只能采用虛1、典型信號(hào)模擬子程序I2C總線數(shù)據(jù)傳送時(shí),有起始位(S)、終止位(P)、發(fā)送0代表應(yīng)答位(A)、發(fā)送1代表非應(yīng)答位(A)等信號(hào)。391、典型信號(hào)模擬子程序I2C總線數(shù)據(jù)傳送時(shí),有起始位主程序在主程序初始化中,應(yīng)有如下的語(yǔ)句: SDA BIT P1.7 SCL BIT P1.6 MTD EQU 30H;MTD發(fā)送數(shù)據(jù)緩沖區(qū)首址 MRD EQU 40H;MRD接收數(shù)據(jù)緩沖區(qū)首址 SLA EQU 60H;SLA尋址字節(jié)SLAR/W的存放單元NUMBYTEQU 61H;NUMBYT傳送字節(jié)數(shù)存放單元40主程序在主程序初始化中,應(yīng)有如下的語(yǔ)句:401)啟動(dòng)I2C總線子程序STA:STA:SETB SDASETB SCL;起始條件建立時(shí)間大于4.7μsNOPNOPCLR SDANOP ;起始條件鎖定時(shí)間大于4μsNOPCLR SCL;箝住總線,準(zhǔn)備發(fā)送數(shù)據(jù)RET411)啟動(dòng)I2C總線子程序STA:STA:SETB 2)停止I2C總線子程序STOPSTOP:CLR SDASETB SCL;發(fā)送停止條件的時(shí)鐘信號(hào)NOP ;停止總線時(shí)間大于4μsNOPSETB SDA;停止總線NOPNOPCLRSDACLRSCLRET422)停止I2C總線子程序STOPSTOP:CLR 3)發(fā)送應(yīng)答位信號(hào)子程序MACKMACK:
CLR SDASETBSCLNOP ;即SCL為高,時(shí)間大于4.0μsNOPCLR SCLSETBSDARET433)發(fā)送應(yīng)答位信號(hào)子程序MACKMACK:CLR 4)發(fā)送非應(yīng)答位信號(hào)子程序MNACKMNACK:SETBSDASETBSCLNOP NOPCLRSCLCLRSDARET444)發(fā)送非應(yīng)答位信號(hào)子程序MNACKMNACK:SET2、I2C總線數(shù)據(jù)傳送的模擬子程序I2C總線的數(shù)據(jù)操作除了基本的啟動(dòng)(STA)、終止(STOP)、發(fā)送應(yīng)答位(MACK)、發(fā)送非應(yīng)答位(MNACK)外,還應(yīng)有應(yīng)答位檢查(CACK)、發(fā)送一字節(jié)(WRBYT)、接收一字節(jié)(RBYT)、發(fā)送N字節(jié)(WRNBYT)和接收N字節(jié)(RDNBYT)這5個(gè)子程序。452、I2C總線數(shù)據(jù)傳送的模擬子程序I2C總線的數(shù)據(jù)操(1)應(yīng)答位檢查子程序CACKCACK:SETBSDA;置SDA為輸入方式 SETBSCL;使SDA上數(shù)據(jù)有效 CLRF0;預(yù)設(shè)F0=0MOVC,SDA;輸入SDA引腳狀態(tài)JNCCEND;正常應(yīng)答轉(zhuǎn)CEND,且F0=0SETBF0;無(wú)正常應(yīng)答,F(xiàn)0=1CEND:CLRSCL;子程序結(jié)束,使SCL=0RET用F0作標(biāo)志位,正常應(yīng)答位后,F(xiàn)0=0;否則F0=1。46(1)應(yīng)答位檢查子程序CACK用F0作標(biāo)志位,正常應(yīng)答位后(2)發(fā)送一字節(jié)數(shù)據(jù)子程序WRBYT初始化要發(fā)送的位送C1or0?送“1”送“0”8位送完?RET10NY47(2)發(fā)送一字節(jié)數(shù)據(jù)子程序WRBYT初始化要發(fā)送的位送C1調(diào)用該子程序前,將要發(fā)送的數(shù)據(jù)送入A中。占用資源R0、C。WRBYT:MOV R0,#08HWLP:RLCA JC WR1 AJMP WR0WLP1:DJNZ R0,WLP RETWR1:SETB SDA SETB SCL NOP NOP
CLR SCL CLRSDA AJMP WLP1WR0:CLR SDA SETBSCL NOP NOP CLR SCL AJMP WLP148調(diào)用該子程序前,將要發(fā)送的數(shù)據(jù)送入A中。占用資源R0、C。 (3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT初始化自SDA接收1位送C8位收完?RETNY送C中位toA使SCL=0,繼續(xù)收49(3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT初始化自SDA(3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT從SDA上讀取的一字節(jié)存放在R2或A中。占用資源R0、R2和C。RDBYT:MOVR0,#08HRLP:SETBSDA SETBSCLNOP MOVC,SDA MOVA,R2 RLCA MOVR2,A CLRSCLNOP DJNZR0,RLP RET50(3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT從SDA上讀取(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT在使用本子程序時(shí),須調(diào)用STA、STOP、WRBYT和CACK子程序,而且應(yīng)在片內(nèi)RAM中分配好這些地址。51(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT初始化啟動(dòng)I2C總線應(yīng)答位?發(fā)送數(shù)據(jù)初始化NY送地址字節(jié)檢查應(yīng)答位發(fā)送一字節(jié)應(yīng)答位?YN發(fā)送完?Y發(fā)送停止位N52(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT初始化啟動(dòng)I2WRNBYT:MOV R3,NUMBYT LCALLSTA MOV A,SLA LCALLWRBYT LCALLCACK JB F0,WRNBYT MOV R1,#MTDWRDA: MOV A,@R1 LCALLWRBYT LCALLCACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCALLSTOP RET53WRNBYT:MOV R3,NUMBYT53(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT54(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT54(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT初始化啟動(dòng)I2C總線應(yīng)答位?接收緩沖器初始化NY送地址字節(jié)檢查應(yīng)答位接收一字節(jié)接收完?N發(fā)送應(yīng)答位Y發(fā)送非應(yīng)答位、停止位55(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT初始化啟動(dòng)IRDNBYT: MOV R3,NUMBYT LCALLSTA MOV A,SLAR LCALLWRBYT LCALLCACK JB F0,RDNBYTRDN: MOVR1,#MRDRDN1: LCALLRDBYT MOV @R1,A DJNZ R3,ACK LCALLMNACK LCALLSTOP RETACK: LCALLMACK INC R1 SJMP RDN156RDNBYT: MOV R3,NUMBYT56I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA106457I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA10645758585959I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064引腳ADR模擬電平引腳ADR數(shù)字化從地址尋址命令A(yù)1A0D7D6D5D4D3A1A0R/W寫(xiě)讀GND(0V)0001110001/070H71H3/8VCC0101110011/072H73H5/8VCC1001110101/074H75HVCC(5V)1101110111/076H77H60I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064引腳ADR引腳AI2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA106461I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA106461I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064SC位、SB位和SA位構(gòu)成一個(gè)指針,用于裝入控制字節(jié)和4個(gè)顯示段碼(字形碼),且子地址自動(dòng)增量(AI),主控器對(duì)其可快速初始化。62I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064控制字節(jié)各位功能說(shuō)明:C0=0,靜態(tài)模式,即連續(xù)顯示數(shù)字位1和數(shù)字位2。C0=1,動(dòng)態(tài)模式,即變換顯示數(shù)字位1+3和數(shù)字位2+4。C1=0/1,數(shù)字位1+3為空/不空。C2=0/1,數(shù)字位2+4為空/不空。C3=1,所有段輸出打開(kāi)以進(jìn)行段測(cè)試。C4=1,段輸出電流加3mA。C5=1,段輸出電流加6mA。C6=1,段輸出電流加12mA。
63I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064控制字節(jié)各位功能I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064SAA1064的寫(xiě)數(shù)據(jù)操作格式為:SLA:SAA1064寫(xiě)命令SLAW;00H:首地址;COM:控制命令數(shù)據(jù);LED1-LED4:4個(gè)顯示位的共陽(yáng)極段選碼數(shù)據(jù)
64I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064SAA1064的4.6總線接口擴(kuò)展總線種類繁多,可分為局部總線、系統(tǒng)總線和通信總線。通信總線是系統(tǒng)之間或CPU與外設(shè)之間進(jìn)行通信的一組信號(hào)線。通信總線接口按電氣標(biāo)準(zhǔn)及協(xié)議來(lái)分包括RS-232、RS-422、RS-485、MODEM、USB、IEEE1394、CAN、Internet網(wǎng)絡(luò)芯片等,它們?cè)诓煌念I(lǐng)域得到了廣泛的應(yīng)用。這里主要介紹MCS-51單片機(jī)應(yīng)用系統(tǒng)中常用的通信總線標(biāo)準(zhǔn)及接口。654.6總線接口擴(kuò)展總線種類繁多,可分為局部4.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路
EIARS-232C是異步串行通信中應(yīng)用最廣泛的標(biāo)準(zhǔn)總線,是美國(guó)EIA(ElectronicIndustriesAssociation,電子工業(yè)聯(lián)合會(huì))開(kāi)發(fā)公布的通信協(xié)議。適合于數(shù)據(jù)傳輸速率在0~20kb/s范圍內(nèi)的通信,包括了按位串行傳輸?shù)碾姎夂蜋C(jī)械方面的規(guī)定。在微機(jī)通信接口中被廣泛采用。664.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路EIA4.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路1.電氣特性(1)采取不平衡傳輸方式,是為點(diǎn)對(duì)點(diǎn)(即只用一對(duì)收、發(fā)設(shè)備)通信而設(shè)計(jì)的;(2)采用負(fù)邏輯。(3)適用于傳送距離不大于15m,速度不高于20kb/s的本地設(shè)備之間通信的場(chǎng)合。674.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路1.電氣特性4.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路DSR:數(shù)據(jù)裝置準(zhǔn)備好;DTR:數(shù)據(jù)終端準(zhǔn)備好;RTS:請(qǐng)求發(fā)送;CTS:允許發(fā)送;DCD:接收線信號(hào)檢出;RI:振鈴指示;TXD:發(fā)送數(shù)據(jù);RXD:接收數(shù)據(jù);SGND、PGND:地線,SGND(信號(hào)地)、PGND(保護(hù)地)。684.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路DSR:數(shù)據(jù)裝4.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路4.電平轉(zhuǎn)換
RS-232C采用負(fù)邏輯,為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。MAX232芯片是Maxim公司生產(chǎn)的低功耗、單電源、雙RS-232發(fā)送/接收器,可實(shí)現(xiàn)TTL到EIA的雙向電平轉(zhuǎn)換。其引腳排列如下圖所示。694.6.1RS-232C總線標(biāo)準(zhǔn)與接口電路4.電平轉(zhuǎn)換EIARS-232C與單片機(jī)系統(tǒng)的接口70EIARS-232C與單片機(jī)系統(tǒng)的接口704.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路1.RS-422串行總線標(biāo)準(zhǔn)
RS-422由RS-232發(fā)展而來(lái),是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡的通信總線標(biāo)準(zhǔn)。傳輸速率可達(dá)10Mb/s,傳輸距離延長(zhǎng)到1220m(速率低于100kb/s時(shí)),并允許在一條平衡總線上最多連接10個(gè)接收器。2.RS-485串行總線標(biāo)準(zhǔn)
EIA在RS-422的基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點(diǎn)、雙向通信能力。RS-485總線標(biāo)準(zhǔn)采用平衡發(fā)送和差分接收,能檢測(cè)低至200mV的電壓,具有抑制共模干擾的能力,數(shù)據(jù)傳輸可達(dá)千米以上。714.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路14.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路3.平衡傳輸
RS-422,RS-485的數(shù)據(jù)信號(hào)采用差分傳輸方式,也稱做平衡傳輸,它使用一對(duì)雙絞線,將其中一條線定義為A,另一條線定義為B。收、發(fā)端通過(guò)平衡雙絞線將AA與BB對(duì)應(yīng)相連,當(dāng)在接收端AB之間有大于+200mV的電平時(shí),輸出邏輯1,小于200mV時(shí),輸出邏輯0。724.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路34.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路電氣特性:RS-485標(biāo)準(zhǔn)采用正邏輯,1.5V~6V表示“1”,6V~1.5V表示“0”,二線雙端半雙工差分電平發(fā)送與接收,傳輸距離1.2km,最高數(shù)據(jù)傳輸速率可達(dá)10Mb/s功能與規(guī)程特性:網(wǎng)絡(luò)媒介采用雙絞線、同軸電纜或光纖,安裝簡(jiǎn)易,電纜數(shù)量、連接器、中繼器、濾波器使用數(shù)量較少(每個(gè)中繼器可延長(zhǎng)線路1.2km),網(wǎng)絡(luò)成本低廉。734.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路電4.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路
單片機(jī)與RS-485總線標(biāo)準(zhǔn)之間必須進(jìn)行轉(zhuǎn)換,常用的轉(zhuǎn)換芯片有MAX485,SN5176等。MAX485芯片是MAXIM公司的電平轉(zhuǎn)換芯片,其引腳如右圖所示。744.6.2RS-422/RS-485總線標(biāo)準(zhǔn)與接口電路第9章MCS-51擴(kuò)展I/O接口設(shè)計(jì)在單片機(jī)的I/O口線不夠用的情況下,可以借助外部器件對(duì)I/O口進(jìn)行擴(kuò)展。可供選用的器件很多,方案也有多種。
(1)并行總線擴(kuò)展的方法(2)串行口擴(kuò)展方法(3)I/O端口模擬串行方法I/O接口是MCS-51與外設(shè)交換數(shù)字信息的橋梁。75第9章MCS-51擴(kuò)展I/O接口設(shè)計(jì)在單片9.1I/O接口并行擴(kuò)展概述I/O接口電路應(yīng)滿足以下要求:1.實(shí)現(xiàn)和不同外設(shè)的速度匹配2.輸出數(shù)據(jù)鎖存I/O電路應(yīng)具有數(shù)據(jù)鎖存器,以保證接收設(shè)備接收。3.輸入數(shù)據(jù)三態(tài)緩沖數(shù)據(jù)總線可“掛”有多個(gè)數(shù)據(jù)源,為不發(fā)生沖突,只允許當(dāng)前時(shí)刻正在進(jìn)行數(shù)據(jù)傳送的數(shù)據(jù)源使用數(shù)據(jù)總線,其余的數(shù)據(jù)源應(yīng)處于隔離狀態(tài)。769.1I/O接口并行擴(kuò)展概述I/O接口電路應(yīng)滿足以下要I/O數(shù)據(jù)的幾種傳送方式為實(shí)現(xiàn)和不同的外設(shè)的速度匹配,I/O接口必須根據(jù)不同外設(shè)選擇恰當(dāng)?shù)腎/O數(shù)據(jù)傳送方式。I/O數(shù)據(jù)傳送的幾種傳送方式是:(1)同步傳送(2)查詢傳送(3)中斷傳送。77I/O數(shù)據(jù)的幾種傳送方式為實(shí)現(xiàn)和不同的外設(shè)的速度匹配,I/O接口和I/O端口I/O端口:簡(jiǎn)稱I/O口,指具有端口地址的寄存器或緩沖器。I/O接口:是指單片機(jī)與外設(shè)間的I/O接口芯片。一個(gè)I/O接口芯片可以有多個(gè)I/O端口:(1)數(shù)據(jù)口(2)命令口(3)狀態(tài)口I/O端口編址是給所有I/O接口中的寄存器編址。78I/O接口和I/O端口I/O端口:簡(jiǎn)稱I/O口,指具有端口地并行總線擴(kuò)展I/O接口①訪問(wèn)擴(kuò)展I/O口的方法與訪問(wèn)數(shù)據(jù)存儲(chǔ)器完全相同,使用相同的指令,所有擴(kuò)展的I/O口與片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址。②利用并行總線擴(kuò)展的方法擴(kuò)展外部并行I/O口時(shí),必須注意P0,P2口的負(fù)載問(wèn)題,若負(fù)載能力不夠,必須進(jìn)行總線驅(qū)動(dòng)能力擴(kuò)展。③擴(kuò)展外部并行I/O口對(duì)外設(shè)的硬件具有依賴性(驅(qū)動(dòng)功率、電平匹配、干擾抑制、隔離等)。79并行總線擴(kuò)展I/O接口①訪問(wèn)擴(kuò)展I/O口的方法與訪問(wèn)數(shù)據(jù)存4.3.3可編程并行I/O接口804.3.3可編程并行I/O接口68178255A應(yīng)用實(shí)例828255A應(yīng)用實(shí)例88255A各端口的地址A口:0111111111111100B7FFCHB口:0111111111111101B7FFDHC口:0111111111111110B7FFEH控制:0111111111111111B7FFFH838255A各端口的地址A口:0111111111118255的應(yīng)用例:從8255A的A口讀入數(shù)據(jù),送到8255A的B口輸出解:MOVDPTR,#7FFFHMOVA,#90H;MOVX@DPTR,AMOVDPTR,#7FFCHMOVXA,@DPTRMOVDPTR,#7FFDHMOVX@DPTR,A848255的應(yīng)用例:從8255A的A口讀入數(shù)據(jù),送到8255A9.4用鎖存器或緩沖器擴(kuò)展并行I/O口利用TTL或CMOS電路的緩沖驅(qū)動(dòng)器(74244、74245)和鎖存器(74273、74373、74377),通過(guò)P0口構(gòu)成各種類型的輸入/輸出口。這些類型的芯片具有數(shù)據(jù)緩沖或鎖存功能,但沒(méi)有地址線和讀寫(xiě)控制線,僅有數(shù)據(jù)輸入/輸出線和選通控制端。因此這類芯片擴(kuò)展并行I/O口的方法與擴(kuò)展數(shù)據(jù)存儲(chǔ)器不同。其選通端應(yīng)由地址線和控制線的組合控制。859.4用鎖存器或緩沖器擴(kuò)展并行I/O口擴(kuò)展并行輸出口帶數(shù)據(jù)使能端正邊沿觸發(fā)的高速D觸發(fā)器7437786擴(kuò)展并行輸出口帶數(shù)據(jù)使能端正邊沿觸發(fā)的高速D觸發(fā)器743擴(kuò)展并行輸出口三態(tài)正邊沿觸發(fā)的高速D觸發(fā)器7437487擴(kuò)展并行輸出口三態(tài)正邊沿觸發(fā)的高速D觸發(fā)器7437413881489159.5用MCS-51的串行口擴(kuò)展并行口909.5用MCS-51的串行口擴(kuò)展并行口16用74LS164擴(kuò)展并行輸出口例9-8編寫(xiě)將內(nèi)部RAM單元30H、31H的內(nèi)容經(jīng)串行口由74LS164并行輸出子程序。START:MOVR7,#02H ;設(shè)置要發(fā)送的字節(jié)個(gè)數(shù) MOVR0,#30H ;設(shè)置地址指針 MOVSCON,#00H;設(shè)置串行口為方式0SEND:MOVA,@R0 MOVSBUF,A;啟動(dòng)串行口發(fā)送過(guò)程WAIT: JNBTI,WAIT ;1幀數(shù)據(jù)未發(fā)完,循環(huán)等待CLRTI INCR0 ;取下一個(gè)數(shù)DJNZR7,SEND ;未完,發(fā)完從子程序返回 RET91用74LS164擴(kuò)展并行輸出口例9-8編寫(xiě)將內(nèi)部RAM單元用74LS165擴(kuò)展并行輸入口例9-7從16位擴(kuò)展口讀入5組數(shù)據(jù)(每組二個(gè)字節(jié)),并把它們轉(zhuǎn)存到內(nèi)部RAM20H開(kāi)始的單元中。92用74LS165擴(kuò)展并行輸入口例9-7從16位擴(kuò)展口讀入5MOVR7,#05H;設(shè)置讀入組數(shù)MOVR0,#20H;設(shè)置內(nèi)部RAM數(shù)據(jù)區(qū)首址START:CLRP1.0 ;并行置入數(shù)據(jù),S/L*=0 SETBP1.0 ;允許串行移位,S/L*=1MOVR1,#02H ;設(shè)置每組字節(jié)數(shù),即外擴(kuò) ;74LS165的個(gè)數(shù)RXDAT:MOVSCON,#10H;設(shè)串口方式0,允許接收,啟動(dòng)WAIT:JNBRI,WAIT;未接收完一幀,循環(huán)等待 CLRRI ;清RI標(biāo)志,準(zhǔn)備下次接收MOVA,SBUF ;讀入數(shù)據(jù)MOV@R0,A ;送至RAM緩沖區(qū)INCR0 ;指向下一個(gè)地址DJNZR1,RXDAT;未讀完一組數(shù)據(jù),繼續(xù)DJNZR7,START ;5組數(shù)據(jù)未讀完重新并行置入…… ;對(duì)數(shù)據(jù)進(jìn)行處理93MOVR7,#05H;設(shè)置讀入組數(shù)START:串行擴(kuò)展總線接口技術(shù)一、串行擴(kuò)展特點(diǎn):⑴最大程度發(fā)揮最小系統(tǒng)的資源功能。⑵簡(jiǎn)化連接線路,縮小印板面積。⑶擴(kuò)展性好,可簡(jiǎn)化系統(tǒng)的設(shè)計(jì)。⑷串行擴(kuò)展的缺點(diǎn):
數(shù)據(jù)吞吐容量較小,信號(hào)傳輸速度較慢,但隨著CPU芯片工作頻率的提高,以及串行擴(kuò)展芯片功能的增強(qiáng),這些缺點(diǎn)將逐步淡化。94串行擴(kuò)展總線接口技術(shù)一、串行擴(kuò)展特點(diǎn):⑴最大程度發(fā)揮最小系串行擴(kuò)展總線接口技術(shù)二、串行擴(kuò)展方式分類:1、一線制一線制的典型代表為Dallas公司推出的單總線(1-wire)。95串行擴(kuò)展總線接口技術(shù)二、串行擴(kuò)展方式分類:1、一線制一線制的串行擴(kuò)展總線接口技術(shù)2、二線制:二線制的典型代表為philips公司推出的I2C總線(SMBus)。96串行擴(kuò)展總線接口技術(shù)2、二線制:二線制的典型代表為串行擴(kuò)展總線接口技術(shù)⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三線制97串行擴(kuò)展總線接口技術(shù)⑴由Motorala公司推出的SPI(串行擴(kuò)展總線接口技術(shù)虛擬串行擴(kuò)展概念:用通用I/O口來(lái)模擬串行接口,構(gòu)成虛擬的串行擴(kuò)展接口。只要嚴(yán)格控制模擬同步信號(hào),并滿足串行同步數(shù)據(jù)傳送的時(shí)序要求,就可滿足串行數(shù)據(jù)傳送的可靠性要求。98串行擴(kuò)展總線接口技術(shù)虛擬串行擴(kuò)展概念:用通用I/O口I2C總線I2C總線是一種具有自動(dòng)尋址、高低速設(shè)備同步和仲裁等功能的高性能串行總線,能夠?qū)崿F(xiàn)完善的全雙工數(shù)據(jù)傳輸。I2C總線只有兩根信號(hào)線:數(shù)據(jù)線SDA和時(shí)鐘線SCL。各節(jié)點(diǎn)供電可以不同,但需共地,另外SDA和SCL需分別接上拉電阻。I2C總線傳輸速率為100kb/s(改進(jìn)后的規(guī)范為400kb/s),總線驅(qū)動(dòng)能力為400pF。99I2C總線I2C總線是一種具有自動(dòng)尋址、高低速設(shè)備同步和仲裁I2C總線100I2C總線26一、I2C總線的接口電路結(jié)構(gòu)I2C總線由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成。SDA和SCL都是雙向傳輸線,平時(shí)均處于高電平備用狀態(tài),只有當(dāng)需要關(guān)閉I2C總線時(shí),SCL線才會(huì)箝位在低電平。101一、I2C總線的接口電路結(jié)構(gòu)I2C總線由數(shù)據(jù)線SDA二、I2C總線信號(hào)定義102二、I2C總線信號(hào)定義28三、I2C總線的數(shù)據(jù)傳送103三、I2C總線的數(shù)據(jù)傳送29三、I2C總線的數(shù)據(jù)傳送應(yīng)答信號(hào)在第9個(gè)時(shí)鐘位上出現(xiàn),接收器在SDA線上輸出低電平為應(yīng)答信號(hào)(A),輸出高電平為非應(yīng)答信號(hào)(A)。104三、I2C總線的數(shù)據(jù)傳送應(yīng)答信號(hào)在第9個(gè)時(shí)鐘位上出現(xiàn)三、I2C總線的數(shù)據(jù)傳送當(dāng)主控器作為接收器接收被控器送來(lái)的最后一個(gè)數(shù)據(jù)時(shí),必須給被控器發(fā)送一個(gè)非應(yīng)答信號(hào)(A),令被控器釋放SDA線,以便主控器可以發(fā)送停止信號(hào)來(lái)結(jié)束數(shù)據(jù)的傳輸。I2C總線上的應(yīng)答信號(hào)是比較重要的,在編制程序時(shí)應(yīng)該著重考慮。105三、I2C總線的數(shù)據(jù)傳送當(dāng)主控器作為接收器接四、I2C總線數(shù)據(jù)傳輸協(xié)議總線節(jié)點(diǎn)的尋址字節(jié):主機(jī)產(chǎn)生起始信號(hào)后,發(fā)送的第一個(gè)字節(jié)為尋址字節(jié)。該字節(jié)的頭7位(高7位)為從機(jī)地址,最后位(LSB)決定了報(bào)文的方向:0表示主機(jī)寫(xiě)信息到從機(jī),1表示主機(jī)讀從機(jī)中的信息。當(dāng)發(fā)送了一個(gè)地址后,系統(tǒng)中每個(gè)器件都將頭7位與自己的地址比較,如果一樣器件會(huì)應(yīng)答主機(jī)的尋址,至于是接收還是發(fā)送由R/W位決定。106四、I2C總線數(shù)據(jù)傳輸協(xié)議總線節(jié)點(diǎn)的尋址字節(jié):四、I2C總線數(shù)據(jù)傳輸協(xié)議從機(jī)地址由一組固定位和一組可編程位部分構(gòu)成。例如,某些器件有4個(gè)固定的位(高4位)和3個(gè)可編程的地址位(低3位),那么同一總線上共可以連接8個(gè)相同的器件。器件地址SLAR/WA0A1
A2DA0DA1DA2DA3D7D0從機(jī)地址和1位方向位構(gòu)成了I2C總線器件的尋址字節(jié)SLA。引腳地址107四、I2C總線數(shù)據(jù)傳輸協(xié)議從機(jī)地址由一組固定位和一組I2C總線數(shù)據(jù)傳輸協(xié)議種類型號(hào)SLA引腳地址備注靜態(tài)RAMPCF8570/711010A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8570C1011A2A1A0R/W3位數(shù)字引腳地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C021010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C041010A2A1P0R/W2位數(shù)字引腳地址A2A1AT24C081010A2P1P0R/W1位數(shù)字引腳地址A2AT24C0161010P2P1P0R/W無(wú)引腳地址,A2A1A0懸空處理I/O口PCF85740100A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8574A0111A2A1A0R/W3位數(shù)字引腳地址A2A1A0LED/LCD驅(qū)動(dòng)控制器SAA106401110A1A0R/W2位數(shù)字引腳地址A1A0PCF8576011100A0R/W1位數(shù)字引腳地址A0PCF8578/79011110A0R/W1位數(shù)字引腳地址A0ADC/DACPCF89511001A2A1A0R/W3位數(shù)字引腳地址A2A1A0日歷時(shí)鐘PCF8583101000A0R/W1位數(shù)字引腳地址A0108I2C總線數(shù)據(jù)傳輸協(xié)議種類型號(hào)SLA引腳地址備注靜態(tài)RAMPI2C總線數(shù)據(jù)傳輸?shù)母袷降刂纷止?jié)和數(shù)據(jù)字節(jié)都是高位在前,低位在后。109I2C總線數(shù)據(jù)傳輸?shù)母袷降刂纷止?jié)和數(shù)據(jù)字節(jié)都是高位在前,低位I2C總線數(shù)據(jù)傳輸?shù)母袷?1)主控器的寫(xiě)數(shù)據(jù)操作格式Adata2Adata1ASLAWSAdata2Adata1ASLAWS…PAdataNAdataN-1PA/AdataNAdataN-1(2)主控器的讀數(shù)據(jù)操作格式Adata2Adata1ASAdata2Adata1ASLARS…AdataNAdataN-1PAdataNAdataN-1無(wú)論哪種工作方式,都是由主控器來(lái)啟動(dòng)總線,發(fā)送尋址字節(jié)和終止運(yùn)行;在I2C總線接口的外圍器件中,器件內(nèi)部有多個(gè)地址空間時(shí),其讀寫(xiě)操作都有地址自動(dòng)加1功能。110I2C總線數(shù)據(jù)傳輸?shù)母袷?1)主控器的寫(xiě)數(shù)據(jù)操作格式Ada五、51單片機(jī)與I2C總線的接口111五、51單片機(jī)與I2C總線的接口37六、I2C總線數(shù)據(jù)傳送軟件包
MCS-51只能采用虛擬I2C總線方式,并且只能用于單主系統(tǒng),虛擬I2C總線接口可用通用I/O口中任一端線充任,數(shù)據(jù)線定義為SDA,時(shí)鐘線定義為SCL。MCS-51單主系統(tǒng)虛擬I2C總線軟件包由二大類共9個(gè)歸一化子程序組成。二大類程序分別為典型信號(hào)模擬子程序和數(shù)據(jù)傳送通用子程序。112六、I2C總線數(shù)據(jù)傳送軟件包MCS-51只能采用虛1、典型信號(hào)模擬子程序I2C總線數(shù)據(jù)傳送時(shí),有起始位(S)、終止位(P)、發(fā)送0代表應(yīng)答位(A)、發(fā)送1代表非應(yīng)答位(A)等信號(hào)。1131、典型信號(hào)模擬子程序I2C總線數(shù)據(jù)傳送時(shí),有起始位主程序在主程序初始化中,應(yīng)有如下的語(yǔ)句: SDA BIT P1.7 SCL BIT P1.6 MTD EQU 30H;MTD發(fā)送數(shù)據(jù)緩沖區(qū)首址 MRD EQU 40H;MRD接收數(shù)據(jù)緩沖區(qū)首址 SLA EQU 60H;SLA尋址字節(jié)SLAR/W的存放單元NUMBYTEQU 61H;NUMBYT傳送字節(jié)數(shù)存放單元114主程序在主程序初始化中,應(yīng)有如下的語(yǔ)句:401)啟動(dòng)I2C總線子程序STA:STA:SETB SDASETB SCL;起始條件建立時(shí)間大于4.7μsNOPNOPCLR SDANOP ;起始條件鎖定時(shí)間大于4μsNOPCLR SCL;箝住總線,準(zhǔn)備發(fā)送數(shù)據(jù)RET1151)啟動(dòng)I2C總線子程序STA:STA:SETB 2)停止I2C總線子程序STOPSTOP:CLR SDASETB SCL;發(fā)送停止條件的時(shí)鐘信號(hào)NOP ;停止總線時(shí)間大于4μsNOPSETB SDA;停止總線NOPNOPCLRSDACLRSCLRET1162)停止I2C總線子程序STOPSTOP:CLR 3)發(fā)送應(yīng)答位信號(hào)子程序MACKMACK:
CLR SDASETBSCLNOP ;即SCL為高,時(shí)間大于4.0μsNOPCLR SCLSETBSDARET1173)發(fā)送應(yīng)答位信號(hào)子程序MACKMACK:CLR 4)發(fā)送非應(yīng)答位信號(hào)子程序MNACKMNACK:SETBSDASETBSCLNOP NOPCLRSCLCLRSDARET1184)發(fā)送非應(yīng)答位信號(hào)子程序MNACKMNACK:SET2、I2C總線數(shù)據(jù)傳送的模擬子程序I2C總線的數(shù)據(jù)操作除了基本的啟動(dòng)(STA)、終止(STOP)、發(fā)送應(yīng)答位(MACK)、發(fā)送非應(yīng)答位(MNACK)外,還應(yīng)有應(yīng)答位檢查(CACK)、發(fā)送一字節(jié)(WRBYT)、接收一字節(jié)(RBYT)、發(fā)送N字節(jié)(WRNBYT)和接收N字節(jié)(RDNBYT)這5個(gè)子程序。1192、I2C總線數(shù)據(jù)傳送的模擬子程序I2C總線的數(shù)據(jù)操(1)應(yīng)答位檢查子程序CACKCACK:SETBSDA;置SDA為輸入方式 SETBSCL;使SDA上數(shù)據(jù)有效 CLRF0;預(yù)設(shè)F0=0MOVC,SDA;輸入SDA引腳狀態(tài)JNCCEND;正常應(yīng)答轉(zhuǎn)CEND,且F0=0SETBF0;無(wú)正常應(yīng)答,F(xiàn)0=1CEND:CLRSCL;子程序結(jié)束,使SCL=0RET用F0作標(biāo)志位,正常應(yīng)答位后,F(xiàn)0=0;否則F0=1。120(1)應(yīng)答位檢查子程序CACK用F0作標(biāo)志位,正常應(yīng)答位后(2)發(fā)送一字節(jié)數(shù)據(jù)子程序WRBYT初始化要發(fā)送的位送C1or0?送“1”送“0”8位送完?RET10NY121(2)發(fā)送一字節(jié)數(shù)據(jù)子程序WRBYT初始化要發(fā)送的位送C1調(diào)用該子程序前,將要發(fā)送的數(shù)據(jù)送入A中。占用資源R0、C。WRBYT:MOV R0,#08HWLP:RLCA JC WR1 AJMP WR0WLP1:DJNZ R0,WLP RETWR1:SETB SDA SETB SCL NOP NOP
CLR SCL CLRSDA AJMP WLP1WR0:CLR SDA SETBSCL NOP NOP CLR SCL AJMP WLP1122調(diào)用該子程序前,將要發(fā)送的數(shù)據(jù)送入A中。占用資源R0、C。 (3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT初始化自SDA接收1位送C8位收完?RETNY送C中位toA使SCL=0,繼續(xù)收123(3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT初始化自SDA(3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT從SDA上讀取的一字節(jié)存放在R2或A中。占用資源R0、R2和C。RDBYT:MOVR0,#08HRLP:SETBSDA SETBSCLNOP MOVC,SDA MOVA,R2 RLCA MOVR2,A CLRSCLNOP DJNZR0,RLP RET124(3)從SDA上接收一字節(jié)數(shù)據(jù)子程序RDBYT從SDA上讀?。?)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT在使用本子程序時(shí),須調(diào)用STA、STOP、WRBYT和CACK子程序,而且應(yīng)在片內(nèi)RAM中分配好這些地址。125(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT初始化啟動(dòng)I2C總線應(yīng)答位?發(fā)送數(shù)據(jù)初始化NY送地址字節(jié)檢查應(yīng)答位發(fā)送一字節(jié)應(yīng)答位?YN發(fā)送完?Y發(fā)送停止位N126(4)向被控器發(fā)送N字節(jié)數(shù)據(jù)子程WRNBYT初始化啟動(dòng)I2WRNBYT:MOV R3,NUMBYT LCALLSTA MOV A,SLA LCALLWRBYT LCALLCACK JB F0,WRNBYT MOV R1,#MTDWRDA: MOV A,@R1 LCALLWRBYT LCALLCACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCALLSTOP RET127WRNBYT:MOV R3,NUMBYT53(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT128(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT54(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT初始化啟動(dòng)I2C總線應(yīng)答位?接收緩沖器初始化NY送地址字節(jié)檢查應(yīng)答位接收一字節(jié)接收完?N發(fā)送應(yīng)答位Y發(fā)送非應(yīng)答位、停止位129(5)從外圍器件讀取N字節(jié)數(shù)據(jù)子程序RDNBYT初始化啟動(dòng)IRDNBYT: MOV R3,NUMBYT LCALLSTA MOV A,SLAR LCALLWRBYT LCALLCACK JB F0,RDNBYTRDN: MOVR1,#MRDRDN1: LCALLRDBYT MOV @R1,A DJNZ R3,ACK LCALLMNACK LCALLSTOP RETACK: LCALLMACK INC R1 SJMP RDN1130RDNBYT: MOV R3,NUMBYT56I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064131I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064571325813359I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064引腳ADR模擬電平引腳ADR數(shù)字化從地址尋址命令A(yù)1A0D7D6D5D4D3A1A0R/W寫(xiě)讀GND(0V)0001110001/070H71H3/8VCC0101110011/072H73H5/8VCC1001110101/074H75HVCC(5V)1101110111/076H77H134I2C總線接口的數(shù)碼管驅(qū)動(dòng)芯片SAA1064引腳ADR引腳AI2C
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康教育在公共衛(wèi)生領(lǐng)域的重要性
- 2025中國(guó)聯(lián)通江蘇省分公司招聘19人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)移動(dòng)福建公司春季校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信河北衡水分公司校園招聘6人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)煙草總公司海南省公司??谘┣蜒芯克衅?人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)交建軌道交通事業(yè)部招聘14人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年重慶渝中區(qū)事業(yè)單位歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年山東煙臺(tái)市棲霞市事業(yè)單位招聘本科及以上學(xué)歷畢業(yè)生入伍9人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川瀘州市龍馬潭區(qū)事業(yè)單位招聘工作人員19人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海市生物醫(yī)藥科技發(fā)展中心公開(kāi)招聘5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 成人高考JAVA程序設(shè)計(jì)(考試復(fù)習(xí)資料)
- MOOC 電路理論-華中科技大學(xué) 中國(guó)大學(xué)慕課答案
- 物流園區(qū)運(yùn)營(yíng)管理承包合同樣本
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-02-06-10 茶葉加工工 2024年版
- 無(wú)人駕駛清掃車市場(chǎng)調(diào)查數(shù)據(jù)報(bào)告2024年(含現(xiàn)狀分析市場(chǎng)排名數(shù)據(jù)及未來(lái)預(yù)測(cè))
- 道岔拆除施工方案
- 多學(xué)科綜合MDT2024年度多學(xué)科綜合MDT工作總結(jié)與計(jì)劃
- 北京海淀區(qū)2024屆高三最后一模語(yǔ)文試題含解析
- 2023年計(jì)劃訂單專員年度總結(jié)及下一年規(guī)劃
- 裝修工程竣工驗(yàn)收自評(píng)報(bào)告
- 反面典型案例剖析材料范文(通用6篇)
評(píng)論
0/150
提交評(píng)論