4版 13章单片机实验指导_第1页
4版 13章单片机实验指导_第2页
4版 13章单片机实验指导_第3页
4版 13章单片机实验指导_第4页
4版 13章单片机实验指导_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第13章 实践训练 13.1 概述本章旨在对学生的软硬件设计能力和软硬件联调及纠错能力进行训练,使学生掌握嵌入式系统的开发方法和技能。嵌入式系统的开发步骤如下:分析课题需求确定方案软硬件设计软硬件联调及纠错绘制印刷电路板焊接形成产品软硬件设计、软硬件联调及纠错是开发的关键步骤,实验是学习单片机必需手段和必由之路。本章的实践内容,紧密结合课堂教学,每个实验先有示例程序(汇编语言和C语言程序示例)然后由学生自行设计。用跳线改变接口的设计安排。本章实验提供的硬件电路可以在面包板搭建(此时必须另购编程器),可以在编者提供的可在线编程ISP实验板进行,可以在外购的实验台上进行(只需改端口号),还可以通过

2、Proteus做成80C51虚拟实验板进行。编者提供的可在线编程ISP实验板具有在线编程(又称为烧写或下载)功能和程序运行功能,因此它既是编程器又是实验板。为考虑用户的电脑接口差异,可选择不同的下载方式: 并口下载采用ATMEL公司的89S52(内含8K EEPROM的增强型51单片机),通过25针D型接头的连接线连接电脑和实验板,使用软件Microcontroller ISP Software(需先安装)。串口下载COM口或USB下载。串口下载使用软件SSTEasyIAP11F.EXE(勿需安装)。单片机采用SST公司的89E58RD(内含32K EEPROM的增强型51单片机),通过9针D

3、型接头的连接线将实验板和电脑COM口相连接,如果加接一条COM和USB的转换线,可用USB接口下载。如果是Proteus的虚拟实验板,课件中提供了Proteus的虚拟实验板电路图,鼠标点击单片机,选中的文件就虚拟下载了。实验板为读者综合使用内部资源提供了参考,实验板可以开出如下实验: n 汇编语言和C语言(C51)程序设计和调试方法n 并行口的输入、输出实验n 数码管的显示与控制n 中断实验(如作报警器)n 定时/计数器的应用设计(定时、计数、音乐)n 串行通信(单片机和单片机、单片机和PC机的通信)n 键盘控制程序设计(选做)n 串行EEPROM(I2C接口)(选做)n 串行D/A转换(SP

4、I接口)(选做)n 串行A/D转换(SPI接口) 选做)n LED电子显示屏汉字显示程序设计(选做,需另配汉字显示屏)n LCD 液晶显示屏显示程序设计(选做,需另配LCD显示屏)如果综合利用上述资源用户可以设计诸如多功能数字钟、波形发生器、数字电压表、音乐盒、频率计、抢答器、计算器、模拟量采样等应用系统作为学生的课程设计或毕业设计的实验平台。I/O端口用途P08位拨码开关输入; 4矩阵键盘(使用键盘时8位拨码开关应处于OFF态)。P1.0P1.56位数码管位选。 P1.4和P1.5也作 AD549的数据线和时钟线(更改跳线J2、J3位置,此时这两位数码管不受控)。P1.0控制喇叭(更改跳线J

5、9、J10位置)P1.6 P1.7串行IIC EEPROM (24C04)时钟线SCL和数据线SDA (跳线J1连接)。P2.0P2.7段数码管段选;P2.7控制数码管小数点;跳线J6连接时 P2.7作TLC549片选信号CSP3.0、P3.1UART串口MAX232的TXD、RXDP3.2外部中断输入INT0 (跳线J5连接)P3.3SPI 接口TLC5616数据线DIN。(虚拟板也作 TLC549的数据线SDO) P3.4计数器 T0外部脉冲 (跳线J6连接)。 TLC5615片选信号CS (跳线J8连接)P3.5SPI 接口TLC5615时钟线SCLKP3.6留用,如外部扩展,作总线写W

