您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 单片机常用外围设备接口电路
第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口:一个送段代码(字形状),地址是0
本文标题:单片机常用外围设备接口电路
链接地址:https://www.777doc.com/doc-1309850 .html