单片机原理及应用课后习题答案解析

发布时间:2020-08-20 06:52:28   来源:文档文库   
字号:

课后思考题级习题答案

思考题与习题1

一、填空

1、单片机按照用途通常分为 通用型 专用型

2、单片机也称为 微控制器 单片微型计算机

二、简答

1、什么就是单片机?

答:单片机也称微控制器,它就是将中央处理器、程序处理器、数据处理器、输入/输出接口、定时/计数器串行口、系统总线等集成在一个半导体芯片上的微计算机,因此又称为单片微型计算机,简称为单片机。

2.简述单片机的特点与应用领域。

答:(1)单片机体积小,应用系统结构简单,能满足很多应用领域对硬件功能的要求。

(2)单片机的可靠性高。

(3)单片机的指令系统简单,易学易用。

(4)单片机的发展迅速,特别就是最近几年,单片机的内部结构越来越完善。

3.写出AT89S51与AT89S52芯片的主要区别。

内部程序存储区容量不同,52的程序存储空间为8K,内部数据存储空间为256B,中断源8个,定时器/计数器有3个,而51的程序存储空间为4K,内部数据存储空间为128B,中断源5个,定时器/计数器有2个。

思考题与习题2

一、填空题

1、如果(PSW)=10H, 则内部RAM工作寄存器区的当前寄存器就是第组寄存器,8个寄存器的单元地址为 10H ~ 17H

2、为寻址程序状态字F0位,可使用的地址与符号有 PSW、5 0D0H、5 F0 0D5H

3、单片机复位后,(SP)= 07H ,P0~P3= FFH ,PC= 0000H ,PSW= 00H A= 00H

4、AT89S51单片机的程序存储器的寻址范围就是由 PC 决定的,由于AT89S51单片机的PC就是 16 位的,所以最大寻址范围为 64KB

5、写出位地址为20H所在的位,字节地址 24H、0

6、写出字节地址为20H的单元最高位的位地址为 07H ,最低位的位地址为 00H

7、如果晶振频率,则一个时钟周期为1、66667E-7,一个机器周期为2us

8、 AT89S51单片机共有26个特殊功能寄存器。

9、 AT89S51单片机片外数据存储器最多可以扩展64KB

10、如果CPU从片外ROM的0000H单元开始执行程序,那么引脚应接电平。

二、选择题

1、PC的值就是( C )。

A、当前指令前一条指令的地址 B、当前正在执行指令的地址

C、下一条指令的地址 D、控制器中指令寄存器的地址

2、对程序计数器PC的操作就是( A )。

A、自动进行的 B、通过传送进行

C、通过加“1”指令进行的 D、通过减“1”指令进行

3、在AT89S51单片机中P0口作为( D )。

A、数据总线 B、地址总线

C、控制总线 D、数据总线与地址总线

4、 在AT89S51单片机中( C )。

A、具有独立的专用的地址总线 B、P0口与P1口作为地址总线

C、P0口与P2口作为地址总线 D、P2口与P1口作为地址总线

三、简答题

1、AT89S51单片机的引脚有何功能?如果使用片内ROM,该引脚该如何处理?

答: 为该引脚的第一功能,为访问程序存储器控制信号。

如果使用片内ROM,则信号为高电平。

2、什么就是指令周期,机器周期与时钟周期?

答:指令周期就是CPU每取出并执行一条指令所需的全部时间;机器周期就是CPU完成一个基本操作所需要的时间。时钟周期就是指计算机主时钟的周期时间。

3、堆栈的作用就是什么?在程序设计时,为什么要对堆栈指针SP重新赋值?答:堆栈就是一个特殊的存储区,主要功能就是暂时存放数据与地址,通常用来保护断点与现场;堆栈指针SP复位后指向07H单元,00H-1FH为工作寄存器区,20H-2FH为位寻址区,这些单元有其她功能,因此在程序设计时,需要对SP重新赋值。

4、单片机复位有几种方法?

答:1、上电复位 2、按键复位 3、瞧门狗复位 4、软件复位

5. AT89S51单片机运行出错或程序陷入死循环时,如何摆脱困境?

可以采用复位键进行复位,使单片机初始化,也可以在软件中使用瞧门狗。

6、 AT89S51单片机P0~P3口的驱动能力如何?如果想获得较大的驱动能力,采用低电平输出还就是高电平输出?

答:P0口每位可驱动8个LSTTL输入,而P1、P2、P3口的每一位的驱动能力,只有P0口的一半。当P0口的某位为高电平时,可提供400μA的电流;当P0口的某位为低电平(0、45V)时,可提供3、2mA的灌电流,如低电平允许提高,灌电流可相应加大。所以,任何一个口要想获得较大的驱动能力,只能用低电平输出。

7. AT89S51单片机内部RAM低128单元划分为几个部分?每部分有什么特点?

答:工作寄存器区、位寻址区、用户RAM区。

每部分特点如下:00H-1FH为工作寄存器区,共32个单元,被分为4组,每组有八个寄存器(R0-R7)。任意时刻,CPU只能使用一组寄存器,当前正在使用的寄存器组被称为当前寄存器。在程序运行过程中如果不使用的寄存器也可以作为RAM使用。

20H-2FH为位寻址区,共16个单元。这16个单元可以作为字节单元使用,同时这16个单元的每一位也可以单独使用,即位寻址。

30H-7FH为用户RAM区,用于存放各种数据、中间结果,起到数据缓冲的作用。在实际使用中,常需要把堆栈设在用户RAM中。

8、 AT89S51单片机的片内都包含了哪些功能部件?各个功能部件主要的功能就是什么?

答: 1个微处理器(CPU);

128个数据存储器(RAM)单元;

4KB Flash程序存储器;

4个8位可编程并行I/O口;

1个全双工串行口;

2个16位定时器/计数器;

1个瞧门狗定时器;

1个中断系统,5个中断源,2个优先级;

26个特殊功能寄存器(SFR);

1个瞧门狗定时器。

9.程序存储器的空间中,有5个特殊单元,分别对应AT89S51单片机5个中断源的入口地址,写出这些单元的地址及对应的中断源。

中断源

中断入口地址

外部中断0

0003H

定时/计数器0溢出中断

000BH

外部中断1

0013H

定时/计数器1溢出中断

001BH

串行中断

0023H

10、 AT89S51单片机有几个存储器空间?画出它的存储器结构图。

AT89S51单片机的有3个存储器空间,即片内片外统一编制的程序存储器,片内数据存储器与片外数据存储器。

11、什么就是空闲方式?怎样进入与退出空闲方式?

答:空闲方式:CPU处于休眠的状态,而片内所有其她外围设备保持工作状态,即振荡器保持工作,时钟脉冲继续输出到中断、串行口、定时器等功能部件,使它们继续工作,但时钟脉冲不再送到CPU,因而CPU停止工作。

进入:每当CPU执行一条将IDL位置1 的指令,就使它进入空闲方式,CPU即停止工作,进入空闲方式。

退出:两种:一就是被允许的中断源请求中断时,由内部的硬件电路清0 IDL位,终止空闲方式;另一种方式就是硬件复位。RST引脚上的复位信号直接将IDL为清0,从而使单片机退出空闲方式。