6、R信号 (虚拟板作 TLC5615片选信号CS)P3.7留用,如外部扩展,作总线读RD信号 (虚拟板作 TLC549片选信号CS)带锁按压开关W1(ISP/EXE)并口编程方式时为编程/执行控制,按下为编程状态,弹起为执行程序状态。串口编程方式时 W1为无效,应一直处于弹起状态,带锁按压开关W2-INT0J5的跳线连在INT0端时,每按一次 W2,脉冲源输出电平变化一次,产生中断INT0所需的外部中断请求信号,注按两次才会产生一个脉冲。带锁按压开关W3-T0J6的跳线连在T0端时,每按一次 W3,脉冲源输出电平变化一次,产生T0定时/计数器的所需的外部计数脉冲,注按两次才会产生一个脉冲。4.

7、硬件实验板的单片机端口安排、跳线、开关的使用见表12.1. 硬件实验板和虚拟实验板除TCL549,TCL5615 的连线不同外,其他线路相同。表12. 1 实验板单片机端口、跳线、开关的使用13.3 仿真调试技术目前嵌入式系统的仿真调试软件很多Wave、Keil、Proteus等,它们都带有汇编器,Keil还带有C51编译器。Wave在本书的前3版都有所介绍,由于是全中文,对初学者或英文不熟悉的仍可使用,使用方法本教材的电子教案附件提供,Wave软件在Wave公司的网站下载,下面重点介绍Proteus由于它不带C51编译器,对Keil也作简单介绍。13.3.1 Proteus 概述Proteu

8、s是英国Labcenter Electronics公司出品的电子设计自动化软件,它能完成软硬件设计仿真及纠错绘制印刷电路板产品的全套设计过程,提高了设计效率,缩短了产品的开发周期。软件的最大特色之处就是可以仿真包括外围接口、模数混合电路在内的嵌入系统,是一款不可多得的优秀单片机系统仿真平台。实现了以软代硬,以虚拟代现实的全新的实验模式。充分利用Proteus单片机仿真技术,使读者只要有一台电脑,就可以随时随地进行单片机的系统仿真实验,从而更快更有效地掌握单片机技术。Proteus包括ISIS和ARES两部分: ISIS(Intelligent Schemitic Input System):用

9、于电路原理图的设计及交互式的仿真调试。ISIS提供了包括电阻、电容、三极管、集成块等30多个元件库数千种元器件和多种现实存在示波器、数字电压表等虚拟仪器仪表,可以直观地仿真数字电路和模拟电路和微控制器系统的功能与结果。ISIS的工作界面如Error! Reference source not found.所示。Error! Reference source not found.中仅简要标示了一下软件界面上的操作功能面板,而软件的详细操作与使用需要读者自己查阅相关的帮助文献资料。 ARES(Advanced Routing and Editing Software):ARES是一款高性价比的PC

10、B设计软件,用于印刷电路板的设计并产生光绘输出文件。其工作界面如Error! Reference source not found.所示。Proteus支持的单片机类型有8051系列、AVR系列、PIC系列、68000系列、MSP430、ARM7/LPC2000系列以及8086等。最新Proteus的demo版本可以到Labcenter公司的网站http:/www.labcenter.co.uk/上下载。Proteus的demo版软件除了不能存盘与打印外,其余功能与正式版的没有差别。图13. 4 ISIS软件界面及其功能位置示意图图13. 5 ARES软件界面截屏图ISIS的主菜单栏包括文件、

11、视图、编辑、工具、库、设计、图形、源程序、侦错、模板、系统设置、帮助等,使用下拉菜单选择具体功能,其中的快捷工具栏的工具很多,分为横排的标准工具栏和竖排的绘图工具栏,简要介绍如图13.6所示,图中的(a)(d)我为标准工具栏,(e)为绘图工具栏,绘图工具栏的功能见图中的英文提示,有的还有下拉菜单。(c) 编辑操作对选中的对象进行撤销、剪切、复制、移动、旋转、删除从器件库中选择元器件、标识、封装 等(a) 文件操作新建、打开 保存 导入、 导出、 打印、标识(b) 视图显示控制刷新 网格开关 原点 中心 放大 缩小 全图 局部 (e) 绘图工具13.3.2 Proteus中51单片机应用系统的开

12、发应用Proteus开发51单片机应用系统的步骤如下:绘制应用系统的硬件电路图(. DNS)编辑源文件(.ASM或. C 并存盘). 将源文件进行编译和连接生成.HEX文件 仿真调试及纠错绘制印刷电路板(*。DSN)焊接形成产品1. 用ISIS绘制单片机应用系统的硬件电路图启动ISIS后出现图13.4画面,点击对象选择窗口的P或L选择所需要的微处理器或元器件,Proteus所支持的元器件中英文如表3.2表3.2 (见林立书P212)分类元器件类型选择好的元器件点击“OK”按钮后,元器件型号会列于对象选择窗口,右击其型号,该型号的图会出现在图像编辑窗口,右击该元器件图,根据出现的菜单可对其进行旋

