0.0712

五煦查题

快速找到你需要的那道考题与答案

mooc单片机原理及应用_5章节答案(mooc完整答案)

29 min read

mooc单片机原理及应用_5章节答案(mooc完整答案)

单片机原理与接口技术补考信息17级

客观题试卷

1、单片答案答案80C51是机原( )位的单片机。
A、理及4
B、应用8
C、章节16
D、完整32

2、单片答案答案单片机应用程序一般存放在( )。机原
A、理及RAM
B、应用ROM
C、章节寄存器
D、完整CPU

3、单片答案答案单片机8051在内时钟方式时XTAL1和XTAL2引脚是机原外接( )引脚。
A、理及晶振
B、串行口
C、中断
D、定时器

4、提高单片机的晶振频率,则机器周期( )
A、不变
B、变长
C、变短
D、不定

5、80C51单片机CPU的主要组成部分为( )。
A、运算器、控制器
B、加法器、寄存器
C、运算器、寄存器
D、运算器、指令译码器

6、80C51单片机的最小系统包括( )。
A、单片机、地质锁存器、RAM
B、单片机、存储器、I/O接口
C、单片机、RAM、ROM
D、单片机、时钟电路、复位电路

7、程序计数器PC用来( )。
A、存放指令
B、存放正在执行的指令地址
C、存放下一条的指令地址
D、存放上一条的指令地址

8、当CPU响应外部中断0后,PC的值是( )。
A、0003H
B、000BH
C、0013H
D、001BH

9、若MCS-51中断源都编程为同级,当他们同时申请中断时CPU首先响应( )。
A、INT0
B、INT1
C、T0
D、T1

10、在定时器方式下,若fosc=12MHz,方式1的最大定时间隔( ) 。
A、8.192ms
B、16.384ms
C、65.536ms
D、131.072ms

11、80C51单片机在访问外部存储器时,地址的输出是( )。
A、P2口输出高8位地址,P0口输出低8位地址
B、P1口输出高8位地址,P0口输出低8位地址
C、P0口输出高8位地址,P1口输出低8位地址
D、P1口输出低8位地址,P2口输出高8位地址

12、若MCS-51单片机的晶振频率为12MHz,计数器的外部输入最高计数频率为( ) 。
A、2MHz
B、1MHz
C、500KHz
D、250KHz

13、在中断服务程序中,至少应有一条( )。
A、传送指令
B、转移指令
C、加法指令
D、中断返回指令

14、外部中断初始化的内容不包括( )。
A、设置外部中断允许
B、设置外部中断的响应方式
C、设置中断总允许
D、设置外部中断触发方式

15、以下中断,只能通过软件清除中断请求的是( )。
A、外部中断
B、定时器/计数器中断
C、串行中断
D、所有中断

16、80C51单片机片内的定时器/计数器,有( )种工作方式。
A、5
B、3
C、4
D、6

17、单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为( )。
A、500
B、1000
C、65536-500
D、65536-1000

18、串行通信的通信方式和特点有( )。
A、各位同时传送
B、各位依次逐位传送,不便于长距离传送
C、各位依次逐位传送,便于长距离传送
D、各位同时传送,便于长距离传送

19、下述条件中,不能封锁主机对中断的响应的条件是( )。
A、一个同级或高一级的中断正在处理中
B、当前周期不是执行当前指令的最后一个周期
C、当前执行的指令是RETI指令或对IE或IP寄存器进行读/写指令
D、一个低级的中断正在处理中

20、异步串行通信中,收发双方必须保持( )。
A、收发时钟相同
B、停止位相同
C、数据格式和波特率相同
D、以上所有内容

主观题

1、二.问答题 1.单片机的机器周期、状态周期、振荡周期、指令周期之间的关系是什么?(4分) 2.写出MCS-51的所有中断源,并说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除?(5分) 3.写出下列指令中源操作数和目的操作数的寻址方式。(4分) MOV @R0,50H ; 源操作数 ①_ ,目的操作数_②___ ANL P2,#01H; 源操作数_③__ ,目的操作数_④___ 4.若已知串行通信方式3的时钟频率为fosc和通信波特率为BR,SMOD=1,采用定时计数器方式2做波特率发生器,如何计算其初值?(4分) 5.假定(SP)=40H,(3EH)=20H,(3FH)=30H,(40H)=60H.执行下列指令:   POP DPH   POP DPL 后,DPTR的内容为 ,SP的内容 。(4分) 6.编写以下数据传送程序(采用C语言或汇编都可以)。(6分) (1)将地址为4000H?的片外数据存储单元内容,送入地址为5000H?的片外数据存储单元中。 (2)将地址为0100H的程序存储器中的内容,送入内部RAM 50H单元中。 7.51单片机串行接口分别有哪几种工作方式?各工作方式的波特率如何确定?(4分)

