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

下载本文档

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

文档简介

第9章常用外围设备接口电路

本章要点:

畲LED数码管及编码方式

令静态显示方式及其典型应用电路

0动态显示方式及其典型应用电路

⑥虚拟12c总线串行显示电路

0键盘去抖动和连接、控制方式

◎独立式按键及其接口电路

⑤矩阵式键盘及其接口电路

0并行A/DADC0809及其接口电路

3串行A/DADC0832及其接口电路

◎12c串行A/D典型应用电路

畲DAC0832及其接口电路

◎12c串行D/A典型应用电路

。开关量驱动输出接口电路

§9-1LED数码管显示接口

・、LED数码管

109876

a

12345go

Dpo

edcomcDp

⑸外形和引脚(b)共阴极结构(c)共阳极结构

图9-2LED数码管

BLED数码管的软件译码

局电平点壳

hgf…・・

接地丁

B八段LED数码管段代码编码表(连线不同可有多种表):

LED数码管分类:

按其内部结构可分为共阴型和共阳型;

按其外形尺寸有多种形式,使用较多的

是0.5〃和0.8〃;

按显示颜色也有多种形式,主要有红色

和绿色;

按亮度强弱可分为超亮、高亮和普亮。

正向压降一般为1.5〜2V,额无电流为

10mA,最大电流为40mA。静态显示时取10mA

为宜,动态扫描显示,可加大脉冲电流,但

一般不超过40mA。

二、LED数码管编码方式

表9-1共阴和共阳LED数码管几种八段编码表

显示共阴顺序小数点暗共阴逆序小数点暗共阳顺序共阳顺序

数字Dpgfedcba16进制abcdefgDp16进制小数点亮小数点暗

0001111113FH11111100FCH40HC0H

10000011006H0110000060H79HF9H

2010110115BH11011010DAH24HA4H

3010011114FH11110010F2H30HB0H

40110011066H0110011066H19H99H

5011011016DH10110110B6H12H92H

6011111017DH10111110BEH02H82H

70000011107H11100000E0H78HF8H

8011111117FH11111110FEH00H80H

9011011116FH11110110F6H10H90H

显示数转换为显示字段码的步骤:

⑴从显示数中分离出显示的每一位数字

方法是将显示数除以十进制的权

⑵将分离出的显示数字转换为显示字段码

方法是查表

【例9-1】已知显示数存在内RAM30H(高位)、

31H中,试将其转换为5位共阴字段码(顺序),

存在以30H(高位)为首址的内RAM中。

解:连续调用下列二个子程序即可。

⑴分离显示数字子程序

SPRT:MOVRO,#30H置万位BCD码间址

MOVA,30H置被除数

MOVB,31H

MOVR6,#27H置除数10000=2710H

MOVR5,#10H

LCALLSUM除以10000,万位商存30H,余数存A、B

MOVR6,#03H置除数1000=03E8H

MOVR5,#0E8H

INCRO指向千位商间址(31H)

LCALLSUM除以1000,千位商存31H,余数存A、B

MOVR6,#0置除数100

MOVR5,#100

INCRO指向百位商间址(32H)

LCALLSUM除以100,百位商存32H,余数存A(B=0)

MOVB,#10置除数10

DIVAB除以10

INCRO指向十位商间址(33H)

MOV@R0,A十位商存33H

XCHA,B读个位数

INCRO指向个位间址(34H)

MOV@R0,A个位存34H

RET

说明:SUM是16位除以16位子程序:(A、B)+(R6、R5)二商@R0,余数(A、B)。(参阅例4-9)

⑵转换显示字段码子程序

CHAG:MOVDPTR,#TAB置共阴字段码表首址

MOVRO,#30H置显示数据区首址

CGLP:MOVA,@R0取显示数字

MOVCA,@A+DPTR读相应显示字段码

MOV@R0,A存显示字段码

INCRO指向下一显示数字

CJNERO,#35H,CGLP判5个显示数字转换完否?未完继续

RET转换完毕,结束

TAB:DB3FH,06H,5BH,4FH,66H共阴字段码表

DB6DH,7DH,07H,7FH,6FH

三、静态显示方式及其典型应用电路

LED数码管显示分类:静态显示方式和动态显示方式。

⑴静态显示方式,每一位字段码分别从I/O控制口输

出,保持不变直至CPU刷新。

特点:编程较简单,但占用I/O口线多,一般适用

于显示位数较少的场合。