13、转、翻转等操作,以摆好元器件的位置,双击该元器件图,出现元器件编辑窗口,对该元器件编号,封装等进行选择。利用图13.1最左边的绘图工具画总线,系列线或单根的线,(直接点击两个元器件,ISIS也可以自动走线。)点击绘图工具的LBL可以给线加标签,对于同名标签的线是互连的。选择绘图工具中 的POWER和GROUND画出电源和地,电路原理图画好后存盘。 图13. 1 基于Proteus的80C51实验板仿真电路图 点击(选中)、双击、右击图中的某一部件,都会对该部件进行操作 2. 编辑源文件 利用文本编辑器编辑源文件,源文件可以是汇编语言(.ASM)也可以是C语言(. C)。如果是汇编语言先要选择汇

14、编工具,Proteus软件包带有8051单片机汇编语言开发工具ASEM51,该工具已经将交叉汇编和链接两步过程合二为一,但它不支持重定位段和外部符号,因此要求所有的汇编代码在一个文件中。选择汇编工具的方法是在ISIS界面主菜单Source中设置好相关参数,汇编工具设置位置如Error! Reference source not found.所示,在Tool栏的下拉中选ASEM51。 (a) 设置菜单项图 (b) 设置界面13.7 ISIS中8051汇编工具链的设置Proteus不带C语言的编译工具,必须使用C51编译和连接,而Keil带有C语言的编译,因此要先由Keil 的C51编译器编译,生

15、成.HEX文件,再进行调试。编辑源程序的方法是点主菜单Source,出现如Error! Reference source not found.(a) 菜单项,选择添加/移除源程序,尔后出现Error! Reference source not found.(b)的设置界面,图中左上部设置应用系统的微控制器80C51(U1和电路图的80C51标签要一致),如果电路中不存在微控制器,该项是无效的;右上部源程序工具链的选择,点击下拉选择其中的ASEM51选项;图中下部是用户源文件的选择位置,点击Change按钮找用户编写的源程序文件,点击New则新建源文件。Prot(a) 设置菜单项图 (b) 设置

16、界面13.8 ISIS中8051汇编源文件设置一般来讲一片8051单片机对应一个源文件,一个电路中容许有多个8051单片机,可以对应多个汇编源文件。3. 将源文件进行编译和连接生成.HEX文件汇编源码文件设置好之后,接下来就可以点击Source菜单下的Build All项就可以启动汇编好连接过程,如Error! Reference source not found.所示。Error! Reference source not found.(b)是汇编成功后出现的提示信息,如果汇编过程中出现错误,其文本框中也会给出相应的错误提示,用户根据提示处修改源文件,再次汇编,直至通过为止。(a) 启动汇编

17、菜单 (b) 汇编成功后的提示信息框图13.9 ISIS单片机仿真电路中汇编源码文件的汇编汇编成功后,生成的.HEX编程文件会自动地装载到8051单片机器件中,如果加载非当前汇编的文件,双击图中的单片机,出现如Error! Reference source not found.画面,可以为单片机选择新的执行文件,为使实验效果观察更为有利,也可以更改时钟频率。 图13. 2 ISIS单片机属性设置对话框4. Proteus的仿真调试将.HEX文件加载到原理图文件的单片机中,利用单步、断点等运行手段仿真调试,发现错误,修改程序或硬件电路。在Proteus中的调试均采用软件仿真的方式进行。点击主菜单

18、Debug,出现如Error! Reference source not found.所示的菜单项,点击Start/Restart Debugging按钮,或者点击ISIS仿真面板上的Step和Pause按钮均可以启动仿真调试,如果有错误,就会出现提示信息,依据提示信息将故障排除。程序调试有单步、断点、全速等多种运行方式,在DEBUG菜单项选用,其中 Execute:全速执行,执行完程序后退出调试状态。Step Over:如是子程序调用语句,将视为一条指令执行。Step Into:遇到子程序调用语句,进入子程序中,跟踪执行。 Step Out:执行程序直到当期的子程序返回。需要注意的是,仿真面

