ANL A,#0FH RET
;屏蔽A高半字节
执行DECI子程序的结果是:有闭合键则(A)≠0,无闭合键则(A)=0。 键盘扫描程序: KEYB: ACALL DECI ;检查有键闭合否
LK1: LK2: LK4:
LONE: LTWO: LTHR: LKP : LK3:
NEXT:`
KND: DELY: DEL1:
JNZ LK1
;A≠0则转移
AJMP KEYB
ACALL DELY ;共12ms去抖动 ACALL DECI ;再检查有键闭合否 JNZ LK2
;有键闭合,转LK2
AJMP KEYB ;无键闭合,延时6ms后转KEYB MOV R2,#FEH ;扫描处值送R2
MOV R4,#00H ;扫描列号送R4 MOV R0,#70H ;建立PA口地址 MOV A,R2
MOVX @R0,A ;扫描初值送PA口 INC R0
;指向PB口
MOVX
A,@R0 ;读PB口
JB ACC.0,LONE ;ACC.0=1第1行无键闭合,转LONE MOV A,#00H ;装第1行行值 AJMP
LKP
JB ACC.1,LTWO ;ACC.1=1第2行无键闭合,转LTWO
MOV A,#06H ;装第2行行值
AJMP
LKP
JB ACC.2,LTHR ;ACC.2=1,第3行无闭合键,转LTHR
MOV A,#0CH ;装第3行行值
AJMP
LKP
JB ACC.3,NEXT ;ACC.3=1,第4行无键闭合则转NEXT
MOV A,#12H ;装第4行行值 ADD A,R4 ;计算键码 PUSH ACC
;保护键码
ACALL DECI
;查键是否继续闭合,若闭合再延时 JNZ LK3 POP ACC ;若键起,则键码送A RET INC R4
;扫描列号加1
MOV A,R2
JNB ACC.5,KND ;第5位为0,已扫完最高位则转KND RL A MOV R2,A AJMP LK4
;进行下一列扫描 AJMP KEYB ;扫描完毕,开始新的一次
MOV R7,#18H ;延时12ms子程序(晶振12MHZ)
DJNZ R6,DEL1
DJNZ RET
R7,DELY
键盘扫描程序的运行结果,是把闭合键的键码放在累加器A中。然后再根据键码进行其它处理。 7.9.以DAC0832为例说明D/A转换器单缓冲接口方式的实现。
解:所谓单缓冲方式就是使0832的两个寄存器中有一个处于直通方式,而另一个处于
受控的锁存方式。在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出的情况下,就可采用单缓冲方式。单缓冲方式如图7.30所示,DAC0832的ILE接高电平,允许输入数据锁存,WR1和WR2都与8051的WR相接,CS和XFER与8051的P2.7(A15)相连,假设无关地址线为1,则0832的口地址为7FFFH。这种连接方法是把0832看作8051的一个带有数据锁存功能的输出设备。CPU把一个8位数据#data写入DAC寄存器,也就实现了一次D/A转换,输出一个与#data对应的模拟量。转换过程的程序如下:
+5VDAC0832P0ALE8051P2.7WR74LS373GDI0~DI7CSXFERWR1WR2VccILEVrefRfbIout1Iout2AGNDDGND-A+Vout图7.30 DAC0832单缓冲方式接口
MOV DPTR,#7FFFH ;指向0832的口地址
MOV A,#data ;取将要转换的8位数据量送A MOVX @DPTR,A ;写入0832,进行一次D/A转换并输出
7.10.以DAC0832为例说明D/A转换器双缓冲接口方式的实现。
解:所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。双缓冲方式DAC0832的连接如图7.35示。
为了实现寄存器的可控,应当给寄存器分配一个地址,以便能按地址进行操作。图中是使用地址译码
图7.35 DAC0832的双缓冲方式的连接
输出分别接CS和XFER实现的。然后再给WR1和WR2提供写选通信号。这样就完成了两个锁存器都可控的双缓冲接口方式。
由于两个锁存器占据两个地址,因此在程序中需要使用两条传送指令,才能完成一个数字量的模拟转换。假定输入寄存器地址为FEH,DAC寄存器地址为FFH。则完成一次数/模转换的程序如下:
MOV R0,#FEH
MOVX @R0,A INC R0
MOVX @R0,A
;装入输入寄存器地址 ;转换数据送输入寄存器 ;产生DAC寄存器地址 ;数据通过DAC寄存器
7.11.A/D转换器转换数据的传送有几种方式? 答:A/D转换器转换数据的传送有3种方式: 1.定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知和固定的。例如ADC0809转换时间为128μs,相当于6MHZ的MCS-51单片机共64个机器周期。
2.查询方式
A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,软件测试EOC的状态,即可确知转换是否完成,并接着进行数据传送。
3.中断方式
把表明转换完成的状态信号EOC作为中断请求信号,以中断方式进行数据传送。 7.12.简述逐次逼近式A/D转换的原理。 答:略
7.13.多片D/A转换器为什么必须采用双缓冲接口方式?
答:双缓冲方式多用于多路数/模转换系统,以实现多路模拟信号同步输出的目的。
第14题图 第15题图
7.14.使用D/A转换器产生梯形波,梯形底部在0V,梯形顶部在+2.5V,平顶宽度自定,请编程实现。 解:采用图7.30 DAC0832单缓冲方式接口,参考程序如下:
MOV MOV MOVX INC CJNZ LCALL MOV DEC JNZ LCALL MOV DJNZ DJNZ RET
DPTR,#7FFFH;输入寄存器地址 A,#00H @DPTR,A A
;转换初值 ;D/A转换 ;转换值增量 ;调延时程序
UP:
A,#80H,UP;80H为+2.5V输出对应的数字量 DELAY A,#7FH @DPTR,A A
A,DOWN DELAY R7,#2 R6,#0FFH R6,DL1 R7,DL2
DOWN: MOVX
DELAY: MOV DL2: DL1:
7.15.使用D/A转换器产生如图所示的三角波,请编程实现 解:根据图7.30,参考程序如下:
MOV
DPTR,#7FFFH
MOV INC JNZ MOV DEC JNZ SJMP
A,#00H @DPTR,A A UP A,#0FEH @DPTR,A A DOWN UP
UP: MOVX
DOWN: MOVX
7.16.使用8031和ADC0809芯片设计一个巡回检测系统。共有8路模拟输入,采用周期为1秒,其它条件可自定。请画出电路连接图并进行程序设计。
解:设采集的数据依次放在内部RAM以Dada开始的8个单元,电路如图7.41所示,ADC0809的CLK引脚时钟为500KHz(设单片机的时钟为6MHz),满足0809典型值范围,其转换时间约为100us,则转换8路模拟信号时间远远小于1S。现采用定时器T0工作于方式1实现定时10次100ms来实现。
定100ms的初值为:
216-100×10-3/(2×10-6)=15 536=3CB0H 程序如下:
ORG AJMP ORG AJMP ORG AJMP
0000H MAIN 000BH CT0 0013H INT1 R0,#Data R2,#08H TL0,#0B0H TH0,#3CH R3,#0AH IT1 ET0 EX1 EA
;数据存区首址 ;8路模拟信号 ;100ms定时
;循环次数
;外部中断1边沿触发 ;允许T0中断
;允许外部中断源1中断 ;CPU开中断
;启动D/A转换 ;开始计数 ;等待中断
;外部中断1入口 ;T0中断入口
;主程序: MAIN: MOV
MOV MOV MOV MOV MOV SETB SETB SETB ESTB MOV MOV MOVX SETB SLMP
TMOD,#01H ;T0方式1
DPTR,#0FEF0H;D/A转换地址 A,#00H @DPTR,A TER0 $
;T0中断服务程序: CTC0:MOV
MOV DJNZ MOV
TL0,#0B0H TH0,#3CH R3,EXIT R3,#0AH
;定时不到1S,则继续等待 ;软件计数初值
MOV MOV MOVX SETB
DPTR,#0FEF0H;D/A转换地址 A,#00H @DPTR,A EX1
;启动D/A转换
EXIT:RETI
;A/D转换结束中断服务程序: INT:MOVX
MOV INC INC DJNZ CLR
A,@DPTR @R0,A DPTR R0 EX1
;读A/D转换结果 ;存放内部RAM单元 ;指向下路通道 ;指向下RAM单元
;关A/D转换z结束中断
R2,NEXT
NEXT:RETI
习题8
1.说明下列概念 (1)串行通信 (3)异步通信 (5)波特率
(7)半双工通信方式 答:略
2.假定异步串行通信的字符格式为一个起始位、八个数据位、二个停止位以及奇校验位,请画出传送字符“T”的桢格式。
解:“T”的ASCII码为54H=01010100B,传送桢格式如下:
(2)并行通信 (4)同步通信 (6)单工通信方式 (8)全双工通信方式
一桢10起始位D0D1D2D3D4D5D6D700101010P110奇偶校验位停止位3.串行通信有那几种数据通信格式,试举例说明。 答:略
4.串行通信的总线标准是什么?有那些内容? 答:略
5.MCS-51单片机的串行口共有那几种工作方式?各有什么特点和功能?
答:MCS-51单片机串行口的工作方式有方式0、方式1、方式2和方式3四种,各工作方式是由设置串行口控制寄存器SCON来确定的。串行口控制寄存器SCON还用来设定串行口的接收或发送控制及状态,其格式如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI 串行口的工作方式及串行口的4种工作方式的功能及相应的波特率如下表。
SM0 SM1方式0 00 11 01 10123功 能同步移位存储器(用I/O口扩展)8位UART(通用异步接收和发送器)9位UART(起始位1、数据位8、可编程位1、停止位1)9位UART波特率 fosc/12222SMODSMODSMOD(T1溢出率)/32 fosc/64(T1溢出率)/32
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库单片机原理与应用习题(6)在线全文阅读。
相关推荐: