1、第 1 页 共 7 页一、填空题1、AT89S51 单片机为 8 位单片机,共有 40 个引脚。2、MCS-51 系列单片机的典型芯片分别为 8031 、 8051 、 8751 。3、AT89S51 访问片外存储器时,利用 ALE 信号锁存来自 P0 口 发出的低 8 位地址信号。4、AT89S51 的 P3 口为双功能口。5、AT89S51 内部提供 2 个可编程的 16 位定时/计数器,定时器有 4 种工作方式。6、AT89S51 有 2 级中断, 5 个中断源。7、AT89S51 的 P2 口为高 8 位地址总线口。8、设计一个以 AT89C51 单片机为核心的系统,如果不外扩程序存储
2、器,使其内部 4KB 闪烁程序存储器有效,则其 EA* 引脚应该接 +5V 9、单片机系统中使用的键盘分为 独立式键盘 和行列式键盘,其中行列式键盘的按键识别方法有 扫描法和线反转法。10、单片机进行串行通信时,晶振频率最好选择 11.0592MHz11、AT89S51 复位后,PC 与 SP 的值为分别为 0000H 和 07H 。12、关于定时器,若振荡频率为 12MHz,在方式 2 下最大定时时间为 256us 13、AT89S51 单片机的通讯接口有 串行 和 并行 两种形式。在串行通讯中,发送时要把并行数据转换成 串行 数据。接收时又需把串行数据转换成并行数据。14、一个机器周期等于
3、 6 个状态周期,振荡脉冲 2 分频后产生的时序信号的周期定义为状态 12 周期。15、当使用慢速外设时,最佳的传输方式是 中断 。16、MCS-51 串行接口有 4 种工作方式,这可在初始化程序中用软件填写特殊功能寄存器_SCON _加以选择。二、判断题1、8031 与 8051 的区别在于内部是否有程序存储器。 ( )2、内部 RAM 的位寻址区,既能位寻址,又可字节寻址。 ()3、串行口工作方式 1 的波特率是固定的,为 fosc/32。 ()4、8051 单片机中的 PC 是不可寻址的。 ()5、MCS-51 系统可以没有复位电路。 ( )6、某特殊功能寄存器的字节地址为 80H,它即
4、能字节寻址,也能位寻址。 ()7、PC 存放的是即将执行的下一条指令。 ()8、TMOD 中的 GATE=1 时,表示由两个信号控制定时器的启停。 ( )9、特殊功能寄存器 SCON 与定时器/ 计数器的控制无关。 ()10、各中断源发出的中断请求信号,都会标记在 AT89S51 的 TCON 寄存器中。 ()11、MCS-51 的程序存储器只是用来存放程序的。 ( )12、MCS-51 的串行接口是全双工的。 ()13、MCS-51 的特殊功能寄存器分布在 60H80H 地址范围内。 ()14、MCS-51 的 5 个中断源优先级相同。 ( )三、简答题1、请写出共阴数码管显示数字 09 对
5、应的段码值。答:共阴 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 2、请写出共阳数码管显示数字 09 对应的段码值。答:共阳 C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H3、AT89S51 单片机指令系统的寻址方式有哪些?答:寄存器寻址、直接寻址、间接寻址、立即寻址。4、请说明 MCS-51 单片机的外部引脚 EA*的作用?答:当 EA*为高电平时,访问内部程序存储器,但当地址大于 0FFF 时,自动转到外部程序存储器;当 EA*为低电平时,第 2 页 共 7 页只读取外部程序存储器。5、AT89S51 采用 6MHz 的晶
6、振,定时 1ms,如用定时器方式 1 时的初值(16 进制数)应为多少?(写出计算过程)答:(2 16-X)*2*10-6=10-3 X=655036 X=FEOCH6、写出 AT89S51 的所有中断源,并说明说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除,为什么?答: 外部中断 INT0*,定时器/ 计数器中断 T0,外部中断 INT1*,定时器/计数器中断 T1,串行口中断。其中串行口中断 TI 与 RI 必须用软件清“0” ,因为串口中断的输出中断为 TI,输入中断为 RI,故用软件清“0” 。7、LED 的静态显示方式与动态显示方式有何区别?各有什么优缺点?答:
7、静态:显示期间,锁存器输出的段码不变,亮度大,各位 LED 的段选分别控制,位数多硬件电路复杂;动态:所有位段码线并连一起,各位的亮灭靠片选控制端控制,亮度较低,多位控制电路简单。8、请画出单片机最小系统。9、简述行列式扫描键盘的工作原理。答: 扫描键盘工作原理首先 X0X3,始终接高电平,Y0Y3 给低电平,扫描 P1.0P1.3 若全为高电平,则没有键按下,若有低电平,则有键按下。接着 Y0 输出低电平,Y1Y3 输出高平,扫描 P1.0P1.3,若全为高电平,则没有键按下,若有低电平,则找出相位,得到所按的键。再 Y1 输出低电平,Y0,Y2,Y3 输出高电平,重复第 2 步骤作.再 Y
8、2 输出低电平,Y0,Y1,Y3 输出高电平扫描再 Y3 输出低电平,Y0,Y1,Y2 输出高电平扫描根据据以上扫描,确定以上各键是否按下。10单片机的应用有哪些?答: (1)工业控制。单片机可以构成各种工业控制系统、数据采集系统等。如数控机床、自动生产线控制、电机控制、测控系统等。(2)仪器仪表。如智能仪表、医疗器械、数字示波器等。(3)计算机外部设备与智能接口。如图形终端机、传真机、复印机、打印机、绘图仪、磁盘/磁带机、智能终端机等。(4)商用产品。如自动售货机、电子收款机、电子秤等。(5)家用电器。如微波炉、电视机、空调、洗衣机、录像机、音响设备等。(6)消费类电子产品。(7)通讯设备和
9、网络设备。(8)儿童智能玩具。(9)汽车、建筑机械、飞机等大型机械设备。(10)智能楼宇设备。第 3 页 共 7 页(11)交通控制设备。四、大题1.MCS-51 单片机 P1 端口上,经驱动器连接有 8 只发光二极管,若 fosc=6MHz,试编写程序,使这 8 只发光二极管每隔 2s 循环发光一次(要求 T0 定时) 。#include unsigned char data cou;unsigned int data tim;void main()TMOD=0x02; TL0=16; TH0=16; TR0=1; ET0=1; EA =1;P1=0;cou=0;tim=1;While(1)
10、;void serve() interrupt 1tim+;if(tim=500)P1=0x01 void main()unsigned char i,j;TMOD=0x20; TL1=56; TH1=56; TR1=1; 第 4 页 共 7 页while(1)while(TF1=1)TF1=0;i+;if(i=5)P1_1=P1_1;i=0;3.编写一 C51 程序,实现从 P1 口输出产生的流水灯,要求用 C 语言函数实现数据左移或右移。#include #include #define uchar unsigned char #define uint unsigned int /*延时函
11、数*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*主函数*/void main() uchar i; P1=0xfe; while(1) for(i=0;i#define uint unsigned int/宏定义uint temp,aa,shi,ge; /定义全局变量sbit dula=P26; /定义段选sbit wela=P27; /定义字选uint code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void display(uint shi
12、,uint ge);/申明显示函数void delay(uint z); /申明延时函数void init(); /申明初始化函数void main()init();/调用初始化函数while(1)if(aa=20)aa=0;temp+;if(temp=60)temp=0;shi=temp/10;/分离出十位ge=temp%10; /分离出个位display(shi,ge);/调用显示函数void display(uint shi,uint ge) /显示函数dula=1; /打开段选P0=tableshi;/送十位数dula=0; /关闭段选/P0=0xff; /消隐(只有两位数码管就不用了
13、)wela=1; /打开位选P0=0xfe; /送那一位wela=0; /关闭位选delay(5); /调用延时函数dula=1;第 6 页 共 7 页P0=tablege;dula=0;/P0=0xff;wela=1;P0=0xfd;wela=0;delay(5);void delay(uint z) /延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void init() /初始化函数temp=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void t
14、imer0() interrupt 1 /中断函数TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;5两只开关分别接入 P3.0、P3.1,在开关信号 4 种不同的组合逻辑状态,使 P1.0 分别输出频率0.5kHz、1kHz、2kHz、4kHz 的方波,晶振频率为 12MHz。#include unsigned char data sta;unsigned char data cou;unsigned char data mag;void main()TMOD=0x02; TL0=131; TH0=131; TR0=1; ET0=1; 第 7 页 共 7 页EA =1;cou=0;While(1);void serve() interrupt 1unsigned char temp;P3=0xff;temp=P3if(temp!=sta)sta=temp;cou=0;if(sta=0x00)mag=7;else if(sta=0x01)mag=3;else if(sta=0x10)mag=1;else if(sta=0x11)mag=0;if(cou=mag)P1_0=P1_0;cou=0;elsecou+;