19、板上的STEP一般不是指令的单步操作,而是指仿真动画的单步方式,具体使用的时候应该图13. 3 DEBUG菜单项加以区别。在调试过程中,当程序运行暂停时,点击图13.11中的3.8051 CPU,选择你希望看到的单片机相关的调试信息,如Error! Reference source not found.所示。调试窗口中所显示的寄存器或者存储器的内容是不能手动修改的,而只能查看其结果。在源码显示窗口中,点击鼠标右键,进一步设置还可以显示行号、地址、机器码等信息,同时也可以设置断点,如Error! Reference source not found.(d)中第8行处的实心圆圈所示。 (a) 80

20、51寄存器窗口 (b) 8051特殊功能寄存器窗口 (c) 8051内部RAM窗口 (d) 8051源代码窗口图13. 4 Proteus的8051各种调试信息显示窗口更为方便的查看多个变量值的方法是可以将它们集中在Watch Window窗口中,如Error! Reference source not found.(a)所示,其查看变量的添加可由鼠标右键弹出菜单设置,如Error! Reference source not found.(b)所示。添加方式有按照名称和按照地址两种,分别如Error! Reference source not found.(a)和(b)所示。 (a) Watc

21、h窗口显示框 (b) Watch窗口设置弹出菜单图13. 5 Proteus的Watch Window窗口 (a) 按名称 (b) 按地址 图13. 6 Watch Window窗口的变量添加方式13.3.2图13.15 (a) (b)图13.2113.3.3 Keil和Proteus的联合使用,C51程序的仿真调试 Proteus不带C51语言的编译工具,但可以看到虚拟器件的执行效果,而Keil带有C语言的编译,同时它调试的方法修改手段等功能强大,充分发挥两者的长处,是不错的调试方法。pro-setup77 图13.2113.5 单片机编程(下载)方法使用Proteus可以完成产品的设计,这

22、只是纸上谈兵,最后必须完成产品的制作,少不了要将调试成功的程序的 *.HEX文件烧写进单片机(称为编程或下载)。编程有三种方式:并行口编程、串行口编程和USB编程。根据自己电脑的配置选择。它们是使用电脑的不同端口完成的。端口名和编号通过以下步骤可以查:我的电脑系统任务查看系统信息系统属性硬件设备管理器端口 各步出现的画面如13.17图所示图13.17查找电脑的端口的步骤几种不同编程的方式的差别见表13.4表13.4 不同编程的方式的差别编程方法并行口编程串行口编程USB编程电脑接口EPC打印端口LPT1(并行口)串行通信端口COM1按图13.4步骤查找正在使用的USB口占用的COM编号连接线2

23、5针通信线电脑25针D型插座实验板25针插座25针D型插头连接线RS-232通信线电脑COM口9针D型插座实验板9针插座9针D型插头连接线USB -RS 232转接线实验板9针插座电脑USB接口USB-COM转接线适用的单片机ATMEL AT89S52(内有8Kb ROM的增强型51单片机)SST公司的 SST 89E58(内有32Kb ROM的增强型51单片机)使用的软件SSTEasyIAP11F.exeUSB驱动软件SSTEasyIAP11F.exeSSTEasyIAP11F.exe(无须安装)一般单片机的网站都可以下载。使用USB编程时,需购买USB-COM转接线,其附带的软盘上USB驱

24、动软件,因为一般计算机有两个以上的USB接口,插到不同的USB插口,计算机安排的COM序号是不同的,你必须查你插上的USB接口使用的COM号码。本教材提供的实验板,三种编程方式的接口都已作在板上,当你购买实验板时软盘会提供相应软件及使用指南。不管哪种编程方式,除根据要求更换单片机外,实验板和实验程序不作任何改动。注意串口编程时W1键(EXE/ISP并口的执行转换按键)不起作用,使它处于弹高的位置。串口编程软件SSTEasyIAP11F.exe程序操作如下:1选择主菜单DetectChip/RS232,按图13.18(a)(b) (c)的顺序选择你的SST单片机型号和存储器模式(a)(b) (c

25、) 图13.18 选择单片机型号2OK后出现下面画面,选择实验板和计算机相连的COM口序号,波特率及晶振频率可不作修改,但COM口一定要根据你的计算机连接情况(见图13.4)作正确选择。如用USB接口要先查清楚你所接的USB对应的COM序号进行选择。如图13.4中USB接口对应是COM6,换一个USB口要查一次USB对应的COM序号图13.19 选择COM口序号3点击上图中最下行的中的Detect MCU 选项后出现图13.20画面 。点击图中“确定”以后,按实验板上的复位键,软件对单片机进行检测,被写的单片机的有关信息出现在图13.21中: 图13.20 图13.21 显示的单片机有关信息4