12、什么就是掉电方式?怎样进入与退出掉电方式?

答:掉电:振荡器停止工作,单片机内部所有的功能部件全部停止工作。

进入:CPU执行一条将PD位置1的指令,就使单片机进入掉电方式。

退出:唯一的方法就是硬件复位,复位后单片机内部特殊功能寄存器的内容被初始化,PCON=0,从而退出掉电方式。

13、AT89S51单片机的控制信号引脚有哪些?说出其功能

答:

RST(9脚):复位信号输入端,高电平有效。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE (30脚):地址锁存控制信号。当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存低8位地址。

(29脚):程序储存允许输出端,就是外部程序存储器的读选通信号,低电平有效。当AT89S51 从外部程序存储器取指令时,每个机器周期两次有效,即输出两个脉冲。当访问外部数据存储器,不会出现两次有效的信号。

(31脚): 为该引脚的第一功能,为访问程序存储器控制信号。当信号为低电平时,对ROM的读操作限定在外部程序存储器;而当信号为高电平时,则对ROM的读操作就是从内部程序存储器开始,并可延续至外部程序存储器。

4、设计一个电路,使单片机的P0口能驱动8只发光二极管。

思考题与习题3

思考题与习题3

一、 填空

1、假定外部数据存储器3000H单元的内容为50H,执行下列指令后,累加器A 中的内容为 50H

MOV DPTR,#3000H

MOVX A,@DPTR

2、假定累加器A中的内容为30H,DPTR中的内容为2000H,执行指令:

MOVC A,@A+DPTR

,把程序存储器 2030H 单元的内容送入累加器A中。

3、已知(30H)=21H,(31H)=04H,说明下列程序的功能,执行后(30H)= 04H ,(31H)= 21H

PUSH 30H

PUSH 31H

POP 30H

POP 31H

4、已知程序执行前,在AT89S51单片机片内RAM中,(A)=33H,(R0)=28H,(28H)=0BCH,写出执行如下程序后,(A) = 63H

ANL A,#60H

ORL 28H,A

XRL A,@R0

CPL A

5、对程序存储器的读操作使用的指令 MOVC指令

6、对外部数据存储器的读操作使用的指令 MOVX指令

7、执行如下三条指令后,20H单元的内容就是 0FH   

       M O V           R 0,#20H    

M O V          40H,#0 F H   

M O V         R 0,40H      

二、判断

判断以下指令的正误。

(1) MOV R1,R2 ×

(2)MOV 20H,@R3 ×

(3)DEC DPTR ×

(4)INC DPTR √

(5)MOVX A,@R1 √

(6)MOVC A,@DPTR ×

(7)PUSH DPTR ×

(8)CLR R1 ×

(9)MOV 20H,30H √

(10)MOV F0,C √

(11) CPL R7 ×

(12)RC A ×

三、简答

1、MCS-51共有哪几种寻址方式试举例说明。

(1)寄存器寻址方式 MOV A,R2

(2)直接寻址方式 MOV A,30H

(3)寄存器间接寻址方式MOV A,@R0

(4)立即寻址MOV A,#20H

(5)变址寻址 MOVC A,@A+ DPTR

(6)相对寻址 SJMP rel

(7)位寻址 MOV C, 0D5H;

2、MCS-51指令按功能可以分为哪几类每类指令的作用就是什么

数据传送类指令(28条);数据传送就是指将源地址单元中的数据传送到目的地址单元中,且源地址单元中的数据保持不变,或者源地址单元中的数据与目的地址单元中的数据互换。

算术运算类指令(24条);这类指令中,大多数都要用累加器A来存放源操作数,另一个操作数就是工作寄存器Rn、片内RAM单元或立即数。执行指令时,CPU总就是将源操作数与累加器A中的操作数进行相应操作,然后将结果保留在累加器A中,同时会影响程序状态字PSW中的溢出标志OV、进位标志CY、辅助进位标志AC与奇偶标志位P。

逻辑运算及移位类指令(25条);在这类指令中,仅当目的操作数为累加器A时对奇偶标志位P有影响,其余指令均不影响PSW的状态。

控制转移类指令(17条);

位操作类指令(17条)。MCS-51系列单片机的硬件结构中有一个位处理器,对位地址空间具有丰富的位操作指令。由于位操作数就是“位”,取值只能就是0或1,故又称为布尔操作指令。

3、访问SFR,可使用哪些寻址方式?

寄存器寻址,直接寻址,位寻址

4、执行指令:MOV A,R0 ;

在程序状态字PSW中 RS1=0,RS0=0; RS1=1,RS0=0的两种情况下,上述指令执行结果有何不同?

RS1=0,RS0=0时,就是将内部RAM 00H单元中的内容传送给累加器A, RS1=1,RS0=0时,就是将内部RAM 10H单元中的内容传送给累加器A

4.SJMP(短转移)指令与LJMP(长对转移)指令的目的地址的范围各就是多少?

SJMP指令的目的地址范围就是-128B~+127B;

LJMP指令的目的地址范围就是64KB。

5.JB指令与JBC指令的区别就是什么?

6.答:这类指令就是判断直接寻址位就是否为“1”或为“0”,当条件满足时转移,否则继续顺序执行。而JBC指令当条件满足时,指令执行后同时将该位清“0”。

7、指出下列每条指令的寻址方式。

(1)MOV A,40H ;直接寻址

(2)MOV 30H,#00H ;立即寻址

(3)SJMP LOOP ;相对寻址

(4)MOVC A,@A+DPTR ;变址寻址

(5)MOVX A,@R0 ;寄存器寻址

(6)MOV C,20H ;位寻址

(7)MOV 20H,R3 ;寄存器寻址

(8)MOV 31H,20H ;直接寻址

8、 已知程序执行前,AT89S51单片机片内RAM (10H)=20H,(20H)=33H,(33H)=45H,(45H)=56H,(P1)=30H。分析下列程序按顺序执行每条指令后的结果。

MOV A,33H ;(A)=45H

MOV R1,A ;(R1)=45H

MOV @R1,#0FFH ;(45H)0FFH

MOV 45H,33H ;(45H)=45H

MOV R0,#10H ;(R0)=10H

MOV A,@R0 ;(A)=20H

MOV P1,#0FFH ;(P1)=0FFH

MOV A ,P1; ;(P1)=30H

MOV 20H,A ;(20H)=30H

9、已知程序执行前,在AT89S51单片机片内RAM中,(A)=85H,(R0)=20H,(20H)=0AFH,(Cy)=1,(21H)=0FFH。写出下列指令独立执行后寄存器与存储单元的内容,若该指令影响标志位,写出CY、AC、OV与P的值。

ADD A,@R0 ;CY=1,AC=1,OV=1,P=1 ,(A)=34H

ADDC A, 21H ; CY=1,AC=1, P=1,OV=0 ,(A)=85H

SWAP A ; (A)=58H ,P=1

SUBB A,#50H ; CY=0,AC=0, P=1,OV=1 ,(A)=34H

DEC R0 ;R0=1FH

XCHD A,@R0 ;(A)=8FH,(20H)=0A5H,P=1

10、 写出完成如下要求的指令,但就是不能改变未涉及位的内容。

(1)ACC、3, ACC、4,ACC、5 ACC、6“1”

