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

下载本文档

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

文档简介

1、第第9 9章章 常用外围设备接口电路常用外围设备接口电路 本章要点本章要点: LEDLED数码管及编码方式数码管及编码方式 静态显示方式及其典型应用电路静态显示方式及其典型应用电路 动态显示方式及其典型应用电路动态显示方式及其典型应用电路 虚拟虚拟I I2 2C C总线串行显示电路总线串行显示电路 键盘去抖动和连接、控制方式键盘去抖动和连接、控制方式 独立式按键及其接口电路独立式按键及其接口电路 矩阵式键盘及其接口电路矩阵式键盘及其接口电路 并行并行A/D ADC0809A/D ADC0809及其接口电路及其接口电路 串行串行A/D ADC0832A/D ADC0832及其接口电路及其接口电路

2、 I I2 2C C串行串行A/DA/D典型应用电路典型应用电路 DAC0832DAC0832及其接口电路及其接口电路 I I2 2C C串行串行D/AD/A典型应用电路典型应用电路 开关量驱动输出接口电路开关量驱动输出接口电路 0 0 开关量驱动输出接口电路开关量驱动输出接口电路 一、一、驱动发光二极管驱动发光二极管 二、二、 驱动继电器驱动继电器 三、三、光电隔离接口光电隔离接口 LED输出电路 1 LED1 LED数码管显示接口数码管显示接口 一、一、LEDLED数码管数码管 LEDLED显示器的扩展显示器的扩展( (结构结构) ) LEDLED数码管的数码管的结构结构:共阳与共阴共阳与

3、共阴 单片机系统扩展单片机系统扩展LEDLED数码管时数码管时多用多用共阳共阳LEDLED: : 共阳数码管每个段笔画是用低电平共阳数码管每个段笔画是用低电平(“0”)(“0”)点亮的点亮的, ,要求驱要求驱 动功率很小;而共阴数码管段笔画是用高电平动功率很小;而共阴数码管段笔画是用高电平(“0”)(“0”)点亮点亮 的,要求驱动功率较大。的,要求驱动功率较大。 通常每个段笔画要串一个数百欧姆的通常每个段笔画要串一个数百欧姆的降压电阻降压电阻。 公共公共阳阳极极 h g f e d c b ah g f e d c b a a a b b c c d d g g e e f f h h 公共公

4、共阴阴极极 h g f e d c b ah g f e d c b a a a b b c c d d g g e e f f h h h g f a h g f a 高电平点亮高电平点亮 低电平点亮低电平点亮 接高电平接高电平 接地接地 LEDLED数码管的软件译码数码管的软件译码 八段八段LEDLED数码管数码管段代码编码表段代码编码表( (连线不同可有多种表连线不同可有多种表):): 公共阳极公共阳极 h g f e d c b ah g f e d c b a a a b b c c d d g g e e f f h h 公共阴极公共阴极 h g f e d c b ah g f

5、e d c b a a a b b c c d d g g e e f f h h h g f a h g f a 高电平点亮高电平点亮 低电平点亮低电平点亮 接高电平接高电平 接地接地 字形字形0123456789黑黑 共阳共阳0C00F90A40B09992820F880900FF 共阴共阴3F065B4F666D7D077F6F00 LEDLED数码管分类:数码管分类: 按按其内部结构可分为其内部结构可分为共阴型共阴型和和共阳型共阳型; 按按其外形尺寸有多种形式,使用较多的其外形尺寸有多种形式,使用较多的 是是0.50.5和和0.80.8; 按按显示颜色也有多种形式,主要有显示颜色也有多

6、种形式,主要有红色红色 和和绿色绿色; 正向压降一般为正向压降一般为1.51.52 2V V,额定电流为,额定电流为 1010mAmA,最大电流为,最大电流为4040mAmA。静态显示静态显示时取时取1010mAmA 为宜,为宜,动态扫描显示动态扫描显示,可加大脉冲电流,但,可加大脉冲电流,但 一般不超过一般不超过4040mAmA。 按按亮度强弱可分为亮度强弱可分为超亮超亮、高亮高亮和和普亮普亮。 二、二、LEDLED数码管编码方式数码管编码方式 表表9-1 9-1 共阴和共阳共阴和共阳LEDLED数码管几种八段编码表数码管几种八段编码表 显示显示 数字数字 共阴顺序小数点暗共阴顺序小数点暗

7、共阴逆序小数点暗共阴逆序小数点暗 共阳顺序共阳顺序 小数点亮小数点亮 共阳顺序共阳顺序 小数点暗小数点暗 DpDp g f e d c b a g f e d c b a 1616进制进制 a b c d e f g Dpa b c d e f g Dp1616进制进制 0 00 0 1 1 1 1 1 10 0 1 1 1 1 1 13FH3FH1 1 1 1 1 1 0 01 1 1 1 1 1 0 0FCHFCH4040H HC0HC0H 1 10 0 0 0 0 1 1 00 0 0 0 0 1 1 006H06H0 1 1 0 0 0 0 00 1 1 0 0 0 0 060H60H