⑵动态显示方式,在某一瞬时显示一位,依次循环

扫描,轮流显示,由于人的视觉滞留效应,人们看

到的是多位同时稳定显示。

特点:占用I/O端线少,电路较简单,编程较复

杂,CPU要定时扫描刷新显示。一般适用于显示位数

较多的场合。

LED显示器的扩展(显示方式)

nLED数码管的显示方式:③静态与动态

用静态显示:I

各数码管在显示过程中持续得到送显信号,与各数码管接口

的I/O口线是专用的。■

n动态显示:

各数码管在显示过程中轮流得到送显信号,与各数码管接口

的I/O口线是共用的。

B静态显示特点:

无闪烁,用元器件多,占I/O线多,无须扫描,节省CPU时间,

编程简单。

n动态显示特点:

有闪烁,用元器件少,占I/O线少,必须扫描,花费CPU时间,

编程复杂。(有多个LED时尤为突出)

1、并行扩展静态显示电路

【例9-2】按图9-3编制显示子程序,显示数(W255)存在

内RAM30H中。

解:

DIRI:MOVA,30H读显示数

MOVB,#100置除数

DIVAB产生百位显示数字

MOVCA,@A+DPTR读百位显示符

MOVDPTR,ttODFFFH置74377(百位)地址

MOVX@DPTR,A输出百位显示符

MOVA,B读余类攵

MOVB,#10置除数

DIVAB产生一一位显示数字

MOVDPTR,#TAB置共9日字段码表首址

MOVCA,@A+DPTR读十位显同尺符

_位

DPTR,ttOBFFFH置)±符4

MOV74377(-示

nr

MOVX@DPTR,A输出十位小k

MOVA,B读个位显示数字

MOVDPTR,#TAB置共阳字段码表首址

MOVCA,@A+DPTR读个位显示符

MOVDPTR,#7FFFH置74377(个位)地址

MOVX@DPTR,A输出个位显不符

RET;

TAB:DBOCOH,0F9H,0A4H,OBOH,99H;共阳字段码表

DB92H,82H,0F8H,80H,90H;

2、串行扩展静态显示电路

+5VR

【例9-3]按图9-4编制显示子程序,显示字段码已分别存

在32H〜30H内RAM中。

解:

DIR2:MOVSCON,#00H置串口方式0

CLRES串口禁中

SETBPl.0“与”门开,允许TXD发移位脉冲

MOVSBUF,30H串行输出个位显示字段码

JNBTI,$等待串行发送完毕

CLRTI清串行中断标志

MOVSBUF,31H串行输出十位显示字段码

JNBTI,$等待串行发送完毕

CLRTI清串行中断标志

MOVSBUF,32H串行输出百位显示字段码

JNBTI,$等待串行发送完毕

CLRTI清串行中断标志

CLRPl.0“与”门关,禁止TXD发移位脉冲

RET

B要求:根据上图编写通过串行口和74LS164驱动共

阳LED数码管查表显示的子程序。

B条件:系统有6个LED数码管,待显数据(OOH—09H)

已放在35H—30H单元中(分别对应十万位一个位),

nDSPLY:MOVDPTR,#TABLE;共阳LED数码管译码表首址

MOVRO,#30H;待显数据缓冲区的个位地址

REDO:MOVA,QRO;通过RO实现寄存器间接寻址

MOVCA,QA+DPTR;查表

MOVSBUF,A;经串行口发送到74LS164

JNBTI,$;查询送完一个字节的第8位?

CLRTI;为下一字节发送作准备

INCRO;R0指向下一个数据缓冲单元

CJNERO,#36H,REDO;判断是否发完6个数?

RET;发完6个数就返回

TABLE:DBOCOH,0F9H,0A4H,OBOH,99H;共阳LED译码表

DB92H,82H,0F8H,80H,90H

、码输出静态显示电路

3BCDCD4511是“BCD码

一七段共阴译码/

驱动”IC;4511是

4线-7段锁存/译码/

驱动电路,能将

BCD码译成7段显

示符输出。图中:

4511ABCD为0〜9

二进制数输入端(A

是低位),abcdefg

为显示段码输出端,

邛为输入信号锁存

控制(低电平有效),

数码管为共阴数码

管。

利用4511实现静态显示与一般静态显示电路

不同,一是节省I/O端线,段码输出只需4根;二

是不需专用驱动电路,可直接输出;三是不需译

码,直接输出二进制数,编程简单;缺点是只能

显示数字,不能显示各种符号。