ORL A,#01111000B

(2)把累加器A的中间4位清“0”

ANL A,#11000011B

(3)将内部数据存储器10H单元中的数据的高2,3位清“0”

ANL 10H,#00111000B

(4)将内部数据存储器50H单元中的数据所有位取反。

XRL 50H,#11111111B

(5)将内部数据存储器40H单元中的数据高4位取反。

XRL 40H,#11110000B

(6)将内部数据存储器10H单元中的数据低3位置“1”。

ORL 10H,#00000111B

11、分析执行下列指令序列所实现的逻辑运算式

   MOV  C,P1、0

   ANL  C,/P1、1 

MOV 20H, C

MOV  C,/P1、0

ANL  C, P1、1 

   ORL C, 20H

   MOV   P3、0,C

  P3、0=(P1、0/P1、1)(/P1、0P1、1) 

思考题与习题4

一、简答题

1、什么就是汇编语言源程序、汇编、汇编程序?

(1)使用汇编语言编写的程序称为汇编语言源程序。

(2)汇编语言程序不能直接在计算机上运行,需要将它翻译成机器语言程序,也就就是目标代码程序,这个翻译过程称为汇编。

(3)完成汇编任务的程序成为汇编程序。

2、什么叫伪指令,有什么作用?

所谓伪指令就是 告诉汇编程序应该如何完成汇编工作,只有在汇编前的源程序中才有伪指令,而在汇编后没有机器代码产生。

伪指令具有控制汇编程序的输入输出、定义数据与符号、条件汇编、分配存储空间等功能。

二、编程题

1. 在外部RAM3000H单元中有一个8位二进制数,试编程将该数的低四位屏蔽掉,并送给外部RAM3001H单元中。

MOV DPTR,#3000H

MOVX A,@DPTR

ANL A,#0F0H

INC DPTR

MOVX @DPTR,A

2. 已知,试编写延时20ms与1s的程序

DELAY20MS: MOV R6,#100 ;延时20ms

D1: MOV R7,#98

nop

D2: DJNZ R7,D2

DJNZ R6,D1

RET

END

DELAY1S: MOV R7,#250

DEL1: MOV R6,#200

DEL2: MOV R5,#98

DEL3: DJNZ R5,DEL3

NOP

DJNZ R6,DEL2

DJNZ R7,DEL1

RET

END

3. 用查表的方法求0~6之间的整数的立方。已知整数存在内部RAM30H单元中,查表结果回存30H单元。

MOV DPTR,#tab

MOV A,30H

MOVC A,@A+DPTR

MOV 30H,A

Ret

ORG 1000H

TAB: DB 00H,01H,08H,1BH,40H,7DH,0D8H

4. 若有3个无符号数xyz分别在内部存储器40H、41H、42H单元中,试编写一个程序,实现x y时,xz的结果存放在43H、44H单元中;当xy时,yz的结果存放入43H、44H单元中。

MOV A,40H

CLR C

SUBB A,41H ;相减比较大小

JC L1

MOV A,40H ;x>=y

SJMP L2

L1:MOV A,41H ;x

L2:ADD A,42H

MOV 43H,A

MOV A,#0 ;保存进位到44H单元

ADDC A,#0

MOV 44H,A

5. 在内部RAM的BLOCK开始的单元中有一无符号数据块,数据块长度存人LEN单元。试编程求其中的最小的数并存入MINI单元。

MOV R2, #11H ;要比较的数据字节数

MOV R1 , #BLOCK;置数据块的首地址

DEC LEN

MOV A , @R1

LOOP: MOV MINI,A

INC R1

CLR C

SUBB A,@R1 ;两个数比较

JC LOOP1 ;C=1,A中的数小,跳转到LOOP1

MOV A,@R1 ;C=1,则把小数送给A

SJMP LOOP2

LOOP1: MOV A,MINI

LOOP2: DJNZ R2, LOOP ;比较就是否结束

MOV 50H,A ;把大数存入50H单元

RET

6. 在外部RAM3000H起始的单元中存放一组有符号数,字节个数存在内部RAM20H单元中。统计其中大于0、等于0与小于0的数的数目,并把统计结果存放在内部RAM21H、22H与23H单元中。

MOV DPTR,#3000H ;设置首地址

MOV 22H,#0 ;清零

MOV 23H,#0

MOV 24H,#0

L2:MOVX A,@DPTR;取数据

JNZ L1

INC 22H ;为0

SJMP NEXT

L1:JB ACC、7,FU

INC 21H ;正数

SJMP NEXT

FU:INC 23H ;负数

NEXT:INC DPTR

DJNZ 20H,L2

RET

7. 查找内部RAM20H~40H单元中就是否有0FFH这一数据,如果有,将PSW中的F0位置1,没有则将其清零。

MOV R0,#20H

MOV R1,#21H

CLR F0

NEXT:MOV A,@R0

CJNE A,#0FFH,L1

SETB F0

SJMP L2

L1:INC R0

DJNZ R1,NEXT

L2:RET

8. 在片内RAM的30H单元开始,相继存放5个无符号数,请使用冒泡法编写程序,使这组数据按照从小到大顺序排列。

MAIN: MOV R0,#30H ;数据存储区首单元地址

MOV R7.#04H ;各次冒泡比较次数

CLR F0 ;互换标志清“0”

LOOP: MOV A,@R0 ;取前数

MOV R2,A ;存前数

INC R0

MOV A,@R0 ;取后数

CLR C

SUBB A,R2 ;比较大小

JNC LOOP1

SETB F0 ;互换,置标志位

MOV A,R2 ;互换数据

XCH A,@R0

DEC R0

XCH A,@R0

INC R0

LOOP1: MOV A,@R0

DJNZ R7,LOOP ;进行下一次比较

JB F0,MAIN ;进行下一轮冒泡

SJMP $ ;排序结束

思考题与习题5

一、填空

1、 AT89S51单片机的五个中断源的中断入口地址分别就是: 0013H : 001BH T0: 0000BH T1: 000BH ;串行口: 0023H

2、 AT89S51单片机中断系统中共有 T0 T1串行口 五个中断源,其中优先权最高的就是 ,优先级最低的就是 串行口

3、 在CPU未执行同级或更高优先级中断服务程序的条件下,中断响应等待时间最少需要 3个机器周期

4、 AT89S51单片机的堆栈区只可设置在 内部RAM 30H-7FH ,堆栈寄存器SP就是 8 位寄存器。

5、 若(IP)=00010100B,则中断优先级最高者为        ,最低者为       T1

6、对中断进行查询时,查询的中断标志位共有   IE0    TF0   IE1    TF1   RI  TI 六个中断标志位。

7、 AT89S51单片机内部有 16 位加1定时器/计数器,可通过编程决定它们的工作方式,其中可进行13位定时器/计数器的就是方式就是方式0

8、 处理定时器/计数器的溢出请求有两种方法,分别就是中断方式与查询方式。使用中断方式时,必须 ___开中断___;使用查询方式时,必须 ___关中断____。

9、 假定定时器1工作在方式 2,单片机的振荡频率为 6MHz ,则最大的定时时间为   512us    

二、选择题

1.CPU响应中断后,能自动清除中断请求“1”标志的有( C )。

