常用外围设备接口电路培训课件_第1页
常用外围设备接口电路培训课件_第2页
常用外围设备接口电路培训课件_第3页
常用外围设备接口电路培训课件_第4页
常用外围设备接口电路培训课件_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章常用外围设备接口电路本章要点:LED数码管及编码方式静态显示方式及其典型应用电路动态显示方式及其典型应用电路虚拟I2C总线串行显示电路键盘去抖动和连接、控制方式独立式按键及其接口电路矩阵式键盘及其接口电路并行A/DADC0809及其接口电路串行A/DADC0832及其接口电路I2C串行A/D典型应用电路DAC0832及其接口电路I2C串行D/A典型应用电路开关量驱动输出接口电路§9-1LED数码管显示接口一、LED数码管LED显示器的扩展(结构)LED数码管的结构:①共阳与共阴@

单片机系统扩展LED数码管时多用共阳LED:共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。@

通常每个段笔画要串一个数百欧姆的降压电阻。公共阳极hgfedcbaabcdgefh公共阴极hgfedcbaabcdgefhhgf……ahgf……a高电平点亮低电平点亮接高电平接地LED数码管的软件译码八段LED数码管段代码编码表(连线不同可有多种表):公共阳极hgfedcbaabcdgefh公共阴极hgfedcbaabcdgefhhgf……ahgf……a高电平点亮低电平点亮接高电平接地字形0123456789黑共阳0C00F90A40B09992820F880900FF共阴3F065B4F666D7D077F6F00LED数码管分类:按其内部结构可分为共阴型和共阳型;

按其外形尺寸有多种形式,使用较多的是0.5"和0.8";

按显示颜色也有多种形式,主要有红色和绿色;正向压降一般为1.5~2V,额定电流为10mA,最大电流为40mA。静态显示时取10mA为宜,动态扫描显示,可加大脉冲电流,但一般不超过40mA。

按亮度强弱可分为超亮、高亮和普亮。二、LED数码管编码方式

表9-1共阴和共阳LED数码管几种八段编码表

显示数字共阴顺序小数点暗共阴逆序小数点暗共阳顺序小数点亮共阳顺序小数点暗

Dpgfedcba16进制abcdefgDp16进制0001111113FH11111100FCH40HC0H10000011006H0110000060H79HF9H2010110115BH11011010DAH24HA4H3010011114FH11110010F2H30HB0H40110011066H0110011066H19H99H5011011016DH10110110B6H12H92H6011111017DH10111110BEH02H82H70000011107H11100000E0H78HF8H8011111117FH11111110FEH00H80H9011011116FH11110110F6H10H90H【例9-1】已知显示数存在内RAM30H(高位)、31H中,试将其转换为5位共阴字段码(顺序),存在以30H(高位)为首址的内RAM中。⑴从显示数中分离出显示的每一位数字

方法是将显示数除以十进制的权显示数转换为显示字段码的步骤:⑵将分离出的显示数字转换为显示字段码

方法是查表SPRT:MOVR0,#30H;置万位BCD码间址MOVA,30H;置被除数MOVB,31H;MOVR6,#27H;置除数10000=2710HMOVR5,#10H;LCALLSUM;除以10000,万位商存30H,余数存A、BMOVR6,#03H;置除数1000=03E8HMOVR5,#0E8H;INCR0;指向千位商间址(31H)LCALLSUM;除以1000,千位商存31H,余数存A、BMOVR6,#0;置除数100MOVR5,#100;INCR0;指向百位商间址(32H)LCALLSUM;除以100,百位商存32H,余数存A(B=0)MOVB,#10;置除数10DIVAB;除以10INCR0;指向十位商间址(33H)MOV@R0,A;十位商存33HXCHA,B;读个位数INCR0;指向个位间址(34H)MOV@R0,A;个位存34HRET;解:连续调用下列二个子程序即可。⑴分离显示数字子程序说明:SUM是16位除以16位子程序:(A、B)÷(R6、R5)=商@R0,余数(A、B)。(参阅例4-9)⑵转换显示字段码子程序CHAG:MOVDPTR,#TAB;置共阴字段码表首址MOVR0,#30H;置显示数据区首址CGLP:MOVA,@R0;取显示数字MOVCA,@A+DPTR;读相应显示字段码MOV@R0,A;存显示字段码INCR0;指向下一显示数字CJNER0,#35H,CGLP;判5个显示数字转换完否?未完继续RET;转换完毕,结束TAB:DB3FH,06H,5BH,4FH,66H;共阴字段码表DB6DH,7DH,07H,7FH,6FH;三、静态显显示方方式及及其典典型应应用电电路⑵动态显显示方方式,在某某一瞬瞬时显显示一一位,,依次次循环环扫描描,轮轮流显显示,,由于于人的的视觉觉滞留留效应应,人人们看看到的的是多多位同同时稳稳定显显示。。特点:占用用I/O端端线少少,电电路较较简单单,编编程较较复杂杂,CPU要定定时扫扫描刷刷新显显示。。一般般适用用于显显示位位数较较多的的场合合。LED数码码管显显示分分类::静态态显示示方式式和动动态显显示方方式。。⑴静态显显示方方式,每一一位字字段码码分别别从I/O控制制口输输出,,保持持不变变直至至CPU刷刷新。。特点:编程程较简简单,,但占占用I/O口线线多,,一般般适用用于显显示位位数较较少的的场合合。LED显示示器的的扩展展(显显示方方式)LED数码码管的的显示方方式:③静态态与动动态动态显显示特特点:有闪烁烁,用元器件件少,占I/O线线少,必须扫扫描,花费CPU时间间,编程复复杂。。(有多多个LED时尤尤为突突出))静态显显示特特点:无闪烁烁,用元器件件多,占I/O线线多,无须扫扫描,节省CPU时间间,编程简简单。。静态显显示:各数码码管在在显示示过程程中持续得到送送显信信号,,与各各数码码管接接口的的I/O口线线是专用的。动态显显示:各数数码码管管在在显显示示过过程程中中轮流流得到到送送显显信信号号,,与与各各数数码码管管接接口口的的I/O口口线线是共用用的。。1、、并行行扩扩展展静静态态显显示示电电路路【例例9-2】】按按图图9-3编编制制显显示示子子程程序序,,显显示示数数((≤≤255))存存在在内内RAM30H中中。。解解::DIR1:MOVA,30H;读读显显示示数数MOVB,#100;置置除除数数DIVAB;产产生生百百位位显显示示数数字字MOVCA,@A+DPTR;读读百百位位显显示示符符MOVDPTR,#0DFFFH;置置74377(百百位位)地地址址MOVX@DPTR,A;输输出出百百位位显显示示符符MOVA,B;读读余余数数MOVB,#10;置置除除数数DIVAB;产产生生十十位位显显示示数数字字MOVDPTR,#TAB;置置共共阳阳字字段段码码表表首首址址MOVCA,@A+DPTR;读读十十位位显显示示符符MOVDPTR,#0BFFFH;置置74377(十十位位)地地址址MOVX@DPTR,A;输输出出十十位位显显示示符符MOVA,B;读读个个位位显显示示数数字字MOVDPTR,#TAB;置置共共阳阳字字段段码码表表首首址址MOVCA,@A+DPTR;读读个个位位显显示示符符MOVDPTR,#7FFFH;置置74377(个个位位)地地址址MOVX@DPTR,A;输输出出个个位位显显示示符符RET;TAB:DB0C0H,0F9H,0A4H,0B0H,99H;共共阳阳字字段段码码表表DB92H,82H,0F8H,80H,90H;2、、串行行扩展展静静态态显显示示电电路路DIR2:MOVSCON,#00H;置置串串口口方方式式0CLRES;串串口口禁禁中中SETBP1.0;““与与””门门开开,允允许许TXD发发移移位位脉脉冲冲MOVSBUF,30H;串串行行输输出出个个位位显显示示字字段段码码JNBTI,$;等等待待串串行行发发送送完完毕毕CLRTI;清清串串行行中中断断标标志志MOVSBUF,31H;串串行行输输出出十十位位显显示示字字段段码码JNBTI,$;等等待待串串行行发发送送完完毕毕CLRTI;清清串串行行中中断断标标志志MOVSBUF,32H;串串行行输输出出百百位位显显示示字字段段码码JNBTI,$;等等待待串串行行发发送送完完毕毕CLRTI;清清串串行行中中断断标标志志CLRP1.0;““与与””门门关关,禁禁止止TXD发发移移位位脉脉冲冲RET;【例9-3】】按按图图9-4编编制制显显示示子子程程序序,,显显示示字字段段码码已已分分别别存存在在32H~~30H内内RAM中中。。解::要求求::根据据上上图图编编写写通通过过串串行行口口和和74LS164驱驱动动共阳LED数数码码管管查表表显显示示的的子子程程序序。。条件件::系统统有有6个个LED数数码码管管,待待显显数数据据(00H——09H)已已放放在在35H——30H单元元中中(分分别别对对应应十万万位位→个位位),,DSPLY:MOVDPTR,#TABLE;共阳LED数数码管译译码表首址MOVR0,#30H;待显数数据缓冲冲区的个位地址REDO:MOVA,,@R0;通过R0实现现寄存器器间接寻址址MOVCA,@A+DPTR;查表MOVSBUF,A;经串行行口发送到74LS164JNBTI,$;查询送完一个个字节的的第8位位?CLRTI;为下一一字节发发送作准备INCR0;R0指向下一一个数据缓冲冲单元CJNER0,#36H,REDO;判断是否发完完6个数??RET;发完6个数就就返回TABLE:DB0C0H,0F9H,0A4H,0B0H,99H;共阳LED译译码表DB92H,82H,0F8H,80H,90H3、BCD码码输出静静态显示示电路CD4511是是“BCD码码→七段段共阴译译码/驱驱动”IC;4511是4线线-7段段锁存/译码/驱动电电路,能能将BCD码译译成7段段显示符符输出。。图中::4511ABCD为0~~9二进进制数输输入端(A是低低位),,abcdefg为显示示段码输输出端,,LE为为输入信信号锁存存控制(低电平平有效),数码码管为共共阴数码码管。利用4511实实现静态态显示与与一般静静态显示示电路不不同,一是节省I//0端线线,段码码输出只只需4根根;二是不需专用用驱动电电路,可可直接输输出;三是不需译码码,直接接输出二二进制数数,编程程简单;;缺点是只能显示示数字,,不能显显示各种种符号。。解:编程程如下::DIR3:MOVP1,#11100000B;选通个个位ORLP1,30H;输出个个位显示示数MOVP1,#11010000B;选通十十位ORLP1,31H;输出十十位显示示数MOVP1,#10110000B;选通百百位ORLP1,32H;输出百百位显示示数RET;【例9-4】按按图9-5试编编制显示示子程序序(小数数点固定定在第二二位),,已知显显示数存存在内RAM30H~32H中。。动态显示示电路连结形式式:①显示各位位的所有有相同字段段线连在在一起,,共8段,,由一个个8位I/O口口控制;;②每一位的的公共端端(共阳或或共阴COM))由另一个个I/O口控制制。四、动态显示示方式及其典型型应用电电路LED数数码管动态显示举例例P1.5P1.4P1.3P1.2P1.2P1.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.07406OC门X3上拉电阻阻×14+5VAT89C51工作原理理:从P0口送送段代码码,P1口送位位选信号号。段码虽虽同时到到达6个LED,但但一次仅一一个LED被选选中。利用“视觉暂暂留”,每送一一个字符符并选中中相应位位线,延延时一会会儿,再再送/选选下一个个……循环扫描描即可。共阴数数码管位选线段代码P1.5P1.4P1.3P1.2P1.2P1.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.07406OC门X3+5VAT89C51位选线段代码要求:此处为共共阴数码码管,P0口送送段代码码,P1口送位位选信号号。通过过查表实实现动态态显示。。条件:待显数据据(00H—09H)已放在在:7FH——7AH单元中(分别对对应十万位~个位)说明:由于用了了反相驱动动器7406,要用共共阳译码码表。共阴数数码管上拉电阻阻×147406OC门X3+5V(7FH)(7EH)(7DH)(7CH)(7BH)(7AH)十万万万位位千千位百百位位十十位个个位数据缓缓冲区区/显显示缓缓冲区区P0口口送段代代码,,P1口口送位选选信号号。待显数数据已经放放在:7FH—7AH单元(分别别对应应十万位位→个位)使用共共阳译译码表表。DIR:MOVDPTR,#DSEG;数码码管译译码表首址址MOVR0,,#7AH;待显显缓冲冲区个位地址MOVR3,,#01H;个位位的位选信信号=01HLD1:MOVA,@R0;通过过R0间接寻寻址MOVCA,@A+DPTR;查表MOVP0,A;字段段码送送到P0口口MOVP1,,R3;字位位选择择送到到P1口口LCALLDELY;调延时时1ms子子程序序INCR0;R0指向下下一字字节MOVA,R3JBACC.5,LD2;判是否发发完6个数数?RLA;R1指向下下一个个位MOVR3,,A;位选选信号号存回回R1SJMPLD1;跳去去再显显示下下一个个数LD2:RET;发完完6个个数就就返回DSEG:DB0C0H,0F9H,0A4H,0B0H,99H;共阳阳译码码表DB92H,82H,0F8H,80H,90HP0口口送段代代码,,P1口口送位选选信号号。待显数数据已经放放在:7FH—7AH单元(分别别对应应十万位位→个位)使用共共阳译译码表表。动态显示举举例(循环显显示““8””的实实验)实验箱箱从P0口扩扩展了了两个个8位位的简简单I/O口:一个个送送段段代代码码(字形形状状),,地地址址是是0DCH;一个个送送位位选选信信号号(字位位置置),,地地址址是是0DDH。ORG0000HMOVR0,#0DCH;指指向向字形形口口MOVA,#80H;送送““8””的的字字形形代代码码MOVX@R0,A;输输出出字字形形代代码码MOVR1,#0DDH;指指向向字位位口口MOVA,#20H;从从最最高高位位开开始始LEDO:MOVX@R1,A;输输出出字字位位代代码码ACALLDEYS;调调延延时时子子程程序序RRA;右右移移一一位位SJMPLEDO;循循环环显显示示““8””1、、共阴阴型型8位位动动态态显显示示电电路路DIR4:MOVR2,#10;置置循循环环扫扫描描次次数数MOVDPTR,#7FFFH;置置74377口口地地址址DLP1:ANLP1,#11111000B;第第0位位先先显显示示MOVR0,#30H;置置显显示示字字段段码码首首址址DLP2:MOVA,@R0;读读显显示示字字段段码码MOVX@DPTR,A;输输出出显显示示字字段段码码LCALLDY2ms;调调用用延延时时2ms子子程程序序(参参阅阅例例4.13)INCR0;指指向向下下一一位位字字段段码码INCP1;选选通通下下一一位位显显示示CJNER0,#38H,DLP2;判判8位位扫扫描描显显示示完完否否?未未完完继继续续DJNZR2,DLP1;8位位扫扫描描显显示示完完毕毕,判判10次次循循环环完完否否?CLRA;10次次循循环环完完毕毕,显显示示暗暗MOVX@DPTR,A;RET;子子程程序序返返回回【例例9-5】】按按图图9-7,,试试编编制制循循环环扫扫描描((10次次))显显示示子子程程序序,,已已知知显显示示字字段段码码存存在在以以30H((低低位位))为为首首址址的的8字字节节内内RAM中中。。解::编编程程如如下下::2、、共阳阳型型3位位动动态态显显示示电电路路DIR5:MOVDPTR,#0BFFFH;置置74377地地址址MOVR2,#100;置置循循环环显显示示次次数数DIR50:SETBP1.2;百百位位停停显显示示MOVA,40H;取取个个位位字字段段码码MOVX@DPTR,A;输输出出个个位位字字段段码码CLRP1.0;个个位位显显示示LCALLDY2ms;调调用用延延时时2ms子子程程序序(参参阅阅例例4.13)DIR51:SETBP1.0;个位停显示示MOVA,41H;取十位字段段码MOVX@DPTR,A;输出十位字字段码CLRP1.1;十位显示LCALLDY2ms;延时2msDIR52:SETBP1.1;十位停显示示MOVA,42H;取百位字段段码MOVX@DPTR,A;输出百位字字段码CLRP1.2;百位显示LCALLDY2ms;延时2msDJNZR2,DIR50;判循环显示示结束否?未未完继续ORLP1,#00000111B;3位灭显示示RET;【例9-6】】根据图9-8电路,试试编制3位动动态扫描显示示程序(循环环100次),已知显示示字段码存在在以40H(低位)为首首址的3字节节内RAM中中。解:编程如下下:1、SAA1064引脚功能能五、虚拟I2C总线串行显显示电路①VDD、VEE:电源、接地地端。电源4.5~15V;②P1~P16:段驱动输出出端。分为两两个8位口::P1~P8;;P9~P16。P8、、P16为高高位。口锁存存器具有反相相功能,置1时,端口输输出0。③MX1、MX2:位码驱动端端。静态显示示驱动时,一一片SAA1064可驱驱动二位LED数码管;;动态显示驱驱动时,按图图9-10连连接方式,一一片SAA1064可驱驱动四位LED数码管;;④SDA、SCL:I2C总线数据端端、时钟端;;⑤CEXT:时钟振荡器器外接电容,,典型值2700pF⑥ADR:地址引脚端端。SAA1064引脚脚地址A1、、A0采用ADR模拟电电压比较编址址。当ADR引脚电平为为0、3VDD/8,5VDD/8、VDD时时,相应引脚脚地址A2、、A1、A0分别为000、001、010、011;;2、硬件电路设计计⑴片内寄存器符号COMdata1data2data3data4装载内容控制命令显示段码1显示段码2显示段码3显示段码4片内地址00H01H02H03H04H3、片内可编程功功能⑵控制命令COMCOMD7D6D5D4D3D2D1D000H—C6C5C4C3C2C1C0CO:静动态控控制,C0=1,动态显显示,动态显显示时,data1、data2轮轮流从P8~~P1输出,,data3、data4轮流从P16~P9输出;C1:显示位1、3亮暗选选择,C1=1,选择亮亮;C2:显示位2、4亮暗选选择,C2=1,选择亮亮;C3:测试位,,C3=1,,所有段亮;;C4、C5、C6:驱动电流流控制位,C4、C5、、C6分别为为1时,驱动动电流分别为为3mA、6mA、12mA;C4、C5、C6全为1时时,驱动电流流最大,可达达21mA。。⑶写数据操操作格式SSLAWASADRACOMAdata1Adata2Adata3Adata4AP红色部分由80C51发送,,SAA1064接收;;黑色部分由SAA1064发送,80C51接接收。SLAW为写SAA1064寻址址字节,按图9-10所示连接电电路:SAA1064((1)SLAW=01110000B;SAA1064(2)SLAW=01110110B。。其中0111(D7~4)为SAA1064器器件地址,D3~1为A2A1A0寻址字节,,末位D0为R/W;SADR为片内寄存器器地址;COM为控制命令。。解:VSAA:MOVMTD,#00H;置SAA1064控制命命令寄存器COM片内子子地址MOV31H,#01000111B;置控制命令字字,动态显示示,驱动电流流12mAMOVNUMB,#6;置发送数据数数:SADR+COM+data1~4=6SAA1:MOVRO,#51H;将51H~54H显示符符数据移至32H~35HLCALLMOVB;MOVSLA,#01110000B;置SAA1064(1)写寻址字节节SLAWLCALLWRNB;发送给SAA1064(1)SAA2:MOVR0,#55H;将55H~58H显示符符数据移至32H~35HLCALLMOVB;MOVSLA,#01110110B;置SAA1064(2)寻址字节SLAWLCALLWRNB;发送给SAA1064(2)RET;MOVB:MOVR1,#32H;显示符数据移移至32H~~35H子程程序MOVB1:MOVA,@R0;读出MOV@R1,A;存入INCRO;指向下一读出出单元INCR1;指向下一存入入单元CJNER1,#36H,MOVB1;判4个数据移移完否?未完完继续RET;【例9-7】已已知8位显示示符(共阴编编码)已依次次存入内RAM51H~58H中中,试按图9-10编程程将其输入SAA1064(1),(2)动态态显示,驱动动电流为12mA。设VIIC软件件包已装入ROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均均已按8.3.2软件包包小结中协议议定义。4、程序设计1、按键开关去抖抖动问题§9-2键键盘接口一、键盘接口概述述键盘的抖动时时间一般为5~10ms,抖动现象会引引起CPU对对一次键操作作进行多次处处理,从而可可能产生错误误。⑴硬件去抖动消除抖动不良良后果的方法法:其中RC滤波电路路去抖动电路路简单实用,,效果较好。⑵软件去抖动检测到按键按按下后,执行行延时10ms子程序后再再确认该键是否确实实按下,消除除抖动影响。。2、按键连接方式式⑴独立式按键独立式按键是是每个按键占占用一根I/O端线。

