版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c51单片机期末考试题及答案一、单项选择题(每小题2分,共20分)1.8051单片机CPU的主要组成部分是()A.运算器、控制器、寄存器组B.运算器、控制器、存储器C.运算器、定时器、I/O接口D.控制器、寄存器组、中断系统答案:A2.以下特殊功能寄存器中,用于存储当前工作寄存器组选择位的是()A.PSWB.SPC.DPTRD.PC答案:A(PSW中的RS1、RS0位用于选择工作寄存器组)3.执行指令“MOVA,30H”后,A中的内容是()A.30H(立即数)B.内部RAM30H单元的值C.外部RAM30H单元的值D.程序存储器30H单元的值答案:A(表示立即寻址)4.8051单片机的中断优先级寄存器IP中,若PS=1、PT1=0、PX1=1、PT0=0、PX0=0,则优先级最高的中断源是()A.外部中断0(INT0)B.定时器0(T0)C.外部中断1(INT1)D.串口中断(RI/TI)答案:C(IP中某位为1表示对应中断优先级高,PX1=1(外部中断1)优先级高于PS=1(串口中断)吗?不,8051中断优先级默认从高到低为:INT0→T0→INT1→T1→串口。IP可设置为高优先级或低优先级,若多个高优先级,按默认顺序。本题中PS=1(串口高优先级)、PX1=1(INT1高优先级),则INT1优先级高于串口,因为默认顺序中INT1在串口前。因此最高是INT1)5.若8051单片机晶振频率为11.0592MHz,则其机器周期为()A.1μsB.1.085μsC.2μsD.12μs答案:B(机器周期=12/晶振频率=12/(11.0592×10^6)≈1.085μs)6.定时器/计数器T0工作在模式1时,其最大定时时间(晶振12MHz)为()A.65536μsB.65.536msC.131072μsD.131.072ms答案:B(模式1为16位定时器,最大计数值65536,机器周期1μs,定时时间=65536×1μs=65.536ms)7.以下指令中,不能改变程序计数器PC值的是()A.LCALLaddr16B.SJMPrelC.MOVCA,@A+DPTRD.RET答案:C(MOVC是查表指令,不改变PC;LCALL、SJMP、RET均改变PC)8.串口工作在方式1时,其数据帧格式为()A.1位起始位、8位数据位、1位停止位B.1位起始位、8位数据位、1位奇偶校验位、1位停止位C.1位起始位、9位数据位、1位停止位D.1位起始位、7位数据位、1位奇偶校验位、1位停止位答案:A(方式1是10位数据:1起始+8数据+1停止)9.P0口作为通用I/O口输出时,需要外接上拉电阻的原因是()A.P0口内部无上拉电阻,高电平输出时无法驱动负载B.P0口内部上拉电阻过小,需外部增强驱动能力C.P0口作为地址/数据总线时需上拉,作为I/O时不需要D.P0口是漏极开路输出,必须外接上拉才能输出高电平答案:D(P0口输出级为漏极开路,无内部上拉,输出高电平时需外接上拉电阻)10.执行“ORLP1,0FH”后,P1口的高4位状态是()A.全部置1B.保持不变C.全部清0D.与原高4位取或答案:B(ORL指令对P1口低4位(0FH)置1,高4位与0(高位为0)取或,保持不变)二、填空题(每空1分,共20分)1.8051单片机的程序计数器PC是(16)位寄存器,其寻址范围为(64KB)。2.内部RAM中,可位寻址的区域是(20H~2FH),共(128)个位地址。3.中断响应过程中,CPU自动保护的寄存器是(PC),用户需要手动保护的寄存器是(累加器A、PSW等现场)。4.定时器/计数器的计数模式是对(外部引脚T0或T1的脉冲)进行计数,定时模式是对(机器周期)进行计数。5.若晶振频率为12MHz,要实现1ms定时,定时器T0工作在模式1时,初值计算为:机器周期(1μs),需要计数(1000)次,初值=(65536-1000=64536),转换为十六进制为(FC18H)。6.串口控制寄存器SCON中,REN位的作用是(允许串口接收数据),TI位的作用是(发送完成标志位)。7.执行“MOVXA,@DPTR”指令时,单片机的(P0)口输出低8位地址,(P2)口输出高8位地址。8.若要将P2口的第3位(P2.3)置1,其余位不变,应使用指令(ORLP2,08H);若要将P3.5清0,其余位不变,应使用指令(ANLP3,0DFH)。9.8051单片机复位后,SP的初始值为(07H),P0~P3口的初始值为(FFH)。三、简答题(每小题6分,共30分)1.简述8051单片机片内数据存储器(RAM)的结构划分及各部分功能。答案:8051片内RAM共256字节,分为低128字节(00H~7FH)和高128字节(80H~FFH,仅特殊功能寄存器SFR使用)。低128字节又分为:工作寄存器区(00H~1FH):4组8个寄存器(R0~R7),通过PSW的RS1、RS0选择;位寻址区(20H~2FH):16字节,128个位地址(00H~7FH),支持位操作;用户RAM区(30H~7FH):用于存储数据、堆栈等。2.比较定时器模式1与模式2的区别。答案:模式1是16位定时器/计数器(THx和TLx组成16位寄存器),计数范围0~65535,溢出后需手动重装初值;模式2是8位自动重装模式(TLx作为计数器,THx保存初值),计数范围0~255,溢出时自动将THx值重装到TLx,适合需要重复定时/计数的场景(如波特率发生器)。3.简述外部中断的两种触发方式(电平触发和边沿触发)的特点及适用场景。答案:电平触发:低电平有效,中断请求信号为低电平时触发。需确保在CPU响应前撤销低电平,否则会重复触发,适用于外部信号持续时间较长的场景;边沿触发:下降沿触发(INT0/INT1引脚从高到低跳变时触发),仅需一个负跳变信号,抗干扰能力强,适用于外部信号为短脉冲的场景。4.说明LED动态扫描显示的原理及关键参数设计。答案:动态扫描利用人眼的视觉暂留效应,逐位点亮LED,每次仅点亮一个数码管,通过快速切换(频率>50Hz)使肉眼感觉所有数码管同时点亮。关键参数:扫描频率:需大于50Hz(周期<20ms),避免闪烁;消隐时间:切换数码管时关闭段选,避免残影;驱动能力:需确保每个数码管在点亮时获得足够电流。5.单片机最小系统由哪些部分组成?各部分的作用是什么?答案:最小系统包括:单片机芯片:核心控制单元;时钟电路:提供时钟信号(晶振+电容),产生机器周期;复位电路:初始化单片机(上电复位或手动复位),使PC=0000H,寄存器恢复初始值;电源电路:提供稳定电源(如+5V)。四、编程题(共20分)1.(8分)使用8051单片机,晶振11.0592MHz,要求通过P1.0引脚输出频率为1kHz的方波(周期1ms,高、低电平各0.5ms)。请用定时器T0模式2实现,编写初始化函数和中断服务程序。答案:方波周期1ms,半周期0.5ms=500μs。机器周期=12/(11.0592×10^6)=1.085μs(近似取1μs计算误差较大,实际应精确计算)。模式2为8位自动重装,定时时间=(256-初值)×机器周期=500μs。设机器周期≈1.085μs,则(256-初值)×1.085=500→256-初值≈460.8→初值≈256-461=-205(溢出,说明模式2无法达到500μs?因模式2最大定时时间=256×1.085≈277.7μs<500μs,因此需改用模式1。可能题目假设晶振12MHz,机器周期1μs,则500μs需计数500次,模式1初值=65536-500=65036=FE0CH。但题目要求模式2,可能调整参数。若题目允许模式1,正确代码如下:(注:可能题目存在矛盾,模式2无法实现500μs定时(11.0592MHz时),此处假设晶振12MHz,机器周期1μs,模式2最大定时256μs,故改用模式1。)正确代码(模式1,12MHz晶振):```cinclude<reg51.h>sbitLED=P1^0;voidTimer0_Init(){TMOD=0x01;//T0模式1(16位定时器)TH0=0xFE;//初值=65536-500=65036→FE0CHTL0=0x0C;ET0=1;//使能T0中断EA=1;//开总中断TR0=1;//启动T0}voidTimer0_ISR()interrupt1{TH0=0xFE;//重装初值TL0=0x0C;LED=~LED;//取反输出方波}voidmain(){Timer0_Init();while(1);//等待中断}```(注:若严格按11.0592MHz,需重新计算初值,但通常考试中简化为12MHz。)2.(6分)设计一个外部中断0(INT0)的应用程序,要求:当P3.2引脚接收到下降沿信号时,控制P2口连接的8个LED(P2.0~P2.7)循环左移(每次移动1位,间隔500ms)。使用边沿触发方式,编写初始化函数和中断服务程序(延时函数可调用“delay_500ms()”)。答案:```cinclude<reg51.h>sbitINT0_PIN=P3^2;unsignedcharled_state=0x01;//初始LED状态(P2.0亮)voidInt0_Init(){IT0=1;//边沿触发(下降沿)EX0=1;//使能INT0中断EA=1;//开总中断}voiddelay_500ms(){//假设已实现//具体延时代码(如循环计数)}voidInt0_ISR()interrupt0{P2=led_state;//输出当前LED状态led_state<<=1;//左移1位if(led_state==0x00)//溢出后回到0x01led_state=0x01;delay_500ms();//间隔500ms}voidmain(){P2=0xFF;//初始LED全灭Int0_Init();while(1);}```3.(6分)编写串口发送子程序,将内部RAM中50H~5FH单元存储的16字节字符串通过串口发送(串口工作在方式1,波特率9600bps,晶振11.0592MHz)。要求写出串口初始化函数和发送子程序。答案:波特率=9600,方式1波特率=(2^SMOD/32)×(T1溢出率)。晶振11.0592MHz,SMOD=0时,T1溢出率=9600×32=307200Hz。T1工作在模式2(自动重装),溢出率=晶振/(12×(256-初值))→307200=11.0592×10^6/(12×(256-初值))→256-初值=11.0592×10^6/(12×307200)=3→初值=253=FDH。初始化函数:```cinclude<reg51.h>voidUart_Init(){SCON=0x50;//方式1(10位),允许接收(REN=1)TMOD|=0x20;//T1模式2TH1=0xFD;//波特率9600初值TL1=0xFD;TR1=1;//启动T1EA=1;//开总中断(若需接收中断)//本题仅发送,可不开中断}```发送子程序(发送16字节):```cvoidUart_SendString(){unsignedchari;unsignedcharp=0x50;//指向50H单元for(i=0;i<16;i++){SBUF=p;//发送当前字节while(!TI);//等待发送完成TI=0;//清除标志p++;//指向下一单元}}```五、综合应用题(共10分)设计一个基于8051单片机的温度监测系统,要求:使用DS18B20数字温度传感器采集温度(接P3.3);通过LCD1602显示温度值(P0口接数据总线,P2.5接RS,P2.6接RW,P2.7接E);当温度超过30℃时,P1.1引脚驱动的蜂鸣器报警(低电平有效)。要求:(1)画出硬件连接示意图(文字描述);(2)写出软件主流程;(3)编写关键函数(至少包括DS18B20初始化、温度读取、LCD显示、报警判断)。答案:(1)硬件连接描述:DS18B20:DQ引脚接P3.3,VCC接+5V,GND接地(寄生电源时可不接VCC,此处假设外接电源);LCD1602:数据总线D0~D7接P0.0~P0.7;RS(寄存器选择)接P2.5;RW(读写控制)接P2.6(本系统仅写,可接地);E(使能)接P2.7;VCC接+5V,V0接电位器调节对比度,GND接地;蜂鸣器:一端接+5V,另一端通过三极管接P1.1(P1.1低电平时三极管导通,蜂鸣器发声)。(2)软件主流程:初始化:单片机、LCD1602、DS18B20;循环:1.读取DS18B20温度值;2.将温度值转换为字符串(如“25.6℃”);3.LCD显示温度字符串;4.判断温度是否>30℃,若是则P1.1=0(报警),否则P1.1=1(停止);5.延时500ms(避免频繁读取)。(3)关键函数示例:```cinclude<reg51.h>include<intrins.h>defineucharunsignedchardefineuintunsignedintsbitDQ=P3^3;//DS18B20数据口sbitRS=P2^5;//LCDRSsbitE=P2^7;//LCDEsbitBuzzer=P1^1;//蜂鸣器//DS18B20初始化函数(返回0成功,1失败)ucharDS18B20_Init(){ucharstatus;DQ=1;_nop_();DQ=0;//拉低总线delay_us(750);//延时>480μsDQ=1;//释放总线delay_us(15);//等待响应status=DQ;//读取DQ状态(0表示存在)delay_us(485);//完成初始化时序returnstatus;}//DS18B20写单字节voidDS18B20_WriteByte(uchardat){uchari;for(i=0;i<8;i++){DQ=0;//拉低总线_nop_();//延时1μsDQ=dat&0x01;//写最低位delay_us(60);//保持60μsDQ=1;//释放总线dat>>=1;//右移}}//DS18B20读单字节ucharDS18B20_ReadByte(){uchari,dat=0;for(i=0;i<8;i++){DQ=0;//拉低总线_nop_();DQ=1;//释放总线_nop_();//等待数据有效dat>>=1;if(DQ)dat|=0x80;delay_us(60);//完成读时序}returndat;}//读取温度值(返回整数部分×10,如25.6℃返回256)intRead_Temperature(){ucharLSB,MSB;inttemp;DS18B20_Init();DS18B20_WriteByte(0xCC);//跳过ROMDS18B20_WriteByte(0x44);//启动转换delay_ms(750);//等待转换完成DS18B20_Init();DS18B20_WriteByte(0xCC);//跳过ROMDS18B20_WriteByte(0xBE);//读取温度寄存器LSB=DS18B20_ReadByte();//低8位MSB=DS18B20_ReadByte();//高8位temp=(MSB<<8)|LSB;//合并为16位returntemp/16;//转换为实际温度×10(DS18B20分辨率0.0625℃,故temp×0.0625=实际温度)}//LCD写命令voidLCD_WriteCmd(ucharcmd){RS=0;//写命令P0=cmd;//数据总线E=1;//高脉冲delay_us(1);E=0;delay_ms(2);//等待执行}//LCD写数据voidLCD_WriteDat(uchardat){RS=1;//写数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年售后指导合同(1篇)
- 欧盟数字市场法守门人制度
- 校服检查验收制度
- 来料检验制度
- 山东省青岛经济开发区致远中学2026届高考化学试题命题比赛模拟试卷(2)含解析
- 黑龙江省哈九中2025-2026学年高三下学期模拟考试(1)化学试题试卷含解析
- 河北省唐山市遵化市2025-2026学年下学期高三生物试题第七次月考考试试卷含解析
- 山东省恒台一中2025-2026学年高三下第七次周练生物试题含解析
- 科大附中2025-2026学年高三下学期生物试题3月份考试试卷含解析
- 2023-2024学年山东省济宁市微山县一年级(下)期末语文试卷
- 快递保证金合同协议
- 生产管理部经理竞聘
- 新媒体从业者自传范文
- 出租车代班合同(2篇)
- 检测结果异常情况记录表
- 2024年甘肃高考历史试卷(真题+答案)
- 附件5:山东省职称申报系统(山东省专业技术人员管理服务平台)系统填报说明
- (备份)JTS-133-3-2010关于发布《航道工程地质勘察规范》(JTS 133-3-2010)的公告-PDF解密
- 物业小区安全生产隐患排查治理表
- 人教版四年级上册竖式计算200题及答案
- 机房整改方案
评论
0/150
提交评论