A./采用电平触发方式 B./采用两边触发方式

C.定时/计数器T0/T1中断 D.串行口中断TI/RI

2.AT89S51五个中断源中,属外部中断的有( A B )。

A. B. C.T0 D.T1 E.TI F.RI

3.按下列中断优先顺序排列,有可能实现的有( B )。

A.T1、T0、、串行口 B.、T1、T0、、串行口

C.、串行口、T0、T1 D.、串行口、T0、、T1

4.各中断源发出的中断申请信号,都会标记在AT89S51系统中的(  B     )中。

A.TMOD       B.TCON/SCON    C.IE        D.IP

5.外中断初始化的内容不包括: (A)

A. 设置中断响应方式                   

B. 设置外中断允许

C. 设置中断总允许                      

D. 设置中断触发方式

6. 在 AT89S51单片机中,需要软件实现中断撤销的就是:(D)

   A. 定时中断           B. 脉冲触发的外部中断

   C. 电平触发的外部中断      D. 串行口中断

7.在下列寄存器中,与定时器 /计数器控制无关的就是:(B)

   A.TCON B.SCON C.IE  D.TMOD

8.与定时工作方式 0 与1相比较,定时工作方式 2具备的特点就是:(A)

   A.计数溢出后能自动恢复计数初值   B.增加计数器的位数

   C.提高了定时的精度       D.适于循环定时与循环计数

9.对定时器 0进行关中断操作,需要复位中断允许控制寄存器的: (A)

    A.EA 与 ET0  B.EA 与 EX0 C.EA 与 ET1   D.EA 与 EX1

三、判断题

1.中断响应最快响应时间为3个机器周期。(对)

2.AT89S51每个中断源相应地在芯片上都有其中断请求输入引脚。(错)  

3.AT89S51单片机对最高优先权的中断响应就是无条件的。(错)  

4.中断初始化时,对中断控制器的状态设置,只可使用位操作指令,而不能使用字节操作指令。(错)  

5.外部中断入口地址为0013H。(错)

四、简答题

1、 什么叫中断?AT89S51单片机能提供几个中断源?几个优先级?各个中断源的优先级怎样确定?在同一优先级中各个中断源的优先级怎样确定?

中断就是指计算机暂时停止原程序执行转而为外部设备服务(执行中断服务程序),并在服务完后自动返回原程序执行的过程。

AT89S51单片机能提供5个中断源(、T0、T1、RXD/TXD)

AT89S51单片机将5个中断源,分为两个优先级:高优先级与低优先级。

对于同一优先级中所有中断源,按优先权先后排序。如表5-1所示。优先权最高,串行口优先权最低。

若在同一时刻发出请求中断的两个中断源属于同一优先级,CPU先响应优先权排在前面的中断源中断申请,后响应优先权排在后面的中断源中断申请。优先权由单片机决定,而非编程决定。

2.写出AT89S51单片机5个中断源的入口地址、中断请求标志位名称、位地址及其所在的特殊功能寄存器。

表5-1 AT89S51中断入口地址及内部优先权

中 断 源

中断请求标志位

中断入口地址

优先权

IE0

0003H

T0

TF0

000BH

IE1

0013H

T1

TF1

001BH

串行口

RI、TI

0023H

3.开AT89S51单片机外中断1,如何操作?写出操作指令。

SETB IT1

SETB EA

或者

MOV IE,#84H

4、 AT89S51单片机有几个定时器/计数器?定时与计数有何异同?

答:两个;定时器就是由外部晶振振荡频率产生决定,计数方式就是由内部定时器/计数器产生。作为定时器用时,加法计数器对内部机器周期脉冲计数。由于机器周期就是定值,如机器周期=1μs,计数值100,相当于定时100μs。脉冲来自T0(P3、4)或者T1(P3、5)引脚时,可实现外部事件的计数功能。

加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。在定时器/计数器的工作过程中,加法计数器的内容可由程序读回CPU。

5. AT89S51单片机内部的定时器/计数器控制寄存器有哪些?各有何作用?

答:有TMOD与TCON两个。

TMOD就是定时工作方式寄存器,用来控制T0、T1的工作方式。TCON定时器控制寄存器,用来控制定时器的运行及溢出标志等。

6. 定时器T0与T1各有几种工作方式?

答:T0、T1的工作方式有四种,如下表

M1 M0

工作方式

工 作 方 式

容量

0 0

0

13位计数器,=13

213=8192

0 1

1

16位计数器,=16

216=65536

1 0

2

两个8位/计数器,初值自动装入,=8

28=256

1 1

3

两个8位/计数器,仅适用于T0,=8

28=256

7、设AT89S51单片机的晶振频率为12MHz,问定时器处于不同的工作方式时,最大定时范围分别就是多少?

机器周期为1us;

最大定时范围如下:方式0为8192us,方式1为65536us,方式2或方式3均为256us。

7. 设单片机的12MHz,要求用T0定时150μs,分别计算采用定时方式0、定时方式1与定时方式2的定时初值。

方式0的初值1FCEH,方式1的初值FF6AH,方式2的初值6AH。

五、编程题

1、使用定时器从P1、0输出周期为1秒的方波,设系统时钟频率为12MHz。

查询方式:

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV TMOD , #01H ;定时器0,方式1

MOV TH0 , #3CH ;设置初值,定时100ms

MOV TL0 , #0B0H

MOV R2 , #10 ;运行10次,定时1S

CLR P1、0

CLR EA

SETB TR0

LOOP: JNB TF0 , LOOP

CLR TF0 ;清除标志

MOV TH0 , #3CH ;重置初值

MOV TL0 , #0B0H

DJNZ R2 , LOOP

MOV R2 , #10

CPL P1、0

AJMP LOOP

END

2.将定时器T1设置为外部事件计数器,要求每计500个脉冲,T1转为定时方式,在P1、2输出一个脉宽10ms的正脉冲。设系统时钟频率为12MHz。

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV TMOD,#50H;T1方式1,计数

MOV TH1,#01H ;设置初值

MOV TL1,#0F4H

SETB TR1 ;启动计数,使用查询方式

CLR P1、2

CLR EA ;查询方式

LOOP: JNB TF1 , LOOP

CLR TF1

MOV TMOD,#10H ;T1方式1,定时

MOV TH1 ,#0D8H ;设置初值

MOV TL1,#0F0H

SETB P1、2 ;输出正脉冲

LOOP1: JNB TF1,LOOP1

CLR TF1

LJMP MAIN

END

C语言方式:

#include

sbit P1_0=P1^2; //已仿真调试成功

int i;

void main(){

while(1){

TMOD=0x05;//T0计数,方式一

TH0=(65536-500)/256;//计数

TL0=(65536-500)%256;

TR0=1;

P1_0=0;

while(!TF0);//等待计数溢出

TF0=0; //溢出标志复位

P1_0=1;

TMOD=0x01;//T0定时,方式一

TH0=(65536-10000)/256;//定时10ms

TL0=(65536-10000)%256;

TR0=1; //启动T0

while(!TF0); //等待定时时间溢出

TF0=0; //溢出标志复位

}

P1_0=0;

}

3.已知12MHz,采用查询方式编写24小时制的模拟电子钟程序,秒、分钟、小时分别存放于R2、R3、R4中。

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV TMOD , #01H

