




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目管理考试技巧与方法试题及答案
- 注册会计师考试的界限与专业化趋势分析试题及答案
- 有效项目管理技巧试题及答案
- 高中摄影课题申报书
- 学科素养课题申报书
- 理财中的创新思维培养与实践试题及答案
- 项目管理协调能力测试试题及答案
- 注册会计师考试整体把握试题及答案
- 辽宁高校课题申报书
- 2025年注册会计师答案解析及试题
- BIM应用与项目管理知到智慧树章节测试课后答案2024年秋咸阳职业技术学院
- 卫生监督协管服务项目考核培训课件
- 2025年高考数学模拟卷新高考专用
- 水喷砂除锈施工方案
- 麻醉复苏室理论考试试题及答案
- 国家安全教育大学生读本-第一章完全准确领会总体国家安全观
- 第四讲下好区域协调发展这盘棋-2024年形势与政策(课件)
- 降低静脉输液外渗发生率
- 配网线路倒闸操作培训
- 女性学:女性精神在现代社会中的挑战学习通超星期末考试答案章节答案2024年
- 2024工业机器人考试题库(含答案)
评论
0/150
提交评论