蔡振江单片机原理及应用_单片机原理与应用考试大纲

第一章           微型计算机基础

一、       考核知识点:

1、             计算机的数据表示和数据运算

2、             计算机的各种编码

3、             计算机的组成及工作过程

二、       考核要求:

1、识记计算机的各种编码

2、领会计算机的组成及工作过程

3、简明应用计算机的数据表示和数据运算

第二章           51单片机的硬件结构和原理

一、考核知识点:

1、             单片机的发展史及各方面的应用

2、             51单片机的分类和内部结构

3、             单片机的引脚和功能

4、             单片机工作的时序

二、         考核要求:

1、             识记单片机的发展史及各方面的应用

2、识记单片机的引脚和功能

3、领会单片机工作的时序

4、简明应用51单片机的分类和内部结构

第三章           51单片机指令系统

一、             考核知识点:

1、             单片机的寻址方式

2、             单片机的指令系统

3、             助记符指令和二进制代码指令的异同

二、             考核要求:

1、领会助记符指令和二进制代码指令的异同

2、综合应用单片机的寻址方式

3、综合应用单片机的指令系统

第四章           汇编语言程序设计

一、考核知识点:

1、             伪指令

2、             汇编语言设计技巧

3、             汇编语言到机器语言的编译过程

二、考核要求:

1、领会伪指令

2、简明应用汇编语言设计技巧

3、综合应用汇编语言到机器语言的编译过程

第五章           51单片机的中断系统

一、             考核知识点:

1、             中断基本概念

2、             中断系统的程序编制

3、             中断系统的初步应用

二、             考核要求:

1、领会中断基本概念

2、简明应用中断系统解决工程问题

3、综合简明应用中断系统的程序编制

第六章           51单片机的内部定时器/计数器及串行接口

一、考核知识点:

1、             单片机内部定时器/计数器的结构及工作原理

2、             定时器/计数器的程序编制

3、             定时器/计数器的初步应用

4、             串行口的基本概念

5、             串行口的程序编制

6、             串行口的初步应用

二、考核要求:

1、识记串行口的基本概念

2、领会单片机内部定时器/计数器的结构及工作原理

3、简明应用定时器/计数器解决工程问题

4、简明应用串行口的程序编制

5、简明应用串行口解决工程问题

6、综合应用定时器/计数器的程序编制

第七章           单片机的系统扩展与接口技术

一、              考核知识点:

1、             单片机外部总线的扩展

2、             外部存储器的扩展

3、             I/O接口的扩展

4、             管理功能部件的扩展

5、             A/D和D/A接口功能的扩展

二、              考核要求:

1、识记单片机外部总线的扩展

2、识记管理功能部件的扩展

3、简明应用A/D和D/A接口功能的扩展

4、综合应用外部存储器的扩展

5、综合应用I/O接口的扩展

第八章           单片机应用系统设计

一、   考核知识点:

1、             单片机应用系统的开发过程

2、             单片机开发工具的分类和使用

3、             单片机应用系统的软件和硬件调试过程

二、   考核要求:

1、识记单片机应用系统的软件和硬件调试过程

2、领会单片机应用系统的开发过程

3、领会单片机开发工具的分类和使用

第九章           单片机系统的抗干扰技术

一、考核知识点:

1、             单片机干扰源与分类

2、             干扰对单片机系统的影响

3、             硬件抗干扰技术

4、             软件抗干扰技术

5、             数字滤波

二、考核要求:

1、识记单片机干扰源与分类

2、识记干扰对单片机系统的影响

3、识记数字滤波

4、简明应用硬件抗干扰技术

5、简明应用软件抗干扰技术

第十章           其它单片机简介

一、考核知识点:

1、             AT89C系列单片机的特点与性能

2、             其它8位单片机的特点与性能

3、             16位、32位单片机的特点与性能

二、考核要求:

1、识记其它8位单片机的特点与性能

2、识记16位、32位单片机的特点与性能

3、领会AT89C系列单片机的特点与性能

 

《单片机原理及应用技术》考试大纲