MOV TH0 , #3CH

MOV TL0 , #0B0H

MOV R1 , #20

SETB TR0

MOV R2 , #00H ; 秒

MOV R3 , #00H ; 分

MOV R4 , #00H ; 时

MOV A , #00H

LOOP: MOV DPTR,#0300H ;查7段码

ADD A , R4

DA A

MOV 40H , A

ANL A , #0F0H

MOVC A,@A+DPTR

MOV P0 , A ; 送P0显示

MOV P1 , #20H ; 位选

LCALL DELAY20MS

MOV A , 40H

ANL A , #0FH

MOVC A,@A+DPTR

MOV P0 , A ; 送P0显示

MOV P1 , #10H ; 位选

LCALL DELAY20MS

ADD A , R3

DA A

MOV 30H , A

ANL A , #0F0H

MOVC A,@A+DPTR

MOV P0 , A ; 送P0显示

MOV P1 , #08H ; 位选

LCALL DELAY20MS

MOV A , 30H

ANL A , #0FH

MOVC A,@A+DPTR

MOV P0 , A ; 送P0显示

MOV P1 , #04H ; 位选

LCALL DELAY20MS

ADD A , R4

DA A

MOV 20H , A

ANL A , #0F0H

MOVC A,@A+DPTR

MOV P0 , A ; 送P0显示

MOV P1 , #02H ; 位选

LCALL DELAY20MS

MOV A , 20H

ANL A , #0FH

MOVC A,@A+DPTR

MOV P0 , A ; 送P0显示

MOV P1 , #01H ; 位选

LCALL DELAY20MS

JNB TF0 , LOOP ; 定时到

MOV TH0 , #3CH

MOV TL0 , #0B0H

CLR TF0

DJNZ R1 , LOOP

MOV R1 , #20

INC R2

CJNE R2 , #60 , LOOP

MOV R2 , #00H

INC R3

CJNE R3 , #60 , LOOP

MOV R3 , #00H

INC R4

CJNE R4 , #24 , LOOP

MOV R4 , #00H

LJMP LOOP

DELAY20MS:

MOV R7,#5

D0: MOV R6,#200

D1: NOP

NOP

NOP

DJNZ R6,D1

DJNZ R7,D0

RET

ORG 0300H

TAB2: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ; 共阴

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

END



思考题与习题6

一、填空

1、 LED数码管的使用与发光二极管相同,根据其材料不同正向压降一般为 5V,额定电流为 5 m A,最大电流为 20 m A。

2、在单片机系统中,常用的显示器有 LED发光管、LED数码管LED液晶屏 等显示方式。

3、键盘扫描控制方式可分为随机方式 控制、中断扫描控制与 定时扫描控制方式。

4、LED显示器的静态驱动显示的优点就是: 显示稳定,在LED导通、电流已定的情况下数码管的亮度高。控制系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程序,这样大大节省了CPU的时间,提高了CPU的工作效率 ;缺点就是: 位数较多时,所需的I/O接口较多,硬件开销太大 。动态驱动显示的优点就是: 节省硬件资源,成本较低 ;缺点就是: 在控制运行过程中,为了保证显示器正常显示,CPU必须每隔一段时间执行一次显示子程序

5、矩阵键盘的识别有 扫描法 线反转法 两种方式。

二、判断题

1、为了消除按键的抖动,常用的方法有硬件与软件两种方法。( 对 )

2、LED显示器有两种显示方式:静态方式与动态方式。( 对 )

3、LED数码管显示器有共阴极与共阳极两种。( 对 )

三、简答题

1、为什么要消除按键的机械抖动?消除按键抖动的方法有几种?

答:抖动现象会引起单片机对一次按键操作进行多次处理。

去抖动的方法有硬件与软件两种方法。

2.说明矩阵式键盘按键按下的识别原理。

答: 判别键盘上有无按键闭合。由AT89S51单片机向所有行线发出低电平信号,如果该行线所连接的键没有按下,则连线所连接的输出端口得到的就是全1信号;如果有键按下,则得到的就是非全1信号。

判别键号。方法就是先扫描第0行,即输出0111(第0行为0,其余3行为1),然后读入列信号,判断就是否为全1。若就是全1,则表明当前行没有键按下,行输出值右移,即输出1011(第1行为0,其余3行为1),再次读入列信号,判断就是否为全1。如此逐行扫描下去,直到读入的列信号不为全1为止。根据此时的行号与列号即可计算出当前闭合的键号。

键码计算

如图6-12所示,键号就是按从左到右从上到下的顺序编排的,各行的首号依次就是00H、08H、10H、18H,如列号按0~7顺序排列,则键码的计算公式为:

键值=为低电平行的首键号+为低电平的列号

3、键盘有哪三种工作方式,她们各自的工作原理及特点就是什么?

答:随机方式、中断扫描方式与定时扫描方式三种

(1)随机方式

就是利用CPU的空闲时间,调用键盘扫描子程序,响应键盘的输入请求。

(2)中断扫描方式

在图6-10中,当按键按下时,列线中必有一个为低电平,经与门输出低电平,向单片机引脚发出中断请求,CPU执行中断服务程序,判断闭合的键号,并进行相应的处理,这种方式可大大提高CPU的效率。

(3)定时扫描方式

利用单片机内部定时器,每隔一定时间CPU执行一次键盘扫描程序,并在有键闭合时转入该键的功能处理程序。定时扫描方式要求扫描间隔时间不能太长,否则有可能漏掉按键输入,一般取几十毫秒。

4.说明LCD显示器的工作原理,画出AT89S51单片机与LCD1602的接口电路连接图。

LCD显示器的工作原理:字符型LCD液晶显示器就是专用于显示字母、数字、符号等的点阵式LCD。它们多与HD44780控制驱动器集成在一起,构成字符型LCD液晶显示模块,用LCM表示,有16×1、16×2、20×2、40×2等产品。

AT89S51单片机与LCD1602的接口电路如图6-6所示。

四、设计题

1、设计将字符“AB”通过液晶模块LCD1602显示在屏幕的左边。

org 0000h

ljmp Start

org 000bh

ljmp L1

org 0100h

Start:

MOV TMOD,#00H

MOV TH0,#00H

MOV TL0,#00H

MOV IE,#82H

SETB TR0

MOV R5,#50H

MOV SP,#60H

LCALL NEXT

MOV A,#80H

ACALL WHITE

MOV A,#41H

LCALL WDR

MOV A,#81H

ACALL WHITE

MOV A,#42H

LCALL WDR

SJMP $

L1:

MOV TH0,#00H

MOV TL0,#00H

DJNZ R5,L2

MOV R5,#50H

L2:

RETI

NEXT:

MOV A,#38H

LCALL WHITE

MOV A,#0EH

LCALL WHITE

MOV A,#06H

LCALL WHITE

RET

WHITE:LCALL L3

CLR P3、5

CLR P3、0

CLR P3、1

SETB P3、5

MOV P1,A

CLR P3、5

RET

WDR: LCALL L3

CLR P3、5

SETB P3、0

CLR P3、1

SETB P3、5

MOV P1,A

CLR P3、5

RET

L3: PUSH ACC