【例9-4】按图9-5试编制显示子程序(小数点固

定在第二位),已知显示数存在内RAM30H〜32H

中。

解:编程如下:

DIR3:MOVP1,#111OOOOOB;选通个位

ORLPl,30H;输出个位显示数

MOVPl,#110100006;选通十位

ORLP1,31H;输出十位显示数

MOVP1,#1O11OOOOB;选通百位

ORLP1,32H;输出百位显示数

RET:

四、动态显示方式

及其典型应用电路

动态显示电路

连结形式:

①显示各位的所有

相同字段线连在一起,

共8段,由一个8位

I/O口控制;

②每一位的公共端

(共阳或共阴COM)

由另一个I/O口控制。DpgfedcbaDpgfedcbaDpgfedcba

图9-6动态显示证D数码管连接方式

LED数码管动态显示举例

工作原理:从P0口送段代码,P1口送位选信号。段码虽同时

到达6个LED,但一次仅一个LED被选中。利用“视觉暂

留”,每送一个字符并选中相应位线,延时一会儿,再送/

选下一个……循环扫描即可。1

<P0.7

段PO.6

PO.5电

代6

PO.4X

PO.3

码14

PO.2

PO.1

<PO.0

AT89C51共阴

数码管

zpl15K

±

pXI4

pI3K

X

p2

p±12K

D10

yX

要求:此处为共阴数码管,P0口送段代码,Pl口送位选信号。

通过查表实现动态显示。

条件:待显数据(00H—09H)已放在:7FH—7AH单元中(分别

对应十万位~个位)

说明:由于用了反相驱动器7406,要用共阳译码表。

Sp7

p6拉

p5

代p4

Sp3

码Sp214

SP1

AT89C51管

0.5

位Pl.4

Pl.3

Pl.2

线Pl.2

0

•pon-ia'B

_

;代码,_

PI_i

;口送位选_

_

;信号

,待显加据

;已经放在:

[7FH—7AH

;单元(分别

;对应十万

!位一个位)

;使用共阳(7FH)(7EH)(7DH)(7CH)(7BH)(7AH)

;译码表。

.十万万位千位百位十位个位

数据缓冲区/显示缓冲区

DIR:MOVDPTR,#DSEG;数码管译码表首址

P0口送段MOVRO,#7AH;待显缓冲区个位地址

代码,PlMOVR3,#01H;个位的位选信号二01H

口送位选LD1:MOVA,©RO;通过R0间接寻址

信号MOVCA,©A+DPTR;查表

待显装据MOVPO,A;字段码送到POD

MOVPl,R3;字位选择送到Pl口

已经放在:

LCALLDELY;调延时1ms子程序

7FH—7AHINCR0;R0指向下一字节

单元(分别MOVA,R3

对应十万JBACC.5,LD2;判是否发完6个数?

位-个位)RLA;R1指向下一个位

使用共阳MOVR3,A;位选信号存回RI

SJMPLD1;跳去再显示下一个数

译码表。

・LD2:RET;发完6个数就返回

DSEG:DBOCOH,0F9H,0A4H,OBOH,99H;共阳译码表

DB92H,82H,0F8H,80H,90H

F!动态显示举例(循环显示“8”的实验)

实验箱从P0口扩展了两个8位的简单I/O口:

一个送段代码(字形状),地址是ODCH;

一个送位选信号(字位置),地址是ODDH。

ORG0000H

MOVRO,#0DCH;指向字形口

MOVA,#80H;送"8"的字形代码

MOVX@R0,A;输出字形代码

MOVRI,#0DDH;指向字位口

MOVA,#20H;从最高位开始

LEDO:MOVX@R15A;输出字位代码

ACALLDEYS;调延时子程序

RRA;右移一位

SJMPLEDO;循环显示“8”

1、共阴型8位动态显示电路

G1

+5V?_YO

G

G2AY1

2BY2

FY3

AY4

P1.0Y5

B宿

Pl.1

C否

P1.2

80C51

P2.7E

74377

WRCLK

如-Q78,

P0D0-D7

图9-7共阴型8位动态显示电路

【例9-5】按图9-7,试编制循环扫描(10次)显示子程序,

已知显示字段码存在以30H(低位)为首址的8字节内RAM中。

解:编程如下:

DIR4:M0VR2,#10置循环扫描次数

MOVDPTR,W7FFFH置74377口地址

DLP1:ANLP1,#11111OOOB第0位先显示

MOVRO,#30H置显示字段码首址

DLP2:M0VA,@R0读显示字段码

MOVX@DPTR,A输出显示字段码

LCALLDY2ms调用延时2ms子程序(参阅例4.13)

INCRO指向下一位字段码

INCPl选通下一位显示

CJNERO,#38H,DLP2判8位扫描显示完否?未完继续

DJNZR2,DLP18位扫描显示完毕,判10次循环完否?

CLRA10次循环完毕,显示暗

MOVX@DPTR,A

RET子程序返回

2、共阳型3位动态显示电路

图9-8共阳型3位动态显示电路

【例9-6】根据图9-8电路,试编制3位动态扫描显示程序(循环100

次),已知显示字段码存在以40H(低位)为首址的3字节内RAM中。

解:编程如卞:

DIR5:MOVDPTR,WOBFFFH置74377地址

MOVR2,#100置循环显示次数

DIR50:SETBPl.2百位停显示

MOVA,40H取个位字段码

MOVX@DPTR,A输出个位字段码

CLRPl.0个位显示

LCALLDY2ms调用延时21Tls子程序(参阅例4.13)

DIR51:SETBPl.0个位停显示

MOVA,41H取十位字段码

MOVX@DPTR,A输出十位字段码

CLRPl.1十位显示

LCALLDY2ms延时2nls

DIR52:SETBPl.1十位停显示

MOVA,42H取百位字段码

MOVX@DPTR,A输出百位字段码

CLRPl.2百位显示

LCALLDY2ms延时2ms

DJNZR2,DIR50判循环显不结束否?未完继续

ORLP1,#OOOOO111B3位灭显示

RET

ADR-15_____f24-SCL

CEXT—223-SDA

P8-322-P16

P7-421-P15

五、虚拟12c总线串行显示电路P6-520-P14

P5-6SAA19-P13

P4-7106418-Pl2

P3-817-Pll

1、SAA1064引脚功能P2-916-PIO

Pl-1015-P9

MX1-1114-MX2

①VDD、VEE:电源、接地端。电源4.5〜15V;VEE—1213—Vcc

②P1-P16:段驱动输出端。分为两个8位口:图9-9SAA1064引脚示意图

P1〜P8;P9~P16oP8、P16为高位。口锁存器具有反相功

能,置1时,端口输出0。

③MX1、MX2:位码驱动端。静态显示驱动时,一片

SAA1064可驱动二位LED数码管;动态显示驱动时,按图9-10

连接方式,一片SAA1064可驱动四位LED数码管;

④SDA、SCL:12c总线数据端、时钟端;

⑤CEXT:时钟振荡器外接电容,典型值2700pF

⑥ADR:地址引脚端。SAA1064引脚地址Al、A0采用ADR模

拟电压比较编址。当ADR引脚电平为0、3VDD/8,5VDD/8、VDD

时,相应引脚地址A2、Al、A0分别为000、001、010、011;

2、硬件电路设计

3、片内可编程功能

⑴片内寄存器

符号COMdataldata2data3data4

装载内容控制命令显示段码1显示段码2显示段码3显示段码4

片内地址00H01H02H03H04H

⑵控制命令COM

D7D6D5D4D3D2D1DO

—C6C5C4C3C2C1CO

CO:静动态控制,C0=l,动态显示,动态显示时,datal、

data2轮流从P8〜Pl输出,data3、data4轮流从P16〜P9输出;

C1:显示位1、3亮暗选择,C1=1,选择亮;

C2:显示位2、4亮暗选择,C2=1,选择亮;

C3:测试位,C3=l,所有段亮;

C4、C5、C6:驱动电流控制位,C4、C5、C6分别为1时,驱动

电流分别为3mA、6mA、12mA;C4、C5、C6全为1时,驱动电流

最大,可达21mA。

⑶写数据操作格式

SSLAWASADRACOMAdatalAdata2Adata3Adata4AP

红色部分由80c51发送,SAA1064接收;

黑色部分由SAA1064发送,80c51接收。

SLAw为写SAA1064寻址字节,

按图9-10所示连接电路:SAA1064(1)SLAw=01110000B;

SAA1064(2)SLAw=01U0110Bo

其中oni(D7〜4)为SAA1064器件地址,

D3〜1为42人90寻址字节,

末位DO为R/W;

SADR为片内寄存器地址;

COM为控制命令。

4、程序设计

【例9-7】已知8位显示符(共阴编码)已依次存入内RAM51H〜58H中,试按图9-

10编程将其输入SAA1064Q),(2)动态显示,驱动电流为12mA。设VHC软件包已

