北工大单片机期末复习 - 图文 联系客服

发布时间 : 星期五 文章北工大单片机期末复习 - 图文更新完毕开始阅读cf70f11f49649b6649d747c1

第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 波特率不加倍 ORG 0200H AJMP MAIN_A MOV R0,#30H SEND:CLR TI ORG 0023H MOV R2,#10H DJNZ R2,SEND1 AJMP SEND SETB EA SJMP FH ORG 0100H SETB ES SEND1:INC R0 MAIN_A:MOV TMOD,#20H MOV A,@R0 MOV A,@R0 MOV TH1,#0FCH MOV C,P MOV C,P MOV TL1,#0FCH MOV TB8,C MOV TB8,C SETB TR1 奇偶校验 MOV SBUF,A MOV SCON,#0C0H MOV SBUF,A FH: RETI 设置串口工作方式3 SJMP $ --------------- MOV PCON,#00H --------------- 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÷28031INT11CLKD0~D7EOCABCVref(+)Vref(-)GA0~A7A0A1A2+5 VGNDIN0WR≥1IN1 1STIN2IN3ALEIN4修改上图中的p2.0 产生地址:24x8,24=0011000 A3-A5接ABC,A9-A6产生0011P2.0用A3到A9译码,IN5≥1IN6逻辑选中译码器。 1OEIN7RD16

x=2- t×fosc/12=2^16-20X12X1000/12=45536=B1E0H ADC0809ORG 0000H AJMP MAIN ORG 001BH AJMP T_1 MAIN:

MOV R4, #10H MOV R1,#30H MOV SP, #60H

MOV TOMD, #10H MOV TH1, #0B1H MOV TL1, #0E0H 20ms定时

SETB EA

SETB ET1 开中断允许 SETB TR1

MOV DPTR, #XX+1 MOV A, #00H

MOVX @DPTR, A;启动转换 SJMP $ ------------

T_1: DJNZ R4 LP1 SJMP EXIT LP1:CLR TR1 MOV DPTR, #XX+1

MOVX A, @DPTR MOV @R1,A INC R1

MOV TH1, #0B1H MOV TL1, #0E0H

SETB TR1; 启动20ms定时 SJMP OUT_1

EXIT:CLR EA 关中断允许 OUT_1:。 RETI END

第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 ADD A,#0CH MOVC A,@A+PC MOVX @DPTR,A MOV A,R3

MOV DPTR,#9001H MOVX @DPTR,A ACALL DELAY MOV A,R3

JNB ACC.5,LP1 RL A

MOV R3,A INC R0

SJMP DIS0

DIS_RET: RET; DELAY: MOV R7,#02H ------------------------------- MOV R6,#0FFH TAB: DB DJNZ R6,$ 3FH,06H,5BH,4FH,66H,6DH,7 DJNZ R7,$-4 DH,07H RET DB ;------------------------------ 7FH,6FH,77H,7CH,39H,5EH,79 END H,71H,00H,80H(小数点) ; -----------------------------------

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

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

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

键盘扫描程序: R4 列号 R2 扫描码 MAIN:ACALL KEY KEY_2: MOV R2, #11111110B SUBB A,06H MOV R4, #00H JZ PRINT KEY_3: MOV DPTR, #0FF21H SJMP MAIN MOV A, R2 ORG 0100H MOVX @DPTR, A KEY: ACALL KS INC DPTR JNZ KEY_1 MOVX A,@DPTR ACALL DELAY CPL A AJMP KEY JZ NEXT KEY_1: ACALL DELAY JNB ACC.0 KEY_4 ACALL DELAY MOV A, #00H ACALL KS AJMP KEY_7 JNZ KEY_2 KEY_4: JNB ACC.1, KEY_5 AJMP KEY MOV A, #4

D E 11 7 F 3 AJMP KEY_7

KEY_5: JNB ACC.2, KEY_6 MOV A, #8 AJMP KEY_7

KEY_6: MOV A, #12 KEY_7: ADD A, R4 PUSH ACC

KEY_8: ACALL DELAY ACALL KS JNZ KEY_8 POP ACC RET

NEXT: INC R4 MOV A, R2