Loop:

CLR P3、0

SETB P3、1

CLR P3、5

SETB P3、5

MOV A,P1

CLR P3、5

JB ACC、7,LOOP

POP ACC

ACALL DELAY

RET

DELAY:MOV R6,#255

D1:MOV R7,#255

D2:DJNZ R7,D2

DJNZ R6,D1

RET

END

2、设计一个AT89S51外扩键盘与显示电路,要求扩展8个键,4位LED显示器。



思考题与习题7

一、填空

1、单片机程序存储器的主要功能就是存储 程序 与_常数_。

2、AT89S51单片机程序存储器的寻址范围就是由程序计数器PC的位数所决定的,因为AT89S51的PC就是_16位_的,因此其寻址空间为_64KB_,地址范围就是从0000H_FFFFH_.

3、13根地址线可选__8KB__个存储单元,64KB存储单元需要__16_根地址线。

4、在AT89S51单片机中,使用P2、P0口传送__地址_信号,且使用P0口传送___数据___信号,这里采用的就是___分时复用___技术。

5、 8255A能为数据I/O操作提供A、B、C 3个8位口,其中A口与B口能作为数据口使用,而C口则既可作为__数据线__使用,又可作为__信号线__使用。

二、判断题

1、AT89S51单片机片的数据存储器与扩展I/O口就是分别独立编址。( 错 )

2、单片机系统扩展时使用锁存器就是用于锁存低8位地址。( 对 )

3、使用8255可以扩展的I/O口线就是32根。( 错 )

4、使用线选法扩展存储器不会使地址空间造成不连续的现象。( 错 )

三、简答题

1、为什么扩展外部程序存储器时,低8位的地址需要锁存?

由于P0口在扩展存储器时既做地址总线的低8位,又做数据总线,为了将她们分离出来,需要在单片机外部增加地址锁存器,以存低8位地址一般可采用74LS373。

2、访问外部RAM与内部RAM时,所用指令有什么不同?分别写出读片内RAM30H单元与写片外RAM30H单元的程序。

访问内部RAM时用MOV,访问外部RAM时用MOVX;

读片内RAM30H单元: MOV A,30H

写片外RAM30H单元: MOV R0,#30H

MOVX @R0,A

3、为什么要进行地址空间的分配?何谓线选法与译码法?各有何优、缺点?

为了使一个存储单元唯一的对应一个地址;

线选法:线选法就是将高位地址线直接连到存储器芯片的片选端,根据高位地址的高低电平来进行存储器芯片的选择,芯片低电平有效,为了不出现寻址错误,要求在同一时刻,只允许一根为低电平,其余均为高电平;优缺点:线选法的优点就是连接简单,缺点就是芯片的地址空间相互之间可能不连续,致使存储空间的不到充分利用,扩充储容量受限,因此线选法适用于扩展存储容量较小的场合。

译码法:所谓译码法就就是使用译码器对系统的高位地址进行译码,以其译码输出作为存储器的片选信号,能有效利用存储空间,适用于大容量、多芯片存储器扩展;优缺点:硬件电路稍复杂,需使用译码器,但可充分利用存储空间,全译码时还可避免地址重叠现象,译码法的另一个优点就是,若译码器输出端还留有剩余端线未使用时,便于继续扩展存储器或I/O接口电路。

4、什么就是8255A的控制字?控制字的主要内容就是什么?

8255A就是可编程芯片接口,以控制字形式对其工作方式以及C口各位状态进行设置,为此,共有两种控制字,即工作方式控制字与C口位置/复位控制字。

1)工作方式控制字:工作方式控制字用与确定各口的的工作方式及数据传送方向,D7位为工作方式控制字标志位,”1”有效;D6~D3为A组(包括A口与C口高4位)工作方式;D2~D0为B组(包括B口与C口低4位)工作方式

2)C口位置/复位控制字:8255A的C口具有位控功能,即允许CPU用输出指令单独对C口的某一位写“1”或“0”,C口的位控字的格式。这就是通过向8255A的控制寄存器写入一个位控字来实现的。最高位 D7就是 C口置位/复位控制字的特征位,必须为“0”;D0位决 定了就是置“1”还就是置“0”操作;D3~D1位决定了 对C口中的哪一位进行操作。

5、8255A的“方式控制字”与“C口按位置复位控制字”都可以写入8255A的同一控制寄存器,8255A就是如何来区分这两个控制字的?

根据控制字的最高位D7位来区分,若D7位为0,则为C口置/复位控制字;若D7位为1,则为工作方式控制字。

四、设计题

使用AT89S51芯片外扩1片SRAM6264,且6264的首地址为8000H。要求:

(1)确定6264芯片的末地址。

(2)画出该应用系统的硬件连线图。

(3)编程,将扩展RAM中8000~80FFH单元中的内容移至8100H开始的单元中

1)末地址为9FFFH(注:无关位为0)

2)系统硬件连线图如图:

3)参考程序:

MOV DPTR,#8000H

MOV R7,#00H

L1: MOV DPH,#80H

MOVX A,@DPTR

MOV DPH,#81H

MOVX @DPTR,A

INC DPL

DJNZ R7,L1

SJMP $



思考题与习题8

一、填空

1、按照串行数据的同步方式,串行通信可以分为 同步通信  异步通信 两类。

2、串行通信按照数据传送方向可分为三种制式: 单工方式  半双工方式 全双工方式

3、帧格式为1个起始位,9个数据位与1个停止位的异步串行通讯方式就是方式 2或方式3

4、AT89S51单片机串行接口有4种工作方式,由特殊功能寄存器 SCON 中的SM0  SM1 确定。

5、 AT89S51单片机有一个 全双工 异步串行口。

6、串行通信对波特率的要求就是通信双方的波特率必须 相同

7、多机通信时,主机向从机发送信息分地址帧与数据帧两类,以第9位可编程的TB8作区分标志。TB8=0,表示 发送的就是数据帧 ;TB8=1,表示 发送的就是地址帧

8、 AT89S51单片机发送数据后将标志位 TI 置1。

9、多机通信开始时,主机首先发送地址,各从机校对主机发送的地址与本机地址就是否相符,若相符,则置 RI=1 ,从机将 SM2 清零。

二、判断题

1、 进行多机通信,AT89S51单片机串行接口的工作方式应为方式1。 ( 错 )

2、 AT89S51单片机的串行口就是全双工的。( 对 )

3、 AT89S51单片机上电复位时,SBUF=00H。 ( 错 )

4、串行通信接收到的第9位数据送SCON寄存器的RB8中保存。( 对 )

5、串行口工作于方式0的波特率就是可变的。( 错 )

6、 串行口工作于方式3的波特率就是可变的,通常使用定时器T0工作于方式1实现。( 错 )

三、选择题

1、 AT89S51单片机用串行扩展并行I/O口时,串行口工作方式选择( A )。

A、方式0 B、方式1 C、方式2 D、方式3

2、 串行口工作方式3的波特率就是( C )。

A、 固定的,为 B、固定的,为

C、 可变的,通定时器/计数器T1的溢出率设定 D、 固定的,为

3、 通过串行口发送或接收数据时,在程序中应使用( C )。

A 、MOVC指令 B、 MOVX指令 C、 MOV指令 D、 XCHD指令

