《单片机原理及系统设计教程》课件51单片机实验教学教案20100504修改_第1页
《单片机原理及系统设计教程》课件51单片机实验教学教案20100504修改_第2页
《单片机原理及系统设计教程》课件51单片机实验教学教案20100504修改_第3页
《单片机原理及系统设计教程》课件51单片机实验教学教案20100504修改_第4页
《单片机原理及系统设计教程》课件51单片机实验教学教案20100504修改_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

电子科技大学自动化工程学院实验教学教案汇总(实验)课程名称51单片机原理及应用电子科技大学教务处制表前言本实验指导书以编译环境的操作、程序下载,单片机自身接口应用为核心进行学习和实验,它们包含:并行接口、定时器、中断以及串行通讯,另外还对单片机外围电路做简单的扩展。其硬件包括ST51/52单片机、UEST-K1仿真实验板一块。实验指导书包含8个实验,若干例程。涵盖了8031单片机的实时仿真;端口、数据/地址总线操作;定时/计数器运用;键盘、LED显示接口;中断处理;串行通讯;C语言试验等内容。同学们通过这些实验,可对MCS-51系列单片机的一些基本应用有所掌握。任何计算机原理及程序设计语言的学习,一般都是通过:看懂并理解别人的程序开始,修改程序并验证修改效果是第二步,然后才能自己编写程序。通过实验理解软硬件工作原理,调试程序可以理解和验证程序设计的正确性,通过仿真调试可以学习产品开发的过程。显然本实验已经具备了上面所述的全部功能。至于硬件的设计开发,同学还应当学会使用protel一类电路设计软件,设计出自己的应用系统。这部分内容本实验只提供一些经典电路作为参考。同学们还可利用实验板提供的硬件,编制一些较为复杂的程序,例如:实时时钟+时间初值设置+闹钟设置+闹钟声响,或者编制一个“计算器”程序,编写一个电子琴程序等,作为“课程设计”。本实验指导书所有实验程序都是完整的程序,对一般教材上“断章取义”的程序,不能调试的程序,无疑是有效的补充。故本实验板和指导书是单片机初学者一个很好的入门向导。在实验的开发过程中,许多同学利用课外活动时间对实验指导书和实验板作了验证和改进。编者在此对这些同学表示感谢。编者2010年5月第一课单片机系统开发单片机系统的开发方法主要有几个步骤:1.设计电路:根据系统功能要求,计划外围接口的种类,数量,以及RAM等。并分配一定的地址。此后选择需要的芯片,设计相应的电路图。细心检查电路图,确认无误后,设计电路板。电路板设计好后就可送到工厂制作。电路及电路板设计常用PROTEL工具软件,此处不作介绍,但希望同学们能利用业余时间自学,这对你今后找工作或实际工作都有深远影响。2.软件方案设计:根据系统功能要求,画出程序(功能模块)流程图。划定主程序相关模块、各中断服务程序模块的功能。计划模块间参数(变量)的传递及共享方法,变量名称及作用的拟订。以上各步需作详细笔记,以便编写程序时方便查看。3.软件设计和调试:编写各功能模块程序,有条件时可直接在仿真机和电路板上进行调试。第一步先编写和调试显示模块,正常工作后保存。显示模块的成功,会使初学者提高对余下程序的信心,实际等于成功一半了。然后可以调试键盘模块,同时加上显示模块,增加几句临时语句使按下的键值能显示出来。这两个模块成功后保存起来。以后就可以编写和调试其他模块,一块一块地添加起来,形成一个完整的程序。4.程序固化:调试成功的程序,会产生一个“filename.hex”的INTEL十六进制格式文件,把这个文件送到“编程器/写入器”中就可以将其固化到芯片内:EPROM、EEPROM、PROM、MCU中。写入成功后,把芯片从“编程器/写入器”上取下,再插到电路板上通电运行。设计基本结束。此后的工作是考验电路板及程序在现场工作的情况,找出设计弱点进行改进。程序的调试 本实验利用Keilμvision3作为软件开发环境。该开发环境功能强大,代码编译效率高,可支持多种器件并支持软件仿真及在线调试等功能。 双击桌面上的Keil图标,打开软件界面如下图所示:点开上端的Project下拉菜单,选中其中的NewProject选项来建立一个新的工程项目。此时会弹出对话框来提示用户输入新项目的名称及保存目录。填写完毕后选择OK,软件会显示一系列的公司的产品型号供用户选择。选中本项目所使用的单片机型号:Infineon公司的XC866单片机,点击OK,新项目建立并保存到指定地点,然后自动打开一个空白的项目界面。器件的选择也可以在以后来进行修改,可通过Project-Selectdevicefortarget来进行设置。 在空白的项目界面中,选择File-New,则自动生成一个空白的页面,在该页面中可以进行程序的输入。如果使用的是C语言,则需要以.C为后缀保存该文件;如果使用汇编语言编程,文件的后缀应为.asm。编写完毕并保存过后的文件如果要被当前工程所使用,必须将其包含进来,步骤如下:在Group名上点击右键,在弹出的选项列表中选择AddFilestoGroup,则刚刚编辑的文件出现在Group下面。这时可以对该程序进行编译、链接并生成可执行代码。 对整个编程环境的设置可以通过在Target上单击右键,选择Optionsfortarget来进行修改,在弹出的页面中包含着所有和该工程有关的设置项。为了生成可写入Flash的十六进制代码,需要在OUTPUT选项里选中CreatHEXFiles选项。经过编译和链接后,项目文件夹中会出现以HEX为后缀的可执行文件。 对新编写的程序进行编译后,相关信息会显示在窗口下端的消息栏内。如果程序有误则需要返回开始步骤进行修改,直到提示没有错误为止。程序的固化编译好的程序可以通过串口写入到单片机内部,过程如下:将串口线和计算机及单片机的串口连接起来。将开发板上RS232下端的两个跳线头短接,双击打开桌面上的STC-ISP.EXE软件,出现操作界面。选择单片机型号STC89C51RC或STC89C52RC。选择左端的OpenFile按钮,在选择框中找到所生成的后缀为HEX的文件,点击界面下端的Download按钮,打开试验板电源,观察信息反馈窗口,如果信息反馈窗口显示成功,文件被写入到Flash中。按下复位按钮,或重开试验板电源,你的用户板就可以独立工作了。观察程序运行情况,根据显示情况对程序进行相应的修改,直到满意为止。实验一认识实验平台一、实验目的:1.认识实验平台。2.熟悉KEIL仿真调试软件。二、实验步骤:1、实验平台①连接1:EMMIT-S通过DB25孔与计算机串口通讯接口相连;②连接2:将电源线的插头端插入实验平台,另一断接试验电源,红色端子接电源+5V,黑色(白色)端子接电源地。通电前一定要确认没有接错。注意:任何情况下都不能将电源的极性接反或接错电压,否则将可能损坏实验平台。以上连接完成后,打开电源,此时电源指示灯应变亮,若指示灯未显示,请立即切断电源重新检查.三、实验内容:安装和学习keil开发环境1.实验平台简介实验平台原使用EMMIT-S51仿真器进行仿真试验,原来只能在DOS环境下运行(参看实验指导书实验一)。我校03级学生雷宇同学将这种仿真器软件重新编写,使之可以在keilc51环境下运行。胡学海,任文伟老师和09级研究生商洪亮,重新改造了试验平台,实现了程序的自动在线下载,从而可以无需使用仿真器,直接进行编程试验。从此,实验平台支持C语言编程,使熟悉C语言的学生可以更好地发挥其特长。2.开发环境的软件安装2.1安装KeilC51V7.0软件。(请自行安装!)2.2安装STC-ISP-V394文件夹下的“STC-ISP.EXE”3.使用使用keilc,开始时,先应当建立“project”工程,方法如下:1、点击主菜单中的“project”,在下拉菜单中选择“New”,先选择工作目录,再取一个工程名称,点击“保存”。如下图:2、保存“工程”后,就需要选择MCU型号。自动弹出下面窗口按照你使用的MCU进行选择。通常可以选择Atmel或者Intel公司的89C51/8751,如果作了数据线扩展,应当选择31系列MCU。3、点击“确定”后,就会回到调试环境,下面需要添加你的程序。左侧框内出现“Target1”和“SourceGroup1”,用鼠标右键点击,在下拉菜单中选择“AddfilestoGroup‘SourceGroup1”,然后选择你已经编好的程序。(包括存放的文件夹和文件名)4、编辑和修改你的程序展开“SourceGroup1”,在下一行可以看见你的程序名,双击文件名,右边就会看到你的源程序。可以直接进行修改,保存。5、编译你的程序先点击的左边1个,屏幕下方会显示有没有错误。双击此框中有错误的行,光标会自动跳到源文件的对应行,修改之。保存,再编译。如果没有错误了,点击第2个和3个按钮进行“lingk”。(注意:新生成的HEX,OBJ,LST等文件是以“工程名”命名的)6、运行你的程序编译好的程序可以通过串口写入到单片机内部,过程如下:将串口线和计算机及单片机的串口连接起来。将开发板上RS232下端的两个跳线头短接,双击打开桌面上的STC-ISP.EXE软件,出现操作界面。选择单片机型号STC89C51RC或STC89C52RC。选择左端的OpenFile按钮,在选择框中找到所生成的后缀为HEX的文件,点击界面下端的Download按钮,打开试验板电源,观察信息反馈窗口,如果信息反馈窗口显示成功,文件被写入到Flash中。按下复位按钮,或重开试验板电源,你的用户板就可以独立工作了。观察程序运行情况,根据显示情况对程序进行相应的修改,直到满意为止。四、实验步骤:注意:此实验不能在试验板上表现结果,只能观察单片机内存变化。1.进入Keil仿真环境,打开或者输入下面程序。2.点击“View”,在下拉菜单中选择“Memorywindow”,右下角出现存储器观察窗口,在“Address”的方框中输入:“I:0x00”后回车,你将看到片内RAM内容,单步执行程序,观察地址20H,21H和22H内容变化。3.展开PSW,观察CY的变化。4.自己改变程序,采用多种运行方式,体会它的不同之处,观察运行效果。(例如定义:BIT4和BIT5的地址,不大于7FH,观察20H~2FH中那个地址与它相关)五、报告要求:1、描述“全速运行”、“单步”“跟踪”、“断点设置”的方法、运行效果和作用。2、观察单步运行时,指令产生的效果,补充注释程序中没有注释的语句。3、能不能删除“AJMPLOOP”语句?为什么?4、解释地址20H和BIT4,BIT1之间的关系。观察BIT5变化时,RAM中那个地址内容变了?解释20H~2FH与位地址00~7FH的关系。写出BIT5在那个RAM中,第几位。5、伪指令EQU和BIT在本程序中效果如何?有何不同?六、程序清单:此程序必须用仿真器在keil中相应窗口中观察!在实验板上没有显示!DATA1EQU21HDATA2EQU22HBIT0BIT00BIT1BIT01BIT2BIT02BIT3BIT03BIT4EQU07HBIT5EQU37HORG00H;程序起始地址AJMPMAIN;跳转到主程序入口ORG30H;主程序入口MAIN:MOVSP,40H;定义堆栈栈底MOVDATA1,#11H;将立即数11H赋给变量DATA1MOVDATA2,#0H;将立即数0H赋给变量DATA2SETBBIT1SETBBIT2SETBBIT3MOV20H,#0FFHLOOP:CPLBIT2;位变量BIT2置“1”MOVC,BIT1ANLC,/BIT2MOVBIT5,C;注意观察20H内容变化ORLC,BIT3MOVBIT4,A;注意观察20H内容变化SETBBIT0NOPCLRBIT0MOVDATA1,#DATA1;将DATA1作为立即数赋给变量DATA1INCDATA2;DATA2记录了循环次数MOVA,DATA2CPLAMOVDATA1,AAJMPLOOPEND六、教学重点及注意事项:1、仿真调试软件Keil的使用。2、学会“位寻址”的一般操作,理解20H~2FH中的“位寻址”,伪指令BIT和EQU的作用。3、老师讲解,学生参看实验指导书附录中的图纸,理解试验电路板各部分功能和电路原理。实验二移位及霓虹灯实验一、实验目的:1、掌握串口方式0的用法及其相关指令。2、掌握8位移位寄存器74LS164的结构及使用方法。3、学习使用指令:RL、RR、RLC、RRC4、了解霓虹灯的变化原理。二、实验内容:●开始实验前,先将实验板左边的跳线S20如下图所示连接:1、输入程序并运行,观看“流水”演示。单步执行其各条指令,注意每条指令所产生的效果。2、改变DELAY1S程序中的立即数的值,观察“流水”速度的变化。3、将演示程序ROTATE子程序的RRC依次改为RLC、RR、RL,观察现象。4、修改真值表和ROTATE中“移位”指令,使“流水”方向相反。三、实验原理:1、MCS-51单片机串口工作模式0:MCS-51单片机的串口共有4种工作模式,本次实验所采用的模式0,其余3种方在此处不作介绍。模式0为同步移位寄存器方式,串行数据都通过RXD(P3.0)输入或输出、TXD(P3.1)端输出同步移位脉冲,RXD和TXD的波形如图2-2所示。接收/发送的8位数据,其低位先发(低位在前)。波特率固定在fosc/12。即:如果晶振为12MHz,则波特率为1MHz。当一个数据写入串口发送缓冲区SBUF时,串行口自动将此8位数据以fosc/12的波特率自动从RXD引脚输出,同时TXD引脚输出同步钟。8位数据送完需时8个机器周期。程序中每次向SBUF送完数据后都要延时就是为了等待SBUF将数据全部输出。波特率:每秒传输数据的位,称为“BAUD”波特率。即:1波特=1位/秒。单位:BPS1移位寄存器74LS164:移位寄存器74LS164可将串行的输入数据变为并行的输出数据。它内部含有8个串接在一起的触发器,作为数据寄存器;一个清除端/MR,当其为低电平时清除所有触发器中的数据;一个时钟脚CLK,当/MR为高电平时,CLK端出现一个上升沿则触发器中的数据依次向后移动一位;数据输入端为A、B,通常都是将它们接在一起作为数据输入端。本实验中三个74LS164串接在一起,/MR接高电平,CLK由CPU的TXD脚提供,数据由CPU的RXD脚给出,每个并行输出端各串接一个200欧的电阻到发光二极管LED的阳极,通过串口给它们送出数据便可控制各个发光二极管的“亮”“灭”。串接的电阻用于对LED限流(<20mA)。3、发光二极管的“共阴”“共阳接法发光二极管的“共阴”接法是将所有的发光二极管的阴极接在一起并连接到低电平。这样,当其中某一个管子的阳极上出现高电平时则该管导通发光。“共阳”接法则与之相反,是将所有发光二极管的阳极接在一起并连接到高电平。当其中某一个管子的阴极上出现低电平时则该管导通发光。本实验中的发光二极管为“共阴”接法,数据位为“1”时,LED亮。本实验是通过单片机的极管小灯的“亮”“灭”。例如:若我们向74LS164送出的数据为80H、80H、80H(100000001000000010000000),则第1、9、17个小灯发光。然而,实际生活中我们所看到的各种霓虹灯的变化基本上都是通过利用硬件电路读取ROM中的真值表来实现的。这种方法的成本较低,但较之用单片机控制,则其在变化的复杂程度上远远不及。霓虹灯的驱动电路需要将74LS164的并行输出脚(或ROM)连接一个三极管,(光耦合51系列))三极管再触发可控硅,可控硅控制“霓虹灯变压器”的通断,使霓虹灯发光。四总结单片机用串口的MODE0进行同步方式通讯。此时,RXD和TXD分别发出数据和同步钟,即:RXD每发出一位数据,TXD就发出一个同步钟,接收方利用此同步钟读取一位数据。本实验使用3个串接的移位寄存器74LS164作为接收方。74LS164芯片把串行的数据变为并行数据,并将数据送到发光二极管。74LS164可以按需要串接多个,单片机发送数据一次必须发够所需的字节数,以便约定的位显示在约定的位置四实验步骤1.进入keil环境,建立工程,输入程序,注意文件扩展名为“ASM”并保存到D:你的文件夹中。2.下载程序3.改变跳线,运行程序,观察“霓虹灯”变化五报告要求1、写出“流水灯“程序或”反流水灯程序“2、推导出例程中延时子程序DELAY1S的延时时间,要求写出推导过程。注:单片机晶振频率为12M,机器周期1微秒。3为什么每次向串口寄存器送出数据后都要延时一段。4、分析指令RRC和RLC中进位“C”在程序中的作用。实验三键盘扫描实验一、实验目的:1、掌握MCS-51单片机P1口的查询工作方式。2、学会单片机键盘的扩展方法和软件处理。1、理解“键抖”的含义并掌握其解决方法。二、实验内容:编写程序实现:每按一次键,LED数码管上显示相应的按键值。观察LED数码管显示情况,体会键盘扫描原理。三、实验步骤:1.输入(编辑)程序,注意文件扩展名为“ASM”并保存到D:\SYBER\BIN目录。2.进入keil环境,建立工程。3.在“project”中添加你的程序,你编写的程序,选择buildtarget对程序进行编译。4.如果提示错误语句,应立即改正并保存。5.再次编译“rebuild”程序,直到无错误语句。6.固化程序,运行程序。7.改变键盘扫描程序为“逐行扫描”,评价两种程序的优缺点。注:“无键”判断的条件,需根据键盘扫描程序返回值决定。四、实验原理:1、P1口的结构原理I/O口的每位锁存器均由D触发器组成。下面以P1口为例介绍一下它们的原理。在CPU的“写锁存器”信号驱动下,将内部总线上的数据写入锁存器中。锁存器的输出端反馈到内部总线上,以响应来自CPU的"读锁存器"信号,把锁存器的内容读入内部总线上,送CPU处理.而欲使CPU响应"读引脚"信号时,先由CPU向要读的引脚(如P1.X)的D触发器送一个高电平。如图4-1所示.此时锁存器D端为高电平,则/Q输出为低电平,T1截止,引脚对外为高阻,其状态由外电路决定。CPU可通过"读引脚"端将P1.X引脚上的数据读入。2、矩阵式键盘接口矩阵式键盘由行线和列线组成,如图3-2所示。本实验中,行线和列线都连接到P1口。按键安装在行、列的交叉点上。键值定义也如图所示。P1口自带上拉电阻,因此没有外接。按键的识别方法有扫描法和线反转法.扫描法:单片机依次令一列为低电平,读取行值,若行值全“高”则此列无键按下,若有低电平的行,表明此列此行有键按下。一旦发现有键按下,程序计算出按下键的行列值,并依照定义给ACC赋值。本实验附录中就是“扫描”方式,同学可以仔细阅读理解,也可以替代实验中的KEYSCAN子程序。线反转法:本例中使用的是线反转法,下面介绍它的具体操作步骤:第一步:将行线所接端口清零,读入列线端口上的数据,若有低电平的位,该位所对应的列上有键被按下;第二步:将列线所接端口清零,读入行线端口上的数据,若有低电平的位,则该位所对应的行上有键被按下;综合一、二两步的结果,可确定按键所在的行和列,此后便可按照键的定义给ACC赋值。3、“键抖”现象通常,按键所用开关基本上都是机械弹性开关。均利用了机械触点的弹性作用。一个电压信号通过机械触点的断开、闭合过程波形如图3-3所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随着一连串的抖动。抖动时间的长短由按键的机械特性决定。一般为5~10MS。软件消除“键抖”(影响):在第一次检测到有键被按下时,执行一段延时10MS以上的子程序,避开“键抖动”期间,然后再确认该键电平是否仍保持闭合状态电平。若是,则确认为真正有键按下,此后可进行行列的判定。若否,可认为无键按下,可能是干扰或误判。五、报告要求:1、画出下面例程的流程图2、键位和键值可以自己改变吗?3、如果只设4个键,画出电路示意图,并描述软件处理方法。假定4个键为:加;减;光标左移;光标右移。4、解释“键抖”现象极其软件解决方法5、(选作)编写一个“扫描法”的键盘扫描程序。实验四数字显示实验一、实验目的:1、掌握7段LED的原理、使用和字符编码。2、了解二~十进制7段译码驱动器74LS47的运用。3、了解“动态显示”的含义。二、实验内容:1、在显示器上显示1,2,3,4,5,6,7,82、单步执行例程,观察数码管的变化,理解动态显示含义。想一想,本例的电路可以作静态显示吗?为什么?2、修改程序,将显示的数据顺序变反,体会“位置码”和“数据”的关系。3、选作:修改实验三的显示程序为“定时中断显示程序”(参看附录4-2)三、实验原理:由图4-1可以看出,当地址A14(P2.6)为1时,选中U18的74LS273,此时就可以从P0口送出显示数据。数据格式为:高四位表明显示位置(由74LS138译码,经三极管驱动,连到不同的数码管)低四位为要显示的BCD数(经7447译码为7段显示代码并送到各数码管的相应笔画引脚)。编程时,需按硬件规定的地址(P2=40H)送出显示数据,数据=位置+BCD数。1、7段LED(LightEmittingDiode)数码管我们常常把8位锁存器的输出直接连接到LED数码管上,此时需用软件译码—把数字变为“段码”,然后送到锁存器,相应的字型就可以显示出来。注意:一般连线D0对应笔画a,D1对应笔画b……,D7对应小数点。软件译码方法可用“查表”法,教材上有介绍。7段LED显示块是由发光二极管显示字段组成的显示器,分为“共阴”和“共阳”两种(“共阴”“共阳”原理见实验二)。表4-1为7段LED常用字型码。下面我们来看看表4-1中的字符码是如何产生的。以共阴接法7段LED的“0”~“9”字符为例,如表4-2所示。表3-2无译码的“共阴”显示“段码表”2、二—十进制7段译码驱动器74247(74LS47)74247为硬件译码器,输入端只需直接输入十进制BCD数0~9,输出端就可输出字符的“段码”。且自带驱动,可直接连接数码管。其字型见图4-2。与74247类似功能的集成电路很多,例如74LS46、74LS47、74LS48、74LS49等。四实验步骤:(参看前面实验)五、报告要求:1、什么是静态显示和动态显示?2、为什么动态显示中,每显示一个数要延时若干时间?试修改DELAY5MS程序的立即数观察运行效果,并作记录。分析延时长好还是延时短好,说明延时量对人眼的视觉影响。3为什么动态显示要不断地进行显示循环?4画出显示程序的原理框图实验五定时器实验一、实验目的:掌握定时器的使用及初始化方法,掌握定时器中断的初始化和中断入口。二、实验内容:利用实验板提供的电路,实现实际时钟功能。本实验采用50mS中断一次,中断服务程序对变量MS50加1,当20次时为1秒,对秒加1;秒变量到达60时,对分钟加1…。三、实验要求:1.显示当前的时;分;秒2.增加语句,可直接设定时;分;秒当前值,使时钟更加接近现时。2.参照例程(实时时钟显示),将其修改后令最右边的两位数码管显示0.1秒值。提示:每100MS(两次中断)改写一次MS50单元的数据,需要增加变量3.将定时设为10mS中断,每10MS改写一次MS50单元的数据,中断计数判断值为100,改后最右边的两位数码管显示1%秒精度。4.改用定时器T0替换实验中的T1,编写控制字,改写启停命令和中断允许命令,更改中断入口,实现相同功能。三、实验原理:本实验例程所采用的是定时/记数器T1,工作方式1;16位记数;振荡器为单片机的12M工作晶振;计数频率为fosc/12=1MHz。定时器T1的中断服务程序COUNTER每50mS中断执行一次,每次都对MS50加1,当满20次时,对SECONGD加1,同时清除MS50的计数值。当SECONGD加到60时,清除SECONGD,MINI加1,….这样,中断服务程序实时计算“时、分、秒”的变化CHDBCD程序把MS50以及秒;分;时转换成BCD数并送到相应显示缓冲区备显。DISPLAY程序把显示缓冲区的数据送到数码管。四、实验步骤:参看实验二步骤五、报告要求:1.写出:改用T0中断,相应的TMOD的控制字和中断入口地址。2.写出:定时器初值的计算方法3.写出:实验内容的程序编写思路。(中断程序和主程序框图)4.选作1:修改显示程序,使得每调用一次显示一位,依次调用依次显示各位;然后由定时器T1,2MS中断一次,每次中断服务就调用你新编的显示程序。(参看:实验四的“定时中断显示”部分)5.选作2:调用键盘扫描并能够修改时钟初始值。(比较难)实验六中断处理实验零概述:MCS-51系列单片机具有5个中断源,当要使用某个中断源时,应当做一些必要的初始化:①在中断向量入口地址设跳转指令;②初始化相关“源”的中断方式(INT0,INT1)或数据(T0,T1,T2);③启动工作开始(T0,T1,T2),允许中断。④在中断服务程序的开始部分要对“现场”进行保护,RETI前需“恢复现场”。中断向量表如下:现场保护方法:⊕PSW;ACC入栈⊕切换寄存器组⊕DPTR;B视情况处理(入栈)恢复现场方法:⊕反“入栈顺序”把栈内寄存器出栈。(最后ACC,PSW出栈)⊕中断返回一、实验目的:1、掌握MCS-51单片机外部中断的使用2、学习“从引脚输出方波”的方法3、了解14位二进制计数/分频/振荡器芯片CD4060的用方法二、实验内容1.闭合S19对CD4060供电。通过电路板上的J3(P5)跳线选择4060的输出,观察小灯L9的闪烁频率。运行程序1,听喇叭音调变化2.闭合S19对CD4060供电。调试例程2,通过中断服务程序改变记数值,输出不同频率方波控制喇叭发声。三、实验原理:电路工作原理:外接32768HZ晶体的CD4960芯片产生32768HZ的震荡频率,分频后经P5(J3)和P10(J4)提供选择,送到CPU的INT0引脚。中断服务程序通过CPU的T1(P3.5)引脚送出方波,经三极管驱动后送到喇叭,使其发声。1.14位二进制记数/分频/振荡器CD4060:振荡/分频器CD4060是一个振荡器+14级分频器集成电路,其输出QN端的频率为其振荡频率的1/2N;图6-1左边部分是振荡电路,可由外接电阻和电容构成RC振荡器,也可通过外接晶体构成高精度的晶体振荡器。电路中所接晶体频率为32768Hz,在普通的电子表中就能够找到它。此时Q14输出0.5秒周期的方波。2.电路原理:如图6-1所示,本实验电路通过插头P5、P10将4060的输出接到CPU的INT0端,提供外部中断信号。中断服务程序通过对INT0引脚上的脉冲记数(中断次数)产生频率不同的方波。CPU通过P3.5(T1,15脚)输出频率不同的方波,通过三极管9014放大,控制喇叭发出不同的声音,以便我们观察效果。3.喇叭上串连了R11(100欧)用于保护喇叭并使音量不至于太大。四、实验步骤:1.运行程序1。观察效果,分析喇叭发声的软件原理和硬件原理。2.改变P5跳线,听到音调变化。3.运行程序2。改变P5跳线,听到音调变化。4.改变对0AH地址的初始送数,改变VALU的初值,记录音调变化趋势。5.设置断点在INT_0:语句前面。把P10(J4)跳线拔下,全速运行例程,此时不能进入断点。当你插上跳线时,程序进入断点并停止运行。说明发生了中断。改用定时器中断(初始化定时器,关闭外部中断,允许定时器中断,改变中断入口,中断程序需重装定时器初值),分析定时器值与喇叭频率的关系6.选作:在上一个实验步骤6基础上,增加键盘扫描,按键值不同时,写入定时器的初值也不同,实现电子琴功能。提示:定时器初值用DB定义,查表获得,然后改写定时器初值变量。中断程序将定时器初值变量写入到定时器。五、报告要求1.注意通过实验体会,大概多少Hz范围内的音频我们能感觉到,什么范围内的频率听起来比较舒服?2.中断服务程序中,为什么要切换寄存器组?作用是什么?3.改用定时器产生中断,达到同样的发声效果,写出定时器中断的初始化部分,中断服务程序4.能否设置一个乐谱,让定时器按照乐谱依次更新设定的定时常数,从而使喇叭发出音实验七串行通讯实验一、实验目的:1、掌握MCS-51单片机串口的UART工作方式。2、掌握RS-232C串行接口标准。3、了解RS-232C驱动集成电路MAX202的使用。二、实验内容:1编写程序,实现每按一次键盘,单片机发送:20H,30H,31H,32H,33H,34H,35H,36H,37H,38H,39H一次。速度2400BPS,8位,无校验,停止位12编写程序,实现每接收到55H,单片机发送:20H,30H,31H,32H,33H,34H,35H,36H,37H,38H,39H一次。速度4800BPS,8位,无校验,停止位1(任选一题)开始实验前,将实验板左边的跳线S20如下图连接:把电缆插头的2,3脚相连,自己的发送数据被自己收到。有可能的话,可以用电缆把两机对接,连接方法:甲方2脚连乙方3脚,甲方3脚连乙方2脚,甲乙方5脚相连。本实验重点是双机通讯,同时也包括了前面介绍过的键盘接口、显示、中断处理的内容,是一个综合性实验。同学们在实验过程中应认真理解。三、实验原理:1、RS-232C接口RS-232C是美国电子工业协会正式公布的串行接口标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。适用于:设备之间的通讯距离不大于15m,传输速率最大为20KB/S。(现已扩大范围)其电平为:+3V─+12V逻辑0-3V─-12V逻辑1表7-1RS232C插座标准2、RS-232C驱动芯片MAX202由于传输电压为±12V,一般接口芯片多用±12V供电,有时不易获得此电压,利用MAX202/232/ICL232,只须提供+5V电压,配接4个0.1uF的电容即可,它能自动升压。电路图参看图7-1。3、试验电缆:本实验采用3线连接(0-MODEM方式)。采用9芯插头电缆两机对接。电缆制作如图7-2所示。双方2脚3脚连接顺序相反;5脚连5脚,自己的7、8脚短路。4、串行口结构和控制MCS-51单片机内部的串行口有两个物理上独立的接收、发送缓冲区SBUF,可同时发送、接收数据。发送缓冲区只能写入不能读出,接收缓冲区只能读出不能写入,两缓冲区占用同一个地址(99H)。MCS-51单片机串行口工作由SCON和PCON两个特殊寄存器控制。对其进行初始化设置后,串行接口将按设定的方式工作。(2)波特率设定参看本实验指导书“参考资料”单片机的控制寄存器5使用方式1或3,晶振12M,可使用时间控制字0F3H。四、实验步骤:基础试验:单片机发送数据,计算机的“超级终端”接收并显示。注意单片机必须发送ASCII码,否则超级终端不能显示。或使用串口调试器调试,连接通讯电缆:从试验板RS232插座到计算机COM1插座。如果单片机程序运行后,按实验板上任意键,本实验将在计算机“超级终端”显示数字0~9。1、输入下面程序,并在keil环境中编译通过。2、在WINDOWS中选择“开始-程序-附件-通讯-超级终端”建立超级终端按钮,并输入名称。再设定超级终端属性:直接电缆连接到通讯口1;波特率2400;8位数据;1位停止位;无奇偶效验。然后保存退出。再一次打开,点击你设定的按钮。3、切换到keil环境,运行单片机程序。再切换到“超级终端”,按下单片机任意键,观看屏幕显示情况。4、修改程序和超级终端的设置:波特率改用4800或9600。5、修改程序,使程序发送从“A”到“Z”。6、修改程序,使计算机上显示“HELLO”(提示:采用查表输出,表中数据参看本实验指导书附录中的ASCII码表)7、选作:每次单片机按一个键就发送1个数并在数码管上显示,并将此数转换成ASCII码发送出去。(不用中断,利用实验二程序修改,添加串口初始化)8、选作:单片机接收计算机的键入数字,将其显示在数码管上。提示:在上一个选作基础上,利用串口中断接收数据并将此数转换成BCD数填入显示缓冲区。注:超级终端还能将键值通过串口发送出去。五、报告要求:1、回答问题:单片机异步通讯软件初始化有那几个要点?2、为什么说,单片机通讯时,只要超级终端能收到数据,单片机-单片机通讯就能实现?(提示:用此方法验证硬件和程序初始化正确)3、将修改程序(发送“A~Z”以及“HELLO”)要点和显示现象加以说明。4、思考题:利用ASCII码转换,使单片机发送内容与按键名相同,写出发送程序。(键盘扫描程序略写,只写出:“LCALLKEYSCAN”即可。5、设计程序:两台单片机直接通讯,要求在一个单片机按键后,键值显示在另一个单片机数码管上。键盘扫描和显示程序用名称代替,不用抄出。实验八基于C语言(C51)的键盘扫描和移位显示一、实验目的:1、掌握M

温馨提示

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

评论

0/150

提交评论