《单片机原理及应用技术》课程是一门面向应用的专业技术课。单片机原理与应用介绍了单片机的基本知识和单片机技术的应用,其内容与工程实际紧密联系,实用性很强,是一门在理论指导下, 偏重于实际应用的课程。本课程具有实用性强、理论和实践结合、软硬件结合等特点。本课程围绕使用较为广泛的MCS-51系列单片机进行学习。本课程已成为理、工科电子类专业的一门基础课程,这是从电子系统设计角度考虑的,它体现了电子系统设计的方法和硬件结构的变化。通过该课程的学习,要求学生掌握80C51单片机的工作原理、编程技术,掌握单片机应用系统的扩展方法和实际应用。因此,以单片机为内核,分析和设计一个简单的计算机应用系统是我们学习本课程要达到的目的。

第一部分 考试大纲

1 单片机概述
本章为单片机的基本概念。
1.掌握有关单片机的基本概念、单片机的特点、单片机的应用。
2.理解单片机的总体组成。
3.了解单片微型计算机的产生、发展历史、主要品种及系列。

 

2 单片机结构和原理
本章以80C51单片机为例介绍了主要硬件结构和主要功能,着重掌握系统所提供的资源特性及其功能特性。
1.掌握80C51的内部结构。
2.掌握80C51单片机的存储器组成。
3.掌握单片机并行输入/输出端口结构及功能。
4.了解单片机的时序概念和复位工作方式。
5.掌握单片机引脚功能


3 指令系统
1.掌握指令与伪指令的正确格式。
2.掌握七种寻址方式的使用及寻址方式的含义。
3.掌握五类指令的功能和使用,特别是传送指令。
4.理解书中所列例题与习题。

 

 

4 汇编语言程序设计举例
本章为MCS-51的一些常用伪指令,介绍顺序结构程序设计、分支结构程序设计、循环结构程序设计和子程序的设计。
1.程序设计的基本步骤、各种基本的结构化程序设计方法;
读懂较复杂的常用程序。
2.掌握数据传送指令的编写。
3. 理解算术运算程序设计。
4. 理解数码转换程序设计。
5. 理解查表程序设计。
6. 理解子程序设计和参数传递。
7. 理解逻辑运算程序设计

 

 

5中断系统
1.掌握有关中断、中断源、中断优先级等概念。
2.掌握中断响应过程。
3.掌握中断优先级排列。
4.掌握中断允许寄存器IE、中断优先级寄存器IP各位的含义及设置。
5.掌握外部中断的两种触发方式:电平触发、边沿触发。

 

 

6 定时/计数器

1.掌握定时器/计数器的四种工作方式及有何不同。
2.掌握TMOD和TCON中各位的含义、作用。
4.掌握不同工作方式计数初值与定时时间的关系,即能根据定时时间算出计数初值,完成定时器的初始化编程和简单应用编程。

 


7 串行通信
1.理解有关通信、协议的概念。
2.理解串行口的四种工作方式。
3.掌握SBUF的含义及作用。
4.了解串行口的工作原理。
5.了解SCON中每一位的含义及SMOD位的作用。
6.掌握串行通信总线RS-232C标准、RS-232C电平转换。
7.了解RS-232C与MCS-51的接口。

 


8 系统扩展技术
1.掌握总线、驱动、锁存和译码、地址重叠的概念。
2.掌握程序存储器的扩展:EPROM程序存储器及其扩展方法。
3.掌握数据存储器的扩展:静态存储器SRAM及其扩展方法。
4.掌握简单I/O口的扩展。
5.掌握8255A可编程并行接口:结构、控制字、工作方式、与8255A的接口方法。

 

 

9  A/D和D/A转换器接口技术
1.掌握DAC0832与单片机的接口方法与编程。
2.掌握ADC0809与单片机的接口方法与编程。

 

10 键盘/显示接口技术
1.掌握LED显示器结构、工作原理和显示方式。
2.掌握键盘接口原理。
3.理解LED显示器与80C51单片机接口。
4.理解键输入程序设计方法。
5.了解行列式键盘与80C51单片机接口。

 

 

11、功率接口技术

1.掌握简单开关量接口、光电耦合接口和继电器接口。

2.晶闸管与故态继电器的应用接口。

 

 

12、单片机系统设计技术

掌握单片机系统的设计、开发、调试的原则、步骤及方法。

 

 

13、实用举例