四、简答题

1、解释并行通信与串行通信。

一组信息(通常就是字节)的各位数据被同时传送的通信方法称为并行通信。并行通信依靠并行I/O接口实现。并行通信速度快,但传输线根数多,只适用于近距离(相距数公尺)的通信。

一组信息的各位数据被逐位顺序传送的通信方式称为串行通信。串行通信可通过串行接口来实现。串行通信速度慢,但传输线少,适宜长距离通信。

2、串行通信有几种传输方式,说出每种方式的特点。(P148)

(1)单工方式

数据信息只允许按照一个固定的单方向传送,也就就是只能发送端向接收端传输数据信息,而不能反过来传输。

(2)半双工方式

通信双方可以相互进行数据信息的接收或发送,但在同一时间仍只能单方向传输,不能同时进行接收与发送。

(3)全双工方式

采用两根通信传输线各自连接发送与接收端,从而实现数据信息的双向传输。这样,可方便地同时实施接收、发送数据信息的双向传输,大大提高了数据信息的传输速率与效率,

3、AT89S51单片机串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

答:串行接口有4种工作模式,分别为:

(1)工作方式0,在方式0下,串行口的SBUF就是作为同步移位寄存器使用的。

(2)工作方式1, 帧格式为,一位起始位,8位数据位,一位停止位。

方式1波特率=

(3)工作方式2 , 帧格式为,一位起始位,9位数据位,一位停止位。

方式2的波特率=

(4)工作方式3,帧格式为,一位起始位,9位数据位,一位停止位。

方式3波特率=

3.AT89S51单片机串行口接收/发送数据缓冲器都用SBUF,如果同时接收/发送数据时,就是否会发生冲突?为什么?

不会发生冲突的。串口通信中,有两个缓冲寄存器SBUF,一个就是发送寄存器,一个就是接收寄存器,这两个寄存器在物理结构上就是完全独立的。它们都就是字节寻址的寄存器,字节地址均为99H。这个重叠的地址靠读/写指令区分:串行发送时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收时,CPU从SBUF读出数据,此时99H表示接收SBUF。

4.简述串行口接收与发送数据的过程。

在发送过程中,当执行一条将数据写入发送缓冲器SBUF(99H)的指令时,串行口把SBUF中8位数据以设定的波特率从TXD(P3、0)端输出,发送完毕置中断标志TI=1。

接收时,用软件置REN=1(同时,RI=0),即开始接收。当将数据字节从低位至高位接收下来并装入SBUF后,将SCON中的RI置1,此时这一帧数据接收完毕,单片机可以读出数据。

5.简述利用串行口进行多机通信的原理。

当串行口以方式2或方式3工作时,发送与接收的每一帧信息都就是11位,其中第9位数据就是可编程的,通过对SCON中的TB8置“1”或清零,以区分发送的就是地址还就是数据,若TB8为1发送的就是地址帧,否则发送的就是数据帧。如果从机的控制位SM2=1,则当接收的就是地址帧时,数据装入SBUF,并置RI=1;如果接收的就是数据帧时,则从机不予理睬,数据丢弃。若SM2=0,则无论接收地址帧还就是数据帧都将RI置1,数据装入SBUF。

7、 AT89S51单片机晶振频率就是11、0592MHz,串行口工作于方式1,波特率就是9600bps,写出控制字与计数初值。

控制字为40H或者60H

当SMOD=0时,初值C=FDH

当SMOD=1时,初值C=FAH



思考题与习题9

1、1、单总线有什么显著的特点?

(1)单总线芯片通过一根信号线进行地址信息,控制信息与数据信息的传送,并通过该信号线为单总线芯片提供电源

(2) 每个单总线芯片都具有唯一的访问序列号,当多个单总线器件挂在同一个单总线上时,对所有单总线芯片的访问都通过唯一序列号进行区分

(3)单总线芯片在工作过程中,不需要提供外接电源,而通过它本身具有的“总线窃电”技术从总线上获取电源

2、I2C总线有什么特点?

(1)只要求两条信号线:一条串行数据线SDA与一条串行时钟线SCL。SDA就是双向串行数据线,用于地址,数据的输入与数据的输出,使用时需加上拉电阻。SCL就是时钟线,为器件数据传输的同步时钟信号

(2)每根连接到总线的器件都可以通过唯一的地址进行寻址

(3)它一个真正的多主机总线,如果两个或更多主机同时初始化数据传输,则可以通过冲突检测与仲裁防止数据被破坏

(4)在CPU与被控制器件间双向传送,最高传送速率为400bit/s。片上的滤波器可以滤去总线数据上的毛刺,保证数据可靠传输

3、说明SPI串行总线的特点。

SPI就是一种同步串行总线,采用3根或4根信号线进行数据传输,所需要的信号包括使能信号,同步时钟,同步数据。它允许MCU与各种外设以串行方式进行通信

4I2C总线的起始信号与终止信号就是如何定义的?

当时钟线SCL保持高电平时,并且数据线SDA由高变低时,为I2C总线工作的起始信号

当时钟线SCL保持高电平时,并且数据线SDA由低变高时,为I2C总线停止信号

5I2C总线的数据传输方向如何控制?

以字节为单位进行传送,每一个字节必须保证就是8位长度,每次先传送最高位

6、I2C总线在数据传送时,应答就是如何进行的?

在每个被传送的字节后面,接收器都必须发出一位应答位,总线上第9个时钟脉冲对应于应答位,数据线上低电平为应答信号,高电平为非应答信号。

7、SPI串行总线由几条线组成,每条线的作用就是什么?

两条控制信号线CS与SCLK,一条或两条数据信号线SDI,SDO



思考题与习题10

1、A/D转换器的作用就是什么?D/A转换器的作用就是什么?

A/D转换器的作用把模拟量转换成数字量,便于计算机进行处理;

D/A转换器的作用就是把数字量转换成模拟量。

2、D/A转换器的主要性能指标都有哪些?设某DAC为二进制12位,满量程输出电压为5V,试问它的分辨率就是多少?

分辨率 转换时间(建立时间) 转换精度

 5/4096 1、22mv

3、 A/D转换器的主要性能指标有哪些?

分辨率 转换时间与转换速率 转换精度

4、某8位D/A转换器,输出电压为0~5V,当输入数字量为30H时,其对应的输出电压就是多少?

30H/FFH*5=0、9412V

5、AT89S51与DAC0832接口时,有几种连接方式?各有什么特点?各适合在什么场合使用?

单缓冲,双缓冲,直通。

单缓冲:0832内部的一个寄存器受到控制,将另一个寄存器的有关控制信号预置为有效,使之开通。或者将两个寄存器的控制信号连在一起,两个寄存器合为一个使用。

双缓冲:对于多路的D-A转换,要求同步输出时,必须采用双缓冲同步方式

直通:两个寄存器的有关控制信号都预先置为有效,;两个寄存器都开通

6、对于8位、12位、16位A/D转换器,当满刻度输入电压为5V时,其分辨率各为多少?

1/256*100%=0、39% 0、0244% 1、525x10-5

7、判断A/D就是否转换结束一般可采用几种方式?每种方式有何特点?