26、点击图13.21中Download后,圆圈中出现黑点,出现图13.22画面,选择(a)文件浏览(见上图圆圈),选择你欲下载的程序( .HEX)文件后点OK见图(b): 图13.22 选择下载的*.HEX文件出现图13.23警告信息:原有的信息将被清除,是否继续下载:答是。随后进入下载过程,出现图13.24滚动条。图13.24 程序下载下载完成。按单片机实验板的复位键后即可以执行已下载的程序。如重新下载再重复上述过程。用USB下载过程同上。并口编程的软件及操作说明见出版社华信网站的本教材的课件中,本节不作说明。13.5 实验指导 实验的方法有基于ISP实验板的和基于Proteus的两种,根据实验

27、室的条件选择。基于ISP实验板的硬件电路见图13.3,图中考虑到用户的自行扩展硬件;基于Proteus考虑画图的方便,所以两种电路在AD549和DA5615和并行口的安排上稍有差异,定时器和中断共用脉冲源,实验中根据采用的实验方法参考不同的电路图。基于Proteus的电路图见图13.25,该电路图会附在教材的课件上,直接在Proteus的ISIS上使用,作哪个实验就使用图的哪一部分。图中的按键和开关操作只需要用鼠标点击或拖动。当然读者也可以自行画实验电路图。图13.26 基于Proteus的虚拟实验板电路图 12.2.1 实验一程序设计一、实验目的 熟悉Proteus软件的基本操作。(2) 掌

28、握Proteus环境下80C51汇编程序的编辑、汇编及调试的方法。 掌握8051 C语言程序设计的方法 二、实验内容 搭建Proteus的8051单片机环境,直接点击教材配套的80C51实验板设计电路(读者也可自行绘制电路),进入基于Proteus的8051实验平台。实验板默认的时钟频率为11.0592MHz,读者根据需要可以在单片机属性对话框的时钟频率项中自行修改。 鼠标点击菜单“Source”“Add/Remove Source files”,弹出“Add/Remove Source Code Files”对话框后,点击“New”按钮按照提示信息建立一个汇编语言源文件,文件名自取,进入编辑

29、窗口键入以下实验程序后存盘。INDEXEQU20HSUMEQU21HORG0000HAJMPSTARTORG0100HSTART:MOVINDEX,#5MOVA,#0LOOP:ADDA,INDEXDJNZINDEX,LOOPMOVSUM,ASJMPSTARTEND 点击“Source” “Build All”,使用Proteus自带的汇编器对源程序汇编,生成.HEX格式编程文件。 点击仿真控制面板的暂停键,启动系统仿真。点击“Source” “Watch Window”打开变量观察窗口,在观察窗口中加入变量INDEX和SUM以及累加器ACC;点击“Debug” “8051 CPU”“Sourc

30、e Code”打开源码窗口。 使用快捷键F11,单步执行程序,观察Watch窗口中ACC、INDEX、SUM内容的变化情况。 在源码窗口最最后一条指令SJMP START处设置断点,执行后观察ACC、INDEX、SUM内容的变化。三、程序设计编写程序并在实验板上仿真调试。 将外部数据存储器0001H和0002H单元内容互换。 将外部数据存储器01001FH单元内容移到02002FH单元。 统计内部数据存储器从30H单元开始的十个字节中,正数负数和零的个数, 并分别置于R4,R5,R6中。 完成八位数除以八位数,即R2/R1=R3.R4。 将外部数据存储器005H单元的BCD码转换为ASCII码

31、放回原单元。 将外部数据存储器005H单元中的十六进制数转换成ASCII码放回原单元。 将R0中的二进制数转换成BCD码存于内部数据存储器的22H20H单元。 完成两个四字节数的相加(即32位数),和存于内部数据存储器的24H20H单元 完成两个四字节数BCD码数的相加,和存于内部数据存储器的24H20H单元 12.2.2 实验二并行接口一、实验目的 掌握8051单片机并行口的输入方式和输出方式的编程。 熟悉基于Proteus的虚拟80C51实验板的结构。 熟悉8051单片机并行口的Proteus仿真调试。二、实验内容 实验程序A实验仿真电路如Error! Reference source n