装入ROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均已按8.3.2软件包小结中协议定义。

解:VSAA:MOVMTD,#00H置SAA1064控制命令寄存器COM片内子地址

MOV31H,#01000111B置控制命令字,动态显示,驱动电流12mA

MOVNUMB,#6置发送数据数:SADR+COM+datal-4=6

SAA1:MOVRO,#51H将51H〜54H显示符数据移至32H〜35H

LCALLMOVB

MOVSLA,ttOlllOOOOB置SAA1064(1)写寻址字节SLAw

LCALLWRNB发送给SAA1064(l)

SAA2:MOVRO,#55H将55H〜58H显不符数据移至32H〜35H

LCALLMOVB

MOVSLA,ttOlllOHOB置SAA1064(2)寻址字节SLAW

LCALLWRNB发送给SAA1064(2)

RET

MOVB:MOVR1,#32H显示符数据移至32H〜35H子程序

M0VB1:MOVA,@R0读出

MOV@R1,A存入

INCRO指向下一读出单元

INCRI指向下一存入单元

CJNER1,#36H,M0VB1判4个数据移完否?未完继续

RET

§9-2键盘接口

一、键盘接口概述

1、按键开关去抖动问题

(a)键输入(b)键抖动

图9-11键操作和键抖动

键盘的抖动时间一般为5〜10ms,抖动现象会引起CPU

对一次键操作进行多次处理,从而可能产生错误。

消除抖动不良后果的方法:

⑴硬件去抖动

+5V

nRi

TRQ

74121J1

(b)单稳态梢抖电路(c)滤波消抖电路

图9-12硬件消抖电路

其中RC滤波电路去抖动电路简单实用,效果较好。

⑵软件去抖动

检测到按键按下后,执行延时10ms子程序后再确认该键

是否确实按下,消除抖动影响。

2、按键连接方式

⑴独立式按键

独立式按键是每个按键占用一根I/O端线。

特点:

①各按键相互独立,电路配置灵活;

②按键数量较多时,I/O端线耗费较多,电路结构繁杂;

③软件结构简单。

适用于按键数量较少的场合。

(2)矩阵式键盘

I/O端线栽行线和列线,按键跨接在行线和列线上,按

键按下时,行线与列线发生短路。

特点:

苍占用I/O端线较少;

②软件结构教复杂。

适用于按键较多的场合。

3、键盘扫描控制方式

⑴程序控制扫描方式

键处理程序固定在主程序的某个程序段。

特点:对CPU工作影响小,但应考虑键盘处理程序的运行间隔

周期不能太长,否则会影响对键输入响应的及时性。

⑵定时控制扫描方式

利用定时/计数器每隔一段时间产生定时中断,CPU响应

中断后对键盘进行扫描。

特点:与程序控制扫描方式的区别是,在扫描间隔时间内,

前者用CPU工作程序填充,后者用定时/计数器定时控制。定时

控制扫描方式也应考虑定时时间不能太长,否则会影响对键输

入响应的及时性。

⑶中断控制方式

中断控制方式是利用外部中断源,响应键输入信号。

特点:克服了前两种控制方式可能产生的空扫描和不能及时

响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效

率,但要占用一个宝贵的中断资源。

、独立式按键及其接口电路

1、按键直接与I/O口连接

80C5180C51

Pl.0P1.0

Pl.1Pl.1

Pl.2P1.2

(b)

图9-13独立式按键接口电路

【例9-8】按图9-13(a)、(b),试分别编制按键扫描子程序。

解:按图9T3(a)编程如下:

KEYA:ORLPl,#07H置PL0〜PL2为输入态

MOVA,Pl读键值,键闭合相应位为0

CPLA取反,键闭合相应位为1

ANLA,ftOOOOOlllB屏蔽高5位,保留有键值信息的低3位

JZGRET全0,无键闭合,返回

LCALLDYlOms非全0,有键闭合,延时10ms,软件去抖动

MOVA,Pl重读键值,键闭合相应位为0

CPLA取反,键闭合相应位为1

ANLA,W00000111B屏蔽高5位,保留有键值信息的低3位

JZGRET全0,无键闭合,返回;非全0,确认有键闭合

JBAcc.0,KAO转0#键功能程序

JBAcc.1,KA1转1#键功能程序

JBAcc.2,KA2转2#键功能程序

GRET:RET

