单片机闭卷模拟试卷与参考答案
本模拟卷按老师说明的考试形式设计:
第一大题:问答题,30分涉及单片机概念、应用范围、组成原理、串口及多机通信原理。
第二大题:简单设计题,20分涉及I/O口使用、按键、LED、延时程序。
第三大题:综合设计题,50分涉及I/O口、中断、定时器等综合应用。建议做题方式:先闭卷独立完成,再对照答案改。尤其是定时器初值、中断入口、初始化程序,这些必须能手写出来。
一、问答题(共30分)
Section titled “一、问答题(共30分)”1. 简述什么是单片机,并说明单片机的主要特点和应用范围。(6分)
Section titled “1. 简述什么是单片机,并说明单片机的主要特点和应用范围。(6分)”要求回答:
- 单片机的定义。
- 至少写出3个特点。
- 至少写出5个应用领域。
2. 简述 MCS-51 单片机的基本组成,并说明各部分的作用。(6分)
Section titled “2. 简述 MCS-51 单片机的基本组成,并说明各部分的作用。(6分)”要求回答:
- CPU。
- 程序存储器。
- 数据存储器。
- I/O口。
- 定时器/计数器。
- 中断系统。
- 串行口。
3. 简述 MCS-51 单片机 P0、P1、P2、P3 四个并行 I/O 口的主要特点。(6分)
Section titled “3. 简述 MCS-51 单片机 P0、P1、P2、P3 四个并行 I/O 口的主要特点。(6分)”要求回答:
- 四个口都是几位口。
- P0口有什么特殊性。
- P2口在外部扩展时有什么作用。
- P3口有哪些第二功能。
4. 简述 MCS-51 串行口通信的基本过程,并说明 SCON、SBUF、RI、TI 的作用。(6分)
Section titled “4. 简述 MCS-51 串行口通信的基本过程,并说明 SCON、SBUF、RI、TI 的作用。(6分)”要求回答:
- 串行通信基本概念。
- 发送过程。
- 接收过程。
- 相关寄存器或标志位作用。
5. 简述 MCS-51 多机通信的基本原理。(6分)
Section titled “5. 简述 MCS-51 多机通信的基本原理。(6分)”要求回答:
- 多机通信中主机和从机的关系。
- 方式2或方式3的第9位数据有什么作用。
- 地址帧和数据帧如何区分。
- SM2 位在多机通信中的作用。
二、简单设计题(共20分)
Section titled “二、简单设计题(共20分)”1. LED流水灯设计(10分)
Section titled “1. LED流水灯设计(10分)”设 8 个 LED 接在 P1 口,低电平点亮。要求编写程序,使 LED 从 P1.0 到 P1.7 依次点亮,循环往复。延时子程序可自行设计。
要求:
- 写出主程序。
- 写出延时子程序。
- 简要说明低电平点亮时送到 P1 口的数据特点。
2. 按键控制 LED 设计(10分)
Section titled “2. 按键控制 LED 设计(10分)”设按键 K 接在 P3.2,低电平表示按下;LED 接在 P1.0,低电平点亮。要求实现:
按键按下时 LED 亮;按键松开时 LED 灭。要求:
- 写出程序。
- 说明为什么判断 P3.2 是否为 0。
- 可加入简单消抖。
三、综合设计题(共50分)
Section titled “三、综合设计题(共50分)”1. 定时器控制 LED 闪烁系统设计(25分)
Section titled “1. 定时器控制 LED 闪烁系统设计(25分)”设晶振频率为 12MHz,P1.0 接 LED,低电平点亮。要求使用定时器 T0 工作方式1产生 50ms 定时中断,累计 20 次形成约 1s,使 LED 每隔 1s 翻转一次。
要求:
- 计算定时器 T0 的初值。(8分)
- 写出中断入口安排。(4分)
- 写出定时器初始化程序。(6分)
- 写出 T0 中断服务程序。(7分)
2. 外部中断与定时器综合控制系统设计(25分)
Section titled “2. 外部中断与定时器综合控制系统设计(25分)”设 P1 口接 8 个 LED,低电平点亮;INT0 接按键,低电平触发。系统要求:
正常状态:P1口8个LED循环流水显示。按下 INT0 按键后:系统进入报警状态,全部LED以约1s周期闪烁。再次按下 INT0 按键后:退出报警状态,恢复流水灯显示。设晶振频率为 12MHz,使用 T0 方式1定时 50ms,在中断中累计形成 1s。
要求:
- 说明系统总体设计思路。(5分)
- 写出 T0 初值。(5分)
- 写出外部中断 INT0 和定时器 T0 的初始化程序。(7分)
- 写出主程序和中断服务程序的关键代码。(8分)
一、问答题参考答案
Section titled “一、问答题参考答案”1. 单片机的概念、特点和应用范围
Section titled “1. 单片机的概念、特点和应用范围”单片机是把 CPU、程序存储器、数据存储器、I/O 接口、定时器/计数器、中断系统、串行通信接口等集成在一块芯片上的微型计算机。它主要面向控制应用,也常称为微控制器 MCU。
主要特点:
- 集成度高,体积小。
- 成本低,功耗低。
- 可靠性较高。
- 控制能力强,适合嵌入到设备内部。
- 可通过 I/O 口、中断、定时器、串口等控制外部设备。
应用范围:
- 工业控制,如生产线控制、自动检测。
- 家用电器,如电饭煲、空调、洗衣机。
- 智能仪器仪表,如电子秤、万用表。
- 汽车电子,如车窗控制、倒车雷达。
- 通信设备,如串口模块、蓝牙模块控制。
- 医疗设备,如血压计、血糖仪。
- 安防系统,如门禁、报警器。
- 机器人和智能小车控制。
2. MCS-51 单片机基本组成
Section titled “2. MCS-51 单片机基本组成”MCS-51 单片机主要由 CPU、程序存储器、数据存储器、并行 I/O 口、定时器/计数器、中断系统、串行口、特殊功能寄存器、时钟和复位电路等组成。
各部分作用:
- CPU:执行指令,完成算术逻辑运算,并控制单片机各功能部件工作。
- 程序存储器:存放用户程序和常数,复位后 CPU 从程序存储器 0000H 地址开始取指执行。
- 数据存储器:存放程序运行中的变量、中间结果、堆栈和标志数据。
- I/O口:用于单片机与外部设备之间进行数字量输入和输出。
- 定时器/计数器:可对内部机器周期计数实现定时,也可对外部脉冲计数。
- 中断系统:使 CPU 能及时响应外部或内部事件,提高实时性。
- 串行口:用于单片机与计算机、其他单片机或通信模块进行串行数据传输。
- 特殊功能寄存器:用于控制 I/O、中断、定时器、串口等片内功能部件。
3. P0、P1、P2、P3 四个 I/O 口特点
Section titled “3. P0、P1、P2、P3 四个 I/O 口特点”MCS-51 有 P0、P1、P2、P3 四个 8 位并行 I/O 口,共 32 根 I/O 线。
P0 口:
- 可作普通 I/O 口使用。
- 外部扩展存储器时,作为低 8 位地址/数据复用总线。
- P0 口为漏极开路结构,作普通 I/O 输出时通常需要外接上拉电阻。
P1 口:
- 通常作为普通准双向 I/O 口使用。
- 常用于连接 LED、按键、数码管等简单外设。
P2 口:
- 可作普通 I/O 口使用。
- 外部扩展存储器时,常作为高 8 位地址总线。
P3 口:
- 可作普通 I/O 口使用。
- 还具有第二功能,包括串口接收 RXD、串口发送 TXD、外部中断 INT0/INT1、定时器外部输入 T0/T1、外部数据存储器写 WR 和读 RD 等。
4. 串行口通信过程及寄存器作用
Section titled “4. 串行口通信过程及寄存器作用”串行通信是指数据按位依次传输。MCS-51 串行口通过 TXD 引脚发送数据,通过 RXD 引脚接收数据。
发送过程:
- 设置串口工作方式和波特率。
- 将要发送的数据写入 SBUF。
- 串口硬件自动从 TXD 引脚逐位发送。
- 发送完成后 TI 置 1。
- 软件检测 TI 后,将 TI 清 0,以便下一次发送。
接收过程:
- 设置串口工作方式,并允许接收 REN=1。
- 外部数据从 RXD 引脚逐位进入串口。
- 接收完成后,数据进入 SBUF,RI 置 1。
- 软件检测 RI 后,从 SBUF 读出数据。
- 软件将 RI 清 0,准备下一次接收。
相关寄存器和标志:
- SCON:串行口控制寄存器,用于设置工作方式、允许接收和保存 RI/TI 标志。
- SBUF:串行口数据缓冲寄存器,发送时写 SBUF,接收时读 SBUF。
- TI:发送中断标志,发送完成后由硬件置 1。
- RI:接收中断标志,接收完成后由硬件置 1。
5. 多机通信基本原理
Section titled “5. 多机通信基本原理”MCS-51 串行口方式2和方式3为 9 位异步通信方式,可用于多机通信。多机通信中通常有一个主机和多个从机,主机负责发送地址帧和数据帧,从机根据地址判断是否接收后续数据。
基本过程:
- 主机先发送地址帧。
- 地址帧的第9位通常置 1,用来表示这是一帧地址。
- 所有从机接收地址帧,并与自己的地址比较。
- 地址匹配的从机允许接收后续数据;地址不匹配的从机继续等待新的地址帧。
- 主机再发送数据帧,数据帧第9位通常置 0。
SM2 的作用:
- 当 SM2=1 时,串口在多机通信中通常只对第9位为 1 的地址帧产生接收中断。
- 地址匹配的从机可清除 SM2,使其继续接收第9位为 0 的数据帧。
- 地址不匹配的从机保持 SM2=1,从而忽略后续数据帧。
二、简单设计题参考答案
Section titled “二、简单设计题参考答案”1. LED流水灯设计
Section titled “1. LED流水灯设计”低电平点亮时,某一位输出 0 表示该位 LED 亮,其余位输出 1 表示灭。例如:
1111 1110B = FEH,P1.0亮1111 1101B = FDH,P1.1亮参考程序:
ORG 0000H LJMP MAIN
MAIN: MOV A,#0FEH
LOOP: MOV P1,A ACALL DELAY RL A SJMP LOOP
DELAY: MOV R7,#200D1: MOV R6,#250D2: DJNZ R6,D2 DJNZ R7,D1 RET
END说明:初值 0FEH 使 P1.0 输出低电平。每次 RL A 后,低电平位左移,实现流水灯效果。
2. 按键控制 LED 设计
Section titled “2. 按键控制 LED 设计”因为按键低电平有效,所以按下时 P3.2=0。LED 低电平点亮,所以按下时应使 P1.0=0。
参考程序:
ORG 0000H LJMP MAIN
MAIN: SETB P1.0 ; LED先灭 SETB P3.2 ; P3.2置1,作为输入
KEY_SCAN: JB P3.2,LED_OFF ; P3.2=1,未按下
ACALL DELAY ; 简单消抖 JB P3.2,LED_OFF CLR P1.0 ; 按下,LED亮 SJMP KEY_SCAN
LED_OFF: SETB P1.0 ; 松开,LED灭 SJMP KEY_SCAN
DELAY: MOV R7,#100D1: MOV R6,#200D2: DJNZ R6,D2 DJNZ R7,D1 RET
END三、综合设计题参考答案
Section titled “三、综合设计题参考答案”1. 定时器控制 LED 闪烁系统设计
Section titled “1. 定时器控制 LED 闪烁系统设计”1. 初值计算
Section titled “1. 初值计算”晶振频率:
fosc = 12MHzMCS-51 一个机器周期为 12 个时钟周期:
机器周期 = 12 / 12MHz = 1μs定时 50ms 需要计数:
N = 50ms / 1μs = 50000T0 方式1为 16 位定时器,最大计数为 65536:
初值 = 65536 - 50000 = 15536 = 3CB0H所以:
TH0 = 3CHTL0 = B0H累计 20 次:
50ms × 20 = 1000ms = 1s2. 中断入口安排
Section titled “2. 中断入口安排”ORG 0000H LJMP MAIN
ORG 000BH LJMP T0_ISRT0 中断入口地址是 000BH。
3. 初始化程序
Section titled “3. 初始化程序”MAIN: MOV TMOD,#01H ; T0方式1,16位定时 MOV TH0,#3CH MOV TL0,#0B0H MOV R7,#20 ; 20次50ms为1s SETB P1.0 ; LED先灭 SETB ET0 ; 允许T0中断 SETB EA ; 开总中断 SETB TR0 ; 启动T0
HERE: SJMP HERE4. T0 中断服务程序
Section titled “4. T0 中断服务程序”T0_ISR: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,T0_EXIT
MOV R7,#20 CPL P1.0 ; 每1s翻转LED
T0_EXIT: RETI完整程序:
ORG 0000H LJMP MAIN
ORG 000BH LJMP T0_ISR
MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R7,#20 SETB P1.0 SETB ET0 SETB EA SETB TR0
HERE: SJMP HERE
T0_ISR: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,T0_EXIT MOV R7,#20 CPL P1.0
T0_EXIT: RETI
END2. 外部中断与定时器综合控制系统设计
Section titled “2. 外部中断与定时器综合控制系统设计”1. 总体思路
Section titled “1. 总体思路”系统使用 P1 口控制 8 个 LED。正常状态下,主程序循环实现流水灯显示;外部中断 INT0 接按键,每次按下使报警标志位取反;定时器 T0 每 50ms 中断一次,累计 20 次形成约 1s。当报警标志有效时,定时器中断中使 P1 口全部 LED 闪烁;当报警标志无效时,主程序恢复流水灯。
可设:
20H.0 = 报警状态标志20H.1 = 1s到达标志或闪烁状态标志2. T0 初值
Section titled “2. T0 初值”与上一题相同:
TH0 = 3CHTL0 = B0H3. 初始化程序
Section titled “3. 初始化程序”ORG 0000H LJMP MAIN
ORG 0003H LJMP INT0_ISR
ORG 000BH LJMP T0_ISR
MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R7,#20
CLR 20H.0 ; 报警标志=0 SETB P1.0
SETB IT0 ; INT0边沿触发 SETB EX0 ; 允许外部中断0 SETB ET0 ; 允许T0中断 SETB EA ; 开总中断 SETB TR0 ; 启动T0
MOV A,#0FEH4. 主程序和中断服务程序
Section titled “4. 主程序和中断服务程序”主程序:
MAIN_LOOP: JB 20H.0,MAIN_LOOP ; 报警状态下,LED由T0中断控制
MOV P1,A ; 正常流水灯 ACALL DELAY RL A SJMP MAIN_LOOP外部中断 INT0:每按一次切换报警状态。
INT0_ISR: CPL 20H.0 ; 报警标志取反 RETIT0 中断服务程序:
T0_ISR: MOV TH0,#3CH MOV TL0,#0B0H
DJNZ R7,T0_EXIT MOV R7,#20
JNB 20H.0,T0_EXIT ; 非报警状态,不闪烁 CPL 20H.1 JB 20H.1,ALL_ON
ALL_OFF: MOV P1,#0FFH ; 全灭 SJMP T0_EXIT
ALL_ON: MOV P1,#00H ; 全亮,低电平点亮
T0_EXIT: RETI延时子程序:
DELAY: MOV R6,#200D1: MOV R5,#250D2: DJNZ R5,D2 DJNZ R6,D1 RET完整程序骨架:
ORG 0000H LJMP MAIN
ORG 0003H LJMP INT0_ISR
ORG 000BH LJMP T0_ISR
MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R7,#20 CLR 20H.0 CLR 20H.1
SETB IT0 SETB EX0 SETB ET0 SETB EA SETB TR0
MOV A,#0FEH
MAIN_LOOP: JB 20H.0,MAIN_LOOP MOV P1,A ACALL DELAY RL A SJMP MAIN_LOOP
INT0_ISR: CPL 20H.0 RETI
T0_ISR: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,T0_EXIT MOV R7,#20 JNB 20H.0,T0_EXIT CPL 20H.1 JB 20H.1,ALL_ON MOV P1,#0FFH SJMP T0_EXIT
ALL_ON: MOV P1,#00H
T0_EXIT: RETI
DELAY: MOV R6,#200D1: MOV R5,#250D2: DJNZ R5,D2 DJNZ R6,D1 RET
END考前重点提醒
Section titled “考前重点提醒”这份卷子里最值得反复练的是:
- 定时器方式1初值计算。
ORG 0003H、ORG 000BH、RETI这些中断模板。TMOD、TH0、TL0、IE、TCON的常用设置。- 低电平点亮 LED 时,
0表示亮,1表示灭。 - 串口多机通信:方式2/3、第9位、地址帧、数据帧、SM2。
缩写如果记不住,先看同目录下的 8、寄存器与标志位缩写全称速记.md,里面把 IE、IP、TCON、TMOD、SCON、RI、TI、TF0、TR0、EA、ET0、EX0 等缩写都按英文全称和中文含义整理了。
如果这份能闭卷写到 75% 以上,这次考试的大方向基本就稳了。