32、ot found.所示,单片机的P0口接8位拨码开关,P1口接6个数码管的位选,P2口接6个数码管的段选。编辑以下程序并运行,观察执行现象。为显示的现象更为清晰一些,可以将单片机的属性编辑对话框中将时钟频率调至1MHz,如Error! Reference source not found.所示。ORG0000HAJMPSTARTORG0100HSTART:MOVP1,#01HMOVA,#1NEXT:MOVP1,AMOVR3,#0LOOP:MOVR4,#0DJNZR4,$DJNZR3,LOOPRLASJMPNEXTEND图12. 7 8051单片机属性编辑对话框自编程序: 使第三个数码管各段轮流

33、亮。 使六个数码管共42段LED各段轮流亮。 实验程序B实验仿真电路如Error! Reference source not found.所示,将拨码开关的第几位置“ON”,第一个数码管则显示几。程序如下:ORG0000HAJMPSTARTORG0100HSTART:MOVDPTR,#TAB0MOVP1,#01HSTA1:SETBCMOVR0,#1ASP:MOVP0,#0FFHMOVA,P0ASP1:RRCAJNCLED;检测是哪个开关置“ON”INCR0CJNER0,#9,ASP1SJMPSTA1LED:MOVA,R0;R0为开关号MOVCA,A+DPTRMOVP2,ASJMPSTA1TAB

34、0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND自编程序:编写程序,完成拨1键置“ON”,第一个数码管显示“1”,拨2键第二个数码管显示“2”, 拨3键第三个数码管显示“3” 实验程序C数码管跑马程序,实验仿真电路如Error! Reference source not found.所示,参考代码如下:ORG0000HAJMPSTARTORG0100HSTART:MOVR0,#0;R0存放字形表偏移量WE:MOVA,#01H;A置数码管位选代码NEXT:MOVB,A;保存位选代码MOVP1,AMOVD

35、PTR,#TAB0;DPTR置字形表头地址MOVA,R0MOVCA,A+DPTR;查字形码表MOVP2,A;送P2口输出MOVR3,#0;延时LOOP:MOVR4,#0LOOP1:NOPNOPDJNZR4,LOOP1DJNZR3,LOOPMOVA,BRLA;指向下一位CJNEA,#40H,NEXT;6个数码管显示完否INCR0;指向下一位字形CJNER0,#10H,WE;0F显示完否SJMPSTARTTAB0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND自编程序:编写程序,完成拨1键置“ON”,6个数

36、码管轮流显示“1”,拨2键6个数码管轮流显示“2”,拨3键个数码管轮流显示“3” 三、程序设计编写程序并在实验板上仿真调试。 每两个数码管为一组交替点亮“8”。 对第四个数码管按照 一段亮二段亮三段亮全部亮灭一段灭二段灭三段灭四段全部灭方式,如此反复进行。 测试第1个拨码开关K1,当K1开关向上拔“ON”时,6个数码管同时实现“8”,当K1开关向下拔时,6个数码管同时灭。 将开关K1K6的置位情况显示在数码管上,开关置“ON”,对应数码管显示“0”;开关置“OFF”,对应数码管显示“1”。 将8位二进制开关K1K8的置数以十六进制方式显示在两位数码管上,如K1K8全部拨向下“OFF”,第一、二

37、个数码管则显示FF。12.2.3 实验三中断实验 一、实验目的 掌握8051单片机中断的产生及响应过程。 掌握8051单片机中断程序的编制。二、 实验内容实验电路如Error! Reference source not found.所示,将跳线JP1调至左边连接好INT0。脉冲源向单片机的外部中断。引脚提供中断所需的脉冲,每按两次开关SW2,电平变反一次,产生一个跳变沿,作为外部中断的中断请求信号。 实验程序AORG0000HAJMPSTARTORG0003H;中断服务RLAMOVP2,ARETIORG0100HSTART:MOVP1,#04H;第三个数码管亮MOVA,#01HMOVP2,AS

