单片机基础与应用(C语言版)(第3版)习题答案汇 王静霞 -第1-8章_第1页
单片机基础与应用(C语言版)(第3版)习题答案汇 王静霞 -第1-8章_第2页
单片机基础与应用(C语言版)(第3版)习题答案汇 王静霞 -第1-8章_第3页
单片机基础与应用(C语言版)(第3版)习题答案汇 王静霞 -第1-8章_第4页
单片机基础与应用(C语言版)(第3版)习题答案汇 王静霞 -第1-8章_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章单片机及其开发环境习题参考答案一、单选题CAB二、填空题1.8031;80512.微控制器,Micro-ControllerUnit(MCU)3.运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备4.运算器、控制器5.机器语言(二进制)6.限流7.双列直插式封装三、简答题1.单片机是指将中央处理单元(CPU)、存储器、I/O接口电路、定时器/计数器、中断系统等控制器件集成在一块半导体硅片上的微型计算机。单片机有以下特点:①可嵌入性——体积小,性价比高,灵活性强,单片机很容易嵌入到系统中,在嵌入式系统设计中有广泛的应用。②实时控制——功能齐全,实时性强,可靠性高,抗干扰能力强,单片机是为满足工业控制而设计的,便于实现各种方式的检测和控制。③灵活选型——单片机技术发展迅速,形式多样,品种齐全,前景广阔,为单片机大规模应用奠定了坚实的基础。④容易实现——单片机结构简单,技术成熟,容易掌握和普及,设计周期短,是各类电子工程师首选的微控制器。2.单片机应用系统以单片机为控制核心,按照需要配以输入、输出、显示等外围接口电路,控制程序完成资源合理调配和使用,并控制其按照一定顺序完成各种时序、运算或动作,从而实现应用系统所要求的任务。3.①明确任务。首先分析实际需求,明确设计任务与要求,进行总体方案设计,包括单片机选型、外围元器件配置、硬软件划分等。②硬件设计。包括硬件电路设计与电路板制作。③控制程序设计。根据设计要求,进行控制程序设计,以完成具体的应用。④硬软件联调。必须配备具有仿真调试功能的开发工具,用来排除设计中的硬件故障和程序中的错误。⑤下载运行。将控制程序编译成十六进制代码文件,下载到单片机中,就可以看到运行效果。第2章单片机硬件系统习题参考答案一、单选题AABCADBBCB二、填空题1.8位算术逻辑单元、8位累加器、8位暂存器、寄存器B、程序状态寄存器2.程序存储器(ROM)3.80H~FFH(或高128字节)4.1/65.上拉电阻,地址,数据6.0x7.00H~1FH、20H~2FH、30H~7FH8.16位,下一条将要执行指令的地址,64KB,自动加1功能9.0000H,0000H10.两个,高三、简答题1.内部数据存储器、特殊功能寄存器SFR、内部程序存储器、并行I/O口、串行口、定时器/计数器、中断系统、时钟电路2.在单片机的C语言程序设计中,可以通过关键字sfr来定义所有特殊功能寄存器,从而在程序中直接访问它们,如:sfrP1=0x90;//特殊功能寄存器P1的地址是90H,对应P1口的8个I/O引脚在程序中就可以直接使用P1这个特殊功能寄存器了。例如,程序ex3.c中有下面的语句:P1=0x00;//将P1口的8位I/O口全部清0通常情况下,这些特殊功能寄存器已经在头文件regx51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的特殊功能寄存器。C程序中,还可以通过关键字sbit来定义特殊功能寄存器中的可寻址位。例如,程序ex1.c中有下面的语句:sbitLED=P1^0;//定义P1口的第0位的位名称为LEDLED=0;//P1口的第0位清03.4个I/O口作为通用I/O口时都是准双向口。作为输出口时,P0口需加上拉电阻才能输出高电平。4个并行口作为输入口时,都分为“读引脚”和“读锁存器”,“读引脚”时,均需给相应锁存器先置“1”。4.当单片机外部扩展存储器时,P0口分时复用作为8位数据线和低8位地址线,P2口作为高8位地址线。地址总线共计16位,所以程序存储器和数据存储器都可以最多扩展216即64KB容量。第3章C51程序设计基础 习题参考答案一、单选题1.A 2.D 3.D 4.A 5.A 6.A 7.D 8.D 9.D 10.A二、填空题1.sbitLED=P1^1;2. sfr3. signedchar或有符号字符型4.if,ifelse,ifelseif,switchcase5.do-while,while6.0,17.#definePI3.14158.无符号字符或unsignedchar9.6.0,110.程序存储器或ROM三、简答题1. ANSIC是由美国国家标准局(ANSI——AmericanNationalStandardsInstituteI)在二十世纪八十年代,为避免各开发厂商使用不同的C语言语法,为C语言制订了一套完整的国际标准语法。C51语言是面向51系列单片机开发平台而设计的,符合ANSIC标准的高级程序语言。C51编译器根据51系列单片机的硬件结构做了特殊扩展,将C语言源程序编译生成Intel格式的可再定位目标代码,为单片机开发人员提供用C语言编程的方法。2. 数据类型是数据的不同格式,描述数据的值域范围和占用存储单元的数量,包含常量和变量。C51语言扩展了四种数据类型:bit、sbit、sfr、sfr16,使得开发人员可以直接访问单片机的内部存储资源。3. C51的位数据类型bit用来定义位类型变量,值域为0、1两个数值;用可寻址位数据类型sbit定义的变量,能访问单片机内部RAM中的可寻址位或专用寄存器中的可寻址位。4. 处理有符号数据类型的数据时,C51编译器需要额外的操作来测试代码的符号位,这会使得目标代码量增加,程序运行时间增长,执行效率降低。在单片机应用系统中如果没有不需要负数运算的时候,就应尽可能使用无符号数据类型,以提高程序的运算速度。5. C51编译器的存储器模式有三种:small、compact和large。small模式默认将变量数据存储在内部RAM中,compact模式默认将变量数据存储在外部RAM的一页(256B)中,large模式默认将变量数据存储在外部RAM区(64KB)中。6. (1)调用无返回值无形参函数,如:delay1(); (2)调用无返回值有形参函数,如:delay(20000); (3)调用有返回值无形参函数,如:b=fun();if(fun()>0)…else… (4)调用有返回值有形参函数,如:b=fun(10);if(fun(10)>0)…else…7. 符号常量是用一个标识符来表示的常量,需要用预处理命令#define来定义。在程序中使用符号常量,一是可以用与常量相关的标识符代表实际常量,望而知义,二是方便程序调试。8. if语句和switch语句9. while语句、do-while语句和for语句10. 字符串是一组字符的有序序列,字符串的最右一位字符后面还有一个看不见的串结束符\0。字符数组也是一组字符的有序排列,但字符数组不一定有结束符\0。字符数组可以保存字符串,反之则不成立。第4章定时器/计数器习题参考答案一、单选题BDABDAA二、填空题1.加,8、13、162.T0计数器、T1计数器、工作方式寄存器TMOD、控制寄存器TCON3.设置定时器的工作方式,不能,控制定时器的启动与停止,可以4.内部机器周期脉冲,T0(P3.4)或T1(P3.5),下降沿5.外部引脚或上的高电平、运行控制位TRx共同控制6.1或位,硬件,软件7.TL0的低5位、TH0的高8位,138.8位TL1、8位TH1,169.8,TL1,TH110.初值自动重载功能11.9.182ms,65.536ms,256µs12.TL0、TH0,停止计数13.门控位GATE三、简答题1.8051单片机定时器/计数器由T0计数器、T1计数器、工作方式寄存器TMOD和控制寄存器TCON四大部分组成。T0和T1均为独立的16位加法计数器,分别由两个8位寄存器组成:T0由TH0和TL0构成,T1由TH1和TL1构成,以方便编程设置不同的计数位数。TMOD用于设置定时器的工作方式;TCON用于控制定时器的启动与停止。2.定时器/计数器编程包括以下四个步骤。(1)确定计数/定时功能、工作方式等,对TMOD赋值。(2)计算并设置计数初值。计数功能,已知计数个数COUNT,T初值=M-COUNT;定时功能,已知定时时间t定时,T初值=M-t定时/T机器周期。M为最大计数值。初值写入TH0、TL0或TH1、TL1。(3)启动定时/计数器,将TR0或TR1置“1”。(4)计数溢出处理(查询或中断两种方式)。3.方式0初值设置:TH0=(8192-COUNT/1)/32;TL0=(8192-COUNT/1)%32;方式1初值设置:TH0=(65536-COUNT/1)/256;TL0=(65536-COUNT/1)%256;方式2初值设置:TH0=256-COUNT/1;TL0=256-COUNT/1;第5章中断系统习题参考答案一、单选题ADDCADDDBD二、填空题1.正在执行的程序,特殊事件(中断服务程序)2.提高了CPU的效率、实时处理、故障处理3.中断请求(或中断申请),中断响应4.5,两,两5.低优先级中断6.硬件7.中断类型号,工作寄存器组号三、简答题1.(1):外部中断请求0。由P3.2引脚输入,IT0位(TCON.0)决定是低电平有效还是下降沿有效。一旦输入信号有效,中断标志位IE0自动置1,向CPU申请中断。(2):外部中断请求1。由P3.3引脚输入,IT1位(TCON.2)决定是低电平有效还是下降沿有效。一旦输入信号有效,中断标志位IE10自动置1,向CPU申请中断。(3)TF0:T0溢出中断请求。当T0计数溢出时,T0中断请求标志位(TCON.5)自动置1,向CPU申请中断。(4)TF1:T1溢出中断请求。当T1计数溢出时,T1中断请求标志位(TCON.7)自动置1,向CPU申请中断。(5)RI或TI:串行口中断请求。当接收或发送完一帧串行数据时,串行口中断请求标志位RI(SCON.0)或TI(SCON.1)自动置1,向CPU申请中断。2.CPU响应中断的条件有:①有中断源发出中断请求;②总中断允许位EA置1;③申请中断的中断源允许位置1。CPU响应中断的阻断情况有:①CPU正在响应同级或更高优先级的中断;②当前指令未执行完;③正在执行中断返回或访问寄存器IE和IP。第6章人机交互接口设计习题参考答案一、单选题AACBABCBAD二、简答题1.答:数码管显示电路通常有静态显示和动态显示两种方式。LED静态显示时各位数码管相对独立,公共端恒定接地(共阴极)或正电源(共阳极),每个数码管的8个字段分别与一个8位I/O口地址相连,适合于2个及其以下的数码管显示。动态显示时各位数码管的段选线相应并联在一起,由一个8位的I/O口控制,各位的位选线由另外的I/O口控制,加驱动芯片驱动,适合于多位数码管显示。2.答:共阳极数码管和共阴极数码管显示同一个字符时,共阳极数码管的字型编码与共阴极数码管的字型编码是按位取反的关系。在静态显示方式中,如果在硬件设计中直接将共阳极数码管换成共阴极数码管不能正常显示,因为共阴极和共阳极数码管com段接的电平不一样,点亮段码所需的电平也不同。应该将共阴极数码管的com端接至GND上,P1口和8个段之间接上非门。在动态显示方式中,硬件可以不做其他修改,直接把共阴极数码管替换共阳极数码管,软件设计时按位取反修改字型编码,同时位选端的控制为低电平有效。3.答:可采用逐行扫描和逐列扫描的方式。逐行扫描动态显示原理是先显示第1行,其他7行熄灭,延时一段时间,再显示第2行,其他7行熄灭,延时一段时间,依次扫描第3行到第8行,利用人眼的视觉暂留效应,不断循环这个过程,就可以完整看到一个字符。同理,采用逐列扫描动态显示原理是先显示第1列,其他7列熄灭,延时一段时间,再显示第2列,其他7列熄灭,延时一段时间,依次扫描第3列到第8列,利用人眼的视觉暂留效应,不断循环这个过程,就可以完整看到一个字符。4.答:单片机与字符型LCD显示模块的连接方法分为直接访问和间接访问两种。直接访问方式是把字符型液晶显示模块作为存储器或I/O接口设备直接连到单片机总线上。采用8位数据传输形式时,数据端DB0~DB7直接与单片机的数据线相连,数据和指令选择控制端RS信号和读写控制线信号利用单片机的地址线来控制。使能端E信号则由单片机的和信号与地址线共同控制。间接访问方式是把字符型液晶显示模块作为终端与单片机的并行接口连接,单片机通过对并行接口的操作,编制软件实现LCD读写控制时序,从而通过对并行接口的操作间接实现对字符型液晶显示模块的控制。通常采用单片机的一个8位I/O口与液晶模块的八条数据线相连,另一个I/O口的三个引脚分别与液晶模块的三个控制端RS、R/、E连接实现间接访问。5.答:独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,适合于八键以下使用;矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口,适合于八个键以上使用。三、设计题1.答:硬件设计程序设计://功能:动态数码管显示时钟#include<REGX51.H>//包含头文件REGX51.H,定义了51单片机的所有SFRunsignedcharmsec,sec,min,hour;//定义msec为50ms计数变量,sec为秒变量,min为//分变量,hour为时变量,bitb=0; //暂停/继续标志位,b=0暂停,b=1继续//函数名:delayms//函数功能:实现软件延时//形式参数:无符号整型变量i,控制时间为i*1ms//返回值:无voiddelayms(unsignedinti){unsignedchark;while(i--)for(k=0;k<120;k++);//120次空操作}//函数名:T0_INT//函数功能:定时器0中断函数,定时50ms到,自动执行该函数,判断是否中断20次//形式参数:无//返回值:无voidT0_INT(void)interrupt1 //定时器0中断类型号为1{TH0=(65536-50000)/256; //50ms定时初值TL0=(65536-50000)%256;msec++; //中断次数增1if(msec==20)//中断次数到20次吗?{msec=0;//是,1秒计时到,50ms计数单元清零sec++;//秒单元加1 if(sec==60) //到60秒吗? {sec=0;//是,秒单元清零min++;//分单元加1if(min==60) //到60分吗? { min=0;//是,分单元清零hour++;//时单元加1if(hour==24) //到24时吗? { hour=0;//是,时单元清零} } }}}//函数名:int_0//函数功能:外部中断0中断函数,用于暂停、继续计数//形式参数:无//返回值:无voidint_0()interrupt0{if(b==0){TR0=0;b=1;}else{TR0=1;b=0;}}//函数名:int_1//函数功能:外部中断1中断函数,用于清零//形式参数:无//返回值:无voidint_1()interrupt2{sec=0; msec=0; TH0=(65536-50000)/256; //50ms定时初值TL0=(65536-50000)%256; TR0=1;}voidmain() //主函数{unsignedcharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数字0~9字型显示码TMOD=0x01;//定时器0工作方式1TH0=(65536-50000)/256; //50ms定时初值TL0=(65536-50000)%256;TR0=1;ET0=1;//开T0中断EX0=1;//开外部中断0IT0=1; //下降沿触发中断EX1=1; //开外部中断1IT1=1; //下降沿触发中断EA=1;//开总中断while(1){P2=0xdf; //选中P2.5控制的数码管P1=led[sec%10];//显示秒个位delayms(1);//1ms延时P1=0xff; //关显示P2=0xef; //选中P2.4控制的数码管P1=led[sec/10];//显示秒十位delayms(1);//1ms延时P1=0xff; //关显示P2=0xf7; //选中P2.3控制的数码管P1=led[min%10];//显示分个位delayms(1);//1ms延时P1=0xff; //关显示P2=0xfb; //选中P2.2控制的数码管P1=led[min/10];//显示分十位delayms(1);//1ms延时P1=0xff; //关显示P2=0xfd; //选中P2.1控制的数码管P1=led[hour%10];//显示时个位delayms(1);//1ms延时P1=0xff; //关显示P2=0xfe; //选中P2.0控制的数码管P1=led[hour/10];//显示时十位delayms(1);//1ms延时P1=0xff; //关显示}}2.答:硬件设计如图6-12所示。程序设计://功能:LED点阵稳定显示一个字符“开”#include<REGX51.H>//包含头文件REGX51.H,定义了51单片机的所有SFR//函数名:delayms//函数功能:实现软件延时//形式参数:无符号整型变量i,控制时间为i*1ms//返回值:无voiddelayms(unsignedinti){unsignedchark;while(i--)for(k=0;k<120;k++);//120次空操作}voidmain(){unsignedcharcodeled[]={0xff,0x81,0xdb,0x00,0xdb,0xdb,0xbb,0xfb}; //“开”字形码unsignedcharw,i;//定义行变量w,行数变量iwhile(1){w=0x01;//行变量指向第一行for(i=0;i<8;i++){P1=w;//行数据送P1口P0=led[i];//列数据送P0口delayms(1);w<<=1;//行变量左移指向下一行P0=0xff;//关显示}}}3.硬件设计如图6-19所示。程序设计只需修改ex31.c的main()函数即可。voidmain() //主函数{unsignedcharlcd[]="Welcome!";unsignedchari;P1=0xff;//送全1到P0口lcd_init(); //初始化LCDdelayms(100);lcd_w_cmd(0x83);//设置显示位置,第一行第四列delayms(100);for(i=0;i<9;i++)//显示字符串字符个数{lcd_w_dat(lcd[i]);delayms(100);}while(1);//原地踏步}4.略第7章串行口通信技术习题参考答案一、单选题CBADACAABB二、填空题1.并行通信、串行通信2.同步串行通信、异步串行通信3.起始位、数据位、校验位、停止位4.高,空闲位5.同步移位寄存器6.TXD,RXD7.时钟频率fosc,时钟频率fosc、PCON中的SMOD位8.1位起始位、8位数据位、1位停止位9.定时器T1的溢出率、SMOD10.进行电平转换三、简答题1.并行通信速度快,传输线多,适合于近距离的数据通信,但硬件接线成本高;串行通信速度慢,但硬件成本低,传输线少,适合于长距离数据传输。2.异步串行通信每次发送由起始位、数据位、校验位和停止位四部分构成的而一个字符帧,起始位:位于字符帧开头,只占一位,低电平,用于向接收设备表示发送端开始发送一帧信息。数据位:紧跟起始位之后的数据信息,低位在前,高位在后,用户可以自己定义数据位的长度。校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户编程决定。停止位:用来表征字符帧结束的位,高电平,通常可取1位、1.5位或2位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论