欢迎光临散文网 会员登陆 & 注册

单片机原理及应用复习题(全)

2023-06-05 14:51 作者:欢喜y1  | 我要投稿

单片机原理及应用复习题

教材:张毅刚. 单片机原理与应用设计(C51编程+Proteus仿真)(第2版). 电子工业出版社. 2015.

专业:2017级自考计算机科学与技术(本科段)专业学生。

第1章 单片机概述

1. 在家用电器中使用单片机应属于微型计算机的        。

A.辅助设计应用                 B.测量、控制应用

C.数值计算应用                 D.数据处理应用

答:B

2. 所谓CPU是指(     ) 。

A. 运算器和控制器   B. 运算器和存储器   C. 输入输出设备   D. 控制器和存储器

答:A

3. CPU主要组成部部分为(       ) 。

A. 运算器、控制器  B. 加法器、寄存器  C. 运算器、寄存器  D.运算器、指令译码器

答:A

4.已知某数的BCD码为0111 0101 0100 0010 则其表示的十进制数值为

A. 7542H       B. 7542      C. 75.42H      D. 75.42 

答:B

5. 80C51单片机CPU的位数是

A. 16     B. 4     C. 8      D. 准16

答:C

6. 一个完整的微机系统由硬件和         两大部分组成。

答:软件

7.除了单片机这一名称之外,单片机还可称为微控制器和         。

答:嵌入式控制器

8. 单片机与普通微型计算机的不同之处在于其将CPU、        和I/O口三部分,通过内部总线连接在一起,集成于一块芯片上。

答:存储器

9. 计算机的系统总线有数据总线、            和控制总线。

答:地址总线。

10. 单片机内有组成微机的主要功能部件CPU、存储器、        和总线。

答:I/O接口

11. 计算机的系统总线有数据总线、地址总线和                。

答:控制总线 。

12.单片机与普通微型计算机的不同之处在于其将CPU、存储器、和I/O口三部分,通过内部        连接在一起,集成于一块芯片上。

答:总线

13.什么是单片机?

答:单片机就是在一片半导体硅片上,集成了中央处理单元(CPU)、存储器(RAM、ROM)、并行I/O、串行I/O、定时器/计数器、中断系统、系统时钟电路及系统总线的用于测控领域的单片微型计算机,简称单片机。

14. 什么是数据总线?

答:用于在单片机与外部存储器之间或I/O接口之间传输数据信号的通信线。

15. 什么是控制器?

答:控制器是识别指令,并根据指令的性质控制单片机的各功能部件,从而保证单片机各部分自动地协调一致地工作的部件。

16 什么是“嵌入式系统”?

答:广义上讲,凡是系统中嵌入了“嵌入式处理器”,如单片机、DSP、嵌入式微处理器,都称其为“嵌入式系统”。但多数人把 “嵌入”嵌入式微处理器的系统,称为“嵌入式系统”。 目前“嵌入式系统”还没有一个严格和权威的定义。目前人们所说的“嵌入式系统”,多指后者。

17. 解释单片机型号“AT89C51-12PI”的含义。

答:该单片机是ATMEL公司的Flash单片机,采用CMOS,速度为12MHz,封装塑料双列直插DIP封装,工业用产品,标准处理工艺生产。

18. 什么是地址总线?

答:用于传送单片机单向发出的地址信号的通信线,以便进行储存器单元和I/O接口芯片的寄存器选择。

19. I/O接口

答:I/O接口是单片机与外设间连接电路的总称。

20. 控制总线

答:单片机和存储器或I/O接口之间传输各种控制信号的单向总线。

21. 简述单片机的应用领域。

答:智能化家用电器、办公自动化设备、商业营销设备、工业自动化控制智能化仪表、智能化通信产汽车电子产品品、航空航天系统和国防军事、尖端武器等领域。

22.嵌入式处理器家族中的单片机、DSP、嵌入式微处理器各有何特点?

答: 单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,实现各种方式的检测和控制。单片机在嵌入式处理器市场占有率最高,最大特点是价格低,体积小。

DSP是一种非常擅长于高速实现各种数字信号处理运算(如数字滤波、FFT、频谱分析等)的嵌入式处理器。

嵌入式微处理器的基础是通用计算机中的CPU,它的地址总线数目较多能扩展较大的存储器空间,所以可配置实时多任务操作系统(RTOS)。

23、简述微处理器、微计算机、微处理机三者之间的区别。

答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。而微计算机、单片机是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。

 

 


第2章 AT89C51单片机的片内硬件结构

1. 80C51单片机的复位信号是(      )有效。

A. 高电平       B. 低电平

C. 脉冲         D. 下降沿

答:A

2. 80C51CPU是(     )位的单片机。

A. 16    B. 4    C. 8   D. 准16

答:C

3. PSW=18H时,当前工作寄存器是(     )。

A. 0组     B. 1组        C. 2组        D. 3组

答:D

4. 片内RAM的20H~2FH为位寻址区,所包含的位地址是(  )。

A. 00H~20H       B.00H~7FH    

C. 20H~2FH       D.00H~FFH

答:B

5.AT89S51单片机的机器周期等于        个时钟振荡周期。

A. 4        B. 6    

C. 12       D. 24

答:C。

6. 80C51复位后,PC与SP的值为(    )。

A. 0000H,00H  B.  0000H,07H     C.  0003H,07H   D. 0800H,00H

答:B

7. PC中存放的是(        )。

A. 下一条指令的首地址   B. 当前正在执行的指令

C. 当前正在执行指令的地址   D.下一条要执行的指令

答:A 

8. 80C51单片机的 XTAL1 和 XTAL2 引脚是 (      ) 引脚 。

A. 外接定时器    B. 外接串行口     C. 外接中断     D. 外接晶振

答:D

9. 单片机应用程序一般存放在(       )中。

A. RAM   B.ROM    C.寄存器     D.CPU

答:B

10. 已知累加器A的数值为98H,它与0FAH相加,相加后会影响标志位CY、AC和OV位,各个位的值是(    )。

A. 0、0、0      B.  1、0、1      C. 1、1、1      D. 1、1、0

答:D

11. 80C51单片机的堆栈指针(       )

A. 只能位于内部RAM低128B字节范围内。

B. 可位于内部RAM低256字节范围内。

C. 可位于特殊功能寄存器内。

D. 可位于内部RAM或外部RAM内。

答:A 

12.内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为     和     。

A. 16H,26H      B. 10H,22H    

C. 32H,66H      D. 28H,88H

答:D

13. 80C51单片机复位操作的主要功能是把PC初始化为(     )。

A.0100H        B.2080H       C.0000H         D.8000H

答:C

14. 80C51单片机中既可位寻址又可字节寻址的单元是(     )。

A. 20H   B. 30H    C. 00H    D. 70H

答:A

15. 80C51单片机的堆栈区应建立在(     )。

A. 片内数据存储区的低128字节单元     B. 片内数据存储区

C. 片内数据存储区的高128字节单元     D. 程序存储区

答:A

16. 在程序运行中,PC的值是        。

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

B.当前正在执行指令的地址

C.当前正在执行指令的下一条指令的首地址

D.控制器中指令寄存器的地址

答:C

17. 能够用紫外光擦除ROM中程序的只读存储器称为(     )。

A. 掩膜ROM         B. PROM   

C. EPROM            D. EEPROM

答:C

18. 提高单片机的晶振频率,则机器周期 (       )。  

A . 不变     B . 变长      C . 变短        D . 不定

答:C

19.在AT89S51单片机中,如果采用6MHz晶振,一个机器周期为        。

A. 1µs      B. 2µs    

C. 3µs      D. 4µs

答:B

20. 变量存储在ROM中,存储器类型为(     )

A. data          B. pdata   

C. xdata         D. code

答:D

21.80C51单片机的XTAL1和XTAL2引脚是      引脚。

A. 外接定时器     B. 外接串行口     C. 外接中断     D. 外接晶振

答:D

22. 单片机程序的入口地址是       。

答:0000H

23.若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为          。

答:08~0FH

24.  当80C51单片机引脚          信号有效时,表示从P0口稳定地送出了低8位地址。

答:ALE

25. 若选择内部程序存储器, 应该设置引脚为         。(高电平/低电平)

答:高电平

26. 80C51单片机的堆栈只可设置在                                         。