38、ETBEA;置EA=1SETBEX0;容许INT0中断SETBIT0;边沿触发中断SJMP$END 分析该程序的功能及实验现象。 仿真运行该程序,观察执行的现象是否和估计一致。注意:每按两次按钮, 产生一次中断,LED点亮有何变化, 叙述程序的执行过程。自编程序: 7个发光二极管(即一个数码管的7段)同时点亮,中断一次 ,7管同时熄灭,每中断一次 ,变反一次。 要求同,每中断一次 ,变反四次。 实验程序B记录并显示的中断次数(中断次数16 次),参考代码如下:ORG0000HAJMPSTARTORG0003HAJMPINT0RORG0100HSTART:MOVIE,#81H;容许INT0中断,

39、置EA=1SETBIT0;边沿触发中断MOVR0,#0;计数初值为0LOOP:MOVP1,#01;第一个数码管显示中断次数MOVDPTR,#TAB0;字形码表首址送DPTRMOVA,R0MOVCA,A+DPTR;查表MOVP2,A;显示SJMPLOOP;结束INT0R:INCR0;中断次数加1CJNER0,#10H,RET0;中断是否满15次MOVR0,#0;循环RET0:RETITAB0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND 分析该程序的功能及实验现象。 仿真运行该程序,观察执行的现象是否和

40、估计一致。注意:每按两次按钮, 产生一次中断,叙述程序的执行顺序。三、程序设计 使第六个数码管显示“H”,每中断一次,“H”左移一位。 利用实验板上的两位数码管,显示中断次数(次数不超过FFH)。 利用实验板上的三位数码管,用BCD码显示中断次数(次数不超过255)。 编程并运行,每中断一次,使置于“ON”的开关号显示在第一个数码管的相应段上。12.2.4 实验四定时/计数器 一、实验目的 熟悉8051单片机定时/计数器的应用。 掌握8051单片机定时/计数器的编程方法。二、 实验内容实验电路如Error! Reference source not found.所示,将跳线JP1调至右边连接好

41、T0。脉冲源向单片机的计数器T0提供外部计数脉冲,每按两次开关SW2,产生一个计数脉冲。 实验程序A使用查询方式计数外部脉冲,计满两个脉冲,LED显示段加1,参考代码如下:ORG0000HAJMPSTARTORG0100HSTART:MOVTMOD,#06H;计数方式2MOVTH0,#0FEHMOVTL0,#0FEH;计两个脉冲SETBTR0MOVP1,#3FHMOVA,#0COUN:JNBTF0,$;等待计满两个脉冲CLRTF0INCAMOVP2,ASJMPCOUNEND修改上述程序使计3个脉冲A 加1,并将A值显示在数码管上。 实验程序B使用中断方式计数外部脉冲,计满两个脉冲中断一次,LE

42、D显示段加1,参考代码如下:ORG0000HAJMPSTARTORG000BHINCAMOVP2,ARETIORG0100HSTART:MOVTMOD,#06HMOVTH0,#0FEHMOVTL0,#0FEHSETBEASETBET0SETBTR0MOVA,#0MOVP2,ASJMP$END修改上述程序使计3个脉冲中断一次,A 加1,并将A值显示在数码管上。 实验程序C实现一个简易电子琴。实验电路如Error! Reference source not found.所示,将跳线JP3拨至右边,使得P2.7脚的输出信号连通喇叭,Proteus中的喇叭与声卡相连,打开连接声卡的音响后可以听到输出的

43、声音。声音产生的基本原理是这样的:已知各音调的频率即知其周期,每过半个周期P2.7取反,送到P2.7接的喇叭后,即可从声卡输出该音调的声音,设计拨动按键K1-K8分别发出各音。各音调频率和要求的按键对应关系如Error! Reference source not found.所示。表12. 2 实验板所用Proteus元器件设备清单按键Kn12345678音调DoReMiFaSoLaXiDou频率(Hz)262294330349392440494523计数值(H)F88CF95CFA15FA68FB05FB90FC0CFC44简易电子琴的参考代码如下:ORG0000HAJMPSTARTORG0

44、01BHAJMPTINT1ORG0100HSTART:MOVP1,#04HMOVTMOD,#10H;写计时器控制字,T1方式计时SETBEA;开中断总开关SETBET1;允许T1中断SETBTR1ATEST:SETBCMOVR0,#0;R0置按键号MOVP0,#0FFHDO:MOVA,P0;读按键ROR:RRCA;查是哪键按下JNCMUSINCR0CJNER0,#08,RORSJMPATESTMUS:MOVA,R0MOVDPTR,#LEDAB;显示键号MOVCA,A+DPTRANLP2,#80HORLP2,AMOVDPTR,#TAB;查音律表MOVA,R0RLAPUSHACCMOVCA,A+D

