1、习题11.1单项选择题(1) MCS-51系列单片机地CPU主要由 组成。A.运算符,控制器B.加法器,寄存器C.运算器,加法器D.运算器,编码器(2)单片机中地程序计数器PC用来 oA.存放指令B.存放正在执行地指令地址C.存放下一条指令地地址D.存放上一条指令地址单片机8031地一 EA引脚 oA.需要接地B.需要接+5V电源C.可悬空D.以上三种视需要而定(4)外部扩展存储器时,分时复用做数据线与低8位地址线地是 oA.P0 口 B.P1 口 C.P2 口 D.P3 口(5) PSW中地RS1与RS0用来 oA.选择工具寄存器B.指示复位C.选择定时器D.选择工作方式(6)单片机上电复位
2、后,PC地内容为 oA.0000HB.003HC.000BHD.0800H(7) Intel 8051 单片机地 CPU 是。A.16B.4 C. 8D.准 16 位(8)程序是以 形式存放在程序存储器中地。A. C语言源程序B.汇编程序C.二进制编码D.BCD码(9) 8050单片机地程序计数器PC为16位计数器,其寻址范围是 oA. 8 KB B.16KB C.32KB D.64KB(10)单片机地ALE引脚是以晶振荡频率地 固定频率输出正脉冲,因此它可作为外部时钟或外部定时脉冲使用。 A.l/2B.l/4C.l/6D.1/121.2 填空题 (1)单片机系统是由 与 组成地。(2)除了单
3、片机与电源外,单片机最小系统包括 电路与 电路。(3)在进行单片机应用系统设计时,除了电源与地线引脚外,引脚信号需要连接相 应电路。(4) MCS-51系列单片机地存储器主要有4个物理存储空间,即,o(5) MCS-51系歹ij单片机地XTALL与XYAL2引脚是 弓|脚。(6) MCS-51系列单片机地应用程序一般存在 中。(7)片内RAM低128单元,按其用途划分为,与 3个区域。(8)当振荡脉冲频率为12 MHz时,一个机器周期为;当振荡脉冲频率为6 MHz时,一个机器周期 为 o(9) MCS-51系列单片机地复位电路有两种,即 与。(10)输入单片机地复位信号需延续 个机器周期以上地
4、电平时即为有效,用于完成单片机地复位初始化操作。1.3回答题(1)什么是单片机?它由哪几局部组成?什么是单片机应用系统?(2) P3 口第二功能是什么?bufi=SBUF; 从串口接收数据存入数组buf)5.10串口发送程序,发送89S51#include #define uchar unsigned char#define uint unsigned intuchar idata trdata=,8,9,S,5V l,0x0d,0x0a,0x00;main()(uchar i;uintj;SCON= 0x40;规定串口工作在方式1,发送数据PCON=0;/SMOD=0TMOD=0x20;定时
5、器1工作在方式2TH1= 0xe6;/12MHz 1200 波特率TL1= 0xe6;TR1= 1;启动定时器1while(l)不断发送数据( i=0; while(trdatai!=OxOO) /00 结束(SBUF=trdatai; 将数据送到串口发送器SBUF while(TI=0);TI=0;i+;)for (j=0;j50000;j+); 延时 8 u S 义50000 =0.4 秒习题6上机考试题目:第一大类:电子秒表,时钟1 . 绘制出型号为STC89c52RC单片机外接4个按钮与4个数码管接线原理图。编程实现以下功能:按下 按钮“1”,电子秒表启动,按下按钮“2,电子秒表暂停,
6、按下按钮“3”,再次启动电子秒表,按下按钮“4”, 电子秒表停止计数并清零。数码管显示格式是OO.Oo要求采用定时器中断方式实现计时。2 . 绘制出型号为STC89C52RC单片机外接3个按钮与4个数码管接线原理图。编程实现以下功能:按下 按钮“1”,电子秒表启动并清零,按下按钮“2”,电子秒表暂停,按下按钮“3”,再次启动电子秒表。数 码管显示格式是OO.Oo要求采用定时器中断方式实现计时。3 . 绘制出型号为STC89C52RC单片机外接4个数码管接线原理图。编程实现以下功能:上电或复位后电 子秒表清零并启动,用外部中断0暂停电子秒表,外部中断I再次启动电子秒表。数码管显示格式是 00.0
7、0要求采用定时器中断方式实现计时。4 . 绘制出型号为STC89C52RC单片机外接16个按钮与4个数码管接线原理图。编程实现以下功能:上电 或复位后后电子计数器清零并启动,由T0产生脉冲地个数使计数器加1,外部中断0停止计数器工作。 数码管显示格式是0000。计数脉冲检测使用查询方式。5 . 绘制出型号为STC89C52RC单片机外接16个按钮与3个数码管接线原理图。编程实现以下功能:上电 后计数器初始数值由按键设置,按下“A”按键启动,TO产生脉冲地个数将计数器减1,外部中断1停止 计数器工作。数码管显示格式是000o计数脉冲检测使用查询方式。6 . 绘制出型号为STC89C52RC单片机
8、外接16个按钮与4个数码管接线原理图。编程实现以下功能:上电 或复位后后电子计数器清零并启动,由T0产生脉冲地个数使计数器加1,外部中断0停止计数器工作。 数码管显示格式是0000。计数脉冲检测使用中断方式。7 . 绘制出型号为STC89C52RC单片机外接16个按钮与3个数码管接线原理图。编程实现以下功能:上电 后计数器初始数值由按键设置,按下按键启动,T0产生脉冲地个数将计数器减1,外部中断1停止 计数器工作。数码管显示格式是000o计数脉冲检测使用中断方式。8 .绘制出型号为STC89C52RC单片机外接16个按钮与8个数码管接线原理图。编程实现以下功能:计时24小时地电子钟,可以用按键
9、设置时,分。数码管显示格式是00.00-00。9 . 绘制出型号为STC89C52RC单片机外接16个按钮与8个数码管接线原理图。编程实现以下功能:计时 24小时地万年历,应在程序中事先设定年,月,日,时,分。时钟与年,月,日交替显示。数码管显示格式是 00-00-00 o第二大类:时钟+串行通信10 .绘制出型号为STC89C52RC单片机甲机外接2个按钮与3个数码管,发送数据,乙机3个数码管,接收数 据地接线原理图。编程实现以下功能:上电后电子秒表清零并启动,按下按钮1,电子秒表暂停,按下按钮 2,再次启动电子秒表,数码管显示格式是00.0o该结果同时送到乙机显示。要求采用定时器中断方式
10、实现计时。11 .绘制出型号为STC89C52RC单片机甲机外接3个数码管,发送数据,乙机3个数码管,接收数据地接线原 理图。编程实现以下功能:上电后电子秒表清零并启动,用外部中断0暂停电子秒表,外部中断1再次启 动电子秒表。该结果同时送到乙机显示。数码管显示格式是00.0o要求采用定时器中断方式实现计 时。计数脉冲检测使用中断方式。12 .绘制出型号为STC89c52RC单片机甲机外接4个数码管,发送数据,乙机4个数码管,接收数据地接线原 理图。编程实现以下功能:能统计T0产生脉冲地个数,上电后电子计数器清零并启动,外部中断0停止 计数器工作。该结果同时送到乙机显示。数码管显示格式是0000
11、。计数脉冲检测使用中断方式。13 .绘制出型号为STC89C52RC单片机甲机外接3个数码管,发送数据,乙机3个数码管,接收数据地接线原 理图。编程实现以下功能:上电后电子秒表清零并启动,用外部中断0暂停电子秒表,外部中断1再次启 动电子秒表。该结果同时送到乙机显示。数码管显示格式是00.0c要求采用定时器中断方式实现计 时。计数脉冲检测使用查询方式。14 .绘制出型号为STC89c52RC单片机甲机外接4个数码管,发送数据,乙机4个数码管,接收数据地接线原 理图。编程实现以下功能:能统计T0产生脉冲地个数,上电后电子计数器清零并启动,外部中断0停止 计数器工作。该结果同时送到乙机显示。数码管
12、显示格式是0000。计数脉冲检测使用查询方式。15 .绘制出型号为STC89C52RC单片机甲机外接8个数码管,发送数据,乙机8个数码管,接收数据地接线原 理图。编程实现以下功能:计时24小时地电子钟,结果同时送到另一台单片机显示。数码管显示格式是 00-00-00 o16 .绘制出型号为STC89C52RC单片机甲机外接8个数码管,发送数据,乙机8个数码管,接收数据地接线原 理图。编程实现以下功能:计时24小时地万年历,时钟与年,月,日交替显示。结果同时送到另一台单片 机显示。数码管显示格式是00-00-00o第三大类:按钮控制继电器+串行通信17 .绘制出型号为STC89c52RC单片机甲
13、机外接8个按钮与4个数码管,乙机P0 口接8个继电器(画一个, 其它用虚线表示)地接线原理图。编程实现以下功能:甲机按下按钮“1”到“8”,甲机左边地单个数 码管显示对应数字,乙机对应地LED亮。18 .绘制出型号为STC89C52RC单片机甲机外接8个按钮与4个数码管,乙机P0 口接8个继电器(画一个, 其它用虚线表示)地接线原理图。编程实现以下功能:甲机按下按钮“1”到“8”,甲机右边地单个数 码管显示对应数字,乙机对应地数码管显示“F”。19 .绘制出型号为STC89c52RC单片机甲机外接16个按钮与8个数码管,乙机外接8个数码管地接线原理 图。编程实现以下功能:甲机按下按钮“1”到“
14、F”,甲乙机数码管同时顺序显示对应数字。20 .绘制出型号为STC89C52RC单片机甲机外接4个按钮与4个数码管,乙机外接4个数码管地接线原理 图。编程实现以下功能:甲机按下按钮“1”到“4”,乙机数码管显示对应数字,同时蜂鸣器响对应地时 间(14秒)。第四大类:按键控制LED+串行通信21 .绘制出型号为STC89C52RC单片机甲机外接16个按钮与8个数码管,乙机P0 口外接8个LED地接线 原理图。编程实现以下功能:甲机按下按钮“1乙机LED由左向右单个亮一遍;甲机按下按钮“2”, 乙机LED由左向右两个个亮一遍;甲机按下按钮“3”,乙机LED由右向左单个亮一遍;甲机按下按钮 “4”,
15、乙机LED由右向左两个两个亮一遍。22 .绘制出型号为STC89C52RC单片机甲机外接16个按钮与8个数码管,乙机P0 口外接8个LED地接线 原理图。编程实现以下功能:甲机按下按钮乙机LED由左向右单个亮一遍,时间间隔0.5S。甲机 可以由键盘设定乙机,LED单个显示切换地时间间隔(210秒)。第五大类:扩展存储器+时钟23 .绘制出型号为STC89C52RC单片机甲机外接4个按钮与3片6264,6264采用线译码地接线原理图。需 要说明各个芯片地地址空间。同时写出电子秒表程序并在学习板上调试成功。24 .绘制出型号为STC89C52RC单片机甲机外接4个按钮与4片6264,6264采用全
16、译码地接线原理图。需 要说明各个芯片地地址空间。同时写出电子时钟程序并在学习板上调试成功。25 .绘制出型号为STC89C52RC单片机甲机外接4个按钮与2片6264,6264采用单线加非门译码地接线原 理图。需要说明各个芯片地地址空间。同时写出万年历程序并在学习板上调试成功。第六大类:扩展串行口+串行通信26 .绘制出型号为STC89c52RC单片机甲机16个按钮与4个数码管,乙机4个数码管并扩展串并转换I/O 口(2片164)地接线原理图。编程实现:甲机按下按键,甲乙机同时显示按键数值。27 .绘制出型号为STC89C52RC单片机甲机16个按钮与4个数码管,乙机4个数码管并扩展串并转换I
17、/O 口(2片164)地接线原理图。编程实现:甲机实现电子秒表功能,乙机同时显示。28 .绘制出型号为STC89C52RC单片机甲机16个按钮与4个数码管,乙机4个数码管并扩展串并转换I/O 口(2片164)地接线原理图。编程实现:编程实现:甲机实现电子时钟功能,乙机同时显示。29 .绘制出型号为STC89C52RC单片机甲机16个按钮与4个数码管,乙机4个数码管并扩展串并转换I/O (2片164)地接线原理图。编程实现:甲机实现万年历功能,乙机同时显示。(3)画出MCS-51系列单片机时钟电路,并指出石英晶体与电容地取值范围。(4)什么是机器周期?机器周期与晶振频率有何关系?当晶振频率为6
18、MHz时,机器周期是多少?(5) MCS-51系列单片机常用地复位方法有几种?画电路图并说明其工作原理。(6) MCS-51系列单片机内RAW地组成是如何划分地?各有什么功能?(7) MCS-51系列单片机有多少个特殊功能寄存器?它们分布在什么地址范围?(8)简述程序状态寄存器PSW各位地意义,单片机如何确定与改变当前地工作寄存器组。(9) C51编译器支持地寄存器有哪些?(10)单片机外部扩展RAM与ROM时,P0 与P2 各起什么作用?(11)在单片机地C语言程序设计中,如何使用SFR与可寻址位?习题29.1 单项选择题(1)仿真器地作用是 oA.能帮助调试用户设计地软件B.能帮助调试用户
19、设计地硬件C.能帮助调试用户设计地硬件与软件D.只能做各种模拟实验(2)使用单片机开发系统调试程序时,对源程序进行汇编地目地是 oA.将源程序转换成目的程序B.将目的程序转换成源程序C将低级语言转换成高级语言D.连续执行(3)在运用仿真系统调试程序时,观察函数内部指令地运行结果,通常采用 调试方法。A.单步调试(F8)B.跟踪调试(F7)C.快速运行到光标处调试(F4)C.断点调试(F2)(4)使用单片机开发系统调试C语言程序时,首先应新建文件,该文件地扩展名是 oA. .cB. .hexC. .binD. .asm(5)单片机能够直接运行地程序是。A.汇编源程序B.C语言源程序C.高级语言程
20、序D.机器语言程序2.1问答题(1)什么是单片机开发系统?单片机开发系统有哪些设别组成?如何连接?(2) 一般来说单片机开发系统应具备哪些基本功能?(3)开发单片机应用系统地一般过程是什么?习题33.1 单项选择题(1) MCA-51系列单片机地4个并行I/O端口作为通用I/O端口使用,在输出数据时,需要外接上拉电阻地是 ()A. P0 口B.P1 C.P2 口D.P3 口(2)当MCS-51系列单片机应用系统需要扩展外部存储器或其它接口芯片时,()可作为低8位地址总线 使用。A.P0 口B.P1 口C.P2 口D.P0 与 P2 口(3)当MCS-51系列单片机应用系统需要扩展外部存储器或其
21、它接口芯片时; ()可作为高8位地址总线 使用。A.P0 口B.P1 口C.P2 口D.P0 与 P2 口(4)下面表达不正确地是()oA.一个C源程序可以由一个或多个函数组成B.一个C源程序需要包含一个函数main()D.C程序地基本组成单位是函数C.在C程序中,注释说明只能位于一条语句地后面(5) C程序总是从()开始执行地。A.主函数B.主程序C子程序D.主过程(6)最基本地C语言语句是()oA.赋值语句B.表达式语句C.循环语句D.复合语句(7)在C51程序中常常把()作为循环体,用于消耗CPU时间,产生延时效果。A.赋值语句B.表达式语句C.循环语句D.空语句习题4编程:5.1 输入
22、3个无符号地字符数据,要求按由大到小地顺序排列。5.2 用指针实现,输入3个无符号地字符数据,要求按由大到小地顺序排列。5.3 用3种循环结构编写程序,实现输出1到100之与。5.4 用3种循环结构编写程序,实现输出1到50平方之与。5.5 编程实现将8051单片机片内部RAM从20H单元开始地10个字节内容清零。5.6 编写计算以下算式地程序。23H+35H+ABHABCDH-3456H5.7 输入3个无符号地字符数据,要求按由大到小地顺序排列。5.8 用指针实现,输入3个无符号地字符数据,要求按由大到小地顺序排列。5.9 用3种循环结构编写程序,实现输出1到100之与。5.10 用3种循环
23、结构编写程序,实现输出1到50平方之与。5.11 利用89C51地P1 口控制8个发光二级管LED。相邻地4个LED为一组,使2组每隔0.5s交替发 亮一次凋而复始。画出电路,编写程序。5.12 编制一个循环闪烁灯地程序。有8个发光二级管,每次其中某个灯闪烁点亮10次后,转到下一个闪 烁10次彳盾环不止。5.13 使用MCS51单片机地定时器/计数器1,在P1.4上输出高电平为10mS低电平为20mS地连续波 形。分别用查询中断请求标志地方法与中断方法编写程序。设晶振频为12MHz。5.14 使用MCS-51单片机地定时器/计数器0,在INTO为低电平时,将TO引脚上地脉冲波形经10频后 从P
24、L2送出。5.15 编写一段程序,在INT1从高电平变成低电平时,在pi 7上输出一个宽度为imS地正脉冲。分别用 查询法与中断法编写程序。设晶振频为12MHz。5.16 使用型号为STC89c52RC单片机,晶振频率12MHZ。用定时器TO查询方式,实现从P1.0输出周期 为0.02S地方波输出。5.17 使用型号为STC89c52RC单片机,晶振频率12MHZ。用定时器T1查询方式,实现从P1.0输出周期 为低电平0.2S,高电平0.3S地矩形波输出。5.18 使用型号为STC89C52RC单片机,晶振频率12MHZ。用定时器T0中断方式,实现从P1.0输出周期 为0.02S地方波输出。5
25、.19 使用型号为STC89c52RC单片机,晶振频率12MHZ。用定时器T1中断方式,实现从P1.0输出周期 为低电平0.2S,高电平0.3S地矩形波输出。习题5程序分析:5.20 水灯程序/包含8952单片机头文件/延时子程序,入口参数ms,延迟时间取值范围。65535II取值范围0-255/j进行地内部循环次延迟8us#includevoid delaym(unsigned int t) (unsigned char j;while(t-)(ford = 0;j 250; j+);)void main()(unsigned int i; while(l) unsigned char a=
26、0xfe; for(i=0;i8;i+) (P0=a;delaym(200);a=l;/循环左移1位)5.21 子秒表工作程序void main() (TMOD=0x01;/定时器TO工作在方式1TH0=0xD8;/ TO装入时间常数TL0=0xf0;EA=1;/允许中断ET0=l;/允许定时器T0中断TR0=l;启动定时器T。while(l)无条件循环(for(k=0;k3;k+)PO=bk; 送出数码管段码P2=k;送出数码管位选码delaym(3); 调用延时函数timeO_int(void) interrupt 1 /TO 中断服务程序 (TH0=0xD8;TLO=OxFO;i+;if
27、(i=100) 至 I1 秒 ( i=0;second 1+; )if(secondl=10) 到 10 秒 ( second2+; second 1=0;if(second2=10) 至U 100 秒 second3+;second2=0;second1=0; b2=a second31; 转换为段码显示 bl=asecond2J;b0=asecondl;)5.22 子时钟程序 void main() (TMOD=0x01; 定时器TO工作在方式1TH0=0xD8;/TO延时长度延时lOmSTL0=0xf0;EA=1;允许中断ET0=l;允许定时器TO中断TR0=l;while(l)(for
28、(k=0;k5 ;k+) 显示时钟地分秒 (PO=bk;P2=k;delaym(3);timeO_int(void) interrupt 1 /TO 中断服务程序 (TH0=0xD8;TLO=OxFO; i+; if(i=100) 到 1 秒 ( i=O;second+;)if(second=60) 至 lj 1 分钟 second=0;fen+; )w=fen/10;x=fen%10;y=second/10;z=second%10;b4=aw;显示分十位段码b3=ax;显示分个位段码b|2=0xbf; 数码管显示bll=ay;显示秒十位段码bO=az; 显示秒个位段码)5.23 矩阵式按键扫
29、描,读取按键地行列编码。unsigned char Keycan(void)(unsigned char rcode, ccode;Pl = OxFO; /Pl 口对键盘输出键盘扫描信号 if(Pl&0xF0) !=0xF0) (delay(l);/调用岩石函数函数实现软件去抖动 if(Pl&OxFO) !=0xF0)如果不相等说明有键按下 rcode = OxFE;/逐行扫描初值while(rcode&0x10) != 0) (Pl = rcode;输出行扫描码if(Pl&0xF0) !=0xF0)/ (ccode = (Pl&0xF0)|0x0F; /取入列代码 /do;while(Pl&
30、OxFO) != OxFO);/等待键释放return (rcode) + (ccode); 返回)elsercode = (rcode 1 )|0x01; 行输出代码移 1 位)return 0; /无键按下,返回)5.24 键取值计算程序void KeyDeal(unsigned char Key) if(Key!=0) 再次判断是否有按键按下 switch(Key)对按键地行列码译码成015(case 0x11: K=0; break;case 0x21: K=l; break;case 0x41: K=2; break;case 0x81: K=3; break;case 0x12:
31、K=4; break;case 0x22: K=5; break;case 0x42: K=6; break;case 0x82: K=7; break;case 0x14: K=8; break;case 0x24: K=9; break;case 0x44: K=10; break;case 0x84: K=ll; break;case 0x18: K=12; break;case 0x28: K=13; break;case 0x48: K=14; break;case 0x88: K=15; break;default: break;)if(K17)c7=c6;改变显示位置,显示代码顺
32、序前移c6=c5;c5=c4;c4=c3;c3=c2;c2=cl;cl=c0;c0=blK; 将0-15译成段码供显示5.25 计算机键盘输入月份,通过计算机串口显示相应地日子。include /包含8952单片机头文件include 包含计算机串口头文件#define uint unsigned intvoid main() (uint month;uint day;SCON=0x50;串行口工作在方式1,允许接收。TMOD=0x20; 定时器1工作在方式2TCON=0x40;TH l=0xE8;装入波特率对应地时间常数TLl=0xE8;TI=1;TR1 = 1;printf(Hinput
33、monthn);要求输入月份scanf(n%d&month); 读取键盘输入地月份数值。switch(month) 查阅月份 (case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31; l,3,5,7,8,10,12 上显示 31 日 break;case 4:case 6:case 9:case 11 :day=30; /4,6,9,11 显示 30 日 break;case 2:day=28; /2 月份显示 28 日break;default:day=l;/都不是,日期 1 )printf(nmonth,has dayn,&mo
34、nth,&day); 在屏幕上显示对应月份地日期 )5.7 延时1秒子程序A void delay(void) unsigned char m,n,s; 定义m,n,s为无符号字符型数值(0255) for(m= 10;m0;m)/m地用途控制第1重循环for(n= 1 OO;nO;n-)for(s=124;s0;s-);3 个 for 指令总延时 ImSX 100X 10=1 秒延时子程序B void delay(unsigned char t) ( while(t-) /由调用程序规定延时时间 ( unsigned char j; /彳地取值范围0255 for(j = 0;j123;j+
35、); /语句 延时 ImS ) 5.8 数码显示程序unsignedcharb17= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,Oxa 1,0x86,0x8e,0xff; 16个数码管段码,加1个全灭段码 unsigned char c8; 规定显示段码数组为8 void displayO unsigned char i; for(i=0;i8;i+) 显示 8 个数据 (P0=ci;送出段码P2=i;送出位选码 delay(2);) )5.9 串口接收程序#include #define uchar unsigned char uchar idata buf8;main() ( uchar i;SCON= 0x50;/规定串口工作方式1,允许接收。,PCON=0; /SMOD=0 TMOD= 0x20;定时器1工作在定时方式2TH1= 0xe6;/12MHz 1200 波特率TL1= 0xe6; TR1= 1; 启动钉子定时器1 while(l)不断接收数据 for (i=0;i9;i+) ( while( RI=0)查询接收一帧数据完毕否RI=0;
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100