8、79H79HF9HF9H 2 20 1 0 1 1 0 1 10 1 0 1 1 0 1 15BH5BH1 1 0 1 1 0 1 01 1 0 1 1 0 1 0DAHDAH24H24HA4HA4H 3 30 1 0 0 1 1 1 10 1 0 0 1 1 1 14FH4FH1 1 1 1 0 0 1 01 1 1 1 0 0 1 0F2HF2H30H30HB0HB0H 4 40 1 1 0 0 1 1 00 1 1 0 0 1 1 066H66H0 1 1 0 0 1 1 00 1 1 0 0 1 1 066H66H19H19H99H99H 5 50 1 1 0 1 1 0 10 1 1

9、 0 1 1 0 16DH6DH1 0 1 1 0 1 1 01 0 1 1 0 1 1 0B6HB6H12H12H92H92H 6 60 1 1 1 1 1 0 10 1 1 1 1 1 0 17DH7DH1 0 1 1 1 1 1 01 0 1 1 1 1 1 0BEHBEH02H02H82H82H 7 70 0 0 0 0 1 1 10 0 0 0 0 1 1 107H07H1 1 1 0 0 0 0 01 1 1 0 0 0 0 0E0HE0H78H78HF8HF8H 8 80 1 1 1 1 1 1 10 1 1 1 1 1 1 17FH7FH1 1 1 1 1 1 1 01 1 1

10、 1 1 1 1 0FEHFEH00H00H80H80H 9 90 1 1 0 1 1 1 10 1 1 0 1 1 1 16FH6FH1 1 1 1 0 1 1 01 1 1 1 0 1 1 0F6HF6H10H10H90H90H 【例【例9-19-1】已知显示数存在内】已知显示数存在内RAM 30HRAM 30H(高位)、(高位)、 31H31H中,试将其转换为中,试将其转换为5 5位共阴字段码(顺序),位共阴字段码(顺序), 存在以存在以30H30H(高位)为首址的内(高位)为首址的内RAMRAM中。中。 从显示数中分离出显示的每一位数字从显示数中分离出显示的每一位数字 方法是将显示数除

11、以十进制的权方法是将显示数除以十进制的权 显示数显示数转换转换为显示字段码的为显示字段码的步骤步骤: 将分离出的显示数字转换为显示字段将分离出的显示数字转换为显示字段码码 方法是查表方法是查表 SPRT: MOV R0,#30H SPRT: MOV R0,#30H ; ;置万位置万位BCDBCD码间址码间址 MOV A,30H MOV A,30H ; ;置被除数置被除数 MOV B,31H MOV B,31H ; ; MOV R6,#27H MOV R6,#27H ; ;置除数置除数10000 = 271010000 = 2710H H MOV R5,#10H MOV R5,#10H ; ;

12、LCALL SUM LCALL SUM ; ;除以除以10000,10000,万位商存万位商存30H,30H,余数存余数存A A、B B MOV R6,#03H MOV R6,#03H ; ;置除数置除数1000 = 031000 = 03E8HE8H MOV R5,#0E8H ; MOV R5,#0E8H ; INC R0 INC R0 ; ;指向千位商间址指向千位商间址(31(31H)H) LCALL SUM LCALL SUM ; ;除以除以1000,1000,千位商存千位商存31H,31H,余数存余数存A A、B B MOV R6,#0 MOV R6,#0 ; ;置除数置除数10010

13、0 MOV R5,#100 MOV R5,#100 ; ; INC R0 INC R0 ; ;指向百位商间址指向百位商间址(32(32H) H) LCALL SUM LCALL SUM ; ;除以除以100,100,百位商存百位商存32H,32H,余数存余数存A(B=0)A(B=0) MOV B,#10 MOV B,#10 ; ;置除数置除数1010 DIV AB DIV AB ; ;除以除以1010 INC R0 INC R0 ; ;指向十位商间址指向十位商间址(33H)(33H) MOV R0,A MOV R0,A ; ;十位商存十位商存33H33H XCH A,B XCH A,B ; ;

14、读个位数读个位数 INC R0 INC R0 ; ;指向个位间址指向个位间址(34H)(34H) MOV R0,A MOV R0,A ; ;个位存个位存34H34H RET RET ; ; 解:连续调用下列二个子程序即可。解:连续调用下列二个子程序即可。 分离显示数字子程序分离显示数字子程序 说明说明:SUMSUM是是1616位除以位除以1616位子程序位子程序:(A:(A、B)B)(R6(R6、R5)=R5)=商商R0,R0,余数余数(A(A、B)B)。( (参阅例参阅例4-9)4-9) 转换显示字段码子程序转换显示字段码子程序 CHAG: MOV DPTR,#TAB CHAG: MOV D

15、PTR,#TAB ; ;置共阴字段码表首址置共阴字段码表首址 MOV R0,#30H MOV R0,#30H ; ;置显示数据区首址置显示数据区首址 CGLP: MOV A,R0 CGLP: MOV A,R0 ; ;取显示数字取显示数字 MOVC A,A+DPTR MOVC A,A+DPTR ; ;读相应显示字段码读相应显示字段码 MOV R0,A MOV R0,A ; ;存显示字段码存显示字段码 INC R0 INC R0 ; ;指向下一显示数字指向下一显示数字 CJNE R0,#35H,CGLP CJNE R0,#35H,CGLP ; ;判判5 5个显示数字转换完否个显示数字转换完否? ?

