北工大单片机期末复习题A4一纸开 - 图文 下载本文

第10章 串行接口技术

1. 8051有一个全双工的串行口,下列功能中该串行口不能完成的是( D )。 (A)网络通信;(B)异步串行通信;(C)作为同步移位寄存器; (D)位地址寄存器。 2.判断下列说法是否正确: 答:(A)串行口通讯的第9数据位的功能可由用户定义。(对)

(B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。(对) (C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。(错) (D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(对) (E)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。(对) 3.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

答:串行口有3种工作方式:方式0、方式1、方式2、方式3;有3种帧格式:方式0为8位数据,方式1为8位数据、起始位、终止位,方式2和3具有相同的帧格式,为9位数据、起始位、终止位;方式0的发送和接收都以fosc/12为固定波特率,方式2的波特率=2^SMOD/64×fosc,方式1和方式3的波特率=2^SMOD/32×定时器T1的溢出率,T1的溢出率=(256-X)*12/fosc

4.为什么定时器/计数器T1用做串行口波特率发生器时,采用方式2?若已知时钟频率、通讯波特率,如何计算其初值?

答:因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了重装参数的操作。

定时器1在工作方式2时的初始值为 X=256-[(SMOD+1)/(384*波特率)]*fosc 5.为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位(1)?

答:因为串行口的方式0是同步移位寄存器方式,不是用于异步串行通讯的,所以收发双方不需要确定数据帧的起始和终止,所以没有起始位(0)和停止位(1)。 6.常用波特率及其参数选择 Fosc(MHZ) SMOD TH1初值 19200 11.0592 1 FDH 9600 0 FDH 4800 0 FAH 2400 0 F4H 1200 0 E8H

例题7.单片机主频6MHz,波特率4800bps 要把发送端的30H—3FH发送到接收端的40H—4FH。写出初始化程序,接发程序,并写出设计过程: 方式1,3 X=256-Fosc*(SMOD+1)/(384*波特率)

=256-6M*1/(384*4800)=251.6=FCH

发送端:

ORG 0000H 设置串口工作方式3 MOV SBUF,A AJMP MAIN_A MOV PCON,#00H SJMP $ ORG 0023H 波特率不加倍 --------------- AJMP SEND MOV R0,#30H ORG 0200H ORG 0100H MOV R2,#10H SEND:CLR TI MAIN_A:MOV SETB EA DJNZ R2,SEND1

TMOD,#20H SETB ES SJMP FH

MOV TH1,#0FCH MOV A,@R0 SEND1:INC R0 MOV TL1,#0FCH MOV C,P MOV A,@R0 SETB TR1 MOV TB8,C MOV C,P MOV SCON,#0C0H 奇偶校验 MOV TB8,C

MOV SBUF,A FH: RETI --------------- END

接受端:

ORG 0000H AJMP MAIN_B --------------- ORG 0023H AJMP RECV --------------- ORG 0100H MAIN_B:MOV TMOD,#20H MOV TH1,#0FCH MOV TL1,#0FCH SETB TR1

MOV SCON,#0C0H MOV PCON,#00H MOV R0,#40H MOV R2,#10H SETB REN SETB EA SETB ES SJMP $ --------------- ORG 0200H RECV:CLR RI MOV A,SBUF JNB PSW.0,PZ JNB RB8,ERR SJMP RIGHT PZ:JB RB8,ERR RIGHT:MOV@R0,A INC R0 DJNZ R2,FH CLR F0 FH: RETI --------------- ERR:CLR REN CLR ES CLR EA SETB F0 RETI

--------------- END

---------------------------------------------------------------------------------------------------------------------- 第9章D/A转换和A/D转换 例题1.用DAC0832作为波形发生器,请编制出连续梯形的程序,设0832的口地址为C004H.

ORG O100H MAIN:

MOV DPTR , #0C004 CLR A

LOOP1:MOVX,@DPTR,A LCALL DELAY INC A

CJNE A, #OFFH,LOOP1; MOV R2,#00H

LOOP2:MOVX,@DPTR,A LCALL DELAY INC R2

CJNE R2, #OFFH,LOOP2; LOOP3:MOVX,@DPTR,A LCALL DELAY DEC A

CJNE A,#00H,LOOP3; MOV R2,#00H

LOOP4:MOVX,@DPTR,A LCALL DELAY INC R2

CJNE R2, #OFFH, LOOP4;

SJMP LOOP1

DELAY:MOV R3, #XX1 DEL1: MOV R4, #XX2 DEL2: MOV R5, #XX3 DEL3: DJNZ R5, DEL3 DJNZ R4, DEL2 DJNZ R3, DEL1 RET END

----------------------------------------------------------------------------------------------------------------------

例题2.若要求设计一数据采集系统,输入为0-5V,由IN1输入,使用AD0809芯

片每隔20ms采集一次,共采集16次,并将转换后的数据存入30H开始的单元中。

(1) 设计有关电路图,含A/D,译码及相关电路,接线清楚,写明信号名称; (2) 编制有关程序,设AD起始口地址为学号最后2位X8,地址译码使用A9-A3

系统时钟为12MHZ(提示:使用定时器定时中断,并写明定时器参数计算过程;

P074LS373ALE÷28031INT1WRP2.0≥1RD1≥11CLKD0~D7EOCABCVref(+)Vref(-)GA0~A7A0A1A2+5 VGNDIN0IN1IN2IN3IN4IN5IN6IN7ADC08091STALEOE

修改上图中的p2.0 用A3到A9译码,产生地址:24x8,24=0011000 A3-A5接ABC,A9-A6产生0011逻辑选中译码器。

x=216 - t×fosc/12=2^16-20X12X1000/12=45536=B1E0H ORG 0000H SETB ET1 开中断允许 MOV @R1,A AJMP MAIN SETB TR1 INC R1 ORG 001BH MOV DPTR, #XX+1 MOV TH1, #0B1H AJMP T_1 MOV A, #00H MOV TL1, #0E0H MAIN: MOVX @DPTR, A;启动转SETB TR1; 启动20ms定MOV R4, #10H 换 时

SJMP $ SJMP OUT_1 MOV R1,#30H

MOV SP, #60H ------------ EXIT:CLR EA 关中断允许 MOV TOMD, #10H T_1: DJNZ R4 LP1 OUT_1:。 MOV TH1, #0B1H SJMP EXIT RETI MOV TL1, #0E0H END LP1:CLR TR1

MOV DPTR, #XX+1 20ms定时

SETB EA MOVX A, @DPTR

第8章 LED显示器和键盘

键盘的按键按M×N行列矩阵排列,故M×N个键的键盘只需要M+N条单片机的I/O端口线。

4×8行列式非编码键盘的接口如下页所示:

监视键盘方法——行扫描法和反转法 CPU通过程序监视非编码盘,在发现有按键按下时转入相应按键处理程序执行。地址偏移量N = 行首值 + 列值,查键值表就可得被按键的键值 1.行扫描法 1)判断有无按键 令列输出(PA口)全为零,读行值(PC口),若行值低4位为全1,无按键。否则有按键。 2)判断哪一个键按下

轮流扫描PA口,依次使每条列线变为低电平后,读行值,若非全1,则按键在此列中,形成键值;否则扫描下一列。 由此,可确定按键的行首键号和列值,进而求得键值偏移量。

按键类型判别:

若被按键的键值<10H,被按键为数字键; 若被按键的键值>=10H,被按键为功能键。

2.反转法

1)设定PA为输出方式,PC为输入方式。 2)使PA输出全0,读PC。(PC=1101) 3)设定PA为输入方式,PC为输出方式 4)将刚才读入的PC内容从PC输出。(PC=1101) 5)读PA。(PA=11111011) 6)由PA、PC得到键值。