答:片内数据存储区的低128字节单元

27. AT89S51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S51单片机的PC是16位的,因此其寻址的范围为          KB。

答:64

28. 单片机复位后,堆栈指针SP的值是       。

答:07H

29. 80C51 的引脚RST是              (IN脚还是OUT脚)。

答:IN脚

30.内部RAM中,可作为工作寄存器区的单元地址为00H~        H。

答:1FH

31.振荡脉冲2分频后产生的时钟信号周期定义为               周期。

答:状态

32. 半导体存储器分成RAM和               两大类

答:ROM

33. 80C51单片机片内            范围内的数据存储器,既可以字节寻址又可以位寻址。

答:20H-2FH

34. 80C51有4组工作寄存器,它们的地址范围是             。

答:00H-1FH

35.片内RAM可进行位寻址的空间位地址范围是                  。

答:00H~FFH

36.通过堆栈操作实现子程序调用时,首先要把         的内容入栈,以进行断点保护。

答:PC

37. 若累加器A中的内容为63H,那么,P标志位的值为        。

答:0

38. 一个机器周期等于              状态周期,

答:6个

39. 若采用6MHz的晶体振荡器,则80C51单片机的振荡周期为             。

答:1/6μs

40. 什么是堆栈指针?

答:堆栈指针是内部RAM中的一个寄存器,它指示出堆栈顶部在内部RAM中的位置。

 

41. 什么是单片机最小应用系统?

答:单片机最小应用系统是指能使单片机工作的最少器件构成的系统,包括单片机本身、晶振电路、复位电路、电源,是大多数单片机控制系统不可缺少的关键部分。

42. 解释“看门狗”技术的含义。

答:“看门狗”技术是使用一个定时器来不断计数,监视程序的运行。

43. 什么是指令周期?

答:指令周期是执行一条指令所需要的时间,指令周期为1到4个机器周期。

44. 什么是机器周期?

答:CPU完成某一规定操作所需要的时间,一个机器周期为6个状态周期,12个振荡周期。

45.AT89S51单片机的片内都集成了哪些外围功能部件?

答:AT89S51单片机的片内集成了如下功能部件:(1) 1个微处理器(CPU); (2) 128个数据存储器(RAM)单元 ; (3) 4K Flash程序存储器; (4) 4个8位可编程并行I/O口(P0口、P1口、P2口、P3口); (5) 1个全双工串行口; (6) 2个16位定时器/计数器; (7) 1个看门狗定时器; (8) 一个中断系统, 5个中断源,2个优先级; (9) 25个特殊功能寄存器(SFR), (10) 1个看门狗定时器。

46. 80C51系列单片机的信号有何功能?在使用 8031 时信号引脚应如何处理?

答:信号具有选择片内ROM和片外ROM的功能,在=1时先用片内ROM再用片外ROM, =0时内部ROM被屏蔽掉,在没有内部ROM的要接地(=0),使用8031时=0;

47. 80C51单片机的位存储区在哪里?寻址范围是多少?

答:内部RAM的20~2FH为位寻址区域,位地址范围00~7FH;特殊功能寄存器中地址能被8整除的字节地址单元也可以位寻址,位地址范围80~FFH;位存储区共256个位。

48. 64kB程序存储器空间有5个单元地址对应AT89S51单片机5个中断源的中断入口地址,简述这些单元的入口地址及对应的中断源。

答:64kB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序入口地址,分别为:0003H对应外部中断0 ();000BH对应定时器0 (T0);0013H对应外部中断1 ();001BH对应定时器1 (T1);0023H对应串行口。

49 已知一单片机系统的外接晶体振荡器的振荡频率为11.059MHz,计算该单片机系统的振荡周期P、状态周期S、机器周期T所对应的时间分别是多少?指令周期中的双周期指令的执行时间是多少?

答:P=1/f=(1/11.059×106)=0.09×10-6s=90ns

S=2P=2×90ns=180ns

机器周期=12P=12×90ns=1.08μs

双指令周期=2×机器周期=2.16μs

 


第3章  C51语言编程基础及keil μVision 3开发平台

1. C语言中最简单的数据类型包括(     )。

A. 整型、实型、逻辑型       B. 整型、实型、字符型

C. 整型、字符型、逻辑型     D. 整型、实型、逻辑型、字符型

答:B。

2. 存储模式中的SMALL模式将所有未标明存储器类型的变量默认位于(      )

A. 片外数据存储器区                     B. 片内数据存储器区  

C. 片外数据存储器区的一页(256B)内       D. 程序存储器内

答:B

3. 以下叙述中正确的是(      )。

A. 用C语言实现的算法必须要有输入和输出操作

B. 用C程序实现的算法可以没有输入但必须要有输出

C. 用C语言实现的算法可以没有输出但必须要有输入

D. 用C程序实现的算法可以既没有输入也没有输出

答:B

4.  C语言提供的合法的数据类型关键字是(     )。

A. Double       B. short   

C. integer        D. Char

答:B

5. 数据的存储结构是指(     )。

A. 存储在外存中的数据             B. 数据所占的存储空间量

C. 数据在计算机中的顺序存储方式   D. 数据的逻辑结构在计算机中的表示

答:D

6. 使用宏来访问绝对地址时,一般需包含的库文件是(     )

A. reg51.h    B. absacc.h    C. intrins.h     D. .startup.h

答:B

7. 将无符号字符型变量循环向左移动指定位数后返回,可以使用的本征库函数为(   )。

A. _crol_        B. _cror_   

C. _irol_         D. _iror_

答:A

8. 以下叙述中错误的是(      )

A. 对于double类型数组不可以直接用数组名对数组进行整体输入或输出。

B. 数组名代表的是数组所占存储区的首地址,其值不可改变。

C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息。

D. 可以通过赋初值的方式确定数组元素的个数。

答:C

9. 以下能正确定义一维数组的选项是(    )。

A. int a[5]={0,1,2,3,4,5};    B. char a[ ]={0,1,2,3,4,5};

C. char a={'A','B','C'};      D. int a[5]="0123";

答:B

10. 下列描述中正确的是(     )。

A. 程序就是软件                    B. 软件开发不受计算机系统的限制

C. 软件既是逻辑实体,又是物理实体  D. 软件是程序、数据与相关文档的集合

答:D

11. C51在标准C的基础上,扩展的数据类型为(     )。

A. char、unsigned char、int、unsigned int     B. long、unsigned long   

C. struct、union、double                   D. bit、sbit、sfr、sfr16

答:D

12. 什么是数据类型?

答:单片机的操作对象是数据,数据是具有一定格式的数字或数值,数据的不同格式称为数据类型。

13. 80C51单片机的振荡周期、机器周期、指令周期是如何分配的?当晶振频率为6MHz时,一个机器周期为多少微秒?

答:80C51单片机的振荡脉冲的周期为振荡周期; 12个振荡周期构成一个机器周期;每条指令的执行时间为指令周期,指令周期为1~4个机器周期。

当fOSC=6MHz时,机器周期为:(1/6)µs×12=2(µs)

 

14.C51有哪几种数据存储类型?其中数据类型“idata,code,xdata,pdata”各对应AT89S8051单片机的哪些存储空间?

答:C51有6种数据存储类型,data、bdata、idata、xdata、pdata和code。

数据存储类型idata对应片内RAM的256字节。

数据存储类型code对应程序存储区。

数据存储类型xdata对应片外64KB的RAM空间。

数据存储类型pdata对应片外RAM的256字节。

15、C51编译器能识别的数据类型有哪些?

答:C51编译器能识别的数据类型包括基本类型、C51扩充类型、构造类型、指针类型和空类型。基本类型包括数值类型、字符类型和枚举类型;C51扩充类型包括位型、可寻址位型、特殊功能寄存器和16位特殊功能寄存器型;构造类型包括数值类型、结构体类型和公用体类型。

16.bit与 sbit定义的位变量有什么区别?

答:bit是用来定义普通的位变量,它的值只能是二进制的0或1。而sbit定义的是特殊功能寄存器的可寻址位,它的值是可以进行位寻址的特殊功能寄存器的某位的绝对地址,例如PSW寄存器OV位的绝对地址0xd2。

17.MCS-51系列单片机的基本型芯片分别为哪几种?它们的差别是什么?