16、未完继续未完继续 RET RET ; ;转换完毕转换完毕, ,结束结束 TAB: DB 3FH,06H,5BH,4FH,66H TAB: DB 3FH,06H,5BH,4FH,66H ; ;共阴字段码表共阴字段码表 DB 6DH,7DH,07H,7FH,6FH DB 6DH,7DH,07H,7FH,6FH ; ; 三、三、静态显示方式及其典型应用电路静态显示方式及其典型应用电路 动态显示方式动态显示方式,在某一瞬时显示一位,依次循环,在某一瞬时显示一位,依次循环 扫描,轮流显示,由于人的视觉滞留效应,人们看扫描,轮流显示,由于人的视觉滞留效应,人们看 到的是多位同时稳定显示。到的是多位同时稳定

17、显示。 特点特点:占用:占用I/OI/O端线少,电路较简单,编程较复端线少,电路较简单,编程较复 杂,杂,CPUCPU要定时扫描刷新显示。一般适用于显示位数要定时扫描刷新显示。一般适用于显示位数 较多的场合。较多的场合。 LEDLED数码管显示分类:静态显示方式和动态显示方式。数码管显示分类:静态显示方式和动态显示方式。 静态显示方式静态显示方式,每一位字段码分别从,每一位字段码分别从I/OI/O控制口输控制口输 出,保持不变直至出,保持不变直至CPUCPU刷新。刷新。 特点特点:编程较简单,但占用:编程较简单,但占用I/OI/O口线多,一般适用口线多,一般适用 于显示位数较少的场合。于显示位

18、数较少的场合。 LEDLED显示器的扩展显示器的扩展( (显示方式显示方式) ) LEDLED数码管的数码管的显示方式显示方式:静态与动态静态与动态 动态显示特点动态显示特点: : 有闪烁有闪烁,用,用元器件少元器件少,占占I/OI/O线少线少,必须扫描必须扫描,花费花费CPUCPU时间时间, 编程复杂。编程复杂。( (有多个有多个LEDLED时尤为突出)时尤为突出) 静态显示特点静态显示特点: : 无闪烁无闪烁,用,用元器件多元器件多,占占I/OI/O线多线多,无须扫描无须扫描,节省节省CPUCPU时间时间, 编程简单。编程简单。 静态显示静态显示: : 各数码管在显示过程中各数码管在显示过

19、程中持续持续得到送显信号,与各数码管接口得到送显信号,与各数码管接口 的的I/OI/O口线口线是是专用专用的。的。 动态显示动态显示: : 各数码管在显示过程中各数码管在显示过程中轮流轮流得到送显信号,与各数码管接口得到送显信号,与各数码管接口 的的I/OI/O口线口线是是共用共用的。的。 1 1、并行扩展静态显示电路并行扩展静态显示电路 【例【例9-29-2】按图】按图9-39-3编制显示子程序,显示数(编制显示子程序,显示数(255255)存在)存在 内内RAM 30HRAM 30H中。中。 解:解: DIR1: MOV A,30H DIR1: MOV A,30H ; ;读显示数读显示数

20、MOV B,#100 MOV B,#100 ; ;置除数置除数 DIV AB DIV AB ; ;产生百位显示数字产生百位显示数字 MOVC A,A+DPTR MOVC A,A+DPTR ; ;读百位显示符读百位显示符 MOV DPTR,#0DFFFH MOV DPTR,#0DFFFH ; ;置置74377(74377(百位百位) )地址地址 MOVX DPTR,A MOVX DPTR,A ; ;输出百位显示符输出百位显示符 MOV A,B MOV A,B ; ;读余数读余数 MOV B,#10 MOV B,#10 ; ;置除数置除数 DIV AB DIV AB ; ;产生十位显示数字产生十位

21、显示数字 MOV DPTR,#TAB MOV DPTR,#TAB ; ;置共阳字段码表首址置共阳字段码表首址 MOVC A,A+DPTR MOVC A,A+DPTR ; ;读十位显示符读十位显示符 MOV DPTR,#0BFFFH MOV DPTR,#0BFFFH ; ;置置74377(74377(十位十位) )地址地址 MOVX DPTR,A MOVX DPTR,A ; ;输出十位显示符输出十位显示符 MOV A,B MOV A,B ; ;读个位显示数字读个位显示数字 MOV DPTR,#TAB MOV DPTR,#TAB ; ;置共阳字段码表首址置共阳字段码表首址 MOVC A,A+DPT

22、R MOVC A,A+DPTR ; ;读个位显示符读个位显示符 MOV DPTR,#7FFFH MOV DPTR,#7FFFH ; ;置置74377(74377(个位个位) )地址地址 MOVXMOVX DPTR,A DPTR,A ; ;输出个位显示符输出个位显示符 RET RET ; ; TAB: DB 0C0H,0F9H,0A4H,0B0H,99HTAB: DB 0C0H,0F9H,0A4H,0B0H,99H; ;共阳字段码表共阳字段码表 DB 92H,82H,0F8H,80H,90H;DB 92H,82H,0F8H,80H,90H; 2、串行串行扩展静态显示电路扩展静态显示电路 DIR2