了解一两个典型的单片机开发应用系统的设计思想和实现方法。

 

 

14、新型单片机介绍

了解MCS-51常见8位单片机。

 

 

第二部分 考试考核改革方案

一、考试考核要求
《单片机技术及应用》选择具有代表性的、使用较为广泛的MCS-51系列单片机进行学习(具体以80C51为例),介绍了80C51单片机的硬件组成、软件编程及一般应用系统组成。通过本课程的学习,要求掌握80C51单片机的系统结构、指令系统、程序设计方法、系统扩展方法、单片机常用接口等应用技术。本课程的教学过程由面授辅导、自学、实验及作业四个环节组成,因此本课程考试考核要求为:
1.作业、实验成绩与期末考试成绩共同评定为课程总成绩。
2.作业、实验占课程总分的60%,期末理论考试占总分的40%。
   为使学生不把注意力仅仅放在期末考试上,培养学生系统学习的能力,加强学生各方面能力的培养,平时、实验课、作业、考试都纳入本课程的成绩评定。平时的成绩包括出勤、课堂提问和随堂测试。期末考试可以选择笔试、口试和进行实际实验、设计等多种形式。

二、平时成绩考核要求及说明
1.每章作业按要求完成后交教师批改,完成作业80%为12分(及格);
所有作业均完成,且质量较好者,20分(满分)。中间情况酌情给分。
2.每次实验均能按照教师安排进行,实验态度好,至少完成5个实验且实验报告完整,为18分(及格);
能基本独立完成6个或以上实验,实验报告完整、无误,实验质量高,30分(满分)。中间情况酌情给分。如果实验有创新的特点,酌情加分。
3.作业与实验的平均分为平时成绩,满分50分。

4.课程设计单独计算成绩,考评方法见其大纲。

三、理论考试说明
1.单片机技术及应用理论考试,采用闭卷笔试形式,考试时间120分钟。
2.期末考试试题根据教学大纲,其范围和难度按照本方案中制订的考试考核内容和要求确定。考试命题覆盖考试大纲要求范围。
3.期末考试试题类型有以下几种:
①填空题;

②选择题;

③判断题;

④简答题

⑤综合应用题。

四、考试考核要求层次
按照教学大纲的要求,理论考试要求分为掌握、理解和了解三个层次。
掌握:
   对于本课程的重点内容要求学生达到掌握的程度。即能够全面、深入理解和熟练掌握所学内容,并能够用其分析、初步设计和解答与应用相关的问题,能够举一反三。要求学生掌握的内容也就是考试的主要内容,在考试中所占比例约70%。
理解:
对于本课程的一般内容要求学生能够理解。即要求学生能够较好地理解所学内容,并且对所涉及的内容能够进行简单分析和判断。要求学生理解的内容也是考试的内容,在考试中所占比例约25%。
了解:
   对于本课程的次要内容要求学生能够了解。要求学生了解的内容,一般是指在眼下不必进一步深入和扩展,有些也许需要学生自己今后在工作中进行深入研究。对要求了解的内容,在考试中占较小比例,不超过5%。

 

实验五:按键电路、显示电路实验

一、实验目的:

1.掌握独立式按键电路与矩阵式按键电路的设计方法。

2.掌握数码管显示电路的工作原理

3. 掌握源程序编辑软件Ultra Edit,编译软件Keil C51、仿真软件Proteus的使用方法

4. 掌握硬件仿真器ME-52A的使用方法

二、实验器材:

1.单片机实验板

2.单片机硬件仿真器ME-51A

3.计算机

4.电源

三、实验要求:

1.电路如图5所示,用单片机的P3口所接的四个独立式按键控制p1口流水灯花样的方法;
具体表现为:p3.0、P3.1、  P3.2、  P3.3四个小按键分别实现了四个控制:

(1) 跑灯:即P1.0---1.7亮点流动:

(2) 流水灯:即 P1.0-1.7 依次点亮

(3) 交叉闪烁:即 P0.0,P0.2,P0.4,P0.6和P0.1,P0.3,P0.5,P0.7轮流点亮

(4) 停止;
在任何状态下按此键程序停止运行.

2. 电路如图6所示,用P2口所接的4×4矩阵式键盘作为输入,在P1口所接的数码管上显示出每个按键的0~F序号,键盘的布局如下表所示:

F
 E
 D
 C
 
B
 A
 9
 8
 
7
 6
 5
 4
 
3
 2
 1
 0
 

四、实验原理:

1.独立式按键电路显示如图5所示,从图中可看出,判断有无键按下,只要检测P3.0~P3.3相应端口的高低电平即可,若检测有某一端口为低电平,表明该端口有按键按下,经延时消抖后转去执行相应的功能子程序。若为高电平,表明无键按1.独立式按键电路如图5所示,下,继续检测。

      示例程序如下:

ORG 000H

            LJMP STAR1

            ORG 0030H

STAR1:   MOV P3,#0FFH ;置P3口为输入态

           JNB P3.0,FUN0 ;判别P3.0是否有键按下,是,则转FUN0

           JNB P3.1,FUN1 ;判别P3.1是否有键按下,是,则转FUN1

           JNB P3.2,FUN2 ;判别P3.2是否有键按下,是,则转FUN2

           JNB P3.3,FUN3      ;判别P3.3是否有键按下,是,则转FUN3

           JNB F0,STAR1       ;曾经有键按下F0置1

            RET

 
图5
 
     

FUN0:      LCALL DL10MS   ;消岸抖动

            JB P3.0,STAR1

WAITL0:      JNB P3.0,WAITL0 ;等待键释放

            SETB F0

FUN01:    LCALL FUN00

            LCALL STAR1

            LJMP FUN01

     

FUN1:      LCALL DL10MS   ;消岸抖动

            JB P3.1,STAR1

WAITL1:      JNB P3.1,WAITL1 ;等待键释放

            SETB F0

FUN10:    LCALL FUN11

            LCALL STAR1

            LJMP FUN10

     

FUN2:      LCALL DL10MS   ;消岸抖动

            JB P3.2,STAR1

WAITL2:      JNB P3.2,WAITL2 ;等待键释放

            SETB F0

FUN20:    LCALL FUN22

            LCALL STAR1

            LJMP FUN20

     

FUN3:      LCALL DL10MS   ;消岸抖动

            JB P3.3,STAR1

WAITL3:      JNB P3.3,WAITL3 ;等待键释放

            CLR F0

           MOV P1,#0FFH     ;关显示

            LJMP STAR1

 

FUN00:    MOV A,#0FEH  ;跑灯子程序

FUN000:  MOV P1,A

            LCALL DL05S

            JNB ACC.7,OUT

            RL A

            AJMP FUN000

OUT:      RET

 

FUN11:    MOV A,#0FEH  ;流水灯子程序

FUN111:  MOV P1,A

            LCALL DL05S

            JZ OUT

            RL A

            ANL A,P1

            AJMP FUN111

 

FUN22:    MOV A,#0AAH ;交叉点亮子程序

            MOV P1,A

            LCALL DL30S

            CPL A

            MOV P1,A

            LCALL DL30S

            RET

 

;************;

; 延时程序 ;

;************;

DL512:    MOV R2,#0FFH

LOOP1:       DJNZ R2,LOOP1

            RET

DL10MS:MOV R3,#14H

LOOP2:       LCALL DL512

            DJNZ R3,LOOP2

            RET

DL05S:    MOV R4,#0AH

LOOP3:       LCALL DL10MS

            DJNZ R4,LOOP3

            RET

DL30S:    MOV R5,#03H

LOOP4:  LCALL DL05S

            DJNZ R5,LOOP4

            RET

            END

2. 矩阵式按键电路显示如图6所示。采用扫描方式进行按键的识别检测,并将对应按键的键号用查表指令将对应的代码显示在数码管上。

图6
 

 

 

 

 

参考程序如下:

ORG     0000H

          LJMP    START

          ORG     0030H

START: MOV     SP,#60H ;设置堆栈指针

SCAN:       MOV     R3,#0F7H   ;置行扫描初值

          MOV     R1,#00H ;到TABLE表中取码的指针

SCAN1: MOV     A,R3  

          MOV     P2,A ;扫描输出

          MOV     A,P2 ;重读P2口状态

          MOV     R4,A ;暂存于R4吕中

          SETB    C    ;C=1

          MOV     R5,#03H ;扫描4列初值

