第十章-接口技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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口和命令口地址分别如下