KAO:LCALLWORKO;执行0#键功能子程序

RET

KAI:LCALLWORK1;执行1#键功能子程序

RET

KA2:LCALLWORK2;执行2#键功能子程序

RET

按图9T3(b)编程如下:

KEYB:ORLPl,#07H置Pl.0〜PL2为输入态

MOVA,Pl读键值,键闭合相应位为1

ANLA,#OOOOO111B屏蔽高5位,保留后键值信息的低3位

JZGRET全0,无键闭合,返回

LCALLDYlOms非全0,有键闭合,延时10ms,软件去抖动

MOVA,Pl重读键值,键闭合相应位为1

ANLA,#0000011IB屏蔽高5位,保留有键值信息的低3位

JZGRET空0,无键闭合,返回;菲金0,流认有键闭合

JBAcc.0,KBO转0#键功能程序

JBAcc.1,KB1转1#键功能程序

JBAcc.2,KB2转2#键功能程序

GRET:RET

KBO:LCALLWORKO执行o#键功能子程序.

RET

KB1:LCALLW0RK1执行1#键功能子程序

RET

KB2:LCALLW0RK2执行2#键功能子程序

RET

2、按键与扩展I/O口连接

⑴按键与并行扩展I/O口连接

图9-14按键与并行扩展I/O口连接电路

【例9-9】按图9-14,试编制按键扫描子程序,将键信号存

入内RAM30Ho

解:编程如下:

KEY99:MOVDPTR,#7FFFH置74373口地址

MOVXA,©DPTR输入键信号("0”有效)

MOV30H,A存键信号数据

RET

⑵按键与串行扩展I/O口连接

参阅8.2.4,图8-6,【例8-2】。

三、矩阵式键盘及其接口电路

80C51

K1

P1.0o

K4班K5冷K6冷K7冷

Pl.1--~o----O---O-O--

K8Y9K9nK1

P1.2O

K12*K13?K14?,K15?

P1.3--------O--------------O-O

P1.4

P1.5

P1.6

P1.7_(ZZJ—

图+15矩阵式键盘的结构

【例9-10]按图9-15及图9-16,试编制矩阵式键盘扫描

程序。

解:KEY:MOVPl,#OFOH行线置低电平,列线置输入态

KEY0:MOVA,Pl读列线数据

CPLA数据取反,“1”有效

ANLA,#OFOH屏蔽行线,保留列线数据

MOVRI,A存列线数据(R1高4位)

JZGRET全0,无键按下,返回

KEY1:MOVPl,#OFH行线置输入态,列线置低电平

MOVA,Pl读行线数据

CPLA数据取反,“1”有效

ANLA,#0FH屏蔽列线,保留行线数据

MOVR2,A存行线数据(R2低4位)

JZGRET全0,无键按下,返回

JBCFO,WAIT已有消抖标志,转

SETBFO无消抖标志,置消抖标志

LCALLDYlOms调用10ms延时子程序(参阅例4.13),消抖

SJMPKEYO重读行线列线数据

GRET:RET

WAIT:MOVA,Pl等待按键释放

CPLA

ANLA,#OFH

JNZWAIT按键未释放,继续等待

KEY2:MOVA,RI取列线数据(高4位)

MOVRI,#03H取列线编号初值

MOVR3,#03H置循环数

CLRC

KEY3:RLCA依次左移入c中一

JCKEY4C=1,该列有键按下,(列线编号存R1)

DECRIC=0,无键按下,修正列编号

DJNZR3,KEY3判循环结束否?未结束继续寻找有键按下的列线

KEY4:MOVA,R2取行线数据(低4位)

MOVR2,#00H置行线编号初值

MOVR3,#03H置循环数

CLRC

KEY5:RRCA依次右移入C中

JCKEY6C=1,该行有键按下,(行线编号存R2)

INCR2C=0,无键按下,修正行线编号

DJNZR3,KEY5判循环结束否?未结束继续寻找有键按下的行线

KEY6:MOVA,R2取行线编号

CLRC

RLCA行编号X2

RLCA行编号X4

ADDA,RI行编号X4+列编号二按键编号

KEY7:CLRC

RLCA按键编号X2

RLCA按键编号X4(LCALL+RET共4字节)

MOVDPTR,#TABJ

JMP@A+DPTR散转,执行相应键功能子程序

TABJ:LCALLWORKO调用执行0#键功能子程序

RET

LCALLW0RK1调用执行1#键功能子程序

RET

••••••

LCALLWORK15;调用执行15#键功能子程序

RET

【例9-11]按图9-17,试编制中断方式键盘扫描