L1:          RLC     A    ;A中内容循环左移

          JNC     KEYIN   ;C=0,有键按下,转消抖

          INC     R1      ;取码指针加1

          DJNZ    R5,L1   ;无键按下,继续检测

          MOV     A,R3 ;扫描下一行

          SETB    C

          RRC     A

          MOV     R3,A

          JC      SCAN1   ;4行是否扫描完,未完,继续

          LJMP    SCAN

KEYIN: MOV     R7,#10 ;削除抖动

D2:          MOV     R6,#248

          DJNZ    R6,$

          DJNZ    R7,D2

D3:          MOV     A,P2 ;按键放开否?

          XRL     A,R4

          JZ      D3

          MOV     A,R1

          MOV     DPTR,#TABLE ;到TABLE中取码

          MOVC    A,@A+DPTR

          MOV     P1,A

          LJMP    SCAN

TABLE: DB 0C0H,0F9H,0A4H,0B0H,80H,90H,88H,83H, 0C6H,0A1H,86H,8EH

              END

          DB 80H,90H,88H,83H

          DB 0C6H,0A1H,86H,8EH

  END

五、实验步骤:

1. 运行UltraEdit-32源程序编辑软件,输入、编辑汇编语言源程序。

2.运行Keil uVision2源程序编译软件,对源程序进行编译,得到目标代码文件。

3.运行Proteus模拟仿真软件,打开已绘制好的仿真电路原理图,进行模拟仿真。

4. 把硬件仿真器ME-52A与单片实验板连接好,再用硬件仿真器进行仿真验证。

六、实验分析与总结

1.用仿真系统调试简单程序结构、分支程序结构、循环程序结构、子程序结构和中断结构的关键在于,如何将对程序的分析理解和开发系统提供的基本功能有机地结合起来,其前提条件是必须对源程序的作用、结构特点、运行过程与结果有较全面的认识,并能根据程序运行过程中出现的现象和结果分析并判断产生各种故障现象的原因,再运用排除法逐一检验各种判断是否准确。

2.掌握程序结构特点的基础上,合理选择观测点,通过观察在观测点处参数及路径的变化检验程序运行的结果。

3.高调试程序的效率,应对单片机开发系统所提供的几种程序运行调试方式有足够的了解并能熟练地运用。例如,在调试过程中,若要观察最终结果,则可选择全速运行调试;
若要观察相关指令的运行结果或运行路径的变化过程,则可选择单步运行;
若要检查子程序的运行过程,则可选择跟踪运行调试;
若要检查循环程序或中断服务程序,则可选择断点运行调试;
若要定点检查程序运行到某处的结果时,则可选择快速运行到光标处调试。但实际中究竟选用哪种方法更适宜或哪几种方法结合使用更快捷,将随着分析能力与操作的熟练程度逐步提高。

4.程序运行结果是否正确时,应运用单片机开发系统所提供的交互界面,将程序运行过程中程序计数器PC(地址)的变化、各单元(内部RAM和外部RAM)内容的变化、特殊功能寄存器内容的变化、堆栈指针SP内容的变化与程序的理论分析结果相对照。

5.程序和调试程序时,需要多次反复的过程,并非一次就能排除全部故障,特别是单片机应用系统的硬件电路和汇编程序相结合的综合调试就更加复杂,因此,必须通过反复调试,不断修改硬件和软件,直到最终符合设计要求为止。如果在调试中能够根据实验现象预先对产生故障的原因加以判断和分析,并制定出相应的调试方法和步骤,可缩小排除故障的范围,提高调试效率。

七、思考与练习