23、: MOV SCON,#00H DIR2: MOV SCON,#00H ; ;置串口方式置串口方式0 0 CLR ES CLR ES ; ;串口禁中串口禁中 SETB P1.0 SETB P1.0 ;“;“与与”门开门开, ,允许允许TXDTXD发移位脉冲发移位脉冲 MOV SBUF,30H MOV SBUF,30H ; ;串行输出个位显示字段码串行输出个位显示字段码 JNB TI,$ JNB TI,$ ; ;等待串行发送完毕等待串行发送完毕 CLR TI CLR TI ; ;清串行中断标志清串行中断标志 MOV SBUF,31H MOV SBUF,31H ; ;串行输出十位显示字段码串行输出

24、十位显示字段码 JNB TI,$ JNB TI,$ ; ;等待串行发送完毕等待串行发送完毕 CLR TI CLR TI ; ;清串行中断标志清串行中断标志 MOV SBUF,32H MOV SBUF,32H ; ;串行输出百位显示字段码串行输出百位显示字段码 JNB TI,$ JNB TI,$ ; ;等待串行发送完毕等待串行发送完毕 CLR TI CLR TI ; ;清串行中断标志清串行中断标志 CLR P1.0 CLR P1.0 ;“;“与与”门关门关, ,禁止禁止TXDTXD发移位脉冲发移位脉冲 RET RET ; ; 【例例9-39-3】按图】按图9-49-4编制显示子程序,显示字段码已

25、分别存编制显示子程序,显示字段码已分别存 在在32H32H30H30H内内RAMRAM中。中。 解:解: 要求:要求:根据上图编写通过串行口和根据上图编写通过串行口和74LS16474LS164驱动驱动共共 阳阳LEDLED数码管数码管查表显示的子程序。查表显示的子程序。 条件:条件:系统有系统有6 6个个LEDLED数码管数码管, ,待显数据待显数据(00H09H)(00H09H) 已放在已放在3535H30HH30H单元中单元中( (分别对应分别对应十万位十万位个位个位) ), DSPLYDSPLY:MOV DPTR, #TABLE :MOV DPTR, #TABLE ; ;共阳共阳LED

26、LED数码管译码数码管译码表首址表首址 MOV R0MOV R0,#30H #30H ; ;待显数据缓冲区的待显数据缓冲区的个位个位地址地址 REDOREDO:MOV AMOV A, R0 R0 ; ;通过通过R0R0实现寄存器实现寄存器间接寻址间接寻址 MOVC A, A+DPTR MOVC A, A+DPTR ; ;查表查表 MOV SBUF, A MOV SBUF, A ; ;经串行口经串行口发送发送到到7474LS164LS164 JNB TI, $ JNB TI, $ ; ;查询查询送完一个字节的第送完一个字节的第8 8位?位? CLR TI CLR TI ; ;为下一字节发送为下一

27、字节发送作准备作准备 INC R0 INC R0 ;R0;R0指向下一个指向下一个数据缓冲单元数据缓冲单元 CJNE R0CJNE R0,#36H#36H,REDO REDO ; ;判断判断是否发完是否发完6 6个数?个数? RET RET ; ;发完发完6 6个数就个数就返回返回 TABLETABLE:DB 0C0H,0F9H,0A4H,0B0H,99H DB 0C0H,0F9H,0A4H,0B0H,99H ; ;共阳共阳LEDLED译码表译码表 DB 92H, 82H, 0F8H, 80H,90HDB 92H, 82H, 0F8H, 80H,90H 3 3、BCDBCD码输出静态显示电路码

28、输出静态显示电路 CD4511CD4511是是“BCDBCD码码 七段共阴译码七段共阴译码/ / 驱动驱动”IC; IC; 4511是是 4线线-7段锁存段锁存/译码译码/ 驱动电路,能将驱动电路,能将 BCD码译成码译成7段显段显 示符输出。图中:示符输出。图中: 4511 ABCD为为09 二进制数输入端二进制数输入端(A 是低位是低位),abcdefgabcdefg 为显示段码输出端,为显示段码输出端, LELE为输入信号锁存为输入信号锁存 控制控制( (低电平有效低电平有效) ), 数码管为共阴数码数码管为共阴数码 管。管。 利用利用45114511实现静态显示与一般静态显示电路实现静

29、态显示与一般静态显示电路 不同,不同,一是一是节省节省I I0 0端线,段码输出只需端线,段码输出只需4 4根;根;二二 是是不需专用驱动电路,可直接输出;不需专用驱动电路,可直接输出;三是三是不需译不需译 码,直接输出二进制数,编程简单;码,直接输出二进制数,编程简单;缺点是缺点是只能只能 显示数字,不能显示各种符号。显示数字,不能显示各种符号。 解:编程如下:解:编程如下: DIR3: MOV P1,#111DIR3: MOV P1,#1110 00000B 0000B ; ;选通个位选通个位 ORL P1,30H ORL P1,30H ; ;输出个位显示数输出个位显示数 MOV P1,#

30、11MOV P1,#110 010000B 10000B ; ;选通十位选通十位 ORL P1,31H ORL P1,31H ; ;输出十位显示数输出十位显示数 MOV P1,#1MOV P1,#10 0110000B 110000B ; ;选通百位选通百位 ORL P1,32H ORL P1,32H ; ;输出百位显示数输出百位显示数 RET RET ; ; 【例【例9-49-4】按图】按图9-59-5试编制显示子程序(小数点固试编制显示子程序(小数点固 定在第二位),已知显示数存在内定在第二位),已知显示数存在内RAM 30HRAM 30H32H32H 中。中。 动态显示电路动态显示电路

