1、单片机原理及应用实验教学指导书陈 玮 编莆田学院信息工程学院2015 年 9 月目录实验一 仿真系统搭建 1实验二 实验系统编程应用 7实验三 流水灯实验 9实验四 LED 数码管显示实验 11实验五 键盘实验 .13实验六 中断系统实验 .15实验七 51 定时器实验 .171实验一 仿真系统搭建一、实验目的了解实验设备的软硬件组成,包括 keil 单片机仿真软件的安装、设置与使用,单片机仿真调试软件的安装、设置与使用,单片机仿真器的功能、结构与使用,51 单片机实验板的电路结构、工作原理与使用。熟悉使用 keil 单片机仿真软件、仿真调试软件和实验板进行协调工作的方法。熟悉使用至少两种单片
2、机仿真系统建立、设置、调试工作项目的方法。二、实验原理整个实验系统由仿真调试软件(keil 单片机仿真软件、伟福仿真调试软件) 、单片机仿真头(伟福仿真器)和单片机最小板(51 单片机实验板)组成或使用Proteus 仿真系统进行硬件仿真。仿真软件进行项目的管理设置,仿真器进行软件的下载与单片机的仿真(IAP) ,实验板搭载建立各种外围电路。主要掌握的软件有 KEIL 编程软件、Proteus 硬件仿真软件和其他一些差用软件及硬件构造。整个实验系统使用时,若使用硬件仿真,第一步安装 KEIL 软件,第二步安装星研系列仿真调试软件,第三步将仿真器的数据口和电源口连接微机及实验板,进行仿真器驱动安
3、装。第四步将仿真头插入实验板插座(注意仿真头三角箭头标注引脚为第一脚) ,开机调试。若使用软件仿真,第一步安装 KEIL 软件,第二步安装 Proteus 硬件仿真软件,然后用 Proteus 硬件仿真软件进行电路构建,最后进行程序调试。1、Keil 软件的安装设置:2启动后,点击 Project 菜单新建项目。新建项目后,选择仿真单片机型号,并新建或加入程序文件。3编写加入 C 语言程序后就可以对项目进行设置,进而使用 Project 菜单进行编译、连接和调试运行等操作。项目的设置包括 Target 菜单中的单片机振荡频率,debug 菜单中的仿真方法。2、伟福仿真调试软件安装后为了与 Ke
4、il 软件协调工作所必须的设置:第一步:设置前的准备 在设置前,必须先安装好 VW 调试软件和 Keil 调试环境,选择好安装路径。图 1-7 项目设置4并在伟福的仿真器设置中选择 KEIL 的安装路径作为编译器路径。第二步:安装 V8/V5/SH51/SP51 仿真器在 Keil 硬件驱动 启动 VW 调试环境,打开“帮助”菜单下的“安装 KEIL 驱动” ,在弹出的对话框中正确选择已经安装的 keil 安装路径。第三步:调试模式设置 在 Keil uVision2 中打开项目,选择 ProjectOptions for Target切换到“Debug” 选项卡,将默认的 Use Simul
5、ator(使用软件模拟器)切换到Use.“XXX”,选择“伟福 V 系列仿真器”(WAVE V series Driver 为英文版) ,然后将以下的两项都选中:Load Application at Sta,Go till main,然后点击 Settings,进入仿真器设置对话框。53、proteus 软件的安装设置:安装 Proteus7.2 以上版本后,安装注册的 key安装完毕后运行 就可以打开如下 proteus 仿真电路软件界面。6在原理图编辑窗口中,将拾取的各种元器件放入并进行连线完成电路的设计。然后在 keil 软件中编写程序并通过 options for Target 菜单
6、配置生成 HEX 文件,最后在 proteus 仿真电路中的单片机模块左键双击,弹出如下对话框,在 program file栏中选择前面生成的 HEX 文件即可进行仿真调试。7三、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51 单片机仿真调试软件,伟福 V 系列仿真调试软件,Proteus仿真软件四、实验内容分析了解单片机仿真平台的构成与搭建的基本知识,了解几种常见单片机仿真平台的构成与基本原理。安装并设置 keil 单片机编程软件与 Proteus 仿真软件(或伟福仿真器调试平台) 、AGSI 软件仿真板,并使之协调工作。设置完成后,在 keil 单片机
7、仿真软件上建立 C 语言的工作项目与程序文件,并进行简单的调试。进而熟悉几种仿真软件以及各种调试命令。五、评分标准实验时实验的完成情况实验报告的书写实验二 实验系统编程应用一、实验目的熟悉使用 keil 仿真软件、伟福仿真调试软件编写 C51 单片机程序的编写过程以及调试运行步骤。熟悉在 C51 中各种类型变量的定义方法,以及各种常用程序结构的编写方法。学习编写基本的单片机程序。二、实验原理C51 定义的任何数据类型必须以一定的存储类型定位,在 8051 的某一存储区中。说明的一般格式:变量名 C51 对单片机的不同存储区域定义了不同的存储类型,它们的关系如下: 存储类型 对应的存储区域 8d
8、atabdataidataxdataCode 直接寻址片内 RAM(128 字节)可位寻址的片内 RAM(16 字节) ,允许位与字节混合访问间接寻址片内 RAM,可访问全部片内 RAM(256 字节)片外 RAM(64K)程序存储区(64K)另外 8051 单片机片内还有有 21 个特殊功能寄存器(SFR) ,它们分布在片内RAM 的高 128 字节中,特殊功能寄存器中还有 11 个可位寻址的寄存器。在 C51 中,特殊功能寄存器是通过关键字 sfr 来定义,而其中可位寻址的位则用 sbit 来定义。大部分特殊功能寄存器及其可位寻址的位的定义在 reg51.h、reg52.h 等相应的头文件
9、中已给出,使用时只需在源文件中包含相应的头文件,即可使用 SFR 及其可寻址的位;而对于未定义的位,使用之前必须先定义。另外在 C51 中增加了位数据类型。位变量用关键字 bit 来定义,它的值是一个二进制位。三、实验设备与器件微机,KEIL C51 单片机仿真调试软件,伟福 V 系列仿真调试软件等。四、实验内容使用 KEIL 或伟福单片机仿真调试软件完成以下程序的编写,要求使用 C51 编写并进行调试观察各个变量的存放情况及结果:1980524503 的编程。有两个数 a 和 b(类型不限) ,根据位变量 c,d 的内容转向不同子程序C=0,d=0 则 m=a+b;C=1,d=0 则 m=a
10、-b;C=0,d=1 则 m=a*bC=1,d=1 则 m=a/b。*定义变量 a,b,c 其中 a 为内部 RAM 的可位寻址区的字符变量;b 为外部数据存储区浮点型变量;c 为一个位变量;写出他们的完整定义。*编程将内部数据存储区的 20H 单元和 35H 单元的数据相乘,结果存到外部数9据存储区中(位置不限) 。*完成以下表达式 P1.2=P1.4*ACC.0+ACC.7五、评分标准实验时实验的完成情况实验报告的书写10实验三 流水灯实验一、实验目的进一步熟悉 keil 仿真软件、proteus 仿真软件的使用。了解并熟悉单片机I/O 口和 LED 灯的电路结构,学会构建简单的流水灯电路
11、。掌握 C51 中单片机 I/O口的编程方法和使用 I/O 口进行输入输出的注意事项。二、实验原理MCS-51 系列单片机有四组 8 位并行 I/O 口,记作 P0、P1、P2 和 P3。每组 I/O口内部都有 8 位数据输入缓冲器、8 位数据输出锁存器及数据输出驱动等电路。四组并行 I/O 端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O 端口用作双向输入输出口;当系统作外部扩展时,使用 P0、P2 口作系统地址和数据总线、P3 口有第二功能,与 MCS-51 的内部功能器件配合使用。图 P1口的位结构本实验用到的 P1 口内部结构如图 3-1 所示。作输出时:输出 0
12、 时,将 0 输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出 1,下面的场效应管导通,输出引脚成低电平。输出 1 时,下面的场效应管截止,上面的上拉电阻使输出为 1。作输入时:P1 端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。为了能读到真实的引脚信号,下面的场效应管必须截止,即锁存器的内容必须是 1。为了能正确读取引脚信号,锁存器必须先写 1。通过 C51 程序的编写,可以使 I/O 口的每根引脚在不同的时间输出不同的 0、1 信号,从而控制外部的设备。三、实验设备与器件11硬件:微机、单片机仿真器、单片机实验板、连线
13、若干软件:KEIL C51 单片机仿真调试软件,proteus 系列仿真调试软件四、实验内容用 proteus 或其他仿真软硬件设计流水灯电路,将仿真实验板上 51 单片机的P1 口的 8 根线与实验板上的 8 位 LED 灯连接,I/O 口的一根引脚控制一个 LED 灯。根据实验板上 LED 灯的硬件连接,编写程序使 8 个 LED 灯从最低位依次点亮,每次只亮一盏灯。依此循环。*在此基础上编写程序使用一根 I/O 线接一开关控制流水灯流向。*在此基础上编写程序使 8 个 LED 灯从两边向中间循环点亮。五、评分标准实验时实验的完成情况实验报告的书写12实验四 LED 数码管显示实验一、实验
14、目的熟悉 keil 仿真软件、proteus 仿真软件、软件仿真板的使用。了解并熟悉一位数码管与多位 LED 数码管的电路结构、与单片机的连接方法及其应用原理。学习 proteus 构建 LED 数码管显示电路的方法,掌握 C51 中单片机控制 LED 数码管动态显示的原理与编程方法。二、实验原理LED 显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段 LED,这种显示器有共阴极与共阳极两种。af begcd dp1 2 3 4 510 9 8 7 6g f a be d c dp(a) 共阴极 (b) 共阳极 (c) 管脚配置图 LED显示器共阴极 LED 显示器的
15、发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;共阳极 LED 显示器的发光二极管阳极并接。七段 LED 数码管与单片机连接时,只要将一个 8 位并行输出口与显示器的发光二极管引脚相连即可。8 位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制发光二极管的 8 位字节数据称为段选码。多位七段 LED 数码管与单片机连接时将所有 LED 的段选线并联在一起,由一个八位 IO 口控制,而位选线分别由相应的 IO 口线控制。如:8 位 LED 动态显示电路只需要两个八位 IO 口。其中一个控制段选码,另一个控制位选。由于所有位的段选码皆由一个 IO 控制,因
16、此,在每个瞬间,多位 LED 只可13能显示相同的字符。要想每位显示不同的字符,必须采用动态扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,位选控制 IO 口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符,段选控制 IO 口输出相应字符段选码。如此轮流,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。由人眼的视觉特性,每一位 LED 在一秒钟内点亮不少于 30 次,其效果和一直点亮相差不多。三、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL
17、 C51 单片机仿真调试软件,proteus 系列仿真调试软件四、实验内容用仿真软件构建一个 6-8 位的 LED 数码管显示电路,对软件仿真板中的多位LED 数码管的极性进行判断。使用实验板上 51 单片机的 P2 口做位选,P0 口做段选,连接实验板上的 6 位 LED 数码管。应用动态显示的原理,编写程序使 6 位 LED数码管在开始时显示“654321” ,过一段时间后自动改为显示“123456” 。五、评分标准实验时实验的完成情况实验报告的书写14实验五 键盘实验一、实验目的熟悉 keil 仿真软件、proteus 仿真软件的使用和实验板中行列式键盘的使用。了解并熟悉行列式键盘的电路
18、结构、与单片机的连接方法及其工作原理,理解掌握 C51 中单片机控制行列式键盘中判断按键是否按下、按键的识别、按键的消抖分别是如何实现的。二、实验原理键盘是单片机系统中通用的输入设备,用于向系统输入数据或控制信息。键盘中一般矩阵式(行列式)键盘用得较多,适用于按键数量较多的场合。矩阵式键盘由行线和列线组成,按键位于行线、列线的交叉点上。当键被按下,则其交点的行线和列线接通。行和列可分别用两个 I/O 口来控制。D7D6D5D4D3D2D1D0I/O接口判断是否有键按下时,行线通过上拉电阻接5V 上,而先使所有列线为低电平(IO 输出 0) ,再读行线状态(输入口) ,当无键按下时,所有行线为高
19、电平,即读到“全 1”数据;当有某键按下时,总会有一根行线为低电平,即读到的数据不全为“1” 。按键的识别(识别键的行列位置)有两种方法:扫描法和反转法。反转法将行线接一并口,做输出方式;列线接一并口,做输入方式。使所有行线为低电平(送全“0” ) ,读入列线值,为“0”的那列,即按键所在列;反过来,使行线做输入方式,列线做输出方式。将刚读到的列线值输出,然后读行线值,为“0”的+5V15那行,即按键所在行。编程时使用 P1=0x0f;m=P1;P1=0xf0;n=P1;mn=m|n;即可得到按键的键值,每一个按键都有自己唯一的键值。按键或键盘都是一个机械开关,键的按下和放开是利用机械触点的闭
20、合和断开来实现的。由于机械触点的弹性作用,一个按键开关在闭合及断开瞬间均有一连串的抖动,抖动的时间长短由按键的机械特性决定,一般为 510ms。为了确保按键动作只确认一次,必须消除抖动的影响。一般采用延时的方法。三、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51 单片机仿真调试软件,proteus 系列仿真调试软件四、实验内容使用 proteus 仿真软件构建一个行列式键盘,实验板上 51 单片机的 P1 口的高 4 位和低 4 位分别做行线和列线,构建一个 4*4 的行列式键盘。应用行列式键盘的反转法识别按键的原理,编写程序控制至少 3 个按键,使每个按
21、键按下时能在实验板的一个多位数码管中分别显示一个不同的数。五、评分标准实验时实验的完成情况实验报告的书写16实验六 中断系统实验一、实验目的熟悉 keil 仿真软件、proteus 仿真软件的使用和单片机外部中断的使用。了解并熟悉 51 单片机中中断的概念,中断处理系统的工作原理。理解 51 单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。熟悉中断处理特别是外部中断处理的过程,掌握中断处理子程序的书写格式和使用方法。二、实验原理现代的计算机都具有实时处理功能,能对外部发生的事件如人工干预、外部事件及意外故障做出及时的响应或处理,这是依靠计算机的中断系统来实现的。51 单片机
22、内部有一个中断管理系统,它能对内部的定时器事件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进行自动的检测判断,当有某个事件产生时,中断管理系统会置位相应标志通知 CPU,请求 CPU 迅速去处理。CPU 检测到某个标志时,会停止当前正在处理的程序流程,转去处理所发生的事件(针对发生的事件,调用某一特定的函数,称为该事件的中断服务函数) ,处理完以后,再回到原来被中断的地方,继续执行原来的程序。外部中断请求0内部定时器0外部中断请求1内部定时器1内部 T串行口 R源允许 总允许允许中断寄存器 中断优先级寄存器中断源标识符中断源标识符高优先级中断请求中断矢量低优先级中断请求中断矢量T发
23、送R接收INT0INT1查询硬件17MCS51 单片机最典型的有 5 个中断源(外部中断 0、1,内部定时器中断0、1,串口中断) ,具有两个中断优先级。两个外部中断:(P3.2 INT0、P3.3 INT1)上输入的外部中断源,低电平或负跳变有效,置位 TCON 中的 IE0 和 IE1中断请求标志位。通过外部中断源触发方式控制位 IT 可以使外部中断为电平触发方式(=0)或边沿触发方式(=1) 。另外控制中断允许寄存器 IE 可以开放中断。使用 MCS51 的中断,要为使用到的中断源编写中断服务程序。C51 为中断服务程序的编写提供了方便的方法。C51 的中断服务程序是一种特殊的函数,它的
24、说明形式为:void 函数名(void) interrupt n using m 函数体语句 这里,interrupt 和 using 是为编写 C51 中断服务程序而引入的关键字,interrupt 表示该函数是一个中断服务函数,interrupt 后的整数 n 表示该中断服务函数是对应哪一个中断源。 三、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51 单片机仿真调试软件,proteus 系列仿真调试软件四、实验内容用 proteus 仿真软件设计一个仿真实验板,将实验板上单片机的 INT1 和 INT0引脚和按键引脚相连,选将按键作为外部中断请求按键,
25、用中断法判断按键,当所选按键被按下时,发出中断请求,引起外部中断。自己设计一个被触发事件来验证中断的发生。编写主程序和中断程序,完成以上要求。五、评分标准实验时实验的完成情况实验报告的书写18实验七 51 定时器实验一、实验目的熟悉 keil 仿真软件、proteus 仿真软件的使用和单片机定时程序的编写。了解 51 单片机中定时、计数的概念,熟悉 51 单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在 C51 中的设置与程序的书写格式以及使用方法。二、实验原理8051 型单片机有两个十六位定时/计数器 T0、T1,有四种工作方式,跟定时/计数器
26、相关的特殊功能寄存器有这样几个:方式控制寄存器 TMOD;D7 D6 D5 D4 D3 D2 D1 D0GATE C/T M1 M0 GATE C/T M1 M0M1、M0 的状态决定定时器的工作方式,定时和外部事件计数方式选择位C/T,GATE 与 TR0、TR1 配合决定定时/计数器的启停。加法计数寄存器 TH0、TH1 (高八位)TL0、TL1(低八位) ;定时/计数到标志 TF0、TF1(中断控制寄存器 TCON) ;定时/计数器启停控制位 TR0、TR1(TCON) ;定时/计数器中断允许位 ET0、ET1(中断允许寄存 IE) ;定时/计数器中断优先级控制位 PT0、PT1(中断优
27、 IP) 。MCS-51 单片机定时计数器的工作原理如下图所示, 12振 荡 器T1端 TR1GATEINT1端 C/T = 0C/T = 1 TL1(8位 )TH1(8位 ) TF1中 断控 制定 时 计 数 器振 荡 器端端位 位 中 断控 制定 时 计 数 器振 荡 器端端位 位 中 断控 制定 时 计 数 器单片机内部的定时计数模块,在定时时,对工作频率的 12 分频进行计数,先19记入 TL 后记入 TH,直到溢出为止,根据 TL、TH 内的初值不同可以定出不同的时间;在计数工作方式时,对 T0(T1)引脚的输入脉冲进行计数,将计数值记入TL、TH。当定时/计数溢出时,会引起中断。计
28、数初值与定时时间的关系为:T = 12(T_all a)/fosc 定时间隔为 T,计数初值为 a。所以有计数初值 a =Tfosc/12,THx = a / 256,TLx = a % 256。定时器均有一个最大定时时间,对于长时间的定时需要,可以将定时间隔为固定的较小时间,通过另设一全局变量 ah1 用于计数,累加固定的较小定时时间来进行。使用 MCS51 单片机的定时/计数器的步骤是:1设定 TMOD,确定:工作状态(用作定时器/计数器); 工作方式;控制方式。2设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式 1 和方式 2 时的最大计数间隔取决于使用的晶振频率
29、 fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 3确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断:ET0 = 1; EA = 1;还需要编写中断服务函数:void T0_srv(void) interrupt 1 using 1TL0 = a % 256;TH0 = a / 256;中断服务程序段 4启动定时器:TR0(TR1)= 1。 三、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干20软件:KEIL C51 单片机仿真调试软件,proteus 系列仿真调试软件四、实验内容利用 proteus 仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位 LED 数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为 1S。刚开始 LED 数码管显示 0,每过 1S 数码管的显示值增加1,当显示到 9 时返回 0,依此反复。然后再设计 00-59 的两位秒表显示程序。五、评分标准实验时实验的完成情况实验报告的书写