2、三.编程题 1.出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(P3.2)引脚输入,行驶里程=轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位:m)(汇编语言可存于30H,31H,32H中,C语言可将数据存于变量distance中)(10分) 2. 设单片机的fosc=12MHz,请利用定时计数器T0的定时功能在P1.0脚上输出周期为2ms的方波。(10分) 3. 两个MCS-51单片机系统A和B进行串行数据通信,电路连接如下图所示,双方采用串行通信方式1,8位数据通信格式。设置SMOD=0,A、B两个系统的晶振频率均为11.0592MHz,波特率为2400。待发送16字节数据存放在A机RAM数组fasong[16]中,B机接收到数据后存放在B机RAM数组jieshou[16]中。(12分)

3、四、画图及分析题 1. 在下图所示的8031扩展系统中,用一片EPROM27256作32KB片外程序存储器,用一片静态RAM62256作32KB片外数据存储器。图中27256的片选端通过非门接8031的P2.7;62256的片选端接8031的P2.7。请回答: (1) EPROM27256和RAM62256的地址范围分别是什么?(6分) (2) 请用文字描述8031的PSEN、EA、 RD、 WR信号分别接到27256或62256的哪个引脚。(4分) 2.设晶振为12MHz,要产生周期性的定时/计数,定时/计数器0的初始化程序和中断服务程序如下:(7分) ORG 0000H LJMP MAIN ORG 000BH LJMP INSV ORG 0100H MAIN: MOV TH0,#0DH MOV TL0,#0D0H MOV TMOD,#01H SETB TR0 …… ORG 0200H INSV: MOV TH0,#0DH MOV TL0,#0D0H …… RETI 问:(1)该定时/计数器工作于什么方式?(定时计数?方式几) (2)相应的定时时间或计数值是多少? (3)为什么在中断服务程序中要重置定时/计数器的初值?

中国大学单片机原理及应用_5

单片机的应用范围越来越广泛,因此在中国大学中也成为了重要的课程内容之一。在前面的文章中,我们已经介绍了单片机的基本原理以及一些常见的硬件电路。在本篇文章中,我们将继续介绍单片机的应用。

1. 单片机的应用领域

单片机的应用领域非常广泛,其中包括:

  • 家居自动化:单片机可以控制家居电器的开关、调节温度、湿度、光照等。
  • 工业自动化:单片机可以控制生产线上的设备,实现自动化生产。
  • 交通运输:单片机可以控制交通信号灯、地铁、轻轨等公共交通工具。
  • 医疗保健:单片机可以控制医疗设备,如血糖仪、血压仪、心电图仪等。
  • 安防监控:单片机可以控制安防监控设备,如门禁系统、摄像头、报警器等。

2. 单片机的应用案例

下面我们来介绍一些单片机的应用案例:

2.1 温度计

单片机可以很方便地实现温度计的功能。下面是一个基于AT89S52单片机的温度计。

<?php//AT89S52单片机的引脚定义sbit SDA = P2^0; //定义SDA引脚sbit SCL = P2^1; //定义SCL引脚//DS18B20的指令定义#define Ds18b20WriteByte(num) Ds18b20WriteByte1(num) //写入一个字节#define Ds18b20ReadByte() Ds18b20ReadByte1() //读取一个字节//DS18B20的复位序列void Ds18b20Reset(){   SDA = 0;  SCL = 0;  delay_us(500);  SDA = 1;  delay_us(60);  SCL = 1;  delay_us(10);  SDA = 0;  delay_us(500);  SDA = 1;  delay_us(60);}//DS18B20的写入一个字节void Ds18b20WriteByte1(u8 dat){   u8 i;  for (i=0; i<8; i++) {     SDA = (dat>>i) & 0x01;    delay_us(5);    SCL = 1;    delay_us(5);    SCL = 0;  }}//DS18B20的读取一个字节u8 Ds18b20ReadByte1(){   u8 i,dat = 0;  for (i=0; i<8; i++) {     SCL = 1;    delay_us(5);    dat |= SDA <<i;    SCL = 0;    delay_us(5);  }  return dat;}//DS18B20的发送命令void Ds18b20SendCmd(u8 cmd){   Ds18b20Reset(); //复位  Ds18b20WriteByte(cmd); //发送命令}//读取DS18B20的温度值float Ds18b20ReadTemp(){   u8 TL,TH;  u16 t;  float temp;  Ds18b20SendCmd(0xcc); //跳过ROM操作  Ds18b20SendCmd(0x44); //温度转换  delay_ms(800); //延时800ms  Ds18b20SendCmd(0xcc); //跳过ROM操作  Ds18b20SendCmd(0xbe); //读取缓存区  TL = Ds18b20ReadByte(); //读取温度低字节  TH = Ds18b20ReadByte(); //读取温度高字节  t = TH<<8 | TL; //合并温度值  temp = t * 0.0625; //计算温度值  return temp;}void main(){   float temp;  while (1) {     temp = Ds18b20ReadTemp(); //读取温度值    printf(\Temp = %0.1fC<br />\temp); //输出温度值    delay_ms(1000); //延时1s  }}?>

