第十章-接口技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章接口技术

10.1在80C51应用系统中扩展一片8255外界4位显示器和4位BCD码拨盘(参考题图10-1电路),试画出该部分的接口逻辑电路、并编写相应的显示子程序和读拨盘的子程序。

答:参考题图10-1设计电路如题图10-2所示,此外在PC0~3的各引脚上均接有一下拉电阻,图中省略没画。由题图10-2电路知A、B、C口和命令口地址分别如下:

ADDR_PORTA EQU 07FFCH ;A口地址

ADDR_PORTB EQU 07FFDH ;B口地址

ADDR.PORTC EQU 07FFEH ;C口地址

ADDR_CMND EQU 07FFFH ;命令口地址

;定义4个BCD码变量

CODE1 EQU 30 H

CODE2 EQU 31H

CODE3 EQU 32H

CODE4 EQU 33H

ORG 0030H

MOV A,#10000001B ;设置8255的PA、PB口为输出

MOV DPTR,#ADDR_CMND ;PC口高4位为输出,低4位为输人

MOVX @DPTR,A

PRG_START:

MOV CODEl,#00H ;初始化4个BCD码值

MOV CODE2,#00H

MOV CODE3,#00H

MOV CODE4,#00H

MOV R3,#8FH ;置码盘扫描码初值

MOV R2,#04H ;置码盘扫描次数

FIND_CODE:

MOV DPTR,#ADDR_PORTC

MOV A,R3

MOVX @DPTR.A ;将码盘扫描码送出

MOVX A,@DPTR;读PC口低4位

MOV Rl,A ;暂存读数

MOV C,ACC.3

MOV A,CODEl

RLC A

MOV CODEI,A ;将ACC.3从左移人CODEl MOV A,Rl ;取读数

MOV C,ACC.2

MOV A,CODE2

RLC A

MOV CODE2.A ;将ACC.2从左移人CODE2 MOV A,R l;取读数

MOV C,ACC.1

MOV A,CODE3

RLC A

MOV CODE3,A ;将ACC.l从左移人CODE3 MOV A,Rl ;取读数

MOV C,ACC.0

MOV A,CODE4

RLC A

MOV CODE4,A ;将ACC.0从左移人CODE4 MOV A,R3

CLR C

RRC A ;更改扫描位

MOV R3,A

DJNZ R2,FIND_CODE ;4次扫描末完,继续

MOV Rl,#CODEl ;将CODEl地址送Rl

MOV R2,#04H ;设置动态扫描位数

MOV R3,#0F7H ;设置当前扫描位

DSP_LP:

MOV A,#OFFH

MOV DPTR,#ADDR_PORTA

MOVX @DPTR,A ;关显示

MOV A,@Rl ;读当前地址内容

ADD A,#03H ;转换成段码

MOVC A,@A+PC

AJMP DSP_LPl

DM_TAB:

DB 03FH,006H,05BH,04FH,066H,06DH,07DH,007H

DB 07FH,06FH,000H,000H,000H,000H,000H,000H ;A~F不显示'

DSP_LP1:

MOV DPTR, # ADDR_PORTB ;设段码地址

MOVX @ DPTR, A ;将段码送出

MOV A,R3 ;取位码

MOV DPTR, #ADDR_PORTA ;设位码地址

MOVX @ DPTR, A ;将位码送出

RR A ;位码右移

MOV R3,A

ACALL DELAY_10MS ;调延时l0ms子程序(在此省略)

DJNZ R2,DSP_LP ;显示未完,继续

AJMP PRG_START ;转去执行读码盘

10.2 用串行口扩展4个发光数码管显示电路,编程使数码管轮流显示"ABCD"和"EFGH",每秒钟变换一次。

答:根据题图10-3中电路,设计程序如下

ORG 0030H

CLR P1. 0 ;清显示

SETB P1. 0

MOV SCON,#00 H ;设置串口工作方式

EX10_2A:

MOV R1,#04H ;显示位数

MOV R2,#00H ;地址偏移量

EX10_2B:

MOV A,R2 ;取显示段码

ADD A,#03H

MOVC A,@A+PC

AJMP EX10_2C ;跳转

DB 77H,7CH,39H,5EH ;A,B,C,D的段码(本例中为共阳极)

EX10_2C:

MOV SBUF,A ;启动串口发送

JNB TI, $ ;等待一帧发送完毕

CLR TI ;清发送中断标志

INC R2 ;修改地址偏移量

DJNZ R1,EX10_2B ;一屏显示未完,继续

ACALL DELAY ;调15延时子程序(省略)

MOV R1,#04H ;下一帧显示

MOV R2,#00H

EX10_2D:

MOV A,R2

ADD A,#03H

MOVC A,@A+PC

AJMP EX10_2E

DB 79H,71H,3DH,76H ;E,F,G,H的段码

EX10_2E:

MOV SBUF,A

JNB TI, $

CLR T1

INC R2

DJNZ R1,EX10_2D

CALL DELAY ;调1s延时子程序(省略)

AJMP EX10_2A ;循环

10.3 试说明非编码键盘的工作原理。为何要消除键抖动,又为何要等待键释放?

答:由非编码键盘所提供的行和列矩阵,通过接口电路或者单片机的I/O口与CPU相连。CPU可以采用查询或中断方式了解有无键输人并检查是哪一个键按下,且将该键号送入CPU。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。

由于目前,无论是按键或是键盘的大部分,都是利用机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响,在闭合及断开即释放瞬间均有抖动过程,从而使电压信号也出现抖动。抖动时间长短与开关的机械特性有关。

按键的稳定闭合时间,由操作人员的按键动作所确定,一般为十分之几秒至几秒时间。在此期间电压信号将出现多次变化很容易产生误判。为了保证CPU对键的一次闭合仅作一次键输人处理,必须去除抖动影响。

当键释放时同样存在键抖动影响,为了确保键释放也需要等待和判别。

10.4 试设计一个用8255与16键键盘连接的接口电路,并编写键码识别程存。

答:由题图10-4电路知C口和命令口地址分别如下

相关文档
最新文档