31、连结形式:连结形式: 显示各位的所有显示各位的所有 相同字段线连在一起,相同字段线连在一起, 共共8 8段,由一个段,由一个8 8位位 I/OI/O口控制;口控制; 每一位的公共端每一位的公共端 (共阳或共阴(共阳或共阴COMCOM) 由另一个由另一个I/OI/O口控制。口控制。 四、四、动态显示方式动态显示方式 及其典型应用电路及其典型应用电路 LEDLED数码管数码管动态动态显示举例显示举例 P1.5 P1.5 P1.4P1.4 P1.3P1.3 P1.2P1.2 P1.2P1.2 P1.0P1.0 P0.7 P0.7 P0.6 P0.6 P0.5 P0.5 P0.4 P0.4 P0.3

32、P0.3 P0.2 P0.2 P0.1 P0.1 P0.0P0.0 7406 OC7406 OC门门 X 3X 3 上拉上拉 电阻电阻 1414 +5V+5V AT89C51 工作原理工作原理:从从P0P0口送段代码口送段代码,P1,P1口送位选信号口送位选信号。段码虽同时。段码虽同时 到达到达 6 6个个LEDLED,但,但一次仅一个一次仅一个LEDLED被选中被选中。利用。利用“视觉暂视觉暂 留留”,每送一个字符并选中相应位线,延时一会儿,每送一个字符并选中相应位线,延时一会儿, ,再送再送/ / 选下一个选下一个循环扫描循环扫描即可。即可。 共阴共阴 数码管数码管 位位 选选 线线 段段

33、 代代 码码 P1.5 P1.5 P1.4P1.4 P1.3P1.3 P1.2P1.2 P1.2P1.2 P1.0P1.0 P0.7 P0.7 P0.6 P0.6 P0.5 P0.5 P0.4 P0.4 P0.3 P0.3 P0.2 P0.2 P0.1 P0.1 P0.0P0.0 7406 OC7406 OC门门 X 3X 3+5V+5V AT89C51 位位 选选 线线 段段 代代 码码 要求要求:此处为共阴数码管,此处为共阴数码管,P0P0口送段代码,口送段代码,P1P1口送位选信号。口送位选信号。 通过查表实现动态显示。通过查表实现动态显示。 条件条件:待显数据待显数据(00H09H)(

34、00H09H)已放在已放在: : 7 7FH7AHFH7AH单元中单元中( (分别对分别对 应应十万位十万位个位个位) ) 说明说明:由于用了由于用了反相驱动器反相驱动器74067406,要用共阳译码表。,要用共阳译码表。 共阴共阴 数码管数码管 上拉上拉 电阻电阻 1414 7406 OC7406 OC门门 X 3X 3+5V+5V (7FH) (7EH) (7DH) (7CH) (7BH) (7AH) 十万十万 万位万位 千位千位 百位百位 十位十位 个位个位 数据缓冲区数据缓冲区 / / 显示缓冲区显示缓冲区 P0P0口口送段送段 代码,代码,P1P1 口口送位选送位选 信号。信号。 待

35、显数据待显数据 已经放在已经放在: : 7 7FH7AHFH7AH 单元单元( (分别分别 对应对应十万十万 位位个位个位) ) 使用共阳使用共阳 译码表译码表。 DIRDIR: MOV DPTR, : MOV DPTR, #DSEG #DSEG ; ;数码管译码数码管译码表首址表首址 MOV R0MOV R0,#7AH #7AH ; ;待显缓冲区待显缓冲区个位个位地址地址 MOV R3MOV R3,#01H #01H ; ;个位的个位的位选信号位选信号=01=01H H LD1LD1: MOV AMOV A, R0 R0 ; ;通过通过R0R0间接寻址间接寻址 MOVC A, A+DPTRM

36、OVC A, A+DPTR ; ;查表查表 MOV P0, A MOV P0, A ; ;字段码送到字段码送到P0P0口口 MOV P1MOV P1,R3 R3 ; ;字位选择送到字位选择送到P1P1口口 LCALL DELYLCALL DELY ; ;调延时调延时1ms1ms子程序子程序 INC R0 INC R0 ;R0 ;R0 指向下一字节指向下一字节 MOV AMOV A,R3R3 JB ACC.5 JB ACC.5,LD2LD2 ; ;判判是否发完是否发完6 6个数?个数? RL A RL A ;R1;R1指向下一个位指向下一个位 MOV R3MOV R3,A A ; ;位选信号存回

37、位选信号存回R1R1 SJMP SJMP LD1LD1 ; ;跳去再显示下一个数跳去再显示下一个数 LD2LD2: RET RET ; ;发完发完6 6个数就个数就返回返回 DSEGDSEG:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H; ;共阳译码表共阳译码表 DB 92H, 82H, 0F8H, DB 92H, 82H, 0F8H, 80H80H,90H,90H P0P0口口送段送段 代码,代码,P1P1 口口送位选送位选 信号。信号。 待显数据待显数据 已经放在已经放在: : 7 7FH7AHFH7AH 单元单元( (分别分别

38、对应对应十万十万 位位个位个位) ) 使用共阳使用共阳 译码表译码表。 动态动态显示举例显示举例 ( (循环显示循环显示“8”8”的实验的实验) ) 实验箱实验箱从从P0P0口扩展了两个口扩展了两个8 8位的简单位的简单I/OI/O口口: : 一个送段代码一个送段代码( (字形状字形状) ),地址是,地址是0 0DCHDCH; ; 一个送位选信号一个送位选信号( (字位置字位置) ),地址是,地址是0 0DDHDDH。 ORG 0000HORG 0000H MOV R0,# MOV R0,#0DCH0DCH ; ;指向指向字形口字形口 MOV A, #80H ;MOV A, #80H ;送送“

39、8”8”的字形代码的字形代码 MOVX MOVX R0,AR0,A ; ;输出字形代码输出字形代码 MOV R1,#MOV R1,#0DDH0DDH ; ;指向指向字位口字位口 MOV A,#20HMOV A,#20H ; ;从最高位开始从最高位开始 LEDO:LEDO: MOVX MOVX R1,AR1,A ; ;输出字位代码输出字位代码 ACALL DEYS ACALL DEYS ; ;调延时子程序调延时子程序 RR A RR A ; ;右移一位右移一位 SJMP LEDO SJMP LEDO ; ;循环显示循环显示“8”8” 1 1、共阴型共阴型8 8位动态显示电路位动态显示电路 DIR

40、4:MOV R2,#10 DIR4:MOV R2,#10 ; ;置循环扫描次数置循环扫描次数 MOV DPTR,#7FFFH MOV DPTR,#7FFFH ; ;置置7437774377口地址口地址 DLP1:ANL P1,#11111000B DLP1:ANL P1,#11111000B ; ;第第0 0位先显示位先显示 MOV R0,#30H MOV R0,#30H ; ;置显示字段码首址置显示字段码首址 DLP2:MOV A,R0 DLP2:MOV A,R0 ; ;读显示字段码读显示字段码 MOVX DPTR,A MOVX DPTR,A ; ;输出显示字段码输出显示字段码 LCALL

41、DY2ms LCALL DY2ms ; ;调用延时调用延时2ms2ms子程序子程序( (参阅例参阅例4.13)4.13) INC R0 INC R0 ; ;指向下一位字段码指向下一位字段码 INC P1 INC P1 ; ;选通下一位显示选通下一位显示 CJNE R0,#38H,DLP2 CJNE R0,#38H,DLP2 ; ;判判8 8位扫描显示完否位扫描显示完否? ?未完继续未完继续 DJNZ R2,DLP1 DJNZ R2,DLP1 ;8;8位扫描显示完毕位扫描显示完毕, ,判判1010次循环完否次循环完否? ? CLR A CLR A ;10;10次循环完毕次循环完毕, ,显示暗显示

42、暗 MOVX DPTR,A MOVX DPTR,A ; ; RET RET ; ;子程序返回子程序返回 【例【例9-59-5】按图】按图9-79-7,试编制循环扫描(,试编制循环扫描(1010次)显示子程序,已次)显示子程序,已 知显示字段码存在以知显示字段码存在以30H30H(低位)为首址的(低位)为首址的8 8字节内字节内RAMRAM中。中。 解:编程如下:解:编程如下: 2、共阳型共阳型3 3位动态显示电路位动态显示电路 DIR5: MOV DPTR,#0BFFFH DIR5: MOV DPTR,#0BFFFH ; ;置置7437774377地址地址 MOV R2,#100 MOV R2

43、,#100 ; ;置循环显示次数置循环显示次数 DIR50: SETB P1.2 DIR50: SETB P1.2 ; ;百位停显示百位停显示 MOV A,40H MOV A,40H ; ;取个位字段码取个位字段码 MOVX DPTR,A MOVX DPTR,A ; ;输出个位字段码输出个位字段码 CLR P1.0 CLR P1.0 ; ;个位显示个位显示 LCALL DY2ms LCALL DY2ms ; ;调用延时调用延时2ms2ms子程序子程序( (参阅例参阅例4.13)4.13) DIR51: SETB P1.0 DIR51: SETB P1.0 ; ;个位停显示个位停显示 MOV A

44、,41H MOV A,41H ; ;取十位字段码取十位字段码 MOVX DPTR,A MOVX DPTR,A ; ;输出十位字段码输出十位字段码 CLR P1.1 CLR P1.1 ; ;十位显示十位显示 LCALL DY2ms LCALL DY2ms ; ;延时延时2 2msms DIR52: SETB P1.1 DIR52: SETB P1.1 ; ;十位停显示十位停显示 MOV A,42H MOV A,42H ; ;取百位字段码取百位字段码 MOVX DPTR,A MOVX DPTR,A ; ;输出百位字段码输出百位字段码 CLR P1.2 CLR P1.2 ; ;百位显示百位显示 LC

45、ALL DY2ms LCALL DY2ms ; ;延时延时2 2msms DJNZ R2,DIR50 DJNZ R2,DIR50 ; ;判循环显示结束否判循环显示结束否? ?未完继续未完继续 ORL P1,#00000111B ORL P1,#00000111B ;3;3位灭显示位灭显示 RET RET ; ; 【例【例9-69-6】根据图】根据图9-89-8电路,试编制电路,试编制3 3位动态扫描显示程序位动态扫描显示程序( (循环循环100100 次次),),已知显示字段码存在以已知显示字段码存在以40H(40H(低位低位) )为首址的为首址的3 3字节内字节内RAMRAM中。中。 解:编

46、程如下:解:编程如下: 1、SAA1064SAA1064引脚功能引脚功能 五、五、虚拟虚拟I I2 2C C总线串行显示电路总线串行显示电路 V VDDDD、V VEEEE:电源、接地端。电源:电源、接地端。电源4.54.51515V V; P1P1P16P16:段驱动输出端。分为两个:段驱动输出端。分为两个8 8位口:位口: P1P1P8P8;P9P9P16P16。P8P8、P16P16为高位。口锁存器具有反相功为高位。口锁存器具有反相功 能,置能,置1 1时,端口输出时,端口输出0 0。 MX1MX1、MX2MX2:位码驱动端。静态显示驱动时,一片:位码驱动端。静态显示驱动时,一片 SAA

47、1064SAA1064可驱动二位可驱动二位LEDLED数码管;动态显示驱动时,按图数码管;动态显示驱动时,按图9-109-10 连接方式,一片连接方式,一片SAA1064SAA1064可驱动四位可驱动四位LEDLED数码管;数码管; SDASDA、SCLSCL:I I2 2C C总线数据端、时钟端;总线数据端、时钟端; C CEXTEXT:时钟振荡器外接电容,典型值:时钟振荡器外接电容,典型值27002700pFpF ADRADR:地址引脚端。:地址引脚端。SAA1064SAA1064引脚地址引脚地址A1A1、A0A0采用采用ADRADR模模 拟电压比较编址。当拟电压比较编址。当ADRADR引

48、脚电平为引脚电平为0 0、3VDD/83VDD/8,5VDD/85VDD/8、VDDVDD 时,相应引脚地址时,相应引脚地址A2A2、A1A1、A0 A0 分别为分别为000000、001001、010010、011011; 2 2、硬件电路设计硬件电路设计 片内寄存器片内寄存器 符号符号COMCOMdata1data1data2data2data3data3data4data4 装载内容装载内容控制命令控制命令显示段码显示段码1 1显示段码显示段码2 2显示段码显示段码3 3显示段码显示段码4 4 片内地址片内地址00H00H01H01H02H02H03H03H04H04H 3 3、片内可编

49、程功能片内可编程功能 控制命令控制命令COMCOM COMCOMD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 00H00HC6C6C5C5C4C4C3C3C2C2C1C1C0C0 COCO: : 静动态控制,静动态控制,C0=1C0=1,动态显示,动态显示时,动态显示,动态显示时,data1data1、 data2data2轮流从轮流从P8P8P1P1输出,输出,data3data3、data4data4轮流从轮流从P16P16P9P9输出;输出; C1C1: : 显示位显示位1 1、3 3亮暗选择,亮暗选择,C1=1C1=1,选择亮;,选择亮; C2C2: : 显示位显示

50、位2 2、4 4亮暗选择,亮暗选择,C2=1C2=1,选择亮;,选择亮; C3C3: : 测试位,测试位,C3=1C3=1,所有段亮;,所有段亮; C4C4、C5C5、C6C6: : 驱动电流控制位,驱动电流控制位,C4C4、C5C5、C6C6分别为分别为1 1时,驱动时,驱动 电流分别为电流分别为3mA3mA、6mA6mA、12mA12mA;C4C4、C5C5、C6C6全为全为1 1时,驱动电流时,驱动电流 最大,可达最大,可达21mA21mA。 写数据操作格式写数据操作格式 S SSLASLAW WA ASADRSADRA A COMCOM A Adata1data1A Adata2dat

51、a2A Adata3data3A Adata4data4A AP P 红色红色部分由部分由80C5180C51发送,发送,SAA1064SAA1064接收;接收; 黑色部分由黑色部分由SAA1064SAA1064发送,发送,80C5180C51接收。接收。 SLASLAW W为写为写SAA1064SAA1064寻址字节,寻址字节, 按图按图9-109-10所示连接电路所示连接电路: :SAA1064SAA1064(1 1)SLASLAW W=01110000B;=01110000B; SAA1064 SAA1064(2 2)SLASLAW W=01110110B=01110110B。 其中其中

52、01110111(D7D74 4)为)为SAA1064SAA1064器件地址,器件地址, D3D31 1为为A2A1A0A2A1A0寻址字节,寻址字节, 末位末位D0D0为为R/WR/W; SADRSADR为片内寄存器地址;为片内寄存器地址; COMCOM为控制命令。为控制命令。 解解:VSAA: MOV MTD,#00H ;VSAA: MOV MTD,#00H ;置置SAA1064SAA1064控制命令寄存器控制命令寄存器COMCOM片内子地址片内子地址 MOV 31H,#01000111B;MOV 31H,#01000111B;置控制命令字置控制命令字, ,动态显示动态显示, ,驱动电流驱