填空题
1、设X=5AH,Y=36H,则X与Y“或”运算为__7EH_______,X与Y的“异或”运算为___6CH_____。
2、若机器的字长为8位,X=17,Y=35,则X+Y=__110100_____,X-Y=_11101110______(要求结果写出二进制形式)。
3、单片机的复位操作是____高电平______(高电平/低电平),单片机复位后,堆栈指针SP的值是___07h_____。
4、单片机中,常用作地址锁存器的芯片是__74HC373____________,常用作地址译码器芯片是_____74HC138____________。
5、若选择内部程序存储器, 应该设置为_____高_______(高电平/低电平),那么,PSEN信号的处理方式为___不用__________________。
6、单片机程序的入口地址是____0000H__________,外部中断1的入口地址是______0013H_________。
7、若采用6MHz的晶体振荡器,则MCS-51单片机的振荡周期为__0.5us_______,机器周期为_____2us__________。
8、外围扩展芯片的选择方法有两种,它们分别是___线选法_______________和_____译码法__________。
9、单片机的内部RAM区中,可以位寻址的地址范围是____20H~2FH______________,特殊功能寄存器中,可位寻址的地址是___是能被8整除的地址_________________。
10、子程序返回指令是___ret______,中断子程序返回指令是__  reti    。
11、8051单片机的存储器的最大特点是   内部RAM           与     外部RAM         分开编址。


12、8051最多可以有   32    个并行输入输出口,最少也可以有   8    个并行口。
13、 函数          是C语言的基本单位。
14、串行口方式2接收到的第9位数据送   SCON         寄存器的   RB8       位中保存。
15、MCS-51内部提供  3    个可编程的  16     位定时/计数器,定时器有  4     种工作方式。
16、一个函数由两部分组成,即   说明部分            和    语句部分       。
17、串行口方式3发送的第9位数据要事先写入   SCON     寄存器的    TB8   位。
18、利用8155H可以扩展   3    个并行口,    256    个RAM单元。
19、C语言中输入和输出操作是由库函数 scanf         和    printf      等函数来完成。
二、选择题
1、C语言中最简单的数据类型包括( B )。
A、整型、实型、逻辑型             B、整型、实型、字符型
C、整型、字符型、逻辑型           D、整型、实型、逻辑型、字符型
2、当MCS-51单片机接有外部存储器,P2口可作为 (  C  )。
A、数据输入口                     B、数据的输出口   
C、准双向输入/输出口             D、输出高8位地址
3、下列描述中正确的是(  D  )。


A、程序就是软件                   B、软件开发不受计算机系统的限制
C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合
4、下列计算机语言中,CPU能直接识别的是(  D  )。
A、 自然语言     B、 高级语言      C、 汇编语言     D、机器语言
5、MCS-5l单片机的堆栈区是设置在(  C  )中。
  A、片内ROM区  B、片外ROM区  C、片内RAM区  D、片外RAM区
6、以下叙述中正确的是( C  )。
A、用C语言实现的算法必须要有输入和输出操作
B、用C语言实现的算法可以没有输出但必须要有输入
C、用C程序实现的算法可以没有输入但必须要有输出
D、用C程序实现的算法可以既没有输入也没有输出
7、定时器/计数器工作方式1是(  D   )。
  A、8位计数器结构                 B、2个8位计数器结构
  C、13位计数结构                  D、16位计数结构
8、C语言提供的合法的数据类型关键字是(  B   )。
A、Double       B、short          C、integer        D、Char
9、片内RAM的20H~2FH为位寻址区,所包含的位地址是(  B  )。
  A、00H~20H    B、00H~7FH     C、20H~2FH     D、00H~FFH
10、以下能正确定义一维数组的选项是(  B )。
A、int a[5]={0,1,2,3,4,5};            B、char a[ ]={0,1,2,3,4,5};
C、char a={"A","B","C"};               D、int a[5]="0123";
11、数据的存储结构是指(D   )。
A、存储在外存中的数据            B、数据所占的存储空间量
C、数据在计算机中的顺序存储方式  D、数据的逻辑结构在计算机中的表示
12、下列关于栈的描述中错误的是(C    )。
A、栈是先进后出的先性表  B、栈只能顺序存储
C、栈具有记忆作用        D、对栈的插入和删除操作中,不需要改变栈底指针
13、在寄存器间接寻址方式中,间址寄存器中存放的数据是( B   )。
  A、参与操作的数据                B、操作数的地址值 
C、程序的转换地址                D、指令的操作码
14、MCS-51单片机的复位信号是(  A   )有效。
  A、高电平          B、低电平       C、脉冲           D、下降沿
15、为了使模块尽可能独立,要求( B )。
A、模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B、模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
16、若MCS-51单片机使用晶振频率为6MHz时,其复位持续时间应该超过(  B   )。
  A、2μs          B、4μs           C、8μs           D、1ms