程序,将键盘序号存入内RAM30Ho

图定17工作于中断方式的矩阵式键盘接口电路

解:

ORG0000H;复位地址

LJMPSTAT转初始化

ORG0003H中断入口地址

LJMPPINTO转中断服务程序

ORG0100H初始化程序首地址

STAT:MOVSP,#60H置堆栈指针

SETBITO置为边沿触发方式

MOVIP,#00000001B置为高优先级中断

MOVP1,#OOOO1111B置P1.0〜P1.3置为输入态,置PL4〜PL7输出0

SETBEACPU开中

SETBEXO开中

LJMPMAIN转主程序,并等待有键按下时中断

OGR2000H中断服务程序首地址

PINTO:PUSHAcc保护现场

PUSHPSW

MOVA,Pl读行线(PL0〜PL3)数据

CPLA数据取反,“1”有效

ANLA,#OFH屏蔽列线,保留行线数据

MOVR2,A存行线(P1.0〜P1.3)数据(R2低4位)

MOVP1,#OFOH行线置低电平,列线置输入态

MOVA,Pl读列线(PL4〜PL7)数据

CPLA数据取反,“1”后效

ANLA,#OFOH屏蔽行线,保留列线数据(A中高4位)

MOVRl,#03H取列线编号初值

MOVR3,#03H置循环数

CLRC

PINTO1:RLCA依次左移入C中

JCPINT02C=1,该列有键按下,(列线编号存R1)

DECRIC=0,无键按下,修正列编号

DJNZR3,PINTO1判循环结束否?未结束继续寻找有键按下列线

PINT02:M0VA,R2取行线数据(低4位)

MOVR2,#OOH置行线编号初值

MOVR3,#03H置循环数

PINT03:RRCA依次右移入C中

JCPINT04C=1,该行有键按下,(行线编号存R2)

INCR2c=o,无键按下,修正行线编号

DJNZR3,PINT03判循环结束否?未结束继续寻找有键按下行线

PINT04:M0VA,R2取行线编号

CLRC

RLCA行编号X2

RLCA行编号X4

ADDA,RI行编号X4+列编号二按键编号

MOV30H,A存按键编号

POPPSW

POPAcc

RETI

§9-3A/D转换接口电路

、A/D转换的基本概念

A/D转换的功能是把模拟量电压转换为N位数字

量。

设D为N位二进制数字量,UA为电压模拟量,

UREF为参考电压,无论A/D或D/A,其转换关系为:

UA=DXUREF/2N

(其中:D=DoX2°+DiX21+・・・+DN—1X2NT)

1、A/D转换器的主要性能指标:

⑴转换精度。转换精度通常用分辨率和量化误差来描述。

①分辨率。分辨率二UREF/2N

表示输出数字量变化一个相邻数码所需输入模拟电压的

变化量。N为A/D转换的位数,N越大,分辨率越高,习惯上分

辨率常以A/D转换位数N表示。

②量化误差。量化误差是指零点和满度校准后,在整个转

换范围内的最大误差。

⑵转换时间。指A/D转换器完成一次A/D转换所需时间。转

换时间越短,适应输入信号快速变化能力越强。

2、A/D转换器分类

A/D转换器分类:

按转换原理形式可分为逐次逼近式、双积分式和V/F变换式;

按信号传输形式可分为并行A/D和串行A/D。

、并行A/D

ADC0809及其接口电路

VREFI+)VREF(-)VCCGND

STARTCLKOE

图9-18ADC0809的结构框图图9-20ADC0809与80c51的连接电路

1、引脚功能和典型连接电路

⑴INO〜IN7:8路模拟信号输入端。

⑵C、B、A:8路模拟信号转换选择端。

与低8位地址中A0〜A2连接。由A0〜A2地址000〜111选择INO〜IN7八路

A/D通道。

(3)CLK:外部时钟输入端。

时钟频率高,A/D转换速度快。允许范围为10〜1280KHZ。

通常由80c51ALE端直接或分频后与0809CLK端相连接。

(4)D0-D7:数字量输出端。

⑸0E:A/D转换结果输出允许控制端。

0E=l,允许将A/D转换结果从DO〜D7端输出。通常由80c51的端与0809片

选端(例如P2.0)通过或非门与08090E端相连接。

(6)ALE:地址锁存允许信号输入端。