共阴极(1亮0不亮);共阳极(0亮1不亮)

例题1. 用8155对共阴LED显示块进行控制,假设要显示:2012,1字样,写出对应字型码,画流程图8155口地址是9000H。(图形:8155a口输出数据c口输出六个控制位)

共阳 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H [8-F] 80H,90H,88H,83H,0c6H,0a1H,86H,8eH 共阴3FH,06H,5BH,4FH,66H,6DH,7DH,07H [8-F]7FH,6FH ,77H,7CH,39H,5EH,79H,71H,00H

ORG 1000H

ORG 0079H:显示的数据段 DB

02H,00H,01H,02H,11H,02H

ORG 1000H

DIS: MOV A,#0000 0011B

MOV DPTR,#9000H MOVX @DPTR,A LP1:MOV R0,#79H

MOV R3,#0FEH DIS0: MOV DPTR, #9003H

MOV A #0FFH MOVX @DPTR,A MOV DPTR, #9003H

MOV A,@R0 DB ADD A,#0CH 7FH,6FH,77H,7CH,39H,MOVC A,@A+PC 5EH,79H,71H,00H,80HMOVX @DPTR,A (小数点) MOV A,R3 ; MOV DPTR,#9001H -------------------------------MOVX @DPTR,A ---- ACALL DELAY DELAY: MOV R7,MOV A,R3 #02H JNB ACC.5,LP1 MOV R6,#0FFH RL A DJNZ R6,$ MOV R3,A DJNZ R7,$-4 INC R0 RET SJMP DIS0 ;------------------------------ DIS_RET: RET; END -------------------------------

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

例题2. 用8155对键盘进行控制。键盘的布局如图,请根据电路图,可写16个

键盘的编码,若按键为A,则转打印程序PRINT,画出键盘扫描的程序流程图。

键值 键名 0 1 2 3 4 5 6 7 8 9 A B C D E F 键值 12 8 4 0 13 9 5 1 14 10 6 2 15 11 7 3 键盘位置图 0 1 2 3 4 5 6 7 8 9 A B C D E F