特点点:①各按键相互独独立,电路配配置灵活;②按键数量较多多时,I/O端线耗费较较多,电路结结构繁杂;③软件结构简单单。适用于按键数数量较少的场场合。⑵⑵矩阵式键盘I/O端线分分为行线和列列线,按键跨跨接在行线和和列线上,按按键按下时,,行线与列线线发生短路。特点:①占用I/O端端线较少;②软件结构教复复杂。适用于按键较较多的场合。3、键盘扫描控制制方式⑴程序控制扫描描方式键处理程序固固定在主程序序的某个程序序段。特点:对CPU工工作影响小,,但应考虑键键盘处理程序序的运行间隔隔周期不能太太长,否则会会影响对键输输入响应的及及时性。⑵定时控制扫描描方式利用定时/计计数器每隔一一段时间产生生定时中断,,CPU响应应中断后对键键盘进行扫描描。特点:与程序控制制扫描方式的的区别是,在在扫描间隔时时间内,前者者用CPU工工作程序填充充,后者用定定时/计数器器定时控制。。定时控制扫扫描方式也应应考虑定时时时间不能太长长,否则会影影响对键输入入响应的及时时性。⑶中断控控制方方式中断控控制方方式是是利用用外部部中断断源,,响应应键输输入信信号。。特点:克服服了前前两种种控制制方式式可能能产生生的空空扫描描和不不能及及时响响应键键输入入的缺缺点,,既能能及时时处理理键输输入,,又能能提高高CPU运运行效效率,,但要要占用用一个个宝贵贵的中中断资资源。。1、按键直直接与与I/O口口连接接二、独立式式按键键及其其接口口电路路【例9-8】按按图9-13(a)、(b),试试分别别编制制按键键扫描描子程程序。。解:按按图9-13(a)编程程如下下:KEYA:ORLP1,#07H;置P1.0~~P1.2为输输入态态MOVA,P1;读键键值,键闭闭合相相应位位为0CPLA;取反反,键键闭合合相应应位为为1ANLA,#00000111B;屏蔽蔽高5位,保留留有键键值信信息的的低3位JZGRET;全0,无无键闭闭合,返回回LCALLDY10ms;非全全0,有键键闭合合,延延时10ms,软件件去抖抖动MOVA,P1;重读读键值值,键键闭合合相应应位为为0CPLA;取反反,键键闭合合相应应位为为1ANLA,#00000111B;屏蔽蔽高5位,保留留有键键值信信息的的低3位JZGRET;全0,无无键闭闭合,返回回;非非全0,确确认有有键闭闭合JBAcc.0,KA0;转0#键键功能能程序序JBAcc.1,KA1;转1#键键功能能程序序JBAcc.2,KA2;转2#键键功能能程序序GRET:RETKA0:LCALLWORK0;执行行0#键功功能子子程序序RETKA1:LCALLWORK1;执行行1#键功功能子子程序序RETKA2:LCALLWORK2;执行行2#键功功能子子程序序RET按图9-13(b)编程程如下下:KEYB:ORLP1,#07H;置P1.0~~P1.2为输输入态态MOVA,P1;读键键值,键闭闭合相相应位位为1ANLA,#00000111B;屏蔽蔽高5位,保留留有键键值信信息的的低3位JZGRET;全0,无无键闭闭合,返回回LCALLDY10ms;非全全0,有键键闭合合,延延时10ms,软件件去抖抖动MOVA,P1;重读读键值值,键键闭合合相应应位为为1ANLA,#00000111B;屏蔽蔽高5位,保留留有键键值信信息的的低3位JZGRET;全0,无无键闭闭合,返回回;非非全0,确确认有有键闭闭合JBAcc.0,KB0;转0#键键功能能程序序JBAcc.1,KB1;转1#键键功能能程序序JBAcc.2,KB2;转2#键键功能能程序序GRET:RETKB0:LCALLWORK0;执行行0#键功功能子子程序序RETKB1:LCALLWORK1;执行行1#键功功能子子程序序RETKB2:LCALLWORK2;执行2#键功功能子程程序RET⑴按键与并并行扩展展I/O口连接接2、按键与扩扩展I/O口连连接【例9-9】按按图9-14,,试编制制按键扫扫描子程程序,将将键信号号存入内内RAM30H。解:编程程如下::KEY99:MOVDPTR,#7FFFH;置74373口地址址MOVXA,@DPTR;输入键键信号(“0””有效)MOV30H,A;存键信信号数据据RET;参阅8.2.4,图8-6,,【例8-2】】。⑵按键与串串行扩展展I/O口连接接三、矩阵式键键盘及其其接口电电路【例9-10】】按图9-15及图9-16,试编编制矩阵阵式键盘盘扫描程程序。解解:KEY:MOVP1,#0F0H;行线置置低电平平,列线线置输入入态KEY0:MOVA,P1;读列线线数据CPLA;数据取取反,““1”有有效ANLA,#0F0H;屏蔽行行线,保保留列线线数据MOVR1,A;存列线线数据(R1高高4位)JZGRET;全0,无键按按下,返返回KEY1:MOVP1,#0FH;行线置置输入态态,列线线置低电电平MOVA,P1;读行线线数据CPLA;数据取取反,““1”有有效ANLA,#0FH;屏蔽列列线,保保留行线线数据MOVR2,A;存行线线数据(R2低低4位)JZGRET;全0,无键按按下,返返回JBCF0,WAIT;已有消消抖标志志,转SETBF0;无消抖抖标志,置消抖抖标志LCALLDY10ms;调用10ms延时子子程序(参阅例例4.13),消抖SJMPKEY0;重读行行线列线线数据GRET:RET;WAIT:MOVA,P1;等待按按键释放放CPLA;ANLA,#0FH;JNZWAIT;按键未未释放,继续等等待KEY2:MOVA,R1;取列线线数据(高4位位)MOVR1,#03H;取列线线编号初初值MOVR3,#03H;置循环环数CLRC;KEY3:RLCA;依次左左移入C中JCKEY4;C=1,该列列有键按按下,(列线编编号存R1)DECR1;C=0,无键键按下,修正列列编号DJNZR3,KEY3;判循环环结束否否?未结结束继续续寻找有有键按下下的列线线KEY4:MOVA,R2;取行线数数据(低4位)MOVR2,#00H;置行线编编号初值MOVR3,#03H;置循环数数CLRC;KEY5:RRCA;依次右移移入C中JCKEY6;C=1,该行有键键按下,(行线编号号存R2)INCR2;C=0,无键按下下,修正行行线编号DJNZR3,KEY5;判循环结结束否?未未结束继续续寻找有键键按下的行行线KEY6:MOVA,R2;取行线编编号CLRC;RLCA;行编号××2RLCA;行编号××4ADDA,R1;行编号××4+列编编号=按键键编号KEY7:CLRC;RLCA;按键编号号×2RLCA;按键编号号×4(LCALL+RET共4字字节)MOVDPTR,#TABJ;JMP@A+DPTR;散转,执执行相应键键功能子程程序TABJ:LCALLWORK0;调用执行行0#键功功能子程序序RET;LCALLWORK1;调用执行行1#键功功能子程序序RET;………LCALLWORK15;调用执行行15#键键功能子程程序RET;【例9-11】按图图9-17,试编制制中断方式式键盘扫描描程序,将将键盘序号号存入内RAM30H。ORG0000H;复位地址址LJMPSTAT;转初始化化ORG0003H;中断入口口地址LJMPPINT0;转中断服服务程序ORG0100H;初始化程程序首地址址STAT:MOVSP,#60H;置堆栈指指针SETBIT0;置为边沿沿触发方式式MOVIP,#00000001B;置为高优优先级中断断MOVP1,#00001111B;置P1.0~P1.3置为为输入态,置P1.4~P1.7输出出0SETBEA;CPU开开中SETBEX0;开中LJMPMAIN;转主程序序,并等待待有键按下下时中断解:OGR2000H;中断服务务程序首地地址PINT0:PUSHAcc;保护现场场PUSHPSW;MOVA,P1;读行线(P1.0~P1.3)数据据CPLA;数据取反反,“1””有效ANLA,#0FH;屏蔽列线线,保留行行线数据MOVR2,A;存行线(P1.0~P1.3)数据据(R2低低4位)MOVP1,#0F0H;行线置低低电平,列列线置输入入态MOVA,P1;读列线(P1.4~P1.7)数据据CPLA;数据取反反,“1””有效ANLA,#0F0H;屏蔽行线线,保留列列线数据(A中高4位)MOVR1,#03H;取列线编编号初值MOVR3,#03H;置循环数数CLRC;PINT01:RLCA;依次左移移入C中JCPINT02;C=1,该列有键键按下,(列线编号号存R1)DECR1;C=0,无键按下下,修正列列编号DJNZR3,PINT01;判循环结结束否?未未结束继续续寻找有键键按下列线线PINT02:MOVA,R2;取行线数数据(低4位)MOVR2,#00H;置行线编编号初值MOVR3,#03H;置循环数数PINT03:RRCA;依次右移移入C中JCPINT04;C=1,该行有键键按下,(行线编号号存R2)INCR2;C=0,无键按下下,修正行行线编号DJNZR3,PINT03;判循环结结束否?未未结束继续续寻找有键键按下行线线PINT04:MOVA,R2;取行线编编号CLRC;RLCA;行编号××2RLCA;行编号××4ADDA,R1;行编号××4+列编编号=按键键编号MOV30H,A;存按键编编号POPPSW;POPAcc;RETI;§9-3A/D转换接口口电路一、A/D转换换的基本概概念A/D转换换的功能是是把模拟量量电压转换换为N位数数字量。设D为N位位二进制数数字量,UA为电压压模拟量,,UREF为参考电电压,无论论A/D或或D/A,,其转换关关系为:UA=D×UREF/2N(其中:D=D0×20+D1×21+…+DN-1×2N-1)1、A/D转换换器的主要要性能指标标:⑴转换精度。转换精度度通常用分分辨率和量量化误差来来描述。①分辨率。分辨率=UREF/2N表示输出数数字量变化化一个相邻邻数码所需需输入模拟拟电压的变变化量。N为A/D转换的位位数,N越越大,分辨辨率越高,习惯上分分辨率常以以A/D转转换位数N表示。②量化误差。量化误差差是指零点点和满度校校准后,在在整个转换换范围内的的最大误差差。⑵转换时间。指A/D转换器完完成一次A/D转换换所需时间间。转换时时间越短,,适应输入入信号快速速变化能力力越强。2、A/D转换换器分类A/D转换换器分类::

按转换原理形形式可分为逐次次逼近式、、双积分式式和V/F变换式;;按信号传输形形式可分为并行行A/D和和串行A/D。二、并行A/DADC0809及其其接口电路路1、引脚功能和和典型连接接电路⑴IN0~IN7:8路模拟信信号输入端端。⑵C、B、A:8路模拟信信号转换选选择端。与低8位地地址中A0~A2连连接。由A0~A2地址000~111选择IN0~IN7八路路A/D通通道。⑶CLK:外部时钟输输入端。时钟频率高高,A/D转换速度度快。允许许范围为10~1280KHz。通常由80C51ALE端端直接或分分频后与0809CLK端端相连接。。⑷D0~D7:数字量输出出端。⑸OE:A/D转换换结果输出出允许控制制端。OE=1,,允许将A/D转换换结果从D0~D7端输出。。通常由80C51的端与0809片片选端(例例如P2.0)通过过或非门与与0809OE端端相连接。。⑹ALE:地址锁存允允许信号输输入端。0809ALE信信号有效时时将当前转转换的通道道地址锁存存。⑺START:启动A/D转换信号号输入端。当START端输入入一个正脉脉冲时,立立即启动0809进进行A/D转换。START端与ALE端连在在一起,由由80C51WR与与0809片选端((例如P2.0)通通过或非门门相连。⑻EOC:A/D转转换结束信信号输出端端,高电平平有效。⑼UREF(+)、UREF(-):正负基准电电压输入端端。⑽Vcc:正电源电压压(+5V))。GND:接地端。2、ADC0809应应用实例⑴中断方式【例9-12】按按图9-20,用中中断方式对对8路模拟拟信号依次次A/D转转换一次,,并把结果果存入以30H为首首址的内RAM中,,试编制程程序。解:ORG0000H;复位地址址LJMPSTAT;转初始化化程序ORG0013H;中断服务务子程序入入口地址LJMPPINT1;中断,转转中断服务务子程序;ORG0100H;初始化程程序首地址址STAT:MOVR1,#30H;置数据区区首址MOVR7,#8;置通道数数SETBIT1;置边沿触触发方式SETBEX1;开中SETBEA;CPU开开中MOVDPTR,#0FEF8H;置0809通道0地址MOVX@DPTR,A;启动0通通道A/DLJMPMAIN;转主程序序,并等待待A/D中中断ORG0200H;中断服务务子程序首首地址PINT1:PUSHAcc;保护现场场PUSHPSW;MOVXA,@DPTR;读A/D值MOV@R1,A;存A/D值INCDPTR;修正通道道地址INCR1;修正数据据区地址MOVX@DPTR,A;启动下一一通道A/DDJNZR7,GORETI;判8路采采集完否?未完继续续CLREX1;8路采集集已完,关关中GORETI:POPPSW;恢复现场场POPAcc;RETI;中断返回回⑵查询方式工作在查询询方式时,0809EOC端可不必必通过反相相器与或相相连,直接接与80C51P1口或P3口中任任一端线相相连。【例9-13】图9-20中,用用P1.0直直接与0809EOC端相连,试试用查询方式式编制程序,,对8路模拟拟信号依次A/D转换一一次,并把结结果存入以40H为首址址的内RAM中。解:MAIN:MOVR1,#40H;置数据区首首址MOVR7,#8;置通道数SETBP1.0;置P1.0输入态MOVDPTR,#0FEF8H;置0809通道0地址址LOOP:MOVX@DPTR,A;启动A/DJNBP1.0,$;查询A/D转换结束否否?未完继续续查询等待MOVXA,@DPTR;A/D已结结束,读A/D值MOV@R1,A;存A/D值值INCDPTR;修改通道地地址INCR1;修改数据区区地址DJNZR7,LOOP;判8路采集集完否?未完完继续RET;8路采集完完毕,返回⑶延时等待方式式工作在延时等等待方式时,0809EOC端可可不必与80C51相连连,是根据时时钟频率计算算出A/D转转换时间,略略微延长后直直接读A/D转换值。【例9-14】图9-20中,0809EOC端开路路,fosc=6MHz,试用延时时等待方式编编制程序,对对8路模拟信信号依次A/D转换一次次,并把结果果存入以50H为首址的的内RAM中中。解:编程如下下:MAIN:MOVR1,#50H;置数据区首首址MOVR7,#8;置通道数MOVDPTR,#0FEF8H;置0809通道0地址址LOOP:MOVX@DPTR,A;启动A/DMOVR6,#17;DJNZR6,$;延时68S:2机周××17=34机周,2S×34=68SMOVXA,@DPTR;读A/D值值MOV@R1,A;存A/D值值INCDPTR;修正通道地地址INCR1;修正数据区区地址DJNZR7,LOOP;判8路采集集完否?未完完继续RET;8路采集完完毕,返回三、串行A/DADC0832及其接口口电路ADC0832是8位位串行A/D转换器;转换速度较高高(250KHz时转换换时间32s);单电源供电,,功耗低(15mw)。。1、引脚功能VDD、VSS:电源接地端端,VDD同时兼任UREF;CS:片选端,低低电平有效;;DI:数据信号输输入端;DO:数据信号输输出端;CLK:时钟信号输输入端,要求求低于600KHz;CH0、CH1:模拟信号输输入端(双通通道);2、典型应用电路路P1.0片选CS;TXD发送时钟信号号输入ADC0832CLK;RXD与DI、DO端连接在一一起。编码通道选择CH0CH100+-01-+10+11+表9-33、串行A/D转转换工作时序序工作时序分为为二个阶段::⑴起始和通通道配置,由由CPU发送送,从ADC0832DI端输入入;⑵A/D转转换数据串行行输出,由ADC0832从DO端输出,CPU接收。。4、软件编程【例9-15】按图9-21(b))电路,试编编制程序,将将CH0、CH1通道输输入的模拟信信号A/D转转换,分别存存入30H31H中。解:AD0832:MOVSCON,#00H;置串口方式式0,禁止接接收CLRES;串口禁中MOVR0,#30H;置A/D数数据存储区首首址CLRP1.0;片选0832MOVA,#06H;置CH0通通道配置ADC0:MOVSBUF,A;启动A/DADC1:JNBTI,ADC1;串行发送启启动及通道配配置信号CLRTI;清发送中断断标志SETBREN;允许(启动动)串行接收收ADC2:JNBRI,ADC2;接收第一字字节CLRRI;清接收中断断标志,同时时启动接收第第二字节MOVA,SBUF;读第一字节节数据MOVB,A;暂存说明:①接收第一一字节的8位位数据为(注注意先接收低低位D4)::②清串行接接收中断标志志后,启动串串行接收第二二字节,其数数据为:③组合后的的8位数据为为:④高低4位位互换后的8位数据为::ADC3:JNBRI,ADC3;接收第二字字节CLRRI;清接收中断断标志MOVA,SBUF;读第二字节节数据ANLA,#0FH;第二字节屏屏蔽高4位ANLB,#0FOH;第一字节屏屏蔽低4位ORLA,B;组合SWAPA;高低4位互互换,组成正正确的A/D数据MOV@R0,A;存A/D数数据INCR0;指向下一存存储单元MOVA,#0EH;置CH1通通道配置CJNER0,#32H,ADC0;判两通道A/D完毕否否?未完继续续CLRREN;两通道A/D完毕,禁禁止接收SETBP1.0;清0832片片选RET;D3D2D1D0D1D2D3D4××××D7D6D5D4D3D2D1D0D7D6D5D4D7D6D5D4D3D2D1D0四、I2C串行行A/D典典型应应用电电路I2C串行行A/D芯片PCF8591,同时具具有A/D、D/A转换换功能能。1、PCF8591引脚脚功能能SDA、SCL:I2C总线线数据据线、、时钟钟线;;A2、A1、A0:引脚脚地址址输入入端;;AIN0~~AIN3:模拟拟信号号输入入端,,OSC:外部部时钟钟输入入端,,内部部时钟钟输出出端;;EXT:内外外部时时钟选选择端端,EXT=0时选选择内内部时时钟;;VDD、VSS:电源源、接接地端端;AGND:模拟拟信号号地;;UREF:基准准电压压输入入端;;AOUT:D/A转转换模模拟量量输出出端;;该芯片片既可可用于于A/D转转换((模拟拟信号号从AIN0~~AIN3输入入),,又可可用于于D/A转转换((D/A转转换模模拟量量从AOUT输出)),器器件地地址为为1001,若若A2A1A0接地地,D/A转换换写寻寻址字字节SLAW=90H,,A/D转转换读读寻址址字节节SLAR=91H。。2、硬件电电路设设计3、片内可可编程程功能能⑴控制命命令字字PCF8591内部部有一一个控控制寄寄存器器,用用来存存放控控制命命令,,其格格式如如下::COMD7D6D5D4D3D2D1D0D1、D0:A/D通道道编号号00:通道道0;;01:通通道1;10:通道道2;;11:通通道3;D2:自动增增量选选择D2=1时时,A/D转换换将按按通道道0~~3依依次自自动转转换;;D3、D7:必须须为0;D5、D4:模拟量量输入入方式式选择择位:00:输入方方式0(四路单单端输输入);01:输入方方式1(三路差差分输输入);10:输入方方式2(二路单单端一一路差差分输输入);11:输入方方式3(二路差差分输输入)。D6:模拟输输出允允许。D6=1,模模拟量量输出出有效效;①输输入方方式0(四四路单单端输输入)):ANI0————通通道0(单单端输输入))ANI1————通通道1(单单端输输入))ANI2————通通道2(单单端输输入))ANI3————通通道3(单单端输输入))②输输入方方式1(三三路差差分输输入)):③输输入方方式2(二二路单单端一一路差差分输输入)):④输输入方方式3(二二路差差分输输入)):⑵ADC数据据操作作格式式SSLAWACOMASSLARAData0AData1A发出控控制命命令((写操操作))A/D转换换(读读操作作)其中红红色部部分由由80C51发发送,,PCF8591接接收;;黑色部部分由由PCF8591发发送,,80C51接接收;;4、软件编编程【例9-16】】按按图9-23((b))编程程将AIN0~~AIN34个通通道的的模拟拟信号号A/D转转换后后,依依次存存入以以50H为为首址址的内内RAM中中。设设VIIC软件件包已已装入入ROM,,VSDA、VSCL、、SLA、、NUMB、MTD、MRD均已已按8.3.2软软件包包小结结中协协议定定义。。解:VADC:MOVSLA,#90H;置发发送寻寻址字字节MOVMTD,#00000100B;置A/D转换换控制制命令令,通通道自自动增增量MOVNUMB,#1;置发发送字字节数数LCALLWRNB;发送送控制制命令令字MOVR0,#50H;置A/D数据据区首首址VADC0:MOVSLA,#91H;置置接接收收寻寻址址字字节节MOVNUMB,#2;置置接接收收字字节节数数LCALLRDNB;读读A/D转转换换数数据据MOV@R0,41H;存存A/D转转换换数数据据(存存在在50H~~53H)INCR0;修修改改A/D数数据据区区地地址址CJNER0,#54H,VADC0;判判4通通道道A/D完完成成否否?未未完完继继续续RET;§9-4D/A转转换换接接口口电电路路一、、D/A转转换换的的基基本本概概念念1、、D/A转转换换的的基基本本概概念念D/A转转换换的的基基本本原原理理是是应应用用电电阻阻解解码码网网络络,,将将N位位数数字字量量逐逐位位转转换换为为模模拟拟量量并并求求和和,,从从而而实实现现将将N位位数数字字量量转转换换为为相相应应的的模模拟拟量量。。设D为为N位位二二进进制制数数字字量量,,UA为电电压压模模拟拟量量,,UREF为参参考考电电压压,,无无论论A/D或或D/A,,其其转转换换关关系系为为::UA=D××UREF/2N(其其中中::D=D0×20+D1×21+……+DN-1×2N-1)2、、D/A转转换换器器的的主主要要性性能能指指标标⑴分辨辨率率:相对对分分辨辨率率=1/2N,N越越大大,,分分辨辨率率越越高高。。⑵线性性度度⑶转换换精精度度⑷建立立时时间间⑸温度度系系数数二、、DAC0832及及其其接接口口电电路路DAC0832是是8位位D/A芯芯片片,,由由美美国国国国家家半半导导体体公公司司生生产产,,是是目目前前国国内内应应用用最最广广的的8位位D/A芯芯片片((请请特特别别注注意意ADC0832与与DAC0832的的区区别别))。。1、、结构构和和引引脚脚功功能能①DI0~~DI7:8位位数数据据输输入入端端。。②ILE:输输入入数数据据允允许许锁锁存存信信号号,,高高电电平平有有效效。。③CS:片片选选端端,,低低电电平平有有效效。。④WR1:输输入入寄寄存存器器写写选选通通信信号号,,低低电电平平有有效效。。WR2:DAC寄寄存存器器写写选选通通信信号号,,低低电电平平有有效效。。⑤XFER:数数据据传传送送信信号号,,低低电电平平有有效效。。⑥IOUT1、IOUT2:电电流流输输出出端端。。⑦RFB:反反馈馈电电流流输输入入端端。。⑧UREF:基基准准电电压压输输入入端端。。⑨Vcc:正正电电源源端端;;AGND:模模拟拟地地;;DGND:数数字字地地。。2、、DAC0832工工作作方方式式用软软件件指指令令控控制制这这5个个控控制制端端::ILE、、CS、、WR1、、WR2、、XFER,,可可实实现现三三种种工工作作方方式式::⑴直通通工工作作方方式式:5个个控控制制端端均均有有效效,,直直接接D/A;;⑵单缓缓冲冲工工作作方方式式:5个个控控制制端端一一次次选选通通;;⑶双缓缓冲冲工工作作方方式式:5个个控控制制端端分分二二次次选选通通。。三、、DAC0832应应用用实实例例1、、单单缓缓冲冲方方式式【例例9-17】】电电路路按按图图9-27,,要要求求输输出出锯锯齿齿波波如如图图9-29((a))所所示示,,幅幅度度为为UREF/2=2.5V。。解::程程序序如如下下::START:MOVDPTR,#7FFFH;置置DAC0832地地址址;LOOP1:MOVR7,#80H;置置锯锯齿齿波波幅幅值值;1机机周周LOOP2:MOVA,R7;读读输输出出值值;1机机周周MOVX@DPTR,A;输输出出;2机机周周DJNZR7,LOOP2;判判周周期期结结束束否否?2机机周周SJMPLOOP1;循循环环输输出出;2机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论