查询方式:在单片机把启动信号送到ADC0809之后,执行其她程序的同时对ADC0809的EOC引脚状态进行查询,以检查A-D转换就是否结束,如果查询到已结束,则读入转换完毕的数据,否则执行其她程序

中断控制方式:在启动信号送到ADC0809之后,单片机执行其她程序。当ADC0809转换结束并向单片机发出中断请求信号时,单片机响应此中断请求,进入中断服务程序,读入转换数据

8、在一个由AT89S51单片机与一片ADC0809组成的数据采集系统中,ADC0809的8个输入通道的地址为7FF8H~7FFFH,试画出有关接口电路图,并编写程序,要求:每隔1分钟轮流采集一次,共采样20次,其采样值存入片外RAM 2000H单元开始存储区中。

设晶振为6MHz,参考程序如下:

MAIN: MOV R0,#20H

MOV R1,#00H

MOV R2,#00H

MOV R3,#20

MOV R6,#08H

LOOP: MOV DPTR,#7FF8H;设置0通道地址

LOOP1: MOVX @DPTR,A;启动A/D转换

MOV R6,#0AH;延时0、102ms

DELAY: NOP

NOP

NOP

DJNZ R6,DELAY

MOVX A,@DPTR;读取转换后的数字量

MOV @R0,A ;转存转换后的数字量

INC DPTR

INC R0

DJNZ R8,LOOP1;若未完成一次巡回采集则回跳启动对下一路的采集 LCALL DELAY1M ;若完成一次巡回采集则延时1分钟

DJNZ R3,LOOP;若两次采样未完成,则回转,执行第二次采集

9、用TLC5615生成周期为2ms的等宽方波。

思考题与习题11

1. 单片机应用系统开发流程就是什么?

总体设计,硬件设计,软件设计,仿真调试,系统脱机运行检查,详细可瞧书212页

2. 应用系统可靠性设计方法有哪些?

采用抗干扰措施,提高元件可靠性,采用容错技术,详细可瞧书215页

3. 说明“瞧门狗”摆脱“死循环”与程序“跑飞”的工作原理

无论就是AT89S51单片机片内集成的“瞧门狗”,还就是专用的硬件“瞧门狗”电路,原理都就是使用一个计数器来不断计数,监视程序运行。当计数器启动运行后,为防止计数器的不必要溢出,应到了一定的时间去清瞧门狗计数器,当瞧门狗计数器就会溢出时,单片机复位,在复位入口0000H处安排一条处理程序出错的指令,就可摆脱“跑飞”与“死循环”。

思考题与习题12

1、说明C51在标准的C基础上有哪些扩充?

2、C51中的AT89S51单片机的特殊功能寄存器如何定义?试举例说明。

sfr TMOD= 0x89声明TMOD为定时器/计数器的模式寄存器,地址为89H

说明:sfr之后的寄存器名称必须大写,定义之后可以直接对这些寄存器赋值。

3、使用C51设计一个开关控制电路,用两个开关控制3个LED,当K1、K2都打开时,3个LED L1、L2、L3都熄灭;当仅有K1闭合时,L1点亮;当仅有K2闭合时,L2点亮;当K1与K2全闭合时,3个LED全亮。

开关接P1、0,P1、1,灯接P1、2,P1、3,P1、4

则有sbit K1=P1、0

Sbit K2=P1、1

if((K1=0)&&(K2=1))

{P1、2=1;

P1、3=0;

P1、4=0;

}

Else if((K1=1)&&(K2=0))

{P1、2=0;

P1、3=1;

P1、4=0;

}

Else if((K1=0)&&(K2=0))

{P1、2=1;

P1、3=1;

P1、4=1;

}

Else if((K1=1)&&(K2=1))

{P1、2=0;

P1、3=0;

P1、4=0;

}

思考题与习题13

一、简答题

1、 单片机C语言与汇编语言混合编程有哪几种方式?通常采用什么方式?

2、 简述C51程序调用汇编程序时如何实现参数传递。

3、 简述嵌入式汇编程序的实现方法。

4、 简述C51中调用汇编程序的实现方法。

二、编程题

1、 用C语言编写出中断方式下独立式键盘的处理程序。

2、 用C语言编写出定时扫描方式下3X3矩阵键盘的处理程序。

3、 用C语言编写出中断方式下4X4矩阵键盘的处理程序。

#include

void main()

{

P0=0x00; //初始化LED数码管

TCON=0x01; //设置INT0、INT1触发方式 IE=0x85; //使能INT0、INT1中断 while(1)

{

P3=0x0f; //接通矩阵键盘 }

}

void counter0(void) interrupt 0 //INT0中断服务程序

{

char key,key_h,key_l,delay;

if(P3!=0x0f) //确认就是否有键按下

for(delay=0;delay<100;delay++); //延时去抖动

if(P3!=0x0f) //重新确认就是否有键按下

{ P3=0x0f; key_h=P3^0x0f; //检测按键所在行

P3=0xf0; key_l=P3^0xf0; //检测按键所在列

key=key_h+key_l; }

switch(key) //确定按键值并送入LED显示

case 0x11:P0=0x06;break;

case 0x21:P0=0x5b;break;

case 0x41:P0=0x4f;break;

case 0x81:P0=0x66;break;

。。。。。。。

4、 设计8路模拟量输入的巡回检测系统,使用查询方式采样,采样的数据放在片内RAM的8个单元中,用C语言编程实现。硬件电路自行设计。

5、 利用DAC0832芯片,采用双缓冲方式,产生梯形波,分别用汇编语言与C语言编程实现。

6、 在单片机系统中,已知=12MHz,用定时/计数器T0,要求用C语言编写程序实现从P1、0产生周期为2ms的方波。要求用C语言进行编程。

#include //包含特殊功能寄存器库

sbit P1_0=P1^0;

void main()

{

TMOD=0x01;

TH0=0xFC;

TL0=0x18;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void time0_int(void) interrupt 1 //中断服务程序

{

TH0=0xFC;

TL0=0x18;

P1_0=!P1_0;

}

7、在单片机系统中,已知=12MHz,用定时/计数器T1,要求用C语言编写程序实现从P1、1产生周期为2s的方波。

#include //包含特殊功能寄存器库

sbit P1_1=P1^1;

char i;

void main()

{

TMOD=0x10;

TH1=0xD8;TL1=0xf0;

EA=1;ET1=1;

i=0;

TR1=1;

while(1);

}

void time0_int(void) interrupt 3 //中断服务程序

{

TH1=0xD8;TL1=0xf0;

i++;

if (i= =100) {P1_1=! P1_1;i=0;}

}

8、 用C语言编程设计一个AT89S51双机通信系统,将A机片内RAM中30H-3FH的数据块,通过串行口传送到B机的片内RAM的30H-3FH中,并画出电路图。

三、设计题

设计一个以AT89S51单片机为核心的十字路口交通灯控制器。要求用4只LED数码管显示十字路口两个方向变换信号的剩余时间,并能用按键设置两个方向的通行时间(红灯、绿灯、黄灯时间),系统工作应符合一般交通灯控制的要求。

本文来源:https://www.2haoxitong.net/k/doc/36e66bf658eef8c75fbfc77da26925c52dc59121.html

《单片机原理及应用课后习题答案解析.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式