2.2 电子钟

单片机也可以很方便地实现电子钟的功能。下面是一个基于AT89S52单片机的电子钟。

<?php//AT89S52单片机的引脚定义sbit DISP_LAT = P2^0; //定义显示屏LAT引脚sbit DISP_OE = P2^1; //定义显示屏OE引脚sbit DISP_CLK = P2^2; //定义显示屏CLK引脚sbit DISP_SDI = P2^3; //定义显示屏SDI引脚//数码管显示函数void Display(u8 *p){   u8 i;  for (i=0; i<6; i++) {     DISP_LAT = 0;    DISP_SDI = p[i];    DISP_CLK = 0;    DISP_CLK = 1;  }  DISP_LAT = 1;}//更新时钟函数void UpdateClock(){   u8 buf[6];  buf[0] = Clock.hour / 10;  buf[1] = Clock.hour % 10;  buf[2] = 10;  buf[3] = Clock.min / 10;  buf[4] = Clock.min % 10;  buf[5] = 11;  Display(buf);}//更新秒钟函数void UpdateSecond(){   static u8 count = 0;  count++;  if (count == 10) {     count = 0;    if (++Clock.sec == 60) {       Clock.sec = 0;      if (++Clock.min == 60) {         Clock.min = 0;        if (++Clock.hour == 24) {           Clock.hour = 0;        }      }    }    UpdateClock();  }}//时钟初始化函数void InitClock(){   Clock.hour = 9;  Clock.min = 0;  Clock.sec = 0;  UpdateClock();}void main(){   InitClock(); //时钟初始化  while (1) {     UpdateSecond(); //更新秒钟    delay_ms(100); //延时100ms  }}?>

2.3 智能车

单片机还可以实现智能车的功能。下面是一个基于STC89C52单片机的智能车。

<?php//STC89C52单片机的引脚定义sbit LeftMotorA = P2^0; //定义左电机A引脚sbit LeftMotorB = P2^1; //定义左电机B引脚sbit RightMotorA = P2^2; //定义右电机A引脚sbit RightMotorB = P2^3; //定义右电机B引脚sbit LDR = P1^0; //定义光敏电阻引脚sbit IR = P3^2; //定义红外线传感器引脚//电机控制函数void MotorControl(u8 left_speed, u8 right_speed){   if (left_speed == 0) {     LeftMotorA = 0;    LeftMotorB = 0;  } else if (left_speed < 0) {     LeftMotorA = 0;    LeftMotorB = 1;    left_speed = -left_speed;  } else {     LeftMotorA = 1;    LeftMotorB = 0;  }  if (right_speed == 0) {     RightMotorA = 0;    RightMotorB = 0;  } else if (right_speed < 0) {     RightMotorA = 0;    RightMotorB = 1;    right_speed = -right_speed;  } else {     RightMotorA = 1;    RightMotorB = 0;  }  P0 = left_speed; //设置左电机速度  P2 |= right_speed<<1; //设置右电机速度}//检测光敏电阻函数u8 LDRDetect(){   u16 val;  ADC_CONTR = 0x8f; //设置ADC时钟和通道  delay_us(10); //延时10us  ADC_CONTR |= 0x40; //启动ADC转换  while (ADC_CONTR & 0x40); //等待ADC转换完成  val = ADC_RES; //读取ADC结果  if (val < 400) {     return 0; //光线强  } else {     return 1; //光线弱  }}//检测红外线传感器函数u8 IRDetect(){   if (IR == 0) {     return 1; //检测到障碍物  } else {     return 0; //未检测到障碍物  }}void main(){   while (1) {     if (IRDetect()) {       MotorControl(0,-2); //右转      delay_ms(500); //延时500ms    } else if (LDRDetect()) {       MotorControl(2,2); //前进    } else {       MotorControl(0,2); //左转      delay_ms(500); //延时500ms    }  }}?>

3. 单片机的未来发展

随着技术的发展,单片机将会越来越小、越来越强大、越来越省电。未来,单片机将会在更多的应用领域中发挥重要作用,如智能家居、智能医疗、智能交通等。

结语

本篇文章介绍了单片机的应用领域、应用案例以及未来发展趋势。单片机的应用非常广泛,在中国大学中也是重要的课程内容之一。希望读者可以通过本篇文章了解更多关于单片机的知识。