书签 分享 收藏 举报 版权申诉 / 190
上传文档赚钱

类型《单片机应用实例开发》课件第3章.ppt

  • 上传人(卖家):kld
  • 文档编号:8234153
  • 上传时间:2025-01-18
  • 格式:PPT
  • 页数:190
  • 大小:2.68MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《单片机应用实例开发》课件第3章.ppt》由用户(kld)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机应用实例开发 单片机 应用 实例 开发 课件
    资源描述:

    1、3.1 多彩流水灯电路的设计 3.2 多彩流水灯程序的设计 3.3 按键控制彩灯的设计 3.4 单个数码管显示接口的设计 3.5 习题 实例三实例三 循环、查表和中断系统循环、查表和中断系统 学习目标学习目标 理解多彩流水灯控制电路的构成、工作原理和电路中各元器件的作用,并对电路进行分析和计算。理解51单片机的时序概念和内部数据/程序存储器结构,掌握工作寄存器的使用方法。正确使用MedWin软件的端口、查看寄存器、特殊功能、设置断点、执行到光标处等调试功能,调整指令的执行时间。正确理解程序设计框架,掌握循环结构程序的编写方法,掌握EQU、DATA等伪指令的使用方法。掌握特殊功能寄存器中累加器A

    2、CC和状态寄存器PSW的使用。理解51单片机的内部定时器/计数器结构,掌握定时器的工作原理和TMOD的使用。正确使用RR、RL、RRC、RLC等逻辑运算指令和MOVC查表指令。正确使用DJNZ、CJNE、NOP、ACALL/LCALL、RET和INC等指令。正确使用Proteus仿真软件调试电动车转向灯控制系统。设计和制作多彩流水灯控制系统,对电路中的故障现象进行分析判断并加以解决,通过调试得到正确结果。工作任务工作任务 测试多彩流水灯控制电路并进行结果描述。设计、制作与调试多彩流水灯控制系统。撰写设计文档与测试报告。大街上人们经常能看见各式各样的霓虹灯,五颜六色的灯以不同的闪亮方式装点着城市

    3、,下面我们就从控制彩灯开始学习单片机编程的旅程。本实例以彩灯控制为例介绍LJ_2彩灯控制板的应用,并以此为引子逐步引导大家掌握单片机的基本结构及开发方法。3.1 多彩流水灯电路的设计多彩流水灯电路的设计学习目标学习目标 理解多彩流水灯控制电路的构成、工作原理和电路中各元器件的作用,并对电路进行分析和计算。工作任务工作任务 测试多彩流水灯控制电路并进行结果描述。多彩流水灯的控制电路根据不同的设计要求有不同的设计,我们先学习较简单的控制电路设计。在实例二中我们学习了单个发光二极管的控制,因此不难想象多彩流水灯的控制电路可以采用和2.1.2节中单个发光二极管控制电路类似的设计。假设多彩流水灯由8个发

    4、光二极管构成,那么,就可以采用如图31所示的电路设计。图31 8盏流水灯仿真图【练习】项目:16盏流水灯控制电路的设计。项目编号:EX3_1。任务要求:在Proteus平台中绘制单灯点亮控制电路,撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,Proteus软件1套。设计步骤:(1)打开Proteus软件。(2)取用所需元器件,并摆放好位置。(3)连接好电路。(4)计算电路中的主要参数值,并设置好相关器件。仿真图如图32所示。图32 16盏流水灯仿真图3.2 多彩流水灯程序的设计多彩流水灯程序的设计 学习目标学习目标 正确使用MedWin软件的端口、设置断点、执行到光标处等调试功

    5、能,调整指令的执行时间。正确使用MedWin软件的查看寄存器、特殊功能寄存器等功能。正确理解程序设计框架,掌握循环结构程序的编写方法,掌握EQU、DATA等伪指令的使用方法。掌握特殊功能寄存器中累加器ACC和状态寄存器PSW的使用。正确使用RR、RL、RRC、RLC等逻辑运算指令和MOVC查表指令。工作任务工作任务 设计与调试多彩流水灯控制程序。撰写设计文档与测试报告。3.2.1 8盏灯轮流式点亮盏灯轮流式点亮假设将要实现如下要求:P1口作输出口,编写程序控制P1口各发光二极管依次向左轮流点亮,每次点亮的时间为0.5 s。1设计思路设计思路(1)通过前面2.2.1节寻址方式的介绍,不难想到,若

    6、要控制P1口的发光二极管的亮灭,则使用立即寻址方式的指令,将相应的控制代码直接送给P1口就可以实现,所以很显然我们将要用到立即寻址方式的指令“MOV P1,#data”。(2)设计要求中提到各发光二极管的点亮时间为0.2 s,故彩灯状态控制代码需保持0.2s后再修改,所以我们需要有能延时0.2 s的延时子程序。(3)由于设计要求中各发光二极管是依次轮流点亮的,因此通过分析控制代码之间的关系,不难发现它们之间的循环移位的特点。2基本知识基本知识1)寄存器寻址(Rn)由指令指出某一个寄存器的内容作为操作数,这种寻址方式称为寄存器寻址。理解:以去图书馆借书为例,一般图书馆都会设置一个新书架,近期买的

    7、书都放在新书架上,以便于读者借阅。新书架和其他的书架都是统一编号的,只是为了读者借阅方便,通常不说它的编号而直接称其为新书架。这和寄存器及其他的直接地址单元统一编址是一样的。为了使用方便,给指定的一些直接地址单元另取了名称(R0R7),这样我们就可以不用记它们的地址了。例如:MOV P1,R2;机器码为8AH,90H图33 寄存器寻址方式指令执行示意图这条指令的功能是把寄存器R2中存放的数送到P1端口。至于这里的寄存器R2属于哪一个寄存器组,则由PSW中RS1和RS0的值来确定。假设PSW中RS1和RS0的值分别为0和1,可知此时的R2属于第一组,那么它的地址为0AH。假设0AH中存放的数据为

    8、7FH,则执行该指令后,P1端口的值为7FH。该指令执行示意图如图33所示。图33 寄存器寻址方式指令执行示意图可以通过在MedWin中仿真以下程序来帮助理解寄存器寻址方式指令的执行情况。ORG 0000H;程序头LJMP MAINORG0030HMAIN:MOVP1,R2;寄存器R2的值送P1端口SJMP$;“$”的含义为包含该符号的指令的地址,动态暂停END;程序尾仿真过程如下:(1)在MedWin中编辑好上面这段程序,然后选择“项目管理”/“编译汇编”编译代码。若没有语法错误,则选择“调试”/“开始调试”进行调试。(2)为了观察数据方便,读者可以选择“外围部件”/“端口”,打开“端口”窗

    9、口;选择“查看”/“寄存器”,打开“寄存器”窗口;选择“查看”/“特殊功能寄存器”,打开“特殊功能寄存器”窗口。寄存器窗口中的值可以通过在数据区双击鼠标修改,如图34(b)所示。图34 “MOV P1,R2”执行过程(a)“MOV P1,R2”执行前1;(b)“MOV P1,R2”执行前2;(c)“MOV P1,R2”执行后图34 “MOV P1,R2”执行过程(a)“MOV P1,R2”执行前1;(b)“MOV P1,R2”执行前2;(c)“MOV P1,R2”执行后图34 “MOV P1,R2”执行过程(a)“MOV P1,R2”执行前1;(b)“MOV P1,R2”执行前2;(c)“MO

    10、V P1,R2”执行后(3)为观察程序运行每一步的结果,读者可以选择“调试”/“单步”,使程序单步运行。调试过程如图34(a)(c)所示。(4)调试成功后,可产生代码。将代码下载到实验板LJ_2,观察效果。2)伪指令(1)为标号赋值伪指令EQU(Equate)。伪指令格式:标号(字符名称)EQU 数或汇编符号该指令的作用是将操作数中的地址或数据赋给标号字段中的标号。例如:HOUREQU30H;HOUR与30H等值INCHOUR;HOUR加1,实际为30H存储单元 的数据加1(2)数据地址赋值伪指令DATA。伪指令格式:标号(字符名称)DATA 数或表达式该指令的作用是给标号段中的标号赋值,与E

    11、QU类似,但也有差别。用DATA定义的标识符汇编时将作为标号登记在符号表中,故可以先使用后定义;EQU定义的标识符必须先定义后使用。用DATA只能将数据或表达式的值赋给字符名,而用EQU可以将一个汇编符号赋给字符名,但不能将表达式的值赋给字符名。DATA常用来定义数据地址。例如:XRAMDATA 20F0H汇编后XRAM的值为20F0H。3)逻辑运算类指令逻辑运算类指令主要包括逻辑与、逻辑或、逻辑异或、移位、取反和清零等指令,涉及的助记符包括ANL(逻辑与)、ORL(逻辑或)、XRL(逻辑异或)、RL(左环移)、RR(右环移)、RLC(带进位左环移)、RRC(带进位右环移)、CPL(取反)、C

    12、LR(清零)等。这类指令一般不影响PSW中的标志位,仅当目的操作数为A时会影响P。采用的寻址方式有立即寻址、直接寻址、寄存器寻址和寄存器间接寻址,其指令格式如下:ANL目的操作数,源操作数ORL目的操作数,源操作数XRL目的操作数,源操作数RLARRARLCARRCACPLACLRA逻辑运算类指令的助记图如图35所示。图35 逻辑运算指令的助记图循环移位指令示意图如图36所示。图36 循环移位指令示意图下面通过一个例子来加以说明。设(A)=0C5H(1100 0101B),C=0,(R0)=47H,(47H)=39H。RLA;执行指令后,A=8BH(1000 1011B),C=0RLC A;执

    13、行指令后,A=8AH(1000 1010B),C=1ANL A,40H;执行指令后,A=00H(0000 0000B),C=0ORL A,R0;执行指令后,A=39HXRLA,47H;执行指令后,A=00H(0000 0000B)CPLA;执行指令后,A=0FFHCLR A;执行指令后,A=03设计步骤设计步骤(1)设计仿真图如图31所示,流程图如图37所示。图37 8盏灯轮流点亮的流程图(2)程序设计所需指令表如表31所示。若在MedWin软件中仿真调试,则可以在“端口”窗口中观察到P1口跑马灯的效果。调试好的程序代码可以加载到Protues仿真电路中调试,调试过程中可以看见实际的流水灯效果

    14、,然后下载到目标板上查看实际的效果。说明:读者应先理解本书所给出的实例,然后自行设计彩灯点亮方式进行训练。首先,我们提出一些设计要求,然后根据要求分析并找出实现的方法(设计方案),确定实现方法后结合单片机程序设计的基本框架,举一反三,完成程序初步设计,再利用MedWin仿真软件仿真,检查是否能达到预期效果。若不能,则重新编辑、仿真;若能,则下载到目标板上,观察实际效果能否顺利实现,若不能实现,则重复上述过程,直至最后设计成功。【练习】项目:8盏流水灯控制程序设计一。项目编号:EX3_2。任务要求:P1口作输出口,编写程序控制P1口各发光二极管依次向右轮流点亮,每次点亮的时间为0.2 s。在Me

    15、dWin集成开发环境中编辑/编译控制程序,并产生代码,在Proteus平台里仿真系统,撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,MedWin或其他同类软件1套,Proteus软件1套。设计步骤:(1)打开MedWin软件。(2)新建源程序文件,编辑源代码。(3)编译源程序,若没有错,则产生代码;若有错,则修改错误。(4)仿真调试程序代码。(5)在Proteus中打开8盏流水灯控制电路图。(6)加载程序代码,调试。3.2.2 8盏灯缩展式点亮盏灯缩展式点亮假设我们在P1口连接了如图38所示的8个红、黄、绿三种不同颜色的发光二极管。以182736454536271827这样的方

    16、式点亮,相邻状态的间隔时间为0.5 s。图38 8盏流水灯的颜色安排1设计思路设计思路从设计要求中我们可以找出一定的规律,因此程序设计时可以考虑利用循环结构来实现。分析后可知,设计的效果实际为彩灯从两端亮开始逐步向中间收缩,然后向两端扩展,再向中间收缩,如此反复。因此我们想到用两个参数,让它们每次分别左移和右移后再叠加来实现。2设计步骤设计步骤(1)仿真图如图31所示,流程图如图39所示。图39 8盏灯递进点亮的流程图(2)程序设计所需指令表如表32所示。【练习】项目:8盏流水灯控制程序设计二。项目编号:EX3_3。任务要求:设计要求同3.2.2节,要求用不同的设计方案来实现。在MedWin集

    17、成开发环境中编辑/编译控制程序,并产生代码,在Proteus平台里仿真系统,撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,MedWin或其他同类软件1套,Proteus软件1套。设计步骤:(1)打开MedWin软件。(2)新建源程序文件,编辑源代码。(3)编译源程序,若没有错,则产生代码;若有错,则修改错误。(4)仿真调试程序代码。(5)在Proteus中打开8盏流水灯控制电路图。(6)加载程序代码,调试。3.2.3 8盏灯复杂循环点亮盏灯复杂循环点亮彩灯的颜色安排如图38所示,要求以这样的方式点亮:112123123412345123456123456712345678234

    18、5678345678456785678678788,相邻状态的间隔时间为0.5 s。1设计思路设计思路从设计要求中我们同样可以找到一些规律,但是这种规律通过简单的循环指令并不能实现,因此这次我们考虑用带进位循环指令RLC、RRC试一试。刚开始每次移位前先预置进位标志为0,这样依次左移后送给P1口的代码如下:再将进位标志置为1后,将代码依次右移即可实现。2设计步骤设计步骤(1)仿真图如图31所示,流程图如图310所示。图310 8盏灯复杂循环点亮(2)程序设计所需指令表如表33所示。【练习】项目:8盏流水灯控制程序设计三。项目编号:EX3_4。任务要求:设计一个利用51单片机I/O口输出信号,控

    19、制16个发光二极管每0.2s交替闪亮,实现跑马灯,即D1D2D15D16D循环点亮。闪亮时间由简单延时电路实现。在MedWin集成开发环境中编辑/编译控制程序,并产生代码,在Proteus平台里仿真系统,撰写练习报告(格式要求见附录A)。1思路分析思路分析要求实现16盏灯的闪烁,每次灯亮的时间为0.2s,形成跑马灯。参考3.2.3节举例,可以采用51单片机的I/O口(此时用作输出)中的P0和P1口来控制,通过指令周期性地重复改变此I/O口的电平状态,此时的间隔时间可以通过执行延时指令(无意义的指令)来实现。根据状态控制码的分析,我们可以采用P1口的状态依次左移后再使P0口的状态依次右移来实现设

    20、计要求。2设计步骤设计步骤1)硬件电路设计(1)思路。根据设计要求分析,可以将16个发光二极管分别接到P0口(P0.0P0.7)和P1口(P1.0P1.7)的端口上,采用直接驱动,为提高驱动电流能力,采用共阳极接法。单片机其他电路接成最小系统即可。(2)在Proteus中画好电路图,如图311所示。图311 16盏流水灯仿真图2)软件设计(1)绘制程序流程图,如图312所示。(2)编写程序代码如下:ORG0000HLJMP STARTORG0030HSTART:MOV A,#0FEH;送P1口循环控制初始状态值图312 16盏灯循环点亮的流程图3)练习(1)设计一个利用51单片机I/O口输出信

    21、号,控制16个发光二极管每0.2s间隔交替闪亮,实现跑马灯,即D1D3D5D12D15D1循环点亮,应该怎样修改程序呢?(2)若要实现D1D3D5D13D15D13D11D5D3D1D3D5的效果,又该怎样修改程序呢?3.2.4 8盏灯无序点亮盏灯无序点亮彩灯的颜色安排如图38所示。要求以这样的方式点亮,即红灯亮绿灯亮黄灯亮红绿灯亮黄绿灯亮黄红灯亮全亮全灭红灯亮绿灯亮,相邻状态的间隔时间为0.5 s。1设计思路设计思路分析设计要求后,我们会发现虽然这个设计要求的彩灯效果是有规律的,但所应设置的控制代码却不能找出什么规律,而每个状态分别送又比较繁琐,所以能不能事先把一些显示状态的代码设计好,并按

    22、照一定的顺序保存在一个表格中,当想改变彩灯的状态时,就从这个表格里取数据出来呢?这样即便灯前后显示的状态并没有规律也没关系,所以我们这次需要查表指令。2基本知识基本知识1)基址变址寻址(A+PC/A+DPTR)这种寻址方式以DPTR或PC为基址寄存器,累加器A为变址寄存器,A中的数据为无符号数。当变址寻址时,把基址和变址两者的内容相加,所得到的结果作为操作数的地址。这种寻址方式是单字节的,用于读出程序存储器(ROM)中的内容。该寻址方式的指令也称为查表指令。理解:为了更好地理解基址变址寻址方式,可以把它看做是去宾馆会朋友。好朋友来出差,住在宾馆里,你想和他见个面,叙叙旧,朋友让你去宾馆找他,于

    23、是你就起程了。要找到你的朋友,首先要找到朋友住的宾馆(基址),然后根据朋友的房号(变址)找到朋友的房间,这样就可以找到多年未见的朋友,好好叙叙旧了。例如:MOVCA,A+DPTR;机器码为93H假设ACC中原来的值为02H,DPTR中的值为01E0H,则A+DPTR形成的地址为01E2H。假设01E2H单元中的内容为27H,则执行该指令后,ACC中原来的02H被27H替代。该指令执行示意图如图313所示。图313 基址变址寻址方式指令执行示意图可以通过在MedWin中仿真以下程序来帮助理解基址变址寻址方式指令的执行情况。要点:DB为伪指令,稍后再对其做详细解释。仿真过程如下:(1)在MedWi

    24、n中编辑好上面这段程序,然后选择“项目管理”/“编译汇编”编译代码。若没有语法错误,则选择“调试”/“开始调试”进行调试。(2)为观察数据方便,读者可以选择“外围部件”/“端口”,打开“端口”窗口;选择“查看”/“寄存器”,打开“寄存器”窗口;选择“查看”/“特殊功能寄存器”,打开“特殊功能寄存器”窗口;选择“查看”/“数据区”,打开内部程序存储区,观察01E0H单元段的数据。调试过程中可以直接双击数据区单元,修改数据区的数值,如图314(b)所示。(3)为观察程序运行每一步的结果,读者可以选择“调试”/“单步”,使程序单步运行。调试过程如图314(a)(c)所示。(4)调试成功后,可产生代码

    25、。将代码下载到实验板LJ_2,观察效果。图314 “MOV P1,A”的执行过程(a)“MOV P1,A”执行前1;(b)“MOV P1,A”执行前2;(c)“MOV P1,A”执行后图314 “MOV P1,A”的执行过程(a)“MOV P1,A”执行前1;(b)“MOV P1,A”执行前2;(c)“MOV P1,A”执行后图314 “MOV P1,A”的执行过程(a)“MOV P1,A”执行前1;(b)“MOV P1,A”执行前2;(c)“MOV P1,A”执行后2)伪指令(1)定义字节伪指令DB(Define Byte)。伪指令格式:DB定义字节伪指令是在以标号为首地址的连续存储单元中存

    26、储项或项表的数值。项或项表指的是一个字节、数、字符串或ASCII码字符。要点:数值的取值范围应为00H0FFH,字符串的长度应限制在80个字符内。数值之间用英文输入状态的逗号分隔,最后一个数值后不要加符号(注释符除外)。例如:ORG0100HTABLE:DB3FH,06H,B,china(2)定义字伪指令DW(Define Word)。伪指令格式:DWDW的基本含义和DB的相同,所不同的是其项或项表的数据为16位,高8位存低地址,低8位存高地址。例如:ORG0100HTABLE:DW3F00H,0678H3)数据传送类指令数据传送类指令是应用频率最高的指令,涉及的指令助记符包括MOV(内部数据

    27、传送)、MOVX(外部数据传送)、MOVC(查表)、PUSH(压栈)、POP(出栈)、XCH(字节交换)、XCHD(半字节交换)和SWAP(累加器A高、低半字节交换)等。(1)内部数据传送指令。内部数据传送指令用于单片机内部的数据存储器和寄存器之间的数据传送。采用的寻址方式有立即寻址、直接寻址、寄存器寻址和寄存器间接寻址,其指令格式为MOV 目的操作数,源操作数内部数据传送指令的助记图如图315所示。图315 内部数据传送指令的助记图(2)栈操作指令。MCS51单片机内部RAM中设有一个堆栈,以特殊功能寄存器SP(堆栈指针)指出栈顶位置。堆栈的操作规则为先进后出,这就好比将物品放进储物柜里,假

    28、设放的物品的大小和柜子的截面一样,那么先放进去的物品总是在底下。若想取出,则只能等后放的物品先取走才能取出来。采用的寻址方式是直接寻址。在指令系统中只有两条用于数据传送的栈操作指令,其指令格式为PUSH directPOPdirect前一条是进栈(入栈或压栈)指令,其功能是先将堆栈指针SP的内容加1,即将栈顶上移一个存储单元,然后将直接地址单元的数据传送(或压入)到SP所指示的存储单元中,此时新的栈顶为原栈顶位置加1。后一条是出栈(弹出)指令,其功能是先将SP所指示存储单元的数据传送到直接地址单元中,然后将SP的内容减1,此时新的栈顶为原栈顶位置减1。要点:上电复位后(SP)=07H,若程序设

    29、计中需使用13组工作寄存器,则在程序设计一开始,应将SP指向内部RAM的高段。程序设计中若需使用堆栈,则应注意留出足够的存储单元给栈区。因为栈顶是随着数据的进栈、出栈不断变化着的,所以若栈区设置不当,则很有可能造成数据区重叠,以至程序紊乱,无法正常运行。例如:已知片内RAM 40H单元中存放的数值为0AH,设堆栈指针为5FH,把此数值压入堆栈,然后再弹出到30H单元中。根据题意编写指令如下:MOV SP,#5FH;SP5FH PUSH 40H;(SP)(SP)+1,(60H)(40H)POP 30H;(30H)(60H),(SP)(SP)1结果:30H单元内装入数值0AH,SP终值为5FH。执

    30、行过程示意图如图316所示。图316 堆栈操作执行过程示意图(a)原始数据;(b)PUSH 40H后;(c)POP 30H后(3)交换指令。交换指令有全字节交换和半字节交换,其目的操作数均为累加器A。涉及的指令助记符包括XCH(字节交换)、XCHD(半字节交换)和SWAP(累加器A高、低半字节交换)。此类指令可用于处理有某种递进关系的数据。例如,当需利用数码管实现显示数据从左至右递进显示的效果时,对于显示数据的处理就可以利用交换指令来实现。采用的寻址方式有直接寻址、寄存器寻址和寄存器间接寻址,其指令格式为XCH目的操作数,源操作数XCHD目的操作数,源操作数SWAP A交换指令的助记图如图31

    31、7所示。图317 交换指令的助记图下面通过一个例子来加以说明(以下指令在执行时前后关联)。设(A)=27H,(R6)=3EH,(3EH)=4CH,(R1)=20H,(20H)=0FAH。XCHA,R6;指令执行后(A)=3EH,(R6)=27HXCHA,3EH;指令执行后(A)=4CH,(3EH)=3EHXCHA,R1;指令执行后(A)=0FAH,(R1)=20H,(20H)=4CHXCHDA,R1;指令执行后(A)=0FCH,(R1)=20H,(20H)=4AHSWAPA;指令执行后(A)=0CFH(4)外部数据传送指令。外部数据传送指令通过P0口和P2口来实现累加器A与外部RAM或I/O口

    32、之间的数据传送,涉及的指令助记符为MOVX。外部RAM和I/O口统一编址,此时单片机采用总线式工作方式,由P2口(高8位地址)和P0口(低8位地址)构成地址总线,P0口作为数据总线,分时传送地址和数据。采用的寻址方式是寄存器间接寻址。其指令格式为MOVX目的操作数,源操作数外部数据传送指令的助记图如图318所示。图318 外部数据传送指令的助记图下面通过一个例子来加以说明。将外部RAM的2040H单元中的内容送到外部RAM 40H单元中,指令如下:MOV DPTR,#2040H;使DPTR指向外部RAM 2040H单元MOVXA,DPTR;取外部RAM 2040H单元的内容送累加器AMOV R

    33、0,#40H;使R0指向外部RAM 40H单元MOVXR0,A;将累加器A的内容送间接寻址的R0,即送外部RAM 40H(5)查表指令。查表指令是应用于访问程序存储器的指令,涉及的指令助记符为MOVC。在MCS51指令系统中有两条查表指令,其数据表格放在程序存储器中。采用的寻址方式是基址变址寻址。其指令格式为MOVC目的操作数,源操作数查表指令的助记图如图319所示。图319 查表指令的助记图CPU读取“MOVC A,A+PC”指令后,PC的内容自动加1。其功能是将新的PC的内容与累加器A内8位无符号数相加形成地址,取出该地址单元中的内容送累加器A。“MOVC A,A+DPTR”指令以DPTR

    34、为基址寄存器进行查表。使用前,先给DPTR赋予某指定查表地址。一般在程序设计时多采用“MOVC A,A+DPTR”,这样可以使得计算查表所需的偏移量更简单。下面通过一个例子来加以说明。数码管(共阴型)显示值在R2中,要求通过查表找到该显示值的字型码,并送P2口显示。MOVDPTR,#TABL;使DPTR指向表格首地址(基址)MOVA,R2;将R2的值送给A(偏移量)MOVCA,A+DPTR;查表MOVP2,A;将A中的字型码送P2口显示TABLE:DB3FH,06H,;表格中的列表值3设计步骤设计步骤(1)仿真图如图31所示,流程图如图320所示。(2)程序设计所需指令表如表34所示。图320

    35、 8盏灯无序点亮的流程图(3)参考程序代码如下:;*;文件名:EX3_4.asm 功能:8盏灯无序点亮;说明:发光二极管接在P1口;*ORG0000H LJMP MAIN ORG0030HMAIN:MOV DPTR,#TABLENEXT2:MOV R7,#0NEXT3:MOV A,R7MOVCA,A+DPTRMOV P1,AACALL DELAY INCR7CJNE R7,#08H,NEXT3SJMP NEXT2【练习】项目:8盏流水灯控制程序设计四。项目编号:EX3_5。任务要求:自行拟定一个设计要求,要求实现的功能是彩灯以无规律的方式点亮。在MedWin集成开发环境中编辑/编译控制程序,并

    36、产生代码,在Proteus平台里仿真系统,撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,MedWin或其他同类软件1套,Proteus软件1套。设计步骤:(1)打开MedWin软件。(2)新建源程序文件,编辑源代码。(3)编译源程序,若没有错,则产生代码;若有错,则修改错误。(4)仿真调试程序代码。(5)在Proteus中打开8盏流水灯控制电路图。(6)加载程序代码,调试。3.3 按键控制彩灯的设计按键控制彩灯的设计学习目标学习目标 理解独立按键的构成和工作原理,设计接口电路。理解51单片机的时序概念和内部数据/程序存储器结构,掌握工作寄存器的使用方法。工作任务工作任务 测试按

    37、键接口电路并对结果进行描述。设计与调试按键控制程序。撰写设计文档与测试报告。3.3.1 按键控制单盏灯按键控制单盏灯当今社会的进步使得消费者对产品的要求越来越高,我们经常希望某个产品具有很多功能,而这个产品往往是不能同时做很多事情的,这时就需要我们来选择,当前需要它实现什么功能就进行相应的选择,即输入一些信息给产品。最常见的输入设备就是按键,当系统需要人机交互输入信息时,多数是通过按键来输入信息的。例如,家用抽油烟机的机械控制面板和家用电器的遥控器面板都是通过按键来输入信息的。一般按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。用户可以通过独立按键输入简单的命令或数据,也可以

    38、通过由独立按键构成的矩阵式按键来输入数据。在这一小节中,我们先来认识一下独立式按键接口的设计方法。在单片机系统设计中,以P1.3为例,独立按键的接口电路如图321所示。当按键S断开时,P1.3输入为高电平;S闭合时,P1.3输入为低电平。由于按键是机械触点,因此当机械触点断开、闭合时,会有抖动。P1.3输入端的抖动波形如图322所示。由于单片机的处理时间是微秒级,按键的机械抖动时间至少是毫秒级,因此为了使单片机能正确地读出按键(P1.3口)的状态,对每一次按键只作一次响应,就必须考虑去除抖动。常用去抖动的方法有两种:硬件法和软件法。单片机系统设计中常用软件法,即利用延时来避开按键抖动,在单片机

    39、获得P1.3口为低的信息后,不是立即认定S已被按下,而是延时10ms或更长一段时间后再次检测P1.3口的状态,如果仍为低,则说明S的确按下了。在检测到按键释放(P1.3为高)后,再延时510ms,消除后沿的抖动,然后对键值进行处理。在实际应用中,对按键的要求千差万别,要根据不同的需要来编制处理程序,但以上是消除按键抖动的原则。图321 独立按键的接口电路 图322 P1.3输入端的抖动波形设计要求:按键S1输入,红灯亮;按键S2输入,绿灯亮;按键S3输入,黄灯亮。首先在Proteus中画好电路图,如图323所示。图323 独立按键控制1设计思路设计思路按键识别采用查询方式。按键是否被按下,我们

    40、要依据具体的电路来识别。采用仿真图323所示的电路设计,当按键S1被按下时,P2.0通过S1与地连通,也就是我们会在P2.0处得到一个低电平;当按键S1未被按下时,P2.0由于内部的上拉电阻而产生高电平。因此,我们可以通过识别P2.0端口的电位来判断按键是否被按下,而在51单片机指令系统中,可以使用JB rel和JNB rel来判断直接地址位的状态。2设计步骤设计步骤(1)流程图如图324所示。图324 按键控制单盏灯的流程图(2)程序设计所需指令表如表35所示。【练习】项目:按键控制一。项目编号:EX3_6。任务要求:S1按下红灯亮,松开红灯灭;S2按下绿灯亮,松开绿灯灭;S3按下黄灯亮,松

    41、开黄灯灭。在MedWin集成开发环境中编辑/编译控制程序,并产生代码,在Proteus平台里仿真系统,撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,MedWin或其他同类软件1套,Proteus软件1套。设计步骤:(1)打开MedWin软件。(2)新建源程序文件,编辑源代码。(3)编译源程序,若没有错,则产生代码;若有错,则修改错误。(4)仿真调试程序代码。(5)在Proteus中打开8盏流水灯控制电路图。(6)加载程序代码,调试。3.3.2 按键控制多彩流水灯按键控制多彩流水灯按键S1输入,8盏跑马灯循环显示一次;按键S2输入,8盏灯闪烁5次;按键S3输入,红灯亮绿灯亮黄灯亮

    42、红绿灯亮黄绿灯亮黄红灯亮全亮全灭,8种状态循环显示2次。状态每0.5 s改变一次。1设计思路设计思路这个设计要求中的按键识别也可以采用查询的方法,和上例类似。2设计步骤设计步骤(1)流程图如图325所示。图325 按键控制多彩流水灯的流程图(2)程序设计所需指令表如表36所示。要点:此设计要求完成后,在实际演示过程中,当程序运行在某一种彩灯显示方式时,按键似乎失去了作用,但当彩灯显示完成后,按键又恢复正常。这是什么原因呢?其实这很容易解释,因为程序始终是顺序执行的,而且CPU在同一时刻不可能完成两个动作,所以,当程序执行到彩灯控制程序时,由于该段程序中并没有穿插按键的识别,因此此时按键的动作是

    43、无法被CPU识别的。你可能会提出希望程序控制可以随时识别按键,并做出响应,这就需要中断来帮忙了。【练习】项目:按键控制二。项目编号:EX3_7。任务要求:将P3.2所接按钮设为加1键,P3.3所接按钮设为减1键,P1口控制发光二极管显示二进制形式的数值,例如初始的时候P1口的灯全灭,表示数值“0”,程序运行时实现每次按下加1键,P1输出的数据加1,同理,按下减1键,P1输出的数据减1。在MedWin集成开发环境中编辑/编译控制程序,并产生代码,在Proteus平台里仿真系统,撰写练习报告(格式要求见附录A)。设计设备与软件:计算机1台,MedWin或其他同类软件1套,Proteus软件1套。1

    44、思路分析思路分析根据3.3.1节设计要求的实现方法,按键仍可以采用查询方式,所以可以采用相同的处理方法,只要更换一下按键对应的处理程序即可。2基础知识基础知识算术运算类指令主要包括加、减、乘、除、加1、减1等指令,这些指令均是对8位无符号数进行操作。此类指令执行的结果大都会影响PSW中的标志位。其中,加、减运算影响进位CY、溢出位OV、辅助进位AC和奇偶校验位P;乘、除运算影响OV和P;加1、减1运算只在源操作数为A时影响P。1)加法指令加法指令中包括不带进位的加法指令、带进位的加法指令、加1(增量)指令和十进制调整指令,涉及的助记符包括ADD(不带进位的加法)、ADDC(带进位的加法)、DA

    45、(十进制调整)和INC(加1)。采用的寻址方式有立即寻址、直接寻址、寄存器寻址和寄存器间接寻址。其指令格式如下:ADD目的操作数,源操作数ADDC目的操作数,源操作数INC操作数DAA加法指令的助记图如图326所示。图326 加法指令的助记图不带进位的加法指令的功能是把源操作数和目的操作数的内容相加,其结果存放在累加器A中;带进位的加法指令的功能是把源操作数和目的操作数的内容相加,再加上进位标志,其结果存放在累加器A中;加1指令的功能是将操作数的内容加“1”之后,其结果仍放回操作数本身,若原来为0FFH,则加“1”之后将溢出为00H,但并不影响任何标志位;十进制调整指令是对累加器中的内容(由前

    46、一条加法指令计算的结果,其操作数的内容均为压缩的BCD码形式)进行调整,使它变成两位BCD码的数。要点:不论无符号数还是有符号数,单片机在运算时均采用二进制数原则直接运算,数据是否溢出依据CY或OV标志。无符号数运算时若CY=1,则表示数据有溢出;有符号数运算时若OV=1,则表示数据有溢出。当需处理一个字节以上的数据进行加运算时,可以借助带进位的加法指令,其使用方法可以从熟悉的十进制运算推出,即先进行低字节数据的累加,然后进行高字节数据的累加,高字节数据在累加的同时还应考虑低字节累加时产生的进位。两个压缩BCD码进行累加后,必须经“DA A”指令调整后才能得到压缩的BCD码的和。不能用DA指令

    47、处理减法操作。2)减法指令减法指令中包括带借位的减法指令和减1指令,涉及的指令助记符包括SUBB(带借位的减法)和DEC(减1)。采用的寻址方式有立即寻址、直接寻址、寄存器寻址和寄存器间接寻址。其指令格式如下:SUBB目的操作数,源操作数DEC操作数减法指令的助记图如图327所示。图327 减法指令的助记图带借位的减法指令的功能是从累加器A中减去源操作数的内容和进位标志的内容,其结果存放在累加器A中。减1指令的功能是把操作数的内容减“1”后,其结果仍放回到操作数本身,若原来为00H,则溢出为0FFH,不影响任何标志。要点:没有不带借位的减法指令,当需要进行不带借位的减法操作(第一次进行减法运算

    48、)时,将CY清零即可。由于SUBB是带借位的减法,因此每次使用需考虑前次运算操作对CY的影响。DPTR没有减1指令,即没有“DEC DPTR”指令。3)乘法指令MUL AB;ABBA乘法指令的功能是把累加器A和寄存器B中的无符号8位数相乘,所得16位积的低字节存放在A中,高位字节存放在B中。若乘积大于0FFH(255),则OV置1,否则OV清零。CY始终为0,同时次指令还影响P。下面通过一个例子来加以说明。设A=50H(80),B=0A0H(160)。执行指令:MUL AB结果为:AB=3200H(12800),B=32H,A=00H,OV=1,CY=0。4)除法指令DIVAB;AB的商A,余

    49、数B除法指令的功能是进行A除以B的运算,执行指令后,商的整数部分存放在A中,商的余数部分存放在B中。若原B中的数据为0,则执行指令后,A和B中的数据不变,同时OV置1,否则OV清零。CY始终为0,同时次指令还影响P。下面通过一个例子来加以说明。已知A=11H,B=04H,执行指令:DIV AB计算结果:A=04H,B=01H,CY=0,OV=0。3设计步骤设计步骤1)硬件电路设计(1)思路。根据实验内容分析,可以将8个发光二极管分别接到P1(P1.0P1.7)的端口上,采用直接驱动,为了提高驱动电流能力,采用共阳极接法。按键分别接在P3.2和P3.3上,单片机其他电路接成最小系统即可。(2)在

    50、Proteus中画好电路图。仿真图如图328所示。图328 按键控制二仿真图2)软件设计(1)绘制程序流程图,如图329所示。图329 按键控制二流程图(2)编写程序代码。参考程序代码如下:ORG 0000H LJMP MAIN ORG 0030HMAIN:MOV SP,#5FH;初始化MOV P3,#0FFHMOV R5,#00H(3)编译程序。(4)仿真调试。(5)程序烧录并观察实际运行结果。思考:如果将设计要求改为S1每次按下,彩灯显示的二进制数加2,那么应怎样修改程序呢?3.4 单个数码管显示接口的设计单个数码管显示接口的设计学习目标学习目标 理解数码管的构成和工作原理,设计接口电路。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《单片机应用实例开发》课件第3章.ppt
    链接地址:https://www.163wenku.com/p-8234153.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库