17、以下选项中可作为C语言合法常量的是(  A  )
A、-80         B、-080         C、-8e1.0       D、-80.0e
18、能够用紫外光擦除ROM中程序的只读存储器称为(  C   )。
  A、掩膜ROM    B、PROM        C、EPROM       D、EEPROM
19、以下不能定义为用户标识符是(  D  )。
A、Main         B、_0            C、_int          D、sizeof
20、下选项中,不能作为合法常量的是( B  )。//幂不能为小数
A、1.234e04      B、1.234e0.4      C、1.234e+4      D、1.234e0
21、以下叙述中错误的是(  C )
A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数
22、以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是(  D   )
A、feof(fp)       B、ftell(fp)       C、fgetc(fp)       D、rewind(fp)
23、存储16×16点阵的一个汉字信息,需要的字节数为(  A  )
A、 32           B、 64           C、 128           D、 256
24、已知1只共阴极LED显示器,其中a笔段为字形代码的最低位,若需显示数字1,则它的字形代码应为(  B  )。
  A、06H         B、F9H          C、30H           D、CFH
25、在C语言中,合法的长整型常数是(    A  )
A、 OL          B、 4962710       C、 324562&      D、 216D
26、以下选项中合法的字符常量是(   B  )
A、 "B"          B、 ’\010’         C、 68            D、 D
27、若PSW.4=0,PSW.3=1,要想把寄存器R0的内容入栈,应使用(   D   )指令。
  A、PUSH  R0   B、PUSH  @R0   C、PUSH  00H   D、PUSH  08H
28、在片外扩展一片2764程序存储器芯片要(   B    )地址线。
  A、8根         B、13根          C、16根         D、20根
29、设MCS-51单片机晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率应为(   C   )
  A、2MHz        B、1MHz        C、500kHz        D、250kHz
30、下列数据字定义的数表中,(   A   )是错误的。
  A、DW  “AA”     B、DW  “A”       C、DW  “OABC”   D、DW  OABCH
三、判断题
(  √ )1、在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。
(  × )2、在C语言的复合语句中,只能包含可执行语句。