53、动电流12mA12mA MOV NUMB,#6 ; MOV NUMB,#6 ;置发送数据数置发送数据数:SADR+COM+data1:SADR+COM+data14=64=6 SAA1: MOV RO,#51H ;SAA1: MOV RO,#51H ;将将51H51H54H54H显示符数据移至显示符数据移至32H32H35H35H LCALL MOVB ; LCALL MOVB ; MOV SLA,#01110000B; MOV SLA,#01110000B;置置SAA1064(1)SAA1064(1)写寻址字节写寻址字节SLASLAW W LCALL WRNB ; LCALL WRNB ;发

54、送给发送给SAA1064(1)SAA1064(1) SAA2: MOV R0,#55H ;SAA2: MOV R0,#55H ;将将55H55H58H58H显示符数据移至显示符数据移至32H32H35H35H LCALL MOVB ; LCALL MOVB ; MOV SLA,#01110110B; MOV SLA,#01110110B;置置SAA1064(2)SAA1064(2)寻址字节寻址字节SLASLAW W LCALL WRNB ; LCALL WRNB ;发送给发送给SAA1064(2)SAA1064(2) RET ; RET ; MOVB: MOV R1,#32H ;MOVB: M

55、OV R1,#32H ;显示符数据移至显示符数据移至32H32H35H35H子程序子程序 MOVB1:MOV A,R0 ;MOVB1:MOV A,R0 ;读出读出 MOVMOV R1,A ; R1,A ;存入存入 INCINC RO ; RO ;指向下一读出单元指向下一读出单元 INCINC R1 ; R1 ;指向下一存入单元指向下一存入单元 CJNECJNE R1,#36H,MOVB1 ; R1,#36H,MOVB1 ;判判4 4个数据移完否个数据移完否? ?未完继续未完继续 RETRET ; ; 【例例9-79-7】已知】已知8 8位显示符位显示符( (共阴编码共阴编码) )已依次存入内已

