1 / 48

2 、 A / D 转换器及与 MCS-51 的连接

2 、 A / D 转换器及与 MCS-51 的连接. 专题九 I/O 接口应用. 1 、 D/A 转换器及与 MCS-51 的连接. ADC——Analog - Digital Converter. 3 、 8155 键盘程序设计. 7.6 D/A 转换器及与 MCS-51 的连接. 7.6.1 D/A 转换原理 1 、权电阻网络 D/A 转换法 2 、倒 T 型电阻网络 D/A 转换法 7.6.2 DAC0832 与单片机的接口 1 、 DAC0832 的结构与引脚信号 2 、 DAC0832 与单片机的连接 1 )单缓冲方式 2 )双缓冲方式

lani
Download Presentation

2 、 A / D 转换器及与 MCS-51 的连接

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2、A / D 转换器及与MCS-51的连接 专题九 I/O接口应用 1、D/A转换器及与MCS-51的连接 ADC——Analog - Digital Converter 3、8155 键盘程序设计

  2. 7.6 D/A转换器及与MCS-51的连接 7.6.1 D/A转换原理 1、权电阻网络D/A转换法 2、倒T型电阻网络D/A转换法 7.6.2 DAC0832与单片机的接口 1、DAC0832的结构与引脚信号 2、DAC0832与单片机的连接 1)单缓冲方式 2)双缓冲方式 3)单极性与双极性输出 3、DAC0832程序设计

  3. 数字量与模拟量的关系 bn-1 n位D/A转换器 (B=bn-1bn-2……b1b0) . . . . . . VOUT b1 b0 7.6.1 D/A转换原理 VR= VREF÷2n 数字量1对应的模拟电压值 V0UT= B×VR 待转换的数字量转换后的模拟电压值 V0UT= B×VR EF/2n = VREF×B/2n

  4. 1、分辨率——最小模拟输出量 一个n位的DAC所能分辨的最小电压增量定义为满量程的2-n倍。用LSB表示,LSB=满量程电压/2n。 例:满量程为10V的8位DAC芯片的分辩率为: 10V×2-8=39mV,LSB=39mV。 2、转换精度——指满量程时DAC的实际模拟输出值和理论值的接近程度。通常DAC的转换精度是分辨率的一半。 即:LSB/2 例:满量程为10V时,实际输出值是在10V±LSB/2之间。 转换精度为±LSB/2。 D/A转换器的主要性能指标

  5. 7.6.1 D/A转换原理 V0=-VREF (数字码/2n)n=8

  6. 1、DAC0832的结构与引脚信号 RFB DI7 Iout1 D7 Q7 D7 Q7 D7 输入 寄存器 DAC 寄存器 D/A 转换器 - Iout2 + Vout DI0 D0 Q0 D0 Q0 D0 VREF & ILE AGND & CS WR1 & WR2 XFER 7.6.2 DAC0832与单片机的接口

  7. +5V A0~A7 G ALE 74LS373 A0 P0 ILE VCC RFB CS Iout1 8031 - XFER VO Iout2 + WR WR1 AGND WR2 D0~D7 VREF -5V EA DGND DAC0832 2、DAC0832与单片机的连接 1)单缓冲方式——图7-54 P257 VO=-VREF(数字码/256)

  8. G ALE A0~A7 1# 8032 74LS373 P0 A2 A1 A0 CS RFB XFER WR WR1 Iout1 - A WR2 X 8031 Iout2 + D0~D7 图形 显示器 2# 8032 CS EA RFB Y XFER Iout1 - WR1 A WR2 Iout2 + D0~D7 2、DAC0832与单片机的连接 2)双缓冲方式 (P259 图7-56)

  9. 2、DAC0832与单片机的连接 3)单极性与双极性输出 ① 单极性输出 P257 图7-54 2n VOUT1=-VREF(数字码/256) n=8 2n-1 ② 双极性输出 P260 图7-57 VOUT2=VREF(数字码-128)/128)

  10. 3、DAC0832程序设计 例1:双缓冲方式程序设计-图7-56 ORG 0000H MOV DPTR,#80FEH MOV A,#DATAX ;DATAX写入1#0832输入寄存器 MOVX @DPTR,A MOV DPTR,#80FDH MOV A,#DATAY ;DATAY写入2#0832输入寄存器 MOVX @DPTR,A MOV DPTR,#80FBH MOVX @DPTR,A ;1#和2#输入寄存器的内容同时送到DAC寄存器中

  11. 3、DAC0832程序设计 例2:单缓冲方式程序设计——图7-56 • 输出锯齿波 • 输出三角波 • 输出矩形波 • 输出梯形波

  12. 1)输出锯齿波程序设计 ? 如何修改上限电平值与下限电平值? LP1:MOV A,#X ;X是上限数字码 LP: … INC A DJNE A,#Y,LP ;Y下限数字码 SJMP LP1 其中:X,Y的值由下式计算 上限电平值 下限电平值 ORG 0000H START: MOV DPTR,#00FEH MOV A,#00H LP: MOVX @DPTR,A INC A SJMP LP 00H—0V 0FFH—5V VOUT=-VREF(数字码/256) ?如何修改频率? 在SJNP LP前加一段延时程序即可。 例:VREF=-5V X=0E0H,则上限电平值=4.375V Y=20H,则下限电平值=0.625V

  13. 2) 输出三角波程序设计 上限电平值 下限电平值 ORG 0000H START: MOV DPTR,#00FEH MOV A,#00H UP: MOVX @DPTR,A INC A JNZ UP DOWN: DEC A MOVX @DPTR,A JNZ DOWN SJMP UP 请思考 如何修改 上限电平值与下限电平值? 00H—0V 0FFH—5V

  14. 3) 输出矩形波程序设计 矩形波上限电平 矩形波下限电平 ORG 0000H START: MOV DPTR,#00FEH LP: MOV A,#datah ; 置输出矩形波上限数字码 MOVX @DPTR,A LCALL DELH ;调用高电平延时时间 MOV A,#dataL ; 置输出矩形波下限数字码 MOVX @DPTR,A LCALL DELL ;调用低电平延时时间 SJMP LP ;重复

  15. dataH 4) 输出梯形波程序设计 dataL ORG 0000H START: MOV DPTR,#00FEH L1: MOV A,#dataL ; 置输出梯形波下限数字码 UP: MOVX @DPTR,A INC A CLR C SUBB A,#dataH ; 与上限数字码比较 JNC DOWN ADD A,#dataH ; 恢复 SIMP UP DOWN: ACALL DEL ;调用上限延时时间 L2: MOVX @DPTR,A DEC A SUBB A,#dataL ; 与下限数字码比较 JC L1 ADD A,#dataL ; 恢复 SIMP L2

  16. 1、简介了DAC和ADC的基本原理 2、重点介绍了DAC和ADC的主要技术参数 3、重点讲了DAC和ADC与8051的连接 4、重点讲了DAC单缓冲方式下的波形发生程序设计 5、重点讲了ADC单通道和多通道数据采集程序设计的几种方法 本部分小结

  17. 7.7.1 A/D转换原理 1、逐次逼近式转换原理 2、A/D转换器的主要参数 7.7.2 ADC0809与单片机的接口 1、ADC0809结构 P263图7-61 2、ADC0809接口方法 图7-62 7.7A/D转换器及与MCS-51的连接

  18. 模拟电压与数字输出

  19. 7.7.1 A/D转换原理 1、逐次逼近式转换原理 图7-58 P261 2、A/D转换器的主要参数 • 转换时间:完成一次A/D转换所用时间 • 分辨率:最小的量化单位。 • 位数越多,分辨率越高。 • 例:12位A/D,分辨率为1LSB=1/212×100%≈0.0244% 1LSB ——最低有效位 BCD码输出的A/D转换器一般用位数表示分辨率。 例如:MC14433双积分式A/D转换器的分辨率为 位, 满度字为1 999,用百分数表示的分辨率为: 1/1999×100%=0.05%

  20. START CLK IN0 EOC 8路 模拟量开关 D0 IN7 8路 A/D 转换器 三态 输出 锁存器 ADDA D7 地址 锁存 与译码 ADDB ADDC Vcc ALE GND VB(+) VB(-) 7.7.2 ADC0809与单片机的接口 1、ADC0809结构 P263图7-61 OE

  21. CLK REF(+) A0 ADDA REF(-) A1 ADDB A2 ADDC IN7 G OE ADC0809 ALE 74LS373 IN6 IN5 D7 P0.7 IN4 IN3 +5V 8031 IN2 P0.0 D0 IN1 IN0 WR ≥1 START ALE P2.7 74LS02 ≥1 OE RD EOC INT1 1 2、ADC0809接口方法 图7-62

  22. 3、ADC0809接口程序设计 程序设计方法: 单通道采集程序 程序设计的方式: 1、中断方式 2、查询方式 3、延时方式

  23. 3、ADC0809接口程序设计 延时方式程序设计要点: 1、确定通道地址 1)CBA接地址线A2A1A0 DPTR中的地址低三位 2) CBA接数据线D2D1D0 A中的数据低三位 2、启动A/D转换 3、软件延时 4、读取转换结果

  24. 单通道——延时采集程序设计 1、确定通道地址——图7-62 1)CBA接地址线A2A1A0 P2.7 P2.6~P2.0A7~A3 A2A1A0 通道号 0 0 0 0 0 1 IN0 0111 1111 1111 1 IN1 ………… 1 1 1 IN7 MOV DPTR,#011111111111000B;选0通道 #7FF8H或 0000H

  25. 单通道——延时采集程序设计 2、启动A/D转换 MOVX @DPTR,A; A中数任意 3、软件延时 8031时钟频率6MHz,ALE为1MHz ADC0809 对时钟频率的要求:10Hz~1280kHz 转换时间:100μs ,8031时钟周期:2μs MOV R6,#50 DJNZ R6,$ 4、读取转换结果 MOVX A,@DPTR

  26. 单通道——延时采集程序设计 北辰设备A/D地址 ORG 0000H MAIN: MOV DPTR,#7FF8H ; 指向0通道 MOVX @DPTR,A ;启动A/D转换 MOV R6,#50 ;软件延时 DJNZ R6,$ MOVX A,@DPTR ;读取转换结果 …… ; 转换成电压值后驱动显示

  27. 丁字沽设备A/D地址 ORG 0000H MAIN: MOV DPTR,#8000H ; 指向0通道 MOVX @DPTR,A ;启动A/D转换 MOV R6,#50 ;软件延时 DJNZ R6,$ MOVX A,@DPTR ;读取转换结果 …… ; 转换成电压值 …… ;驱动显示

  28. 单通道——中断方式采集程序设计 ORG 0000H AJMP MAIN ORG 0013H AJMP INT1S MAIN: MOV SP,#6FH MOV R1,#30H MOV DPTR,#7FF8H MOVX @DPTR,A SETB IT1 SETB EX1 SETB EA LOOP: ACLL CHULI SJMP LOOP INT1S: MOVX A,@DPTR ;读取转换结果 MOV 30H,A ;存储数据 MOVX @DPTR,A ;再次启动A/D转换 RETI CHULI:ACALL JISUAN ACALL CHAIZI ACALL XIANSHI RET END 注意保护现场和恢复现场

  29. 单通道——查询方式采集程序设计 ORG 0000H MAIN: MOV R1,#30H ; 置数据区 MOV DPTR,#7FF8H; 指向0通道 MOV R7,#08H ; 置采数个数 LOOP:MOVX @DPTR,A ;启动A/D转换 JB P3.3,$ ; 查询/INT1 MOVX A,@DPTR ;读取转换结果 MOV @R1,A ;存储数据 INC R1 DJNZ R7,LOOP SJMP $ END

  30. 键盘分类: 1、键盘有全编码键盘和非编码键盘两种 全编码键盘能够由硬件逻辑自动提供与被按键对应的键码,此外,一般还具有去抖动和多键窜键保护电路,这种键盘使用方便,但需要较多硬件,价格较贵,一般的单片机应用系统较少采用。 非编码键盘只简单地提供行和列矩阵,其它工作都靠软件完成,由于其经济实用,目前在单片机应用系统中多采用这种方法。本节着重介绍非编码键盘接口。 2、非编码键盘分为独立式键盘和行列式键盘 3、8155键盘程序设计

  31. 键盘、显示器接口—8155(8.2.3)(丁字沽) 4×8 键盘

  32. 7F00H    命令/状态口 7F01HA口(显示器位选口;键盘列扫描输出口) 7F02HB口(显示器段选口) 7F03HC口(键盘行输入口) 7F04H    定时器低8位口 7F05H    定时器高8位口 7E00H~7EFFH8155RAM地址区 LED采用动态显示、软件译码; 键盘采用编程扫描工作方式。 LED采用共阴极数码管;键盘编码为十六进制数。 LED驱动采用集电极开路同相输出8位驱动器8718芯片 8155的端口地址分配如下:

  33. 1、判别键盘上有无键闭合 方法是使PA口输出全“0”,读PC口的状态, 若PC口全为“1”则键盘上没有键闭合, 若PC口不全为“1”,则有键闭合。 2、去除键的机械抖动 方法是判断到键盘上有键闭合后,延迟一段时 再判别键盘的状态,若仍有键闭合,则认为有 一个键处于稳定的闭合期,否则认为是键的抖动。 3、判别闭合键的键号 N=行首键号+列号=8+1=9 4、使CPU对键的一次闭合仅做一次处理 等待闭合键释放以后再做处理 。 键扫描子程序的设计要考虑以下4个方面:

  34. PA口列扫描输出码 图8-10 键扫描程序框图

  35. KEYI:ACALL KS1   ;调用判有无键闭合子程序 JNZ LK1 NI: ACALL DIR   ;调用显示子程序,延时6ms AJMP KEYI LK1: ACALL DIR   ;延时12ms ACALL DIR ACALL KS1 JNZ LK2 ACALL DIR AJMP KEYI LK2: MOV R2,#0FEH   ;列扫描码送R2 MOV R4,#00H ;R4是列计数单元 LK4: MOV DPTR,#7F01H ;列扫描码送PA口 MOV A,R2 MOVX @DPTR,A INC DPTR INC DPTR 键扫描子程序清单:

  36. MOVX A,@DPTR ;读C口 JB ACC.0,LONE ;0行为高电平,转判1行 MOV A,#00H ;0行首键号送A AJMP LKP LONE:JB ACC.1,LTWO ;转判2行 MOV A,#08H ;1行首键号送A AJMP LKP LTWO:JB ACC.2,LTHR ;转判3行 MOV A,#10H ;2行首键号送A AJMP LKP LTHR:JB ACC.3,NEXT ;转判下一列 MOV A,#18H ;3行首键号送A LKP: ADD A,R4 ;行首键号+列号=键号 PUSH ACC LK3: ACALL DIR ACALL KS1 ;判键释放否 JNZ LK3 POP ACC RET 键扫描子程序清单:

  37. NEXT: INC R4 ;列扫描计数器加1 MOV A,R2 ;判是否已扫到最后一列 JNB ACC.7,KND ;扫到则转移 RL A ;列扫描码左移一位 MOV R2,A AJMP LK4 ;无键按下 KND: AJMP KEYI KS1: MOV DPTR,#7F01H MOV A,#00H ;全“0”送PA口 MOVX @DPTR,A INC DPTR INC DPTR MOVX A,@DPTR ;读键入状态 CPL A ANL A,#0FH ;屏蔽高位 RET 键扫描子程序清单:

  38. ORG 0000H AJMP MAIN MAIN: MOV SP,#6FH MAI1: LCALL KEY1 MOV DPTR,#TAB MOV B, #2 MUL AB JMP @A+DPTR ; 根据键值散转 TAB: AJMP PR0 AJMP PR1 …… AJMP PR31 PR0: …… LJMP MAI1 …… PR31: …… LJMP MAI1 键盘主程序设计

  39. 补充:北辰设备 显示程序进一步说明

  40. Disbuf+7 Disbuf+6 Disbuf+5 Disbuf+4 Disbuf+3 Disbuf+2 Disbuf+1 Disbuf+0 08 07 06 05 04 03 02 01 关键:将要现实的数据送入显示缓冲区的对应位

  41. ;上电运行时,8位数码管显示01234567 ;给显示缓冲区赋值,01234567 MainLoop: mov DisBuf+0,#0 mov DisBuf+1,#1 mov DisBuf+2,#2 mov DisBuf+3,#3 mov DisBuf+4,#4 mov DisBuf+5,#5 mov DisBuf+6,#6 mov DisBuf+7,#7 ;调用显示子程序,显示内容 lcall Display

  42. 显示程序的进一步说明——北辰设备 小时单元 分钟单元 秒单元 32H 31H 30H 13 58 09 拆字 00 09 01 03 05 08 3DH 3CH 3BH 3AH 39H 38H Disbuf+5 Disbuf+4 Disbuf+3 Disbuf+2 Disbuf+1 Disbuf+0 显示缓冲区 没用 Disbuf+7 Disbuf+6

  43. 显示程序的进一步说明——北辰设备 电压v数 电压mv 电压mv 32H 31H 30H 13 58 04. 拆字 00 04. 01 03 05 08 3DH 3CH 3BH 3AH 39H 38H 显示缓冲区

  44. 字型码表

  45. S1 S2 S3 S4 S5 S6 S7 S 8 键名 键值 01 02 03 04 05 06 07 08 S9 S10 S11 S12 S13 S14 S15 S16 键名 键值 09 0A 0B 0C 0D 0E 0F

  46. WAITKEY:JB INT_KEY,WAITKEY ;查询按键 LCALL GETKEY ;获取键值 MOV A,KEY JZ WAITKEY ;KEY=0无键按下,继续查询 可以根据键值散转

  47. …….. SETB RS0 MOV R0,#26H CLR RS0 MOV R2,#08 WAITKEY:JB INT_KEY,WAITKEY LCALL GETKEY MOV A,KEY JZ WAITKEY SETB RS0 MOV @R0,A INC R0 CLR RS0 DJNZ R2,WAITKEY ……;处理键值 读取八个键值

  48. 希望做好综合性实验! 不断提高自信心! 不断增强创新和实践能力!

More Related