(  √ )3、自动变量属于局部变量。
( ×  )4、Continue 和break都可用来实现循环体的中止。
( √  )5、字符常量的长度肯定为1。
( ×  )6、在MCS-51系统中,一个机器周期等于1.5μs。
( √  )7、C语言允许在复合语句内定义自动变量。
( √  )8、若一个函数的返回类型为void,则表示其没有返回值。
( ×  )9、所有定义在主函数之前的函数无需进行声明。
(  × )10、定时器与计数器的工作原理均是对输入脉冲进行计数。
( ×  )11、END表示指令执行到此结束。
(  √ )12、ADC0809是8位逐次逼近式模/数转换接口。
(  √ )13、MCS-51的相对转移指令最大负跳距是127B。
( ×  )14、MCS-51的程序存储器只是用来存放程序的。
( √  )15、TMOD中的GATE=1时,表示由两个信号控制定时器的的启停。
(  × )16、MCS-51的特殊功能寄存器分布在60H~80H地址范围内。
(  × )17、MCS-51系统可以没有复位电路。
( ×  )18、片内RAM与外部设备统一编址时,需要专门的输入/输出指令。
( √  )19、锁存器、三态缓冲寄存器等简单芯片中没有命令寄存和状态寄存等功能。
( √  )20、使用8751且 =1时,仍可外扩64KB的程序存储器。
四、简答题
1、在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?
答:   (1)确定T/C的工作方式——编程TMOD寄存器;

       (2)计算T/C中的计数初值,并装载到TH和TL;

       (3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器;

       (4)启动定时器/计数器——编程TCON中TR1或TR0位。
2、什么是重入函数?重入函数一般什么情况下使用,使用时有哪些需要注意的地方?

答:
多个函数可以同时使用的函数,称为重入函数。
通常情况下,C51函数不能被递归调用,也不能应用导致递归调用的结构。有此限制是由于函数参数和局部变量是存储在固定的地址单元中。重入函数特性允许你声明一个重入函数。即可以被递归调用的函数。
重入函数可以被递归调用,也可以同时被两个或更多的进程调用。重入函数在实时应用中及中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。
3、8051引脚有多少I/O线?他们和单片机对外的地址总线和数据总线有什么关系?地址总线和数据总线各是几位?
答:8051引脚共有40个引脚,8051的地址总线由P2和P0口提供,P2口是地址总线的高8位,P0口是地址总线的低8位;
数据总线由P0口提供;
P0口的地址总线和数据总线是分时进行的,P0口的地址总线需要外接地址锁存器完成地址锁存。
    地址总线共16位,数据总线是8位。
4、在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率?
答:在有串行通信时,定时器/计数器1的作用是串行口发生器。
串行口的波特率根据串行口的工作方式具有不同的计算方式:
方式0的波特率固定为晶体振荡器的十二分之一;

方式1的波特率=2SMOD.(定时器1的溢出率)/32;

方式2波特率=2SMOD.(fosc/64);

方式3波特率同方式1(定时器l作波特率发生器)。
5、如何消除键盘的抖动?怎样设置键盘中的复合键?
答:由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。
若抖动问题不解决,就会引起对闭合键的多次读入。对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行扫描,而是延时大约10ms后再进行。由于一个键按下的时间一般会持续上百毫秒,所以延迟10ms后再扫描处理并不迟。
复合键可以仿照计算机复合键的处理方法,通常可以假设一个键具有复合功能,再与其它减的键值组合成复合键。

1、矩阵式键盘的结构与工作原理
  在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

 

 

 

 

 

 

 

 

 

 


  矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别及编程方法如下所述。
  2、矩阵式键盘的按键识别方法
  确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
  行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
  1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。


  2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。


  下面给出一个具体的例子:
  图仍如上所示。8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。
  1、检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。


  2、去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。


  3、若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出:

   P1.7 1 1 1 0
   P1.6 1 1 0 1
   P1.5 1 0 1 1
   P1.4 0 1 1 1
  在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值
  4、为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。

 
  键盘扫描程序:
  从以上分析得到键盘扫描程序的流程图如图2所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
  键盘处理程序就作这么一个简单的介绍,实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。
  到本课为止,本站教程暂告一个段落!感谢大家的关心和支持!

 

 

 

 

 

 

 

 

 

 

 

矩阵按键部分由16个轻触按键按照4行4列排列,连接到JP50端口。将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。确定矩阵式键盘上何键被按下,介绍一种“行扫描法”。

行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法.判断键盘中有无键按下:
将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置:
在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

下面给出一个具体的例子:

 

 

电路图路径:G:\图片\电路图片\xl100097.jpg

 

 

 

8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。

1.检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。

2.去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。

3.                     若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出:

P1.7 1 1 1 0
 P1.6 1 1 0 1
 P1.5 1 0 1 1
 P1.4 0 1 1 1
 

 

  在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。

4.                     为了保证键每闭合一次CPU仅作一次处理,必须去除键释放时的抖动。

实验目的:
通过XL1000的16位矩阵按键, 在数码管上分别显示0---9,A,B,C,D,E,F。

接线方法:
1用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44.

2 接8位数码管的数据线。将数码管部份的数据口 JP5接到CPU部份的P0口JP51.

3 接8位数码管的显示位线。将数码管部份的显示位口 JP8接到CPU部份的P2口JP52.

参考程序:

;本程序实现扫描按键显示功能.

;分别按16个键盘显示分别显示数字123A456B789C*0#D

;键盘口P1,数码管显示第二位p21, 数码管段位p0口

 

 

 

org 0000h

ajmp main

org 0030h

main:

  mov      dptr,#tab   ;将表头放入DPTR

  lcall  key          ;调用键盘扫描程序

  movc a,@a+dptr    ;查表后将键值送入ACC

  mov      p0,a        ;将Acc值送入P0口

  CLR     P2.1        ;开显示

  ljmp main         ;返回反复循环显示

KEY:

 LCALL   KS         ;调用检测按键子程序

JNZ     K1          ;有键按下继续

    LCALL   DELAY2      ;无键按调用延时去抖

    AJMP    KEY          ;返回继续检测按键

K1: LCALL   DELAY2

     LCALL    DELAY2     ;有键按下延时去抖动

     LCALL    KS         ;再调用检测按键程序

 &nbs