56、依次存入内RAM 51HRAM 51H58H58H中中, ,试按图试按图9-9- 1010编程将其输入编程将其输入SAA1064(1),(2)SAA1064(1),(2)动态显示动态显示, ,驱动电流为驱动电流为12mA12mA。设。设VIICVIIC软件包已软件包已 装入装入ROM,VSDA.VSCL.SLA.NUMB.MTD.MRDROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均已按均已按8.3.28.3.2软件包小结中协议定义。软件包小结中协议定义。 4 4、程序设计程序设计 1 1、按键开关去抖动问题按键开关去抖动问题 2 2 键盘接口键盘接口 一、一、键盘接口概述键盘接

57、口概述 键盘的抖动时间一般为键盘的抖动时间一般为5 510ms10ms,抖动现象会引起抖动现象会引起CPUCPU 对一次键操作进行多次处理,从而可能产生错误对一次键操作进行多次处理,从而可能产生错误。 硬件去抖动硬件去抖动 消除抖动不良后果的方法:消除抖动不良后果的方法: 其中其中RCRC滤波电路去抖动电路简单实用,效果较好滤波电路去抖动电路简单实用,效果较好。 软件去抖动软件去抖动 检测到按键按下后,执行检测到按键按下后,执行延时延时10ms10ms子程序后再确认子程序后再确认该键该键 是否确实按下,消除抖动影响。是否确实按下,消除抖动影响。 2 2、按键连接方式按键连接方式 独立式按键独立

58、式按键 独立式按键是每个按键占用一根独立式按键是每个按键占用一根I/OI/O端线端线。 特点:特点: 各按键相互独立,电路配置灵活;各按键相互独立,电路配置灵活; 按键数量较多时,按键数量较多时,I/OI/O端线耗费较多,电路结构繁杂;端线耗费较多,电路结构繁杂; 软件结构简单。软件结构简单。 适用于按键数量较少的场合适用于按键数量较少的场合。 矩阵式键盘矩阵式键盘 I/OI/O端线分为行线和列线,按键跨接在行线和列线上,按端线分为行线和列线,按键跨接在行线和列线上,按 键按下时,行线与列线发生短路键按下时,行线与列线发生短路。 特点:特点: 占用占用I/OI/O端线较少;端线较少; 软件结构

59、教复杂。软件结构教复杂。 适用于按键较多的场合适用于按键较多的场合。 3 3、键盘扫描控制方式键盘扫描控制方式 程序控制扫描方式程序控制扫描方式 键处理程序固定在主程序的某个程序段。键处理程序固定在主程序的某个程序段。 特点特点:对:对CPUCPU工作影响小,但应考虑键盘处理程序的运行间隔工作影响小,但应考虑键盘处理程序的运行间隔 周期不能太长,否则会影响对键输入响应的及时性。周期不能太长,否则会影响对键输入响应的及时性。 定时控制扫描方式定时控制扫描方式 利用定时利用定时/ /计数器每隔一段时间产生定时中断,计数器每隔一段时间产生定时中断,CPUCPU响应响应 中断后对键盘进行扫描。中断后对

60、键盘进行扫描。 特点特点:与程序控制扫描方式的区别是,在扫描间隔时间内,:与程序控制扫描方式的区别是,在扫描间隔时间内, 前者用前者用CPUCPU工作程序填充,后者用定时工作程序填充,后者用定时/ /计数器定时控制。定时计数器定时控制。定时 控制扫描方式也应考虑定时时间不能太长,否则会影响对键输控制扫描方式也应考虑定时时间不能太长,否则会影响对键输 入响应的及时性。入响应的及时性。 中断控制方式中断控制方式 中断控制方式是利用外部中断源,响应键输入信号。中断控制方式是利用外部中断源,响应键输入信号。 特点特点:克服了前两种控制方式可能产生的空扫描和不能及时:克服了前两种控制方式可能产生的空扫描

温馨提示

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

评论

0/150

提交评论