单片机应用技术(c语言版第3版)[王静霞]_习题答案

发布时间 : 星期三 文章单片机应用技术(c语言版第3版)[王静霞]_习题答案更新完毕开始阅读

?

1.1 单项选择题

(1) A (2)C (3)C 1.2 填空题

(1)硬件系统、软件系统 (2)时钟电路、复位电路

(3)XTAL1、XTAL2、RESET、EA (4)晶振 1.3 问答题

习 题 1

什么是单片机?它由哪几部分组成?什么是单片机应用系统?

答:单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。

单片机应用系统是以单片机为核心,配以输入、输出、显示等外围接口电路和控制程序,能实现一种或多种功能的实用系统。

1.4 上机操作题

(1)

参考程序:

#include //包含头文件reg51.h,定义了51单片机的专用寄存器 //函数名:delay

//函数功能:实现软件延时

//形式参数:无符号整型变量i,控制空循环的循环次数 //返回值:无

void delay(unsigned int i) //延时函数 {

unsigned int k; for(k=0;k

void main() //主函数 {

while(1){ P1=0x00; delay(20000); //调用延时函数,实际参数为20000 P1=0xff; delay(20000); //调用延时函数,实际参数为20000 } }

(2)

参考程序:

#include //包含头文件reg51.h,定义了51单片机的专用寄存器 //函数名:delay

//函数功能:实现软件延时

//形式参数:无符号整型变量i,控制空循环的循环次数 //返回值:无

void delay(unsigned int i) //延时函数 {

unsigned int k; for(k=0;k

void main() //主函数 {

while(1){ P1=0x55; delay(20000); //调用延时函数,实际参数为20000 P1=0xff; delay(20000); //调用延时函数,实际参数为20000 } }

?

2.1 单项选择题 (1)C (2)A

(3)A (4)A (5)A (6)D (7)C (8)A (9)A (10)C

习 题 2

2.2 填空题

(1)外部程序存储器、外部数据存储器、内部程序存储器、内部数据存储器 (2)程序存储器

(3)工作寄存器组、位寻址区、用户RAM (4)1us、2us

(5)按键复位、上电复位 (6)2、高 2.3 回答题

(1)P3口的第二功能是什么? 答: P3口各引脚的第二功能如下表。

第一功能 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD TXD T0 T1 第二功能信号名称 串行数据接收 串行数据发送 外部中断0申请 外部中断1申请 定时/计数器0的外部输入 定时/计数器1的外部输入 外部RAM或外部I/O写选通 外部RAM或外部I/O读选通

(2)画出单片机时钟电路,并指出石英晶体和电容的取值范围。 答:单片机时钟电路单片机时钟电路如下图。

一般地,电容C1和C2取30 pF左右;晶体振荡器,简称晶振,频率范围是1.2~12 MHz。晶体振荡频率越高,系统的时钟频率也越高,单片机的运行速度也就越快。在通常情况下,使用振荡频率为6 MHz或12 MHz的晶振。如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.0592 MHz的晶振。

(3)什么是机器周期?机器周期和晶振频率有何关系?当晶振频率为6MHz时,机器周期是多少? 答:

51单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为6个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。

当晶振频率为6MHz时,机器周期是2us。

(4)51单片机常用的复位方法有几种?画电路图并说明其工作原理。 答:2种,上电复位和按键复位。单片机常见的复位电路下图所示。

(a)为上电复位电路。它利用电容充电来实现复位,在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两个机器周期,便能正常复位。

(b)为按键复位电路。该电路除具有上电复位功能外,还可以按图2.5(b)中的RESET键实现复位,此时电源VCC经两个电阻分压,在RST端产生一个复位高电平。图1.23中的信号灯控制电路就采用按键复位电路。

(5)51单片机片内RAM的组成是如何划分的?各有什么功能?

答:8051的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址0x00~0x7F)和高128单元(单元地址0x80~0xFF)。

片内RAM的低128个单元用于存放程序执行过程中的各种变量和临时数据,称为DATA区。内部RAM的高128单元地址为0x80~0xFF,是供给专用寄存器SFR(Special Function Register,也称为特殊功能寄存器)使用的。

(6)51单片机有多少个特殊功能寄存器?它们分布在什么地址范围?

答:51单片机有21个可寻址的专用寄存器,它们不连续地分布在片内RAM的高128单元中,尽管其中还有许多空闲地址,但用户不能使用。另外还有一个不可寻址的专用寄存器,即程序计数器PC,它不占据RAM单元,在物理上是独立的。

(7)简述程序状态寄存器PSW各位的含义,单片机如何确定和改变当前的工作寄存器组。

答:程序状态字PSW是一个8位寄存器,用于存放程序运行中的各种状态信息。PSW的各位定义如下表所示。

位 地 址 0xD7 0xD6 0xD5 0xD4 0xD3 0xD2 0xD1 0xD0 位 名 称 CY AC F0 RS1 RS0 OV F1 P CY(PSW.7):进位标志位。存放算术运算的进位标志。 AC(PSW.6):辅助进位标志位。存放算术运算中低4位向高4位进位或借位。 F0(PSW.5):用户标志位。供用户定义的标志位,需要利用软件方法置位或复位。 RS1和RS0(PSW.4,PSW.3):工作寄存器组选择位。上电或复位后,RS1 RS0=00。 OV(PSW.2):溢出标志位。存放带符号数加减运算的溢出位。 F1(PSW.1):保留未使用。 P(PSW.0):奇偶标志位。存放累加器ACC数据的二进制形式中1的个数的奇偶性。一般用于异步串行通信中的奇偶校验。 (8)C51编译器支持的存储器类型有哪些?

答:单片机的存储器结构包括4个物理存储空间,C51编译器对这4个物理存储空间都能支持。常见的C51编译器支持的存储器类型如下表所示。 存储器类型 data bdata idata pdata xdata code 描 述 直接访问内部数据存储器,允许最快访问(128 B) 可位寻址内部数据存储器,允许位与字节混合访问(16 B) 间接访问内部数据存储器,允许访问整个内部地址空间(256 B) “分页”外部数据存储器(256 B) 外部数据存储器(64 KB) 程序存储器(64 KB) (9)当单片机外部扩展RAM和ROM时,P0口和P2口各起什么作用? 答:P0口可以分时复用作为8位数据总线和低8位地址线,P2口作为高8位地址线。 (10)在单片机的C语言程序设计中,如何使用SFR和可寻址位? 答:采用sfr和sbit来定义专用寄存器和位。 2.4 上机操作题

(1)修改程序ex2_1.c,使得蜂鸣器发出有变化的报警声。 提示:修改延时参数,声音就会有改变。

(2)利用单片机控制蜂鸣器和发光二极管,设计一个声光报警系统。

提示:增加一个LED发光二极管,采用一个I/O口来控制,当报警时,发出声音的同时,灯也闪动。 (3)利用单片机控制按键和发光二极管,设计一个单键控制单灯亮灭的系统。 参考电路如下图:

参考程序如下:

//功能:单键控制单灯程序 #include

sbit P1_0=P1^0; //定义P1.0引脚名称为P1_0 sbit P3_0=P3^0; //定义P3.0引脚名称为P3_0 void main() //主函数 {

bit led; //定义位变量led

P3_0=1; //P3.0作为输入口,置1 led=P3_0; //读P3.0

if(led==1) P1_0=1; //判断按键是否按下,没有按下,灯熄灭

if()led==0 P1_0=0; //按键按下,灯点亮 }

(4)利用单片机控制4个按键和4个发光二极管,设计一个4人抢答器,要求当有某一参赛者首先按下抢答开关时,相应的LED灯亮,此时抢答器不再接受其他输入信号,需按复位按键才能重新开始抢答。

参考电路如下图。

参考程序如下。

//功能:实用4路抢答器程序 #include

sbit P3_0=P3^0; //定义P3.0引脚名称为P3_0 sbit P3_1=P3^1; //定义P3.1引脚名称为P3_1 sbit P3_2=P3^2; //定义P3.2引脚名称为P3_2 sbit P3_3=P3^3; //定义P3.3引脚名称为P3_3 void main() //主函数 { bit flag; //定义位变量flag while(!flag) { if(!P3_0) { P1=0xfe; flag=1; } else if(!P3_1) { P1=0xfd; flag=1; } else if(!P3_2) { P1=0xfb; flag=1; } else if(!P3_3) { P1=0xf7; flag=1; } while(flag); } }

3.1 单项选择题

? 习 题 3

(1)C (2)A (3)A (4)D (5)D (6)D (7)A (8)B (9)C (10)A (11)void delay (unsigned int i)、delay、delay

3.2 填空题

(1)main (2)sbit FLAG=P3^1; (3)sfr (4)顺序、选择和循环

(5)表达式和分号 (6)if、switch (7)do-while语句、while语句 (8)无限次 (9)10000 (10)unsigned char

(11)指定该变量在51单片机硬件系统中所使用的存储区域,并在编译时准确的定位。 (12)’\\0’

联系合同范文客服:xxxxx#qq.com(#替换为@)