答:MCS-51系列单片机的基本型芯片分别:8031、8051和8071。它们的差别是在片内程序存储器上。8031无片内程序存储器、8051片内有4K字节的程序存储器ROM,而8751片内有集成有4K字节的程序存储器EPROM。

18. 简述累加器A的作用。

答:累加器A是CPU中使用频繁的一个8位寄存器答,作用如下:

(1) ALU单元的输入数据源之一,又是ALU运算结果存放单元。

(2) 数据传送大多都通过累加器A,相当于数据的中转站。

19.说明3种数据存储模式(1)SMALL模式(2)COMPACT模式(3)LARGE模式之间的差别。

答:3种数据存储模式之间的差别如下:

(1) SMALL模式。在该模式下,所有变量都默认位于8051单片机内部的数据存储器,这与使用data指定存储器类型的方式一样。

(2) COMPACT模式。本模式下的所有变量都默认在外部数据存储器的1页(256字节)内,这与使用pdata指定存储器类型是一样的。

(3) LARGE模式。在LARGE模式下,所有变量都默认位于外部数据存储器,相当于使用数据指针@DPTR进行寻址。


第5章  单片机的开关检测、键盘输入与显示的接口设计

1. 80C51单片机内部有         个并行口。  

A . 1          B .  2   

C. 3           D.  4

答:D

2. 80C51单片机的(    )口的引脚,还具有外中断、串行通信等第二功能。

A. P0        B.  P1        C. P2       D. P3

答:D

3. 七段共阴极发光两极管显示字符‘H’,段码应为(  )。

A.67H   B. 6EH   C. 76H  D.90H

答:C

4.在中断服务程序中现场保护和现场恢复期间,中断系统应处在          状态。

答:关中断

5. P2口通常用作             ,也可以作通用的I/O口使用。

答:高8位地址线

6. P0、P1、P2、P3四个均是         口(填“串行”还是“并行”)。

答:并行

7. 键盘由若干               按照一定规则组成。

答:按键

8. LED数码管有静态显示和         显示两种。  

答:动态

9. 并行口每一次传送             个字符。

答: 1

10. 数码管显示位数较多时,通常用        显示方式。

答:动态

11. 数码管显示位数较少时,通常用  ▲  显示方式。

答:静态

12. 什么是并行通信?

答:多位数据被同时传送的通信方法称为并行通信。

 

13.仿真电路如题13图所示,编写程序,使图中的发光二极管D1闪烁10次后熄灭。

 

题13图 使发光二极管D1闪烁的电路

答:#include <reg52.h>

#define uint unsigned int

sbit D1=P1^0; 

void main(void)

{uint i,j,k;

for(k=10;k>0;k--)

    {   D1=0; 

        for(i=0;i<1000;i++)

        for(j=0;j<110;j++);

        D1=1; 

        for(i=0;i<1000;i++)

        for(j=0;j<110;j++);   }

while(1); 

}

14. 用AT89C51单片机的P2口控制一个共阳极7段LED数码管,电路如题14图所示,请在下列程序中第①空处,依次写出使共阳极7段LED数码管显示0~9的十个段码,再在主程序第②、③空处编写相应的语句,实现LED数码管循环显示0~9的功能。

 

题14图  用AT89C51单片机P2口控制共阳极7段LED数码管的电路

#include "reg51.h"

#include "intrins.h"

#define uchar unsigned char

#define uint unsigned int

#define out P2

uchar code seg[]={①0xc0,0xF9,0xa4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x01}; //0~9共阳极段码表

void delayms(uint);

void main(void)

{uchar i;

while(1)

{

②out=seg[i]; //P2口循环输出0~9共阳极段码表

delayms(900);

i++;

if(seg[i]==0x01) ③i=0;   // 如段码为0x01,表明一个循环显示已结束

}

}

void delayms(uint j)    // 延时函数

{uchar i;

for(;j>0;j--)

   {  i=250;

      while(--i);

      i=249;

      while(--i);

    }

}

14. 8位一体共阳极8段LED数码管和单片机的连接电路如题15图所示,请在下列程序中第①空处,依次写出使共阳极8段LED数码管显示1~9以及0的十个段码,再在主程序第②、③、④空处编写相应的语句,使8位数码管从左到右分别滚动显示单个数字1~8,即程序运行后,单片机控制左边第1个数码管显示1,其他不显示,延时之后,控制左边第2个数码管显示2,其他不显示,直至第8个数码管显示8,其他不显示,反复循环上述过程。

 

题15图 8位一体共阳极8段LED数码管和单片机的连接电路

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar code dis_code[]={①0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0x88 }; //共阳极8段LED数码管段码表

void  delay(uint t)        //延时函数

{   uchar i;

while(t--) for(i=0;i<200;i++);

}

void  main()

{  uchar i,j=0x80;

     while(1)

       { for(i=0;i<8;i++)

{

      ②j=_crol_(j,1);//  将对象j循环左移1位

      ③P0=dis_code[i]; //P0口输出段码

      ④P2=j; //P2口输出位控码

       delay(180);  //延时,控制每位显示的时间

}

       }

}

16. 单片机控制8个发光二极管的电路如题16图,8个发光二极管D1~D8经限流电阻分别接至P1口的P1.0~P1.7引脚上,二极管阳极共同接高电平。在下列程序的第①~⑤空处编写相应的语句控制发光二极管由上至下反复循环流水点亮,每次点亮一个发光二极管。

 

题16 单片机控制8个发光二极管的电路

#①include <reg51.h>       //包含51单片机的头文件

#②include <intrins.h>  //包含移位函数_crol_(  )的头文件

#define uchar unsigned char      

#define uint unsigned int      

void  delay(uint i)    //延时函数

{

uchar t;

  while (i--)

{   for(t=0;t<120;t++);  }

}

void  main(  )    //主程序

{

③P1=0xfe;  //向P1口送出点亮数据

    while (1)

    {  

④ delay( 500 );  //调用延时函数

⑤P1=_crol_(P1,1);   //将P1中的数据循环左移1位

    }

}

 

17. 单片机键控电路如题17图所示,P1.0和P1.1引脚接有两只开关S0和S1,两引脚上的高低电平共4种组合,4种组合分别点亮P2.0~P2.3引脚控制的4只LED,即S0、S1均闭合,LED0亮,其余灭;S1闭合、S0打开,LED1亮,其余灭;S0闭合、S1打开,LED2亮,其余灭;S0、S1均打开,LED3亮,其余灭。在下列程序的第①~⑤空处编写相应的语句实现题目要求的控制功能。

 

题17 单片机键控电路

答:

#include <reg51.h>   // 包含头文件reg51.h

void  main(  )   //主函数main( )

