ch8_应用系统配置及接口技术_第1页
ch8_应用系统配置及接口技术_第2页
ch8_应用系统配置及接口技术_第3页
ch8_应用系统配置及接口技术_第4页
ch8_应用系统配置及接口技术_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

第8章 应用系统配置及接口技术,前向、后向、人机通道系统框图,8.1 人-机通道配置与接口技术,8.1.1键盘接口及处理程序,编码键盘: 键盘上闭合键的识别由专用的硬件译码器实现,并产生键编号或键值,非编码键盘: 靠软件识别的键盘,* 用得多的是非编码键盘,按键特性,硬件去抖动和软件去抖动,软件方法: (用于键较多的场合。) 检测有键闭合,延时10ms20ms左右,再检测,仍保持闭合,则确认为有键按下。,硬件方法:利用RS触发器,用于键较少的场合。,一、键盘结构 1、独立式非编码键盘接口及处理程序,程序:,MOV A,#0FFH MOV P1,A MOV A,P1 ;键状态输入 JNB ACC.0,P0F ;0号键按下转 JNB ACC.1,P1F JNB ACC.2,P2F JNB ACC.3,P3F JNB ACC.4,P4F JNB ACC.5,P5F JNB ACC.6,P6F JNB ACC.7,P7F LJMP START ;无键按下返回 P0F: LJMP PROG0 P1F: LJMP PROG1 PROG0: LJMP START PROG1: ,2、行列式键盘接口及工作原理,识别键的两种方法: 行(或列)扫描法 线反转法 例:右图(列扫法) 向列线输出全0 , 读入行线电平, 若有键按下, 再逐列扫描, 获得相应键键值,二、单片机对非编码键盘扫描的控制方式,常用行列矩阵式非编码键盘的控制有三种方式: 1、程序控制扫描方式,即查询方式。 2、定时扫描方式。 3、中断扫描方式。参见 P148 图8-10 应用举例: 程序控制扫描方式及处理程序,硬件连接图如下。,32个键对应键值如下: (按PA,PC口二进制码, 为任意值),FEE FDE FBE E7E EFE DFE BFE 7FE FED FDD FBD E7D EFD DFD BFD 7FD FEB FDB FBB E7B EFB DFB BFB 7FB FE7 FD7 FB7 E77 EF7 DF7 BF7 7F7,键值到键号的转换: 闭合的键号=行首键号+列号,键盘扫描子程出口: (A)=键号 对8155的初始化在主程序中完成,设PA为基本输出,PC为基本输入。,KEY1: ACALL IfPressKey ;判断有无键按下 JNZ KeyDebouce ;有,(A)0 AJMP KEY1 KeyDebouce:ACALL T12MS ;delay 12ms ACALL IfPressKey ; 再判断 JNZ ScanKeypad ; 有,逐列扫描键盘 AJMP KEY1 Scankeypad:MOV R2,#0FEH ;首列扫描字 MOV R4,#00H ;首列号 LK4: MOV DPTR,#7F01H ;PA口地址 MOV A,R2 MOVX DPTR,A ;列扫 INC DPTR INC DPTR ;PC口地址 MOVX A,DPTR ;读入行 JB ACC.0,LONE ; 第0行无键按下转 MOV A,#00H ;行首键号 AJMP LKP ; 转求键号,LONE: JB ACC.1,LTWO MOV A,#08H AJMP LKP LTWO: JB ACC.2,LTHR MOV A,#10H AJMP LKP LTHR: JB ACC.3,NEXT MOV A,#18H LKP: ADD A,R4 ;行首键号列号 PUSH ACC LK3: ACALL IfPressKey ;等待键释放 JNZ LK3 POP ACC ; 键号送A RET NEXT: INC R4 ; 指向下一列 MOV A,R2 ; 判断8列扫描完否? JNB ACC.7,KND ; 完,返回,RL A ;否则变为下列扫描字 MOV R2,A AJMP LK4 ;转下列扫描 KND: AJMP KEY1 IfPressKey : MOV DPTR,#7F01H ;PA口地址 MOV A,#00H ;送全扫描字 MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR CPL A ANL A,#0FH RET T12MS: MOV R7,#18H ;12ms延时子程 TM: MOV R6,#0FFH TM6: DJNZ R6,TM6 DJNZ R7,TM RET,三、键操作及功能处理,MOV DPTR,#JMPTAB CLR C RLC A JMP DPTR+A JMPTAB: AJMP AAA AJMP BBB AJMP CCC .,8.1.2 LED显示器接口及显示程序,一、LED显示器结构原理,二、LED显示器接口及显示方式,LED有静态(占较多I/O口线)和动态(需不断扫描)两种显示方式。,三、LED显示器与8155接口及显示子程序,动态显示:扫描每位LED的间隔不能超过20ms,并注意保持延时一段时间。,DIS: MOV R0,#7EH ;显示缓冲区 MOV R2,#01H ;位码 MOV A,R2 LP0: MOV DPTR,#7F01H MOVX DPTR,A INC DPTR MOV A,R0 ADD A,#0DH MOVC A,A+PC ;段码 MOVX DPTR,A ACALL D1MS DEC R0 MOV A,R2 JB ACC.5,LP1 RL A MOV R2,A AJMP LP0 LP1: RET,DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,40H,00H D1MS: MOV R7,#02H DL: DJNZ R6,DL1 DL1: DJNZ R7,DL RET,8.1.3 键盘/LED显示器与8155接口及键盘扫描子程序,KD1: MOV A,#00000011B ;PA,PB为输出方式,PC为输入方式 MOV DPTR,#7F00H MOVX DPTR,A KEY1: ACALL IfPressKey JNZ LK1 ACALL DIS ; 调用显示子程 AJMP KEY1 LK1: ACALL DIS ;调用显示子程并delay 12ms ACALL DIS ACALL IfPressKey ; 逐行扫描键盘 JNZ ScanKeypad JNZ DIS AJMP KEY1 Scankeypad:MOV R2,#0FEH MOV R4,#00H LK4: MOV DPTR,#7F01H MOV A,R2 MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP LONE: JB ACC.1,LTWO MOV A,#08H AJMP LKP,LKP: ADD A,R4 ;行首键号列号 PUSH ACC LK3: ACALL IfPressKey ;等待键释放 JNZ LK3 POP ACC RET NEXT: INC R4 MOV A,R2 JNB ACC.7,KND RL A MOV R2,A AJMP LK4 KND: AJMP KEY1 IfPressKey:MOV DPTR,#7F01H MOV A,#00H MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR CPL A ANL A,#0FH RET,LTWO: JB ACC.2,LTHR MOV A,#10H AJMP LKP LTHR: JB ACC.3,NEXT MOV A,#18H,8.1.4 串行口控制的键盘/LED显示器接口电路,KEY: MOV A,#00H MOV SBUF,A KL0: JNZ TI,KL0 CLR TI KL1: JNB P1.0,PK1 JB P1.1,KL1 PK1: ACALL D10MS JNB P1.0,PK2 JB P1.1,KL1 PK2: MOV R7,#08H MOV R6,#FEH MOV R3,#00H PL5: MOV A,R6 MOV SBUF,A KL2: JNB TI,KL2 CLR TI JNB P1.0,PK4 JNB P1.1,PK5 MOV A,R6 RL A MOV R6,A INC R3 DJNZ R7,PL5 RET,PK5: MOV R4,#08H AJMP PK3 PK4: MOV A,#00H MOV SBUF,A KL3: JNB TI,KL3 CLR TI KL4: JNB P1.0,KL4 JNB P1.1,KL4 MOV A,R4 ADD A,R3 SUBB A,#0AH JNC KL6 MOV DPTR,#TABL ADD A,#0AH MOVC A,A+DPTR MOV R0,60H MOV R0,A INC R0 CJNE R0#60H,KD MOV 60H,#58H SJMP KD1,KD: MOV 60H,R0 KD1: ACALL LED RET KL6: MOV B,#03H MUL AB MOV DPTR,KTAB JMP A+DPTR KTAB: LJMP K1 LJMP K2 TABL: DB C0H,F9H,A4H,B0H DB 99H,92H,82H,F8H DB 80H,90H LED: SETB P1.2 MOV R7,#08H MOV R0,#58H LED1: MOV A,R0 MOV SBUF,A LED2: JNB TI,LED2 CLR TI INC R0 DJNZ R7,LED1 CLR P1.2 RET,A/D、D/A转换在单片机系统中的应用示意图,MCS-51,D/A 转换器,控制 执行机构,A/D 转换器,多 路 开 关,传感器1,传感器2,传感器n,控制 执行机构,温度、压力、流量等信号,模拟 信号,模拟 信号,数字信号,被控实体,8.2 单片机测控系统前向通道配置传感器及小信号放大电路,传感器 模拟小信号放大,8.3 前向通道中的A/D转换器及接口技术 8.3.1 逐次逼近型A/D转换器及接口技术,一、ADC0809 A/D串换器芯片,ADC0809芯片的引脚,IN0IN7: 八路模拟电压输入端; ALE: 地址锁存控制信号,上升沿送入、下降沿锁存; addA addC: 地址输入线; START: 启动输入端,高电平有效。 EOC:转换结束标志输出. 高电平表明转换完成。再次启动ADC时该引脚变低电平,直到转换完成后再次变高电平。 D7D0:数字量输出线。 OE:输出三态控制线.置高电平时数据经D7D0向外输出。 CLOCK:时钟输入端。 提供640KH逐次比较脉冲时序。 Vref(+)、 Vref(-):参考电压输入,为电阻网络提供电压。 Vref(+)、 Vref(-)可以与Vcc和GND 连接。 Vcc、GND:电源和地。,二、ADC0809与8031接口 连接方案一:,例:某粮库某冷冻厂需对8点进行温度巡回检测,被测温度范围3050c.,MAIN: MOV R0,#0A0H MOV R2,#08H SETB IT1 SETB EA SETB EX1 MOV DPTR,#7FF8H MOVX DPTR,A ;启动A/D转换 HERE: SJMP HERE ;Interrupt MOVX A,DPTR MOVX R0,A INC DPTR INC R0 DJNZ R2,DONE RETI DONE: MOVX DPTR,A RETI,连接方案二:,/RD /WR P0口 MCS-51 ALE /INT1,OE START ALE ADC0809 addC addB addC D7D0 CLOCK EOC,地 址 锁 存 器,地 址 译 码 器,+,+,P0.2,P0.1,P0.0,分频器,F0H,该连接方案IN0-IN7的通道地址怎么给出?,正确理解 MOVX Ri,A指令,是设计ADC与单片机接口的关键。指令执行周期:P0先输出Ri中的地址F0H(地址信号锁存在373中),后输出A中通道代码(数据信号锁存到ADC中)。,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,/Psen,A7-A0,指令,Ri=F0H,A中数据,/WR,P0口,选中外部单元,MOVX Ri ,A 指令的时序,START、ALE=/ WR/ F0H,OE=/ RD/ F0H,锁存A中通道地址于ADC,启动ADC,锁存低8位地址于373中,对IN0-IN7上的模拟电压采集并送到内部RAM30H开始的单元 (采用中断方式),ORG 0000H LJMP START ORG 0013H LJMP CINT1 ORG 0A00H START:MOV R1,#30H ;数据区指针R1赋初值30H MOV R4,#08H ;计数器R4赋初值08H MOV R2,#00H ;通道代码送R2 SETB EA SETB EX1 ;开/INT1中断 SETB IT1 ;设/INT1为边沿触发 MOV R0,#0F0H ;ADC地址送间址寄存器R0 MOV A,R2 ;通道代码送累加器A MOVX R0,A ;送通道代码并启动ADC SJMP $ ;等待中断,ORG 0100H CINT1:MOV R0,#0F0H ;中断服务程序 MOVX A,R0 ;读入ADC数据 MOV R1,A ;存入转换的数据 INC R1 ;修改数据区指针R1 INC R2 ;修改通道代码寄存器R2 MOV A,R2 ;通道代码送累加器A MOVX R0,A ;送下一个通道代码并启动ADC DJNZ R4,LOOP ;若未采集完转LOOP CLR EX1 ;采集完时,关中断 LOOP:RETI ;中断返回 END,初始化: R0:ADC口地址=F0H R1: 数据块指针=30H R2:ADC通道代码=00H R4:循环计数器=08H,开INT1中断,送通道代码并启动ADC MOVX R0 ,A,等待INT1中断,CINT1,从ADC中读数据 MOVX A,R0,修改数据指针 修改同道代码,数据送内存 MOV R1,A,送下一个通道代码 并启动ADC,8个通道完成?,返回,Y,N,主程序流程图,关闭INT1,中断服务程序,采用查询方式的ADC采集程序,ORG 0000H LJMP 0100H ORG 0100H START: MOV R1,#30H ;数据区指针R1赋初值30H MOV R4,#08H ;计数器R4赋初值08H MOV R2,#00H ;通道代码送R2 MOV A,#00H ;通道代码送A MOV R0,#0F0H LOOP: MOVX R0,A ;送通道代码,启动ADC JB IE1,$ ;ADC转换是否结束 MOVX A,R0 MOV R1,A;取ADC的转换数据 INC R1 INC A DJNZ R4,LOOP SJMP $ END,初始化: R0:ADC口地址=F0H R1: 数据块指针=30H R2:ADC通道代码=00H R4:循环计数器=08H,送通道代码并启动ADC MOVX R0 ,A,停机,IE1=1?,从ADC中读数据 MOVX A,R0,数据送内存 MOV R1,A,C,C,修改数据指针 修改同道代码,8个通道完成?,N,Y,查寻法流程图,8.3.2 双积分A/D转换器机及接口技术,8.4 系统后向通道配置及接口技术,8.4.1 后向通道中的功率开关器件及接口 一、继电器及接口 二、光电耦合器(隔离器)件及驱动接口,8.4.2 后向通道中的D/A转换及接口技术,D7 : D0,t,Vout,数字量输入N,Vout 模拟量 输出,将数字量N(D7D0)转换为模拟量Vout的器件称之为D/A转换器。,D/A 转换器,一、D/A转换芯片DAC0832,DAC0832芯片引脚介绍,数字量输入线DI7DI0; 第1级缓冲控制线: ILE:允许数字量输入线,高电平有效。 /CS:片选线,低电平有效。 /WR1:写命令控制线,低电平有效。 【锁存原理】 ILE= 1, /CS= /WR1=0时:数据进入输入寄存器; 反之,条件不满足时:锁存器锁存数据。,第2级缓冲控制线(控制DAC新的转换时刻): /WR2:写命令控制线,低电平有效。 /XFER:输入传送控制线,低电平有效。 【锁存原理】 /WR2=0,/XFER=0时:数据进入DAC寄存器,通过 T型电阻网络实现DAC转换; 反之,条件不满足时:锁存器锁存数据。DAC寄 存器不接收输入寄存器的数据。,输出线: Rfb:与外接运算放大器的输出端相连。 Iout1、Iout2:模拟电流输出线,分别与运算放大器的反相端、同相端连接。 电源线: VCC:电源输入线,+5V+15V之间。 VREF:参考电压输入线,-10V+10V范围内,由基准电源提供。 DGND:数字电源地。 AGND:模拟电源地。, ,I Rf,V out,电流 / 电压变换,DAC0832,Iout1,Iout2,V ref,根据DAC0832结构特点,DAC0832的接法有: 无缓冲的直通方式:用于无CPU的普通仪表场合。 单 缓 冲 方 式: 在单片机系统中常用的使用模式。 双 缓 冲 方 式: 用于多DAC的应用场合。,二、D/A转换器与8031接口,1、单缓冲方式,将DAC两个缓冲器中的后级直通(/XFER,/WR2=0)。前级的/WR1与单片机的/WR连接,/CS与地址译码器连接。这样,执行MOVX指令时,DAC就开始进行转换。 MOV R0,#0FEH ;DAC0832的地址送R0 MOVX R0,A ;产生/WR、/CS信号使0832进行转换。,/WR P0口 ALE,/WR1 /WR2 /XFER Rfb /CS Iout1 ILE Iout2 DI7DI0,锁 存 器,译 码 器,+5V, ,V out,FEH,MOVX R0,A指令时序图,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,Psen,A15-A8(PC),A7-A0,指令,A7-A0,数据,/RD或 /WR,P2口,P0口,选中DAC0832,R0中的地址 (FEH),累加器A中的数据,使用DAC0832作波形发生器,输出锯齿波、三角波和方波。 1,锯齿波发生器程序: ORG 1000H START:MOV R0,#0FEH ;DAC口地址 MOVX R0,A ;数据送DAC INC A ;数据加一 SJMP START ;返回继续 END 【说明】:单极性输出Vout,/WR1 /WR2 /XFER Rfb /CS Iout1 ILE Iout2 DI7DI0, ,V out,Vout,t,2,三角波发生器程序: ORG 1000H START: CLR A MOV R0,#0FEH DOWN: MOVX R0,A INC A JNZ DOWN UP: DEC A MOVX R0,A JNZ UP SJMP DOWN END 【说明】:单极性输出Vout,/WR1 /WR2 /XFER Rfb /CS Iout1 ILE Iout2 DI7DI0, ,V out,Vout,t,3,方波发生器程序: ORG 1000H START:MOV R0,#0FEH ;DAC口地址 LOOP: MOV A,#33H ;数据为33H MOVXR0,A ;DAC转换 ACALL DELAY ;调延时 MOV A,#0FEH ;数据为FEH MOVX R0,A ;DAC转换 ACALL DELAY ;调延时 SJMP LOOP ;返回继续 DELAY: : END 【说明】:单极性输出Vout,/WR1 /WR2 /XFER Rfb /CS Iout1 ILE Iout2 DI7DI0, ,Vout,Vout,t,2、双缓冲方式,/WR P0口 ALE,/WR1 /WR2 /CS Rfb /XFER Iout1 ILE Iout2 DI7DI0,锁 存 器,译 码 器,+5V, ,V X,FDH FEH FFH,/WR1 /WR2 /CS Rfb /XFER Iout1 ILE Iout2 DI7DI0,+5V, ,V Y,第一级缓冲:数据寄存器存:/WR1,/CS 第二级缓冲:DAC寄存器:/WR2,/XFER,设内部RAM单元有两个长度为30的数据块,起始地址分别为DA1和DA2,试编程将DA1,DA2中的数据分别从1#和2#DAC0832输出的程序。 【解】:FDH:1#DAC0832数字量输入控制口; FEH:2#DAC0832数字量输入控制口; FFH:1#,2#DAC0832的DAC转换控制口; R2为数据块长度计数器 0区R1为DA1数据块指针,1区R1为DA2数据块指针; R0用于存放DAC口地址。,ORG 1200H DA1 DATA 20H ;DATA为数据、地址赋值伪指令 DA2 DATA 40H ;为左边的“字符”名称赋值 DTOUT: MOV R1,#DA1 ;0区的R1指向DA1数据区 MOV R2,#30 ;数据区长度30送计数器R2 SETB RS0 ;CPU转向1#工作寄存器区 MOV R1,#DA2 ;1#区R1指向DA2数据区 CLR RS0 ;返回0#工作寄存器区,程序清单,NEXT: MOV R0,#0FDH ;指向1#输入数据口 MOV A,R1 ;取DA1数据 MOVX R0,A ;数据送1#的数据寄存器 INC R1 ;修改DA1数据区指针 SETB RS0 ;CPU转向1#工作寄存器区 MOV R0,#0FEH ;指向2#输入数据口 MOV A,R1 ;取DA2数据 MOVX R0,A ; 数据送2#的数据寄存器 INC R1 ;修改DA2数据区指针 INC R0 ;R0=FFH,指向1#、2#后级 MOVX R0,A ;同时启动1#、2# DAC进行转换 CLR RS0 ;CPU转回0# 工作寄存器区 DJNE R2,NEXT ;30个数据是否完成 SJMP DTOUT ;未完时,转DTOUT继续 END,程序流程图,初始化: 0区的R1做DA1指针 1区的R1做DA2指针,计数器R2赋初值30,从DA1中取数据送1#,修改DA1指针,启动1#、2#DAC,从DA2中取数据送2#,修改DA2指针,R2-1R2 R2=0?,N,Y,外设接口电路

温馨提示

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

评论

0/150

提交评论