《单片机及接口技术串行扩展精.ppt》由会员分享,可在线阅读,更多相关《单片机及接口技术串行扩展精.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机及接口技术串行扩展第1页,本讲稿共26页本章主要内容本章主要内容第一节第一节 移位寄存器的串行扩展技术移位寄存器的串行扩展技术 (80C5180C51串行口扩展)串行口扩展)1 1)串行口于工作方式)串行口于工作方式0 0 2 2)虚拟串行扩展)虚拟串行扩展2 2)串行接口总线:)串行接口总线:I I2 2C C总线总线第2页,本讲稿共26页单单片片机机串串行行扩扩展展1.1.串行口工作于方式串行口工作于方式0 0 串行口的四种工作方式串行口的四种工作方式 方式方式0 0,同步传输,同步传输,8 8位数据传输,传输速率固定位数据传输,传输速率固定f fOSCOSC/12/12方式方式1
2、1,1010位数据传输,传输速率由位数据传输,传输速率由T1T1产生,可变产生,可变方式方式2 2,1111位数据传输,可多机通信,传输速率固定两种位数据传输,可多机通信,传输速率固定两种方式方式3 3,1111位数据传输,可多机通信,传输速率同方式位数据传输,可多机通信,传输速率同方式1 1 1 1)串行口扩展的工作原理)串行口扩展的工作原理 一个引脚用作数据输入一个引脚用作数据输入/输出输出另一个引脚用作时钟输出(同步)另一个引脚用作时钟输出(同步)串行口工作于方式串行口工作于方式0 0时,时,RXDRXD用作数据输入用作数据输入/输出;输出;TXDTXD用作时钟输出用作时钟输出虚拟串行口
3、采用虚拟串行口采用1 1个个I/OI/O端口引脚作数据输入端口引脚作数据输入/输出;采用另一个输出;采用另一个I/OI/O端口引脚端口引脚作时钟输出。作时钟输出。第3页,本讲稿共26页 2)80C51串行扩展的时序串行扩展的时序 单单片片机机串串行行扩扩展展R RX XD DT TX XD DTITI发送发送RENRENRIRIT TX XD DR RX XD D接收接收第4页,本讲稿共26页3 3)串行口方式)串行口方式0 0的归一化子程序的归一化子程序(归一化子程序即通用子程序)(归一化子程序即通用子程序)(1 1)归一化输出子程序)归一化输出子程序 设工作方式设工作方式0 0清清TITI
4、取数据到寄存器取数据到寄存器A A设指向数据块的指针设指向数据块的指针输出数据输出数据数据块输出完毕?数据块输出完毕?YESYES返回主程序返回主程序数据块指针加数据块指针加1 1数据输出完毕?数据输出完毕?YESYESNONONONOa.a.流程图流程图 单单片片机机串串行行扩扩展展第5页,本讲稿共26页b.b.归一化子程序归一化子程序 设用设用R0R0作数据块指针,用作数据块指针,用R2R2记录数据块的数据个数记录数据块的数据个数 设置工作方式字设置工作方式字SCONSCON:00H 00H SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI0 00
5、00 00 0UARTNOUARTNO:MOV R0MOV R0,#MTD#MTD ;R0R0指向第一个数据指向第一个数据 MOV SCONMOV SCON,#00H#00H;设串行口工作于方式;设串行口工作于方式0 0SOUT SOUT :MOV AMOV A,R0 R0 ;取一个数据到;取一个数据到A A寄存器寄存器 MOV SBUFMOV SBUF,A A ;输出数据;输出数据 JNB TIJNB TI,$;等待数据输出完毕;等待数据输出完毕 CLR TI CLR TI ;关串行口输出中断标志;关串行口输出中断标志 INC R0 INC R0 ;数据块指针加;数据块指针加1 1 DJNZ
6、 R2 DJNZ R2,SOUT SOUT ;判断数据块是否输出完毕,若没;判断数据块是否输出完毕,若没 ;有输出完,继续下一个数据的输出有输出完,继续下一个数据的输出 RET RET ;若数据块输出完毕,返回主程序;若数据块输出完毕,返回主程序程序:程序:注意:在主程序中需设置注意:在主程序中需设置#MTD#MTD和和R2 R2 单单片片机机串串行行扩扩展展第6页,本讲稿共26页(2 2)归一化输入子程序)归一化输入子程序UARTNI UARTNI 思考:流程图思考:流程图 SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI0 00 00 01 10 0
7、方式字方式字SCONSCON:10H10H子程序子程序UARTNI UARTNI:MOV R0MOV R0,#MTD#MTD MOV SCON MOV SCON,#10H#10HSIN SIN :CLR RICLR RI JNB RI JNB RI,$MOV A MOV A,SBUFSBUF MOV R0 MOV R0,A A INC R0 INC R0 DJNZ R2 DJNZ R2,SINSIN RET RET(3 3)应用界面(主程序)应用界面(主程序)a.a.串行发送串行发送:MTD EQU MTD EQU 数据块首地址数据块首地址 ;如;如MTD EQU 60HMTD EQU 60H
8、MOV R2MOV R2,#N#N;发送字节数送;发送字节数送R2R2LCALL UARTNO LCALL UARTNO ;调用归一化;调用归一化 ;串行口发送子程序;串行口发送子程序b.b.串行接受串行接受:与串行发送相同:与串行发送相同 单单片片机机串串行行扩扩展展第7页,本讲稿共26页2.2.用用I/OI/O口虚拟的串行输入口虚拟的串行输入/输出归一化子程序输出归一化子程序流流程程图图 取数据到取数据到A A寄存器寄存器A A右移一位右移一位将将ACC.0ACC.0从从VRVRX XD D引脚输出引脚输出设指向数据块的指针设指向数据块的指针从从VTVTX XD D引脚输出一个引脚输出一个
9、0 0,再输出一个,再输出一个1 1数据块输出完毕?数据块输出完毕?YESYES返回主程序返回主程序数据块指针加数据块指针加1 18 8位数据输出完毕?位数据输出完毕?YESYESNONONONO(1 1)归一化输出子程序归一化输出子程序单单片片机机串串行行扩扩展展第8页,本讲稿共26页程序程序VUARTNOVUARTNO:MOV R0MOV R0,#MTD#MTD ;设指向数据块的指针;设指向数据块的指针VSOUT VSOUT :MOV R3MOV R3,#8#8 ;设置位数为;设置位数为8 8 MOV A MOV A,R0 R0 ;取一个数到;取一个数到A ABITOUT BITOUT :
10、MOV CMOV C,ACC.0ACC.0 MOV VRXD MOV VRXD,C C ;将数据的最低位送到输出;将数据的最低位送到输出I/OI/O引脚引脚 CLR VTXDCLR VTXD SETB VTXD SETB VTXD ;产生时钟;产生时钟 RR A RR A ;A A右移一位,下一位送入右移一位,下一位送入ACC.0ACC.0 DJNZ R3 DJNZ R3,BITOUTBITOUT;若没有送够;若没有送够8 8位,继续输送下一位位,继续输送下一位 INC R0 INC R0 ;指针指向下一个数据;指针指向下一个数据 DJNZ R2DJNZ R2,SOUT SOUT ;若数据块没
11、输出完,继续输出;若数据块没输出完,继续输出 RETRET主程序需要设置:主程序需要设置:MTDMTD、VRXDVRXD、VTXDVTXD、R2 R2 第9页,本讲稿共26页应用界面应用界面 MTD EQU MTD EQU 数据块首地址数据块首地址 ;如;如MTD EQU 60HMTD EQU 60HVRXD EQU VRXD EQU 数据引脚数据引脚 ;如;如VRXD EQU P1.0VRXD EQU P1.0VTXD EQU VTXD EQU 时钟引脚时钟引脚 ;如;如VTXD EQU P1.1VTXD EQU P1.1MOV R2MOV R2,#数据字节数数据字节数 ;如;如MOV R2
12、MOV R2,#10#10LCALL VUARTNO LCALL VUARTNO ;调用虚拟串行口归一化子程序;调用虚拟串行口归一化子程序(2 2)归一化输入子程序)归一化输入子程序VUARTNIVUARTNI:MOV R0MOV R0,#MTD#MTDVSIN VSIN :MOV R3MOV R3,#8#8BITIN BITIN :CLR VTXD CLR VTXD SETB VTXD SETB VTXD MOV C MOV C,VRXDVRXD RRC A RRC A DJNZ R3 DJNZ R3,BITINBITIN MOV R0 MOV R0,A A INC R0 INC R0 DJ
13、NZ R2 DJNZ R2,VSINVSIN RET RET a.a.子程序子程序b.应用界面:与虚拟串行应用界面:与虚拟串行输出归一化子程序类似输出归一化子程序类似 单单片片机机串串行行扩扩展展第10页,本讲稿共26页5 5)串行口扩展应用)串行口扩展应用 (1)输出移位寄存器)输出移位寄存器74HC164 74HC164 74HC164Q QA A Q QB B Q QC C Q QD D Q QE E Q QF F Q QG G Q QH HD D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0A AB BGNDGNDCLRCLRC
14、LR(CLR(平平)V VCCCC串行输入,并行输出。按串行输入,并行输出。按D0D7D0D7的次序逐个输入位。的次序逐个输入位。A A、B B:串行数据输入端:串行数据输入端(2 2)多个)多个74HC16474HC164输出扩展输出扩展 74HC164 74HC164(1 1)Q QA A Q QB B Q QC C Q QD D Q QE E Q QF F Q QG G Q QH HD D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0A AB BGNDGNDCLKCLKCLR(CLR(平平)V VCCCC 74HC164 74HC
15、164(2 2)Q QA A Q QB B Q QC C Q QD D Q QE E Q QF F Q QG G Q QH HD D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0A AB BGNDGNDCLKCLKCLR(CLR(平平)V VCCCC80C5180C51RXD/RXD/VRXDVRXDTXD/TXD/VTXDVTXDV VCCCC单单片片机机串串行行扩扩展展第11页,本讲稿共26页由于数据位按照由于数据位按照Q QH HQQA A的次序输入的次序输入74HC16474HC164,所以数据(,所以数据(8 8位)按照位)按
16、照74HC164(n)74HC164(1)74HC164(n)74HC164(1)的次序输入,即第一个数据输入到最后一个的次序输入,即第一个数据输入到最后一个74HC16474HC164,第二个数据输入到倒数第二个,第二个数据输入到倒数第二个74HC16474HC164,最后一个,最后一个数据输入到第一个数据输入到第一个74HC16474HC164。假如用假如用4 4个个74HC16474HC164,数据块首地址为片内,数据块首地址为片内RAM 60HRAM 60H串行口方式串行口方式0 0(移位寄存器方式)扩展:(移位寄存器方式)扩展:MTD EQU 60HMTD EQU 60HMOV R2
17、MOV R2,#4#4LCALL UARTNOLCALL UARTNO虚拟串行口扩展:设用虚拟串行口扩展:设用P1.0P1.0输出数据;输出数据;P1.1P1.1输出时钟输出时钟 MTD EQU 60HMTD EQU 60HVRXD EQU P1.0VRXD EQU P1.0VTXD EQU P1.1VTXD EQU P1.1MOV R2,#4MOV R2,#4LCALL VUARTNOLCALL VUARTNO 单单片片机机串串行行扩扩展展第12页,本讲稿共26页(3 3)移位输入寄存器)移位输入寄存器74HC16574HC165及多个及多个74HC16574HC165输入扩展输入扩展 74
18、HC165 74HC165(1 1)H G F E D C B AH G F E D C B AD D0 0 D D1 1 D D2 2 D D3 3 D D4 4 D D5 5 D D6 6 D D7 7Q QH HGNDGNDCLRCLRSH/LD(SH/LD(平平)74HC165 74HC165(2 2)H G F E D C B AH G F E D C B AD D0 0 D D1 1 D D2 2 D D3 3 D D4 4 D D5 5 D D6 6 D D7 7Q QH HGNDGNDCLRCLRSH/LD(SH/LD(平平)V VCCCC80C5180C51RXD/RXD/V
19、RXDVRXDTXD/TXD/VTXDVTXDV VCCCCSERSERV VCCCCQ QH HSLSLQ QH H是串行数据输出端,是串行数据输出端,SERSER是级联时的串行数据输入端,是级联时的串行数据输入端,AHAH为并行数据输入为并行数据输入端,端,SH/LDSH/LD(平)为预置控制端,低电平时,并行数据端(平)为预置控制端,低电平时,并行数据端D0D7D0D7置入置入74HC16574HC165内内部寄存器,高电平时,可进行串行移位操作部寄存器,高电平时,可进行串行移位操作 单单片片机机串串行行扩扩展展第13页,本讲稿共26页a.a.用串行口工作方式用串行口工作方式0 0扩展扩
20、展 MRD EQU 40H MRD EQU 40H SL EQU P1.0 SL EQU P1.0 UARNUARN:CLR SL CLR SL ;74HC16574HC165外部数据并行输入内部寄存器外部数据并行输入内部寄存器 SETB SL SETB SL ;74HC16474HC164移位操作,移位操作,74HC16574HC165(n n)的数据串行)的数据串行 ;输入到;输入到74HC16574HC165(n-1n-1)MOV R2MOV R2,#N#N ;设置接收的字节数;设置接收的字节数 LCALL UARTNI LCALL UARTNI ;调归一化子程序;调归一化子程序 b.b
21、.虚拟方式(与串行口方式虚拟方式(与串行口方式0 0类似,但要设类似,但要设VRXDVRXD和和VTXDVTXD):):MRD EQU 40H MRD EQU 40H VRXD EQU P1.5 VRXD EQU P1.5 VTXD EQU P1.4 VTXD EQU P1.4 SL EQU P1.1 SL EQU P1.1WARNWARN:CLR SLCLR SL SETB SL SETB SL MOV R2 MOV R2,#N#N LCALL VUARTNI LCALL VUARTNI 单单片片机机串串行行扩扩展展第14页,本讲稿共26页(4 4)通过并行输出口扩展)通过并行输出口扩展LE
22、DLED显示器显示器 74HC164 74HC164(1 1)Q QA A Q QB B Q QC C Q QD D Q QE E Q QF F Q QG G Q QH HA AB BGNDGNDCLRCLRCLR(CLR(平平)V VCCCC 74HC164 74HC164(2 2)Q QA A Q QB B Q QC C Q QD D Q QE E Q QF F Q QG G Q QH HA AB BGNDGNDCLRCLRCLR(CLR(平平)V VCCCC80C5180C51RXD/RXD/VRXDVRXDTXD/TXD/VTXDVTXDV VCCCCdp g f e d c b ad
23、p g f e d c b aCOMCOML8L8dp g f e d c b adp g f e d c b aCOMCOML7L7+5V+5V假设要显示假设要显示bUAA bUAA 首先,求段码:首先,求段码:共阳极共阳极 b b的段码:的段码:cdefgcdefg有效有效 ab dpab dp无效无效 1000 0011B=83H1000 0011B=83H U U的段码:的段码:bcdefbcdef有效,有效,a g dpa g dp无效无效 1100 0001B=C1H1100 0001B=C1H A A的段码:的段码:abcefgabcefg有效,有效,d dpd dp无效无效 1
24、000 1000=88H1000 1000=88H 的段码:的段码:abcdefabcdef有效,有效,g dpg dp无效无效 1100 0000=C0H1100 0000=C0H单单片片机机串串行行扩扩展展第15页,本讲稿共26页其次,编写指令其次,编写指令 MTD EQU 30H MTD EQU 30H;定义;定义MTD=30HMTD=30HBUAABUAA:MOV R1MOV R1,#MTD#MTD MOV R1 MOV R1,#C0H#C0H INC R1 INC R1 MOV R1 MOV R1,#C0H#C0H INC R1 INC R1 MOV R1 MOV R1,#C0H#C
25、0H INC R1 INC R1 MOV R1 MOV R1,#C0H#C0H;将;将4 4个个段码送入数据块段码送入数据块 INC R1INC R1 MOV R1 MOV R1,#88H#88H INC R1 INC R1 MOV R1 MOV R1,#88H#88H ;将;将2 2个个AA段码送入数据块段码送入数据块 INC R1INC R1 MOV R1 MOV R1,#C1H#C1H ;将;将UU段码送入数据块段码送入数据块 INC R1INC R1 MOV R1 MOV R1,#83H#83H ;将;将bb段码送入数据块段码送入数据块 MOV R2MOV R2,#8#8 ;设置输出数
26、据字节数;设置输出数据字节数 LCALL UARTNO LCALL UARTNO ;调归一化子程序;调归一化子程序单单片片机机串串行行扩扩展展第16页,本讲稿共26页第二节第二节 I I2 2C C总线的串行扩展技术总线的串行扩展技术 1.I2C总线(总线(Inter Integrated Circuit BUS)概述)概述 80C5180C51VSDAVSDAVSCLVSCLE E2 2PROMPROMSDASDA SCLSCLADC/DACADC/DACSDASDA SCLSCLV VDDDD其它其它I I2 2C C外围接口外围接口SDASDA SCLSCLSDASDASCLSCLI I
27、2 2C C总线外围扩展示意图总线外围扩展示意图1)二总线:数据线SDA,时钟线SCL 总线上挂接单片机、外围器件(如I/O口,日历时钟,ADC,DAC,存储器等)和外设接口(如键盘、显示器、打印机等)。I2C总线接口电路均为漏极开路,所以总线上必须有上拉电阻 单单片片机机串串行行扩扩展展第17页,本讲稿共26页2.2.典型典型I I2 2C C总线时序总线时序 起始传送7个外围器件或接口的地址位,以及1个读写控制位对方应答传送数据和应答终止4.74.7usus4.04.0ususSDA/VSDASDA/VSDASCL/VSCLSCL/VSCL1)起始起始数据线SDA和SCL低电平,SDA转高
28、电平数据线SDA保持高电平至少4.7us当数据线SDA变低电平之后,时钟SCL继续保持高电平4.0us2)终止终止4.74.7usus4.04.0ususSDA/VSDASDA/VSDASCL/VSCLSCL/VSCL时钟线SCL和数据线SDA低电平,SCL转高电平SCL保持高电平至少4.0us之后,数据线SDA由低电平变为高电平 SDA保持高电平至少4.7us之后,转低电平。单单片片机机串串行行扩扩展展第18页,本讲稿共26页3)3)应答应答单片机每发送完一个字节数据(8位),对方会从SDA/VSDA发送一个应答位,低电平为低电平为有效应答信号有效应答信号。4)4)数据传输数据传输按照从高位
29、到低位的传输次序(与80C51串行口扩展方式相反)4.0u4.0us s输出输出0 0SDA/VSDASDA/VSDASCL/VSCLSCL/VSCLa.输出0 SDA/VSDA变低电平SCL/VSCL变高电平,并保持4.0us以上时间,SCL/VSCL变低电平SDA/VSDA变高电平 b.输出1:与输出0同理可得 4.0u4.0us s输出输出1 1SDA/VSDASDA/VSDASCL/VSCLSCL/VSCL单单片片机机串串行行扩扩展展第19页,本讲稿共26页5)I5)I2 2C C总线上一次完整的数据传送过程总线上一次完整的数据传送过程 3.I3.I2 2C C总线模拟子程序总线模拟子
30、程序 设单片机时钟频率为6MHz,则一个机器周期的时间为12/6*106=2(us)1)启动子程序 VSDAVSDA变高电平变高电平VSCLVSCL变高电平变高电平延时延时(使使VSDAVSDA保持高电平保持高电平4.7us)4.7us)VSDAVSDA变低电平变低电平延时延时(使使VSCLVSCL继续保持高电平继续保持高电平4us)4us)VSCLVSCL变低电平变低电平返回主程序返回主程序4.74.7usus4.04.0ususSDA/VSDASDA/VSDASCL/VSCLSCL/VSCL流程图 单单片片机机串串行行扩扩展展第20页,本讲稿共26页子程序STA:SETB VSDA ;VS
31、DA高电平 SETB VSCL ;VSCL高电平 NOP NOP ;延时,查教材得,NOP的执行需要1个机器周期,;因此两条NOP指令共需2个机器周期,耗时2*2us=4us CLR VSDA ;VSDA变低电平 NOP NOP ;延时4us CLR VSCL ;VSCL变低电平 RET单单片片机机串串行行扩扩展展第21页,本讲稿共26页2)终止子程序4.74.7usus4.04.0ususSDA/VSDASDA/VSDASCL/VSCLSCL/VSCL流程图(与启动类似,略)子程序:STOP:CLR VSDA SETB VSCL NOP NOP SETB VSDA NOP NOP CLR V
32、SDA CLR VSCL RET 单单片片机机串串行行扩扩展展第22页,本讲稿共26页3)应答位检查子程序CACK 有效的应答标志:0 SDA/VSDASDA/VSDASCL/VSCLSCL/VSCL应答应答查询查询VSDAVSDAVSDAVSDA为为0 0?YESYES设置标志位设置标志位F0F0NONO标志位标志位F0F0清零清零VSDAVSDA置置1 1VSCLVSCL变高电平变高电平VSCLVSCL变低电平变低电平返回主程序返回主程序流程图子程序CACK:SETB VSDA SETB VSCL CLR F0 MOV C,VSDA JNC CEND ;查询数据信号是否 ;为0,若为0,说
33、明 ;有;正常应答信号 ;,标志位F0=0 SETB F0 ;若无正常应答信号 ;,标志位F0=1CEND:CLR VSCL RET 单单片片机机串串行行扩扩展展第23页,本讲稿共26页4)发送一个字节数据子程序WRBYT 一个字节8位,从高位到低位依次发送设数据已存放于A中VSDAVSDA清零清零C C为为1 1?YESYESVSCLVSCL清零清零NONOVSDAVSDA置置1 1位数位数8 8送送R2R2A A带进位位左移一位(带进位位左移一位(ACC.7CACC.7C)VSCLVSCL置置1 1返回主程序返回主程序延时延时4us4us已输出已输出8 8位位?VSCLVSCL清零清零NO
34、NOYESYES流程图子程序WRBYT:MOV R2,#08H MOV A,DA ;DA为数据的 ;片内存储地址 CLR VSCLWLP :RLC A JNC WR0 ;若要发送的位 ;为“0”,转WR0WR1 :SETB VSDA ;发送“1”AJMP WSWR0 :CLR VSDA ;发送“0”BITSEND:SETB VSCL NOP NOP CLR VSCL DJNZ R2,WLP RET单单片片机机串串行行扩扩展展第24页,本讲稿共26页5)N个字节发送子程序 WRNBYT:MOV R3,NUMBYT ;数据块长度送R3 LCALL STA ;启动 MOV A,SLA ;I2C总线外围器件地址送A LCALL WRBYT ;发送地址 LCALL CACK JB F0,WRNBYT ;检查应答信号 MOV R1,#MTD ;R1指向数据块首地址WRDA :MOV A,R1 LCALL WRBYT ;发送一个字节数据 LCALL CACK JB F0,WRNBYT ;检查应答信号 INC R1 DJNZ R3,WRDA ;若数据块未发送完,继续循环 LCALL STOP ;若数据块发送完毕,停止 RET 主程序需要设置:NUMBYT MTD 单单片片机机串串行行扩扩展展第25页,本讲稿共26页本章小结本章小结第26页,本讲稿共26页