{

char state;

  do

  {

P1=0xff;    // P1口为输入

   state=P1;       // 读入P1口的状态,送入state

   ① state=state&0x03;     // 屏蔽P1口的高6位

   switch (state)   // 判P1口低2位开关状态

   {

② case 0: P2=0x01; break;// P1.1、P1.0=00,点亮P2.0脚LED

    ③ case 1: P2=0x02; break; // P1.1、P1.0=01,点亮P2.1脚LED

    ④ case 2: P2=0x04; break; // P1.1、P1.0=10,点亮P2.2脚LED

    ⑤ case 3: P2=0x08; break; // P1.1、P1.0=11,点亮P2.3脚LED

   }

  }while ( 1 );

 

18.仿真电路如下图所示,编写程序,将开关K的闭合和打开情况用二极管表示,即当K1闭合时,D1亮,K1打开时,D1不亮,当K2闭合时,D2亮,K2打开时,D2不亮,依此类推,试编写程序。

 

键控发光二极管的电路

程序设计如下:(编程题答案不唯一,酌情扣分)

#include <reg51.h>

sbit D1=P1^0;

sbit D2=P1^1;

sbit D3=P1^2;

sbit D4=P1^3;

sbit K1=P3^0;

sbit K2=P3^1;

sbit K3=P3^2;

sbit K4=P3^3;

void main()

{

unsigned char k;

while(1) 

{

D1=K1;

D2=K2;

D3=K3;

D4=K4;

}

}

 

 

19. 仿真电路如题19图所示,P2.0~2.3上接了四个按键,P3口上接了共阳极LED显示器,试编写程序,在LED显示器上将按下的键值显示出来。

 

题19图 独立式按键与单片机的接口(采用查询方式)

答:#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

int xx;                  

void delay(int k) //延时函数

{    int i;

    for(i=0;i<k;i++);  }

void main()

{   P2=0xFF;

    P3=0xFF;   //为输入键值做准备

    while(1)

     { while(P2==0xFF) //若无键按下,循环等待

        {;}

       if(P2!=0xFF) //有键按下,延时去抖动

       delay(10);

       if(P2!=0xFF)

{  xx=P2; //有键按下,根据键值进行显示

  switch(xx)

    { case 0xFE:   P3=0xC0;break;

     case 0xFD:   P3=0xF9;break;

     case 0xFB:   P3=0xA4;break;

     case 0xF7:   P3=0xB0;break;

     default:     P3=0xFF;break;   }   }

     while(P2!=0xFF) //等待按键松开

   {;}

 }

}


第6章  中断系统的工作原理及应用

1. 8051单片机的外部中断1的中断请求标志是(      )。

A. ET1        B. TF1        C. IT1       D. IE1

答:D

2. 要使80C51能响应定时器T1与串行口中断,它的中断允许寄存器IE的内容应是(  )。

A. 98H     B. 84H           C. 42H       D. 22H

答:A

3. 若80C51单片机中断源都编程为同级,当它们同时申请中断时CPU首先响应(    )。

A.     B.       C.T1         D.T0

答: B

4. 8051单片机在同一优先级的中断源同时申请中断时,CPU首先响应(    )。

A. 外部中断0         B. 外部中断1

C. 定时器0中断       D. 定时器1中断

答:A

5. 要想测量引脚上的一个正脉冲宽度,则TMOD的内容应为(   )。  

A. 09H     B. 87H         C. 00H        D. 80H

答: A

6. 当80C51单片机接有外部存储器时,P2口可作为 (       )。

A. 数据输入口               B. 数据的输出口    

C. 准双向输入/输出口       D. 输出高8位地址

答:D

7. 在80C51的中断请求源中,需要外加电路实现中断撤销的是        。

A. 跳沿方式的外部中断请求        B. 电平方式的外部中断请求

C. 外部串行中断                  D. 定时中断

答:B

8. 当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持(   )。

A. 1个机器周期       B. 2个机器周期

C. 4个机器周期       D、10个晶振周期

答:A

9. 若寄存器IP中的内容为00010100B,则优先级最高者为               。

答:中断优先级最高者为外中断1。

10. 80C51单片机有5个中断源,________级中断优先级别。

答:2

11. 若IT1=0,当引脚P3.2为        电平的时候,INT0的中断标志位IE0才能复位。

答:低

12. 单片机外部中断1的入口地址是         。

答:0013H

13. 中断响应时间是指                                                     。

答:从查询中断请求标志位到转向中断区入口地址所需的机器周期数

14. 中断响应

答:中断响应是CPU对中断源提出的中断请求的接受。

15. 简述子程序调用和执行中断服务程序的异同点。

答:相同点:均能中断主程序执行本程序,然后再返回断点地址继续执行主程序。

不同点:

(1) 中断服务程序入口地址是固定的,子程序调用入口地址是用户自己设定的。

(2) 中断服务子程序返回指令除具有子程序返回指令所具有的全部功能之外,还有清除中断响应时被置位的优先级状态、开放较低级中断和恢复中断逻辑等功能。

(3) 中断服务子程序是在满足中断申请的条件下,随机发生的;而子程序调用是用户主程序事先安排好的。

16.一个中断源的中断请求要得到响应,需要满足哪些条件?

答:一个中断源的中断请求被响应,必须满足以下必要条件:

(1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。

(2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。

(3)该中断源的中断允许位=1,即该中断被允许。

(4)无同级或更高级中断正在被服务。

17.80C51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?

答:80C51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。

18. 电路如题18图所示,要求单片机的主程序实现P1口控制一个共阴极数码管的各段依次点亮,不断循环,当有外中断输入时,使数码管显示8,闪烁4次后,返回原断点处继续执行程序,外中断的触发方式采用边沿触发方式。试编写程序。

 

题18图 单片机外中断应用系统电路图

答:#include<reg51.h>    

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar i,aa;

void delay(uint z);

void main()              

{

EA=1;  //开总中断

EX1=1;  //开外部中断1

IT1=1;  //将外部中断1设为边沿触发方式  

aa=0x01;

P3=0xff;

while(1)

{ P1=aa;   //送入段选信号

delay(1000);

aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa

}   }

void delay(uint z)             

{ uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);  }

void exter0( ) interrupt 2       

{  for(i=4;i>0;i--)

{ P1=0x3f;  //送入段选信号7f,使数码管显示8

delay(500);

P1=0x00;  //送入段选信号00,使数码管熄灭

delay(500);  }

}

19. 电路如题19图所示,要求单片机主程序控制P2口所接的8段共阳极数码管各段依次循环点亮,当外部中断输入出现从高到低的负跳变时,数码管开始亮灭闪烁显示“0”,闪烁显示8次后,8段数码管的各段继续依次循环点亮。试编写程序,实现上述功能。

 

题19图 单片机外中断应用系统

答:#include<reg51.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar i,aa;

void delay(uint z);

void main()        

{ EA=1;  //开总中断

EX0=1;  //开外部中断0

IT0=1;  //将外部中断0设为边沿触发方式  

aa=0xfe;

        P3=0xff;

while(1)

{

P2=aa;   //送入段选信号

delay(1000);

aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa

}

}

void delay(uint z)     

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void exter0( ) interrupt 0  

{

for(i=8;i>0;i--)

{ P2=0x3f;  //送入段选信号3f,使数码管显示0

delay(500);

P2=0x00;  //送入段选信号00,使数码管熄灭

delay(500);

}  

}

20. 电路连接如题20图所示,编程实现下列要求:在平时状态下,8个发光二极管以200ms的时间间隔,依次点亮。在中断时亮一半,暗一半;在中断时全灭,中断为高优先级,中断为低优先级。

题20图 采用中断控制二极管点亮的电路

答:程序如下:

#include <reg51.h>   

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar i,j,aa;

void delay(uint z)   

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void init()        

{

IT0=1;   //INT0边沿触发

IT1=1;   //INTl边沿触发

EA=1;   //开总中断

EX0=1;  //使能INT0

EX1=1;  //使能INTl

PX0=1;  //中断0优先

}

void main()      

{

init();

aa=0x01;

while(1)

{   

          P2=aa;

delay(200);

aa=_crol_(aa,1);//aa循环左移一位    

}

}

void int0() interrupt 0

{

for(i=8;i>0;i--)

{

P2=0x00;   //P2口送出00H使灯熄灭,循环8次

delay(500);    

}  

}

void int1() interrupt 2

{

for(j=8;j>0;j--)

{

P2=0x0f;  //低4位亮,高四位暗

delay(500);

P2=0xf0;  //低4位暗,高四位亮

delay(500);

}  

}

 


第7章  定时器/计数器的工作原理及应用

1. 80C51单片机定时器工作方式0是(         )的工作方式。

A. 8位     B. 8位自动重装      C. 13位      D. 16位

答:C

2. 若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为(      )。

A.500     B.1000     C.216-500     D.216-1000

答:C

3. 定时器若工作在循环定时或循环计数场合,应选用(      )。

A. 工作方式0     B.工作方式1     C.工作方式2     D.工作方式3

答:C

4. 定时器1工作在计数方式时,其外加的计数脉冲信号应连接到(      ) 引脚。

A.P3.2/     B.P3.3/     C.P3.4/T0     D.P3.5/T1

答:D

5. 8051单片机内有(   )个16位的定时/计数器 ,每个定时/计数器都有(   )种工作方式。

A.  4, 5         B. 2,  4            C.  5,  2        D.  2, 3    

答: B

6. 定时和计数都是对          进行计数。

答:脉冲

7. 定时与计数的区别是                              。

答:定时是对周期已知的脉冲计数;计数是对周期未知的脉冲计数

8.定时器/计数器的工作方式3是将             拆成两个独立的8位计数器。

答:定时器/计数器0

9. 定时器中断请求发生在                 _时刻。

答:定时时间到

10. 定时器T0和T1各有几种工作方式?分别是什么样的工作方式?

答:T0有4种工作方式,T1有3种工作方式,分别为:

方式0:13位的定时器/计数器,适用于T0、T1。

方式1:16位的定时器/计数器,适用于T0、T1。

方式2:自动重新装入计数初值的8位的定时器/计数器,适用于T0、T1。

方式3:分为两个8位计数器TL0和TH0。TL0可工作于定时或计数状态,TH0则固定为定时状态。方式3对T1则停止计数,适用于T0。

11. 80C51的定时器/计数器有几个?是多少位的?有几种工作方式?简述其工作原理。

答:80C51有2个16位的定时器/计数器,有4种工作方式。

定时器与计数器的工作原理是相同的,80C51的定时器/计数器是根据输入的脉冲进行加1计数,当计数器溢出时,将溢出标志位置1,表示计数到预定值。

12. AT89C51单片机控制P2口所接8只LED数码管的电路如题12图所示,要求用单片机定时器T0,采用方式1,定时中断方式,使P2口所接的8只LED每0.5s闪烁亮一次。计算与定时器工作方式控制寄存器TMOD、控制寄存器TCON、计数寄存器TH0、TL0及中断允许寄存器IE中各位的值,要求写出计算过程,同时完成实现上述要求功能的程序编写。

 

题12图AT89C51单片机控制P2口所接8只LED数码管的电路

附:TMOD及TCON控制字的格式如下:

答:(1)TMOD寄存器的设置

T0工作在方式1,应使TMOD寄存器的M1、M0=01;应设置C/T=0,为定时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时器T1不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x01。

(2)计算定时器T0的计数初值

设定时时间5ms(即5000µs),设T0计数初值为X,假设晶振的频率为11.0592MHz,则定时时间为:

定时时间=(216−X)×12/晶振频率

则  5000=(216 −X) ×12/11.059 2

    得  X = 60928

    转换成十六进制:0xee00,其中0xee装入TH0,0x00装入TL0。

(3)设置IE寄存器

由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置1。

(4)启动和停止定时器T0

    将定时器控制寄存器TCON中的TR0=1,则启动定时器T0;TR0=0,则停止定时器T0定时。

参考程序:

#include<reg51.h>

char  i=100;         //

void main ()  

{ TMOD=0x01;   //定时器T0为方式1

TH0=0xee;   //设置定时器初值,定时器每5ms中断一次

TL0=0x00;

    P2=0x00;    //P2口8个LED点亮

EA=1;     //总中断开

ET0=1;     //开T0中断

TR0=1;     //启动T0

while(1);    //循环等待

{  ; }

}

void timer0() interrupt 1   //T0中断程序,每5ms中断一次

{ TH0=0xee;    //重新赋初值

TL0=0x00;

i--;     //循环次数减1

if(i<=0)

{

P2=~P2;       // 中断100次,达到0.5s,P2口按位取反

i=100;    //重置循环次数

}

}

13. 电路如题13图所示,在AT89C51单片机的P1口上接了8只LED,T1(P3.5)引脚接了一只按键开关,要求定时器T1采用计数模式,方式1中断,使输入引脚T1引脚上外接按钮开关作为计数信号输入。按4次按钮开关后,P1口的8只LED闪烁不停。计算与定时器有关的工作方式控制寄存器TMOD、控制寄存器TCON、计数寄存器TH1、TL1及中断允许寄存器IE的值,写出计算过程,编写实现上述功能的程序。

 

题13图 AT89C51单片机控制8只LED电路

答:

(1) 设置TMOD寄存器

T1工作在方式1,应使TMOD的M1、M0=01;设置C/T*=1,为计数器模式;对T0运行控制仅由TR0来控制,应使GATE0=0。定时器T0不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x50。

(2) 计算定时器T1的计数初值

由于每按1次按钮开关,计数1次,按4次后,P1口的8只LED闪烁不停。因此计数器初值为65 536−4=65 532,将其转换成十六进制后为0xfffc,所以,TH0=0xff,TL0=0xfc。

(3)设置IE寄存器

本例由于采用T1中断,因此需将IE寄存器的EA、ET1位置1。

(4)启动和停止定时器T1

将寄存器TCON中TR1=1,则启动T1计数;TR1=0,则停止T1计数。

程序如下:

  #include <reg51.h>

    void Delay(unsigned int i)  //定义延时函数Delay( )

{ unsigned int j;  

for(;i>0;i--)

for(j=0;j<125;j++)  

{;}    //空函数

 }

void  main( )   //主函数

 {

TMOD=0x50;   //设置定时器T1为方式1计数

TH1=0xff;   //向TH1写入初值的高8位

TL1=0xfc;   //向TL1写入初值的低8位

EA=1;       //总中断允许

ET1=1;      //定时器T1中断允许  

  TR1=1;      //启动定时器T1

  while(1) ;     //无穷循环,等待计数中断

 }

 

void T1_int(void)  interrupt 3   //T1中断函数

{

for(;;)    //无限循环

  {

P1=0xff;  //8位LED全灭

   Delay(500) ;  //延时500ms

   P1=0;   //8位LED全亮

   Delay(500);  //延时500ms

}      

}

14.原理电路如题14图所示,在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接一只按钮开关K1。要求将外部中断0设置为电平触发。程序启动时,P1口上的8只LED全亮。每按一次按钮开关K1,使引脚接地,产生一个低电平触发的外中断请求,在中断服务程序中,让低4位的LED与高4位的LED交替闪烁5次,中断结束后,控制8只LED再次全亮,请编写相应的控制程序。

 

题14图 单片机控制发光二极管电路

答:程序如下:

#include <reg51.h>                  

#define uchar  unsigned char

void Delay(unsigned int i) //延时函数,

{ unsigned int j;

for(;i > 0;i--)  

for(j=0;j<333;j++)         //晶振为12MHz,j选择与晶振频率有关

{;}      //空函数

}

void  main( )   //主函数

{ EA=1;   //总中断允许    

EX0=1;   //允许外部中断0中断

IT0=1;   //选择外部中断0为跳沿触发方式

while(1)  //循环  

{ P1=0;}   // P1口的8只LED全亮    

}

void int0( )  interrupt 0  using 0   //外中断0的中断服务函数

{

uchar  m;

EX0=0;   //禁止外部中断0中断

for(m=0;m<5;m++) //交替闪烁5次

{

P1=0x0f;  //低4位LED灭,高4位LED亮

Delay(400) ;  //延时

P1=0xf0;  //高4位LED灭,低4位LED亮

Delay(400);  //延时

EX0=1;   //中断返回前,打开外部中断0中断

}

 

15. 已知晶振频率fosc=12MHz,使用定时器T1使P2.0引脚产生100ms的方波程序,计算TH1、TL1、TMOD寄存器的值,并编写对定时器1进行初始化的程序。

附:TMOD及TCON控制字的格式如下:

 

答:分析:方波的周期为100ms,要求高、低电平的持续时间各为50ms,采用定时器定时,中断工作方式。每50ms时间到时,在中断服务程序中将P2.0引脚电平状态取反,即可获得所需要的波形。晶振频率fosc=12MHz,Tcy=12/fosc=1μs ,选择定时器T1的方式1。

(1) 确定计算初值

(2n-x)×Tcy=(216-x)×1μs =50ms,

x=65536-50000=15536=3CB0H

即TH1=3CH,TL1=B0H  

(2) TMOD寄存器初始化

GATE (TMOD.7)=0, (TMOD.6)=0,M1 (TMOD.5)=0,M0 (TMOD.4)=1,定时器/计数器0没有使用,相应的各个位状态随意,均取为0,则(TMOD)=10H。

(3) 程序如下:

#include<reg51.h>

#define uint unsigned int

sbit fangbo=P2^0;

void main()

{

TMOD=0x10; //设置T1为定时器模式,工作在方式1

TH1=0x3C;

TL1= 0xB0;

EA=1; //开总中断

ET1=1; //允许T1中断

TR1=1; // 启动T1

while(1);

}

void timer1() interrupt 3  //定时器1中断服务程序

{ TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

fangbo=~fangbo;  }

16. 已知晶振频率fosc=12MHz,要求定时器0产生10ms的定时时间,计算与定时器有关的工作方式控制寄存器TMOD、控制寄存器TCON及计数寄存器TH、TL中各位的值,并编写对定时器0进行初始化的程序。

答:由于晶振频率为12MHz,机器周期Tcy=1μs,选用方式0时最大定时时间8.192ms,选择方式1时,最大定时时间为65.536ms,要求的定时时间为10ms,所以不能选择方式0,只能选用方式1。

(1) 计算TH0、TL0的计数初值   

由于晶振频率为12MHz,所以机器周期Tcy=1μs,则定时时间为:

T=(2n-x)×Tcy=(216-x)×1μs =10ms,

所以x=65536-10000=55536=D8F0H

即TH0=D8H,TL0=F0H,或者TH0=55536/256,TL0=55536%256

(2) TMOD寄存器初始化   

根据题目要求,GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=0,M0

 (TMOD.0)=1,定时器/计数器1没有使用,相应的各个位状态随意,均取为

0,则(TMOD)=01H。

(3) 初始化程序        

void init_time0(void)

{

TMOD=0x01;             //设置T0为定时器模式,工作在方式1

TH0=(65536-10000)/256;    //设置TH0和TL0的计数初值

TL0=(65536-10000)%256;

    TR0=1;                  // 启动T0

}

 

17. 设单片机系统时钟频率为12MHz,波形发生器电路如题17图所示,要使P2.0引脚上输出一个周期为2ms的方波,计算计数寄存器TH、TL的值,并编写程序实现上述功能。

 

题17图 波形发生器电路

答:(1) 计算TH0、TL0的计数初值  

要在P2.0上产生周期为2ms的方波,定时器应产生1ms的定时中断,定时时间到则在中断服务程序中对P2.0求反。使用定时器T0,方式1定时中断,GATE不起作用。

设T0的初值为X,有

      (216−X )×1×10−6=1×10−3

即    65536−X=1000

得X=64536,化为16进制数就是0xfc18。将高8位0xfc装入TH0,低8位0x18装入TL0。

(2) TMOD寄存器初始化   

GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=1,M0 (TMOD.0)=0,定时器/计数器1没有使用,相应的各个位状态随意,均取为0,则(TMOD)=01H。

(3) 程序编写         

#include <reg51.h>    //头文件reg51.h

sbit P2_0=P2^0;   //定义特殊功能寄存器P1的位变量P1_0

void main(void)   //主程序

{

TMOD=0x01;  //设置T0为方式1

TR0=1;   //接通T0

while(1)  //无限循环

{

TH0=0xfc;  //置T0高8位初值

TL0=0x18;  //置T0低8位初值

do{}while(!TF0);        //TF0为0原地循环,为1则T0溢出,往下执行

P2_0=!P2_0;  // P2.0状态求反

TF0=0;   //TF0标志清零

}

}

 

18. 已知晶振频率fosc=12MHz,要求用定时0每隔200μs产生一定时信号,计算与定时器有关的工作方式控制寄存器TMOD、控制寄存器TCON、计数寄存器TH、TL,并对定时器进行初始化编程。

解:选择定时器0,工作在方式2。

(1) 计算TH0、TL0的计数初值  

由于晶振频率为12MHz,所以机器周期Tcy=1μs,则

(2n-x)×Tcy=(28-x)×1μs =200μs,所以x=256-200=56=38H

即TH0=38H,TL0=38H  

或者TH0=(256-200) %256,TL0=(256-200)%256。

(2) TMOD寄存器初始化  

GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=1,M0

 (TMOD.0)=0,定时器/计数器1没有使用,相应的各个位状态随

意,均取为0,则(TMOD)=02H。

(3) 初始化程序         

void init_time0(void)

{

TMOD=0x02; //设置T0为定时器模式,工作在方式1

TH0=0x38;  //设置TH0和TL0的计数初值

TL0=0x38;

    TR0=1;  // 启动T0

}


第8章  串行口的工作原理及应用

1. 波特的单位是          。

答:位/秒

2. 控制串行口工作方式的寄存器是             。

答:SCON

3. 在串行通信中,80C51中发送和接收的寄存器是              。

答: SBUF

4. 单片机系统扩展接口连接方式分为并行扩展和        扩展。

答:串行

5 什么是串行通信?

答:串行通信是将数据字节分成一位一位的形式在一条传输线上逐个传送的通信方式。

6. 波特率

答:串行口每秒发送或接受的数据的位数称为波特率。

7. 简述串行数据传送的特点。

答:

(1) 传送按位顺序进行,速度慢。

(2) 传输线少,成本低。

(3) 传送距离远,可达几公尺到几千公里。

8、异步通信和同步通信的主要区别是什么,8051单片机串行口有没有同步通信的功能?

答:异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。8051单片机串口没有同步通信的功能。

 


第9章  单片机系统的并行扩展

1.使用8255可以扩展出的I/O口线是        根。

答: 24

2. 若某存储器芯片地址线为12根,那么它的存储容量为       kB。

答:4

3. 某种存储器芯片是8kB*4/片,那么它的地址线根数是                根。

答:13

4. 在接口电路中,把已经编址并能进行读写操作的寄存器称为            。

答:端口

5. 什么是I/O端口?

答:I/O端口是指I/O接口电路中具有单元地址的寄存器或缓冲器。

6. 存储器地址空间分配的线选法

答:存储器地址空间分配的线选法是利用单片机的某一高位地址线作为存储器芯片(或I/O接口芯片)的片选控制信号,只需用这一高位地址线与存储器芯片的“片选”端直接连接即可。

7.存储器地址空间分配的译码法

答:存储器地址空间分配的译码法是使用译码器对单片机的高位地址进行译码,将译码器的译码输出作为存储器芯片的片选信号。

8. I/O端口独立编址

答:I/O端口地址空间与存储器地址空间分开编址。

9. 80C51单片机的扩展储存器系统中,为什么P0口要接一个8位锁存器,而P2口却不接?

答:这是因为P0口是扩展储存器系统的多路低8位地址和数据总线,在访问外部存储器时,P0口分时用作输出外部储存器低8位地址和传送数据,为了在整个访问外部存储器期间,对外部存储器存在着有效的低8位地址信号,所以P0口需要外接一个地址锁存器。而P2口只用作扩展存储器系统的高8位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。

 

10.简述可编程并行接口8255 A的内部结构。

答:8255 A的内部结构由三部分组成:总线接口部分,内部逻辑部分,外部接口部分。

(1) 总线接口部分  其中有数据总线驱动器,读/写控制逻辑。

(2) 内部逻辑部分  由A组和B组控制电路。

(3) 外部接口部分  该部分有3个8位并行I/O端口,即A口、B口和C口。

 

11.8051单片机对外的地址总线和数据总线是如何提供的?

答: 8051的地址总线由P2和P0口提供,P2口是地址总线的高8位,P0口是地址总线的低8位;数据总线由P0口提供;P0口的地址总线和数据总线是分时提供的,P0口的地址总线必要外接地址锁存器完成地址锁存。

 

12. 单片机对外扩展时主要进行哪些资源扩展?为什么要进行对外扩展?

答:单片机对外扩展包括外部ROM、外部RAM、并行I/O口、键盘、显示器等资源的扩展,它们是大多数单片机应用系统必不可少的组成部分。

由于控制对象的多样性和复杂性,常常会出现单片机内部的存储器、定时器/计数器、中断、并行I/O口及串行口等资源不够用的情况,而且多数单片机内部没有集成A/D和D/A等芯片,对模拟量的处理非常不方便,另外在单片机应用系统硬件设计中往往还需要考虑人机接口、参数检测、系统监控、超限报警等应用需求,此时单片机最小应用系统就不能满足要求了,在进行系统设计时首先要解决系统扩展问题。

 

13. 对AT89C51单片机外扩一片RAM 62256芯片,请设计电路连接图,画出AT89C51、74LS373与62256之间的连接电路,计算62256存储器的地址范围。

答: 62256地址线有15条(A14~A0),片选信号CE接地,芯片地址范围为0000H~7FFFH。

单片机与存储器的连接电路如下图所示。

 

采用线选法扩展一片62256的电路连接

14. 对AT89C51单片机外扩展两片16kB的RAM 62128芯片,用线选法进行两片62128的片选,画出题14图所示电路中各芯片之间的连接,计算出两片62128的地址范围。

答:扩展的电路连接如图9所示。62128(1)芯片存储单元的地址变化范围为:1000 0000 0000 0000B~1011 1111 1111 1111B,即8000H~BFFFH,62128(2)芯片存储单元的地址变化范围为:0100 0000 0000 0000B~0111 1111 1111 1111B,即4000H~7FFFH。

 

题14图 AT89C51外扩两片62128的电路连接

15. 对AT89C51单片机外扩展两片16kB的RAM 62128芯片,用译码法进行两片62128的片选,画出AT89C51、74LS373、74LS139与62128之间的连接图,计算两片62128的地址范围。

答:扩展的电路连接如下图所示。

 

AT89C51外扩2片62128的电路连接

62128芯片中存储单元的地址变化范围为:xx00 0000 0000 0000B~xx11 1111 1111 1111B,即单片机地址线的P2.5~P2.0与P0.7~P0.0发出的信号可以从全0变化到全1,则62128(1)的地址范围为:0000 0000 0000 0000B~0011 1111 1111 1111B,即0000H~3FFFH,62128(2)的地址范围为:0100 0000 0000 0000B~0111 1111 1111 1111B,即4000H~7FFFH。

 

 

16. 设计AT89C51单片机外扩2片6264存储器芯片的连接电路,要求6264芯片的片选信号采用译码法产生,画出图10所示电路中AT89C51、74LS373与6264之间的连接图,计算出两片6264的地址范围。

答:扩展的电路连接如下图所示。

 

题16AT89C51外扩两片6264的电路连接

6264(1)芯片存储单元的地址变化范围为:0000 0000 0000 0000B~0001 1111 1111 1111B,即0000H~1FFFH,6264(2)芯片存储单元的地址变化范围为:0010 0000 0000 0000B~0011 1111 1111 1111B,即2000H~3FFFH。

 

17. 对AT89C51单片机外扩一片8255A芯片,电路如题17图所示,8255A的地址线A1、A0由单片机P0.1、P0.0经74LS373锁存后获得,片选信号接单片机的P2.7,8255A的PA口接8个发光二极管。编写程序使发光二极管逐行先从左往右、再从右往左不停地循环点亮。

 

题17  AT89C51单片机外扩一片8255A芯片的电路

附:8255A的方式控制字如下:

 

答:#include <reg51.h>     

#include <absacc.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

#define PA XBYTE[0x0000] //PA及命令端口地址定义   

#define COM XBYTE[0x0003]

void Delay(uint x)                       

{ uchar i;

while(x--)

{   for(i=0;i<120;i++); }

}

void main()

{

uchar k,m=0x7f;

COM=0x80;

while(1)

{   for(k=0;k<8;k++)     //小灯从左到右亮   

{

m=_crol_(m,1);

PA = m;

Delay(1000);  }

for(k=0;k<8;k++)        //小灯从右到左亮  

{

m=_cror_(m,1);

PA = m;

Delay(1000);

}

}

}

 

 


第11章  AT89S51单片机与DAC、ADC的接口

1. 什么是D/A转换器?

答:实现数字量转换成模拟量的器件成为D/A转换器。

2. A/D转换器

答:实现模拟量转换成数字量的器件成为A/D转换器。

3. D/A转换器的分辨率

答:指单片机输入给D/A转换器的单位数字量的变化所引起的模拟量输出的变化,通常定义为输出满刻度值与2n(n为D/A转换器的二进制位数)之比,习惯上用输入数字量的位数表示。

4. 80C51单片机与DAC0832接口时,有哪三种连接方式?各有什么特点?各适合在什么场合使用?

答:(1) 直通方式。两个锁存器都处于跟随状态,不对数据进行锁存,D/A转换不受控制,一旦有数字量输入就立即进行D/A转换。用于输出设备随时可以接受模拟量输入的场合。

(2) 单缓冲方式。其特点是DAC0832内部的两个数据缓冲器有一个处于直通方式,另一个处于受80C51控制的锁存方式。适用于只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下。

(3) 双缓冲方式。其特点是数字量的输入锁存和D/A转换输出是分两步完成的。适用于在多路D/A转换中,要求同步进行D/A转换输出的情况下。

5. 说明D/A转换器的分辨率和建立时间的含义,设某DAC为12位,满量程输出电压为5V,它的分辨率是多少?

答:分辨率:D/A转换器的分辨率指输入的单位数字量变化引起的模拟量输出的变化,是对输入量变化敏感程度的描述。

建立时间:建立时间是描述D/A转换速度快慢的一个参数,用于表明转换速度。其值为从输入数字量到输出达到终位误差±(1/2)LSB(最低有效位)时所需的时间。)

当DAC为二进制12位,满量程输出电压为5V时,分辨率为1.22 mV。

6. DAC0832与AT89C52单片机连接的仿真电路如题6(a)图所示,编写程序用DAC0832芯片生成题6(b)图所示的三角波。

 

题6(a)图 DAC0832与AT89C52单片机连接的仿真电路

 

题6(b)图 三角波

答:将输出的字节值先从0~255递增,再从255~0递减,如此循环,输出电压值先由0V~-5V递减,再从-5V~0V,依次循环,就可以形成三角波。

程序设计如下:

/*用DAC0832生成三角波*/

#include <reg52.h>                    

#include <absacc.h>

#define uint unsigned int

#define uchar unsigned char

#define DAC0832 XBYTE[0x7fff]

void DelayMS(uint ms)//延时程序          

{ uchar i;

while(ms--)

{   for(i=0;i<120;i++); }

}

void main()//主程序

{

        uchar i;                      

        uchar k;

        k=0;    //k为三角波上升和下降的标志位 //

        i=0;

while(1)     //循环输出三角波

{

   if(k==0)  //输出三角波的下降沿   

           {

              i++;

              DAC0832 =i;

              if(i==255) k=~k;

          DelayMS(1);

       }

         Else   //输出三角波的上升沿

           {

          i--;

              DAC0832 =i;

              if(i==0) k=~k;

      DelayMS(1);

       }

  }

}

 

7. DAC0832与AT89C52单片机连接的仿真电路如题7(a)图所示,编写程序用DAC0832芯片生成题7(b)图所示的锯齿波。

 

7(a) DAC0832与AT89C52单片机连接的仿真电路

 

题7(b)  锯齿波

 

答:程序如下:

#include <reg52.h>

#include <absacc.h>

#define uint unsigned int

#define uchar unsigned char

#define DAC0832 XBYTE[0x7FFF]

void DelayMS(uint ms)//延时程序

{  uchar i;

while(ms--)

{for(i=0;i<120;i++); }

}

void main()//主程序

{   uchar i;

    i=255;

while(1)//循环输出三角波

{  i--;

   DAC0832 =i;

   DelayMS(1);

  }

}

 

 单片机复习题(一) 1、51单片机的硬件资源有 定时器/计数器、中断系统、I/O口、CPU、程序存储器、数据存储器等, 不包括 LCD 2、为单片机提供始终的元器件叫做 晶振 3、51单片机中, INT1中断号是 2 INT1是外部中断1 中断号为2 4、单片机程序一般存放在 ROM(只读存储器,只能读不能写) 5、单片机通常将数据处理结果存放在 数据存储器(RAM 随机存储器,可读可 写) 80C51单片机有四个存储空间:片内程序存储器、片外程序存储器、片内数 据存储器、片外数据存储器 片内ROM和片外ROM一般指的是程序存储器 片内RAM和片内RAM一般指的是数据存储器 6、提高单片机的晶振频率,则机器周期变长 几个重要的周期 振荡周期:时钟周期,指为单片机提供时钟脉冲信号的振荡源周期, 12MHZ 状态周期:2倍的振荡周期,振荡周期二分频 机器周期:6个状态周期,12个时钟周期,在一个机器周期内,CPU可以完成一 个独立的操作 指令周期:CPU完成一条操作所需要的全部时间,每条指令执行的时间都是有一 个或几个机器周期组成 7、外部中断初始化内容不包括 设置中断响应方式 外部中断初始化步骤:(以外部中断0为例) 打开总中断允许 EA=1 PS PT1 PX1 PT0 PX0 串行口中断 定时器中断1 外部中断1 定时器中断0 外部中断0 工作方式0 工作方式 1 工作方式2 工作方 式3 传送数 据长度 8位数据为1 帧 10位数据 为1帧 11位数据为1帧 11位数 据为1 帧 通信方 式 作为同步移 位寄存器使 用 双机串行 通信方 式, 8位异步通 信接口 串行通信方式 异步通 信方式 波特率 控制 定时器T 定时器 T1 波特率 计算方 式 晶振频率的 1/12 SMOD=0 为晶振频率的1/32, SMOD=1为晶振频率的1/64 打开外部中断0允许 EX0=1 设置外部中断触发方式 IT0=0 8、MCS-51单片机共有 两个 中断优先级 IP寄存器用来设置优先级 设置为0 表示低优先级, 设置为1 表示高优先级 9、如果需要传输11位为一帧的数据,且波特率由T1控制,则串口工作方式应选 择 工作方式3 串行口工作方式 10、MSC-51单片机通过IP来设置中断源的优先级 11、程序状态寄存器的缩写 PWS 特殊功能寄存器SFR(不包括PC),也称专用寄存器 (1)与CPU有关的特殊功能寄存器6个 累加器A,寄存器B, 程序状态字寄存器(PWS) 堆栈指针SP、数据指针DPL、DPH (2)与并行口有关的特殊功能寄存器4个 P0、P1、 P2 、P3 (3)与定时器计数器相关的特殊功能寄存器 TMOD 用于设置定时器的工作方式 TH0 TL0 TH1 TL1 (4) 与串行口有关的特殊功能寄存器(3个) SCON 串行口控制寄存器 SBUF 串行口缓冲寄存器 PCON 电源控制寄存器 串行通信中波特率设定、待机模式控制、空闲模式控制 位等 (5)与中断有关的特殊功能寄存器 IE 中断使能寄存器 IP 中断优先级控制寄存器 12、除了P0口是真正的双向口,其他I/O口都是准双向口 原因:在应用系统中P0口作为系统数据中心使用时,为保证数据的正确传送, 需要解决芯片内外隔离问题,即只有在数据传送时芯片内外才接通;不进行数据 传送时,芯片内外应处于隔离状态,为此,要求P0口的输出缓冲器是一个三态 门。 在P0口输出三态门是由两只场效应晶体管组成,所以说它是真正的双向口,而 其他3个P1~P3中,上拉电阻电梯P0口中的场效应晶体管,输出缓冲器不是三态 的,因此不是真正的双向口,只能称其为准双向口。 13、定时器1工作再定时方式1,系统晶振为12M,要定时1ms, 则TH1、TL1初 值分别为___FCH 18H P189页 65536 = 2^16 1ms = 1/1000 s 65536 - 1000 = 64536 TL1 = 64536%256= 24 = 18H TH1 = 65536/256 = 252 = FCH 14、51单片机的中断标志位共有6个,分别是 IE0(外部中断0请求标志位) IE1(外部中断1请求标志位) TF0(定时器/计数器0溢出中断请求标志位) TF1(定时器/计数器1溢出请求标志位) TI(串行口发送中断标志位) RI(串 行口接受中断标志位) 15、如果定时器/计数器工作在计数方式,则外部时间脉冲必须从P3.4 P3.5 引 脚输入脉冲信号 P3.4 T0 定时器/计数器0外部计数脉冲输入 P3.5 T1 定时器/计数器1外部计数脉冲输入 16、串行通信按照数据传送方向可分为 全双工、半双工、单工 17、三总线结构包括 数据总线(DB)、地址总线(AB)、控制总线(CB) 三总线的构成: 地址总线(16位):P2作为高8位地址总线,P0作为低8位地址总线 数据总线(8位): P0分时复用 控制总线(12位):P3口引脚,PSEN、EA、ALE、RST 18、按键扫描控制分为 逐行扫描 行列扫描法 行列反转法 19、KeilC51 编译后生成的可烧写的文件的扩展名为** .hex** 20、单片机复位后,程序指针PC指向 0000H 地址 (0000H被称为复位单元) PC 程序计数器 16位的计数器 程序计数器的访问根据程序计数器PC内容进行,复位后值为0, PC中总是存放 下一条要执行指令的地址,并且它还具有计数功能,每取出指令的一个字节后, 其内容自行加一,指向下一字节的地址,以便依次自程序存储器取指令执行,完 成某种程序。 计算机存储器配置上的两种结构: 普林斯顿结构:程序存储器和数据存储器统一编制 哈佛结构:程序存储器和数据存储器在物理结构上相互独立 80C51为哈佛结构: 程序存储器和数据存储器在物理结构上分别编址 21、8位二进制构成一个字节,一个字节能表达的十进制无符号数的范围是 0~255 (正确) 22、MCS-51单片机可以不需要复位电路。 (错误) 23、当中断请求产生时,需要在主程序中调用中断处理函数。(错误) 24、同优先级中断可以互相打断。(错误) 25、异步通信中,主从机时钟可以差别很大。(错误) 26、串口方式0可以将串口扩展为并口。(正确) 27、MCS-51单片机的I/O口都是双向的。(正确) 28、在相同参考电压下,A/D转换器的位数越多,精度越低。(错误) 精度反映A/D转换器实际输出数字量与理论输出值接近程度。 29、在单片机系统中,可以用PWM波控制LED的亮度。(正确) 30、波特率是每秒传输字节的个数。(个数) 波特率指单位时间内传送的信息量,即每秒钟传送的二进制位数。 字节:8位二进制称为一个字节

单片机复习题(二) 1、简画出MCS-51单片机的最小系统。

8051最小应用系统如图所示。这种最小应用系统只要将单片机的时钟电路和复位电路接上,同时

接高电平,系统就可以工作。此类应用系统只能用作一些小型的控制单元。其应用特点是:

〔1全部I/O口线均可供用户用。

〔2部存储器容量有限〔只有4KB地址空间。

〔3应用系统开发具有特殊性。


2、简述串行传输的特点。 (1)传送按位顺序进行,速度慢。 (2)传输线少,成本低。 (3)传输距离远,可达几公尺到几公里 串行通信作为计算机通信方式之一,主要起到 主机 与外设以及主机之间的数据 传输作用,串行通信具有传输线少、成本低的特点,主要适用于近距离的人-机 交换、实时监控等系统通信工作当中,借助于现有的 电话网 也能实现远距离传 输,因此串行通信接口是计算机系统当中的常用接口。 3、MCS-51单片机有几个中断源、分别如何定义的, 单片机有5个中断源,分别为外部中断0、外部中断1、定时器/计数器T0溢出中 断、定时器/计数器T1溢出中断。 外部中断0(INT0):默认中断级别最高,中断入口地址0003H; 定时/计数器0溢出中断(T0):默认中断级别第2,中断入口地址000BH; 外部中断1(INT1):默认中断级别第3,中断入口地址0013H; 定时/计数器1溢出中断(T1):默认中断级别最低,中断入口地址001BH。 串行口中断(TX/RX):默认中断级别第4,中断入口地址0023H。 1)外部中断0:由INTO (P3.2) 引脚输人,由外部中断0触发方式选择位IT0, 选择其 为低电平有效还是下降沿有效,当CPU检测到INT0引脚上出现有效的中断请求 信号时,中断请求标志位IEO置1,向CPU申请中断。 2)外部中断1:由INT1 (P3.3) 引脚输人,由外部中断1触发方式选择位IT1,选择 其为低电平有效还是下降沿有效,当CPU检测到INT1引脚上出现有效的中断请 求信号时,中断请求标志位IE1置1,向CPU申请中断。 3)定时器/计数器T0溢出中断请求,当T0定时时间到或计数满后,中断请求标志 位TI0由硬件置1,向CPU申请中断。 4)定时器/计数器T1溢出中断请求,当T1定时时间到或计数满后,中断请求标志 位TF1被硬件置1,向CPU申请中断 5)串行口中断请求,当串行口接收完一帧数据时, 中断请求标志RI被硬件置1,或 当 串口发送完- 帧数据时,中断请求标志TI被硬件置1。 中断源的中断请求标志位分别由特殊功能寄存器TCON和SCON的相应位锁存。 4、当出现同优先级中断申请时,CPU按什么顺序响应? 按照如下顺序响应中断请求:INT0、 T0、 INT1 、T1、 串口 5、描述I2C总线数据传输的过程(包括描述各信号是什么样的, 数据在什么情况下允许变化) I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段、数据传输阶段

单片机原理及应用复习题(全)的评论 (共 条)

分享到微博请遵守国家法律