45、PTRMOVTH1,APOPACCINCAMOVCA,A+DPTRMOVTL1,AACALLDAYSJMPATESTTINT1:CPLP2.7POPDPHPOPDPLMOVDPTR,#ATESTPUSHDPLPOPDPHRETIDAY:MOVR2,#0F0HDL2:MOVR3,#0F0HDL1:NOPNOPDJNZR3,DL1DJNZR2,DL2RETTAB:DW0F88CH,0F95CH,0FA15H,0FA68H;音律表DW0FB05H,0FB90H,0FC0CH,0FC44HLEDAB:DB06H,5BH,4FH,66H,6DH,7DH,07H,06H;显示字符表END 三、程序设计 利

46、用T0计数,使每计一个脉冲P2.7变反一次。 利用T0定时,使数码管的“8”字每隔100ms依次往下亮一个。 利用80C51实验板做一个秒表。 设计电子时钟,并将小时、分、秒送数码管显示。(提示:定时器是每100s中断一次,中断10000次即为1秒,计满60秒为1分,计满60分为1小时,计满24小时后又从零开始。)12.2.5 实验五串行通信实验一、实验目的 掌握8051单片机串行通信的工作原理。 掌握8051单片机串行通信的编程方法。二、 实验内容实验电路如Error! Reference source not found.所示,将跳线JP2调至左边连接好R1IN和T1OUT,使得单片机处于

47、自发自收的电气连接状态。设置好合适的波特率和数据格式,串口虚拟终端可以监视单片机串口的输出内容。还需注意一点,由于串口虚拟终端接MAX232的输出,电平有个“反转”,因此在串口虚拟终端的属性设置中好“Inverted”电平属性,如Error! Reference source not found.所示。图12. 8 虚拟串口终端属性设置对话框单机串口自发自收的参考程序如下:ORG0000HAJMP STARTORG0100HSTART:MOVTMOD,#20HMOVTH1,#0F4H;假定fosc=11.0592MHzMOVTL1,#0F4H;设定波特率2400SETBTR1MOVR0,#0M

48、OVSCON,#50H;方式1发送,容许接收ABC:CLRTIMOVP1,#0FFHLCALLDAY1MOVA,R0MOVSBUF,A;发送INCR0CJNER0,#10H,RGISMOVR0,#0RGIS:JNBRI,$CLRRIMOVA,SBUF;接收MOVDPTR,#LEDABMOVCA,A+DPTRMOVP2,A;显示ACALLDAY1JNBTI,$LJMPABCDAY1:MOVR4,#04HDA1:MOVR3,#0NB:MOVR1,#0NA:DJNZR1,NADJNZR3,NBDJNZR4,DA1RETLEDAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB

49、7FH,6FH,77H,7CH,39H,5EH,79H,71HEND 分析该程序的功能及实验现象。 仿真运行该程序,观察执行的现象是否和估计一致。三、程序设计 在实验板电路中再增加一块8051单片机,连接电路并编写程序,实现单片机的串口双机通信:采用通信方式1,波特率1200,甲机交替发送HELLO,乙机接收,并将接收到的数据显示在数码管上。 在实验板电路中加入串口物理接口模块COMPIM,使得仿真单片机通过PC主机的串口与另一台PC机通信:另一台PC机键盘上按下09键发送到虚拟单片机中,并显示在虚拟实验板的数码管上,实验板拨码开关K1K8的置数状态发送到另一台PC机并在其屏幕上显示。另一台P

50、C端的收发功能可以用超级终端等串口通信软件来实现,也可以自己编程来实现。12.2.6 实验六串行EEPROM实验(选做)一、实验目的 熟悉IIC接口协议的工作原理。 掌握8051单片机扩展串行EEPROM的方法。 掌握8051单片机IIC串行接口的编程。二、实验内容实验的整体电路参看Error! Reference source not found.。串行EEPROM接口的局部电路如Error! Reference source not found.所示,24C04的SCL和SDA通过上拉电阻分别接至单片机的P3.3脚和P1.6脚,单片机通过普通I/O口模拟IIC接口的时序来完成对EEPROM 24C04的读写控制。图12. 9 串行EEPROM实验接口局部电路图编写程序,实现将字符写入EEPROM,然后从相应单元读出并显示的数码管上。程序参照本书9.2.3节。1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论