0809ALE信号有效时将当前转换的通道地址锁存。

⑺START:启动A/D转换信号输入端。

当START端输入一个正弹冲时,立即启动0809进行A/D转换。START端与

ALE端连在一起,由80c51而与0809片选端(例如P2.0)通过或非门相连。

(8)EOC:A/D转换结束信号输出端,高电平有效。

(9)UREF(+)、UREF(-):正负基准电压输入端。

⑩Vcc:正电源电压(+5V)。GND:接地端。

2、ADC0809应用实例

⑴中断方式

【例9-12]按图9-20,用中断方式对8路模拟信号依次A/D转

换一次,并把结果存入以30H为首址的内RAM中,试编制程序。

解:

0RG0000H;复位地址

LJMPSTAT;转初始化程序

ORG0013H;中断服务子程序入口地址

LJMPPINT1;中断,转中断服务子程序;

ORG0100H;初始化程序首地址

STAT:MOVRI,#30H;置数据区首址

MOVR7,#8;置通道数

SETBIT1;置边沿触发方式

SETBEXI;开中

SETBEA;CPU开中

MOVDPTR,#0FEF8H;置0809通道0地址

MOVX©DPTR,A;启动0通道A/D

LJMPMAIN;转主程序,并等待A/D中断

ORG0200H;中断服务子程序首地址

PINT1:PUSHAcc保护现场

PUSHPSW

MOVXA,@DPTR读A/D值

MOV@R1,A存A/D值

INCDPTR修正通道地址

INCRI修正数据区地址

MOVX©DPTR,A启动下一通道A/D

DJNZR7,GORETI判8路采集完否?未完继续

CLREXI8路聚集已完,关中

GORETI:POPPSW恢复现场

POPAcc

RETI中断返回

⑵查询方式

工作在查询方式时,0809EOC端可不必通过反相器与或相连,

直接与80c51Pl口或P3口中任一端线相连。

【例9-13]图9-20中,用PL0直接与0809E0C端相连,试用查

询方式编制程序,对8路模拟信号依次A/D转换一次,并把结果

存入以40H为首址的内RAM中。

解:

MAIN:MOVRI,#40H置数据区首址

MOVR7,#8置通道数

SETBPl.0置Pl.0输入态

MOVDPTR,#0FEF8H置0809通道0地址

LOOP:MOVX@DPTR,A启动A/D

JNBPl.0,$查询A/D转换结束否?未完继续查询等待

MOVXA,@DPTRA/D已结束,读A/D值

MOV@R1,A存A/D值

INCDPTR修改通道地址

INCRI修改数据区地址

DJNZR7,LOOP判8路采集完否?未完继续

RET8路采集完毕,返回

⑶延时等待方式

工作在延时等待方式时,0809EOC端可不必与80c51相连,是根

据时钟频率计算出A/D转换时间,略微延长后直接读A/D转换值。

【例9T4】图9-20中,0809EOC端开路,fosc=6MHz,试用延

时等待方式编制程序,对8路模拟信号依次A/D转换一次,并把

结果存入以50H为首址的内RAM中。

解:编程如下:

MAIN:MOVRl,#50H置数据区首址

MOVR7,#8置通道数

MOVDPTR,#0FEF8H置0809通道0地址

LOOP:MOVX@DPTR,A启动A/D

MOVR6,#17

DJNZR6,$延时68Hs:2机周X17=34机周,22X34=6迎S

MOVXA,@DPTR读A/D值

MOV@R1,A存A/D值

INCDPTR修正通道地址

INCRI修正数据区地址

DJNZR7,LOOP判8路采集完否?未完继续

RET8路采集完毕,返回

二、串行A/D

ADC0832及其接口电路

ADC0832是8位串行A/D转换器;

转换速度较高(250KHz时转换时间32.);

单电源供电,功耗低(15mw)。

(a)引脚图(b))典型应用接口电路

图9-21ADC0832与80C51接口电路

1、引脚功能

VDD、VSS:电源接地端,VDD同时兼任UREF;表9-3

cs:片选端,低电平有效;

通道选择

DI:数据信号输入端;编码

DO:数据信号输出端;CHOCH1

CLK:时钟信号输入端,要求低于600KHz;00+—

CHO、CH1:模拟信号输入端(双通道);01—+

2、典型鹿用电路10+

P1.0片选民;

11+

TXD发送时钟信号输入ADC0832CLK;

RXD与DI、DO端连接在一起

温馨提示

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

评论

0/150

提交评论