《单片机技术应用实训.ppt》由会员分享,可在线阅读,更多相关《单片机技术应用实训.ppt(143页珍藏版)》请在三一办公上搜索。
1、单片机技术 应用实训,主讲人:张旭涛,项 目 一 览,项目一 设计广告灯 任务1 单片机的最小系统建立 任务2 显示一位LED灯 任务3 流水八位LED灯项目二 设计表决器项目三 设计计算器项目四 设计电子时钟项目五 设计汽车转弯信号灯模拟实验项目六 设计智能交通灯控制项目七 设计电子琴模拟实验项目八 设计直流电机驱动实验,项目一 任务1 单片机的最小系统建立,教学环节设计,一、实践环节,一、实践环节,一、实践环节,二、实验内容及步骤用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。1.使用单片机最小应用系统1模块。关闭该模块电源,用扁平数据线连接单片机P1口与八
2、位逻辑电平显示模块。2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。具体内容参见教材,二、理论知识链接,1、单片机最小应用系统组成(1)MCS-51单片机最小应用系统的构成最小应用系统是指能维持单片机运行的最简单配置系统。它常
3、用作一些简单的控制系统,如开关状态的输入/输出控制、时序控制等。这种应用系统的硬件组成十分简单,对于片内有ROM的单片机(如8051),只要配上时钟电路、复位电路和电源就可以构成最小应用系统。电路连接原理如下图所示:,二、理论知识链接,()单片机的时钟电路时钟电路提供时钟给计算机的各个部件,使各个部件按照一定的时序有条不紊的工作。时钟的快慢决定着计算机的工作节奏。下面以8051为例,介绍MCS-5l系列单片机的时钟电路组成形式。8051内部工作时,也可由外部时钟信号提供,这种连接方式称为外部时钟源方式。原理如下图所示。此时外部的时钟信号由XTAL2引脚引入,由于TAL2端逻辑电平不是TTL型的
4、,故需外接一上拉电阻。另外,外接信号应为时钟频率低于12MHz的方波信号。,二、理论知识链接,(3)单片机的复位电路在单片机应用系统中,除单片机芯片本身需要复位、外部扩展的I/O接口电路等需要复位外,对于单片机程序也必须初试化后才能执行。因此一个单片机系统需要同步复位信号,即单片机复位后,CPU开始工作,此时片外的有关扩展芯片外部时钟也要完成复位操作,以保证CPU有效地对外围芯片进行初始化编程。单片机的复位方式有上电复位和手动按钮复位两种,如下图 所示。,二、理论知识链接,2、MCS-51单片机的外部存储器的扩展(1)MCS-5l系列单片机的片内结构在了解单片机外部存储器扩展知识之前,让我们先
5、认识一下单片机的内部结构。MCS-51系列单片机是双列直插封装形式的集成器件,内部采用模块式的结构,包含了一个独立的微机硬件系统所应具有的各个功能部件和一些重要的功能扩展部件。其结构框图如下图所示。,二、理论知识链接,(2)MCS-5l系列单片机的片外总线结构 当系统要求扩展时,为了便于与各种芯片相连接,应把单片机外部连线变为一般微机所具有的三总线结构形式,即地址总线、数据总线、控制总线。MCS-5l系列单片机的片外引脚可构成如下图所示的三总线结构,所有的外围芯片都将通过这三总线进行扩展。,二、理论知识链接,3、单片机常用汇编指令 汇编语言,由标号、操作码助记符、操作数和注释4个字段组成,格式
6、如下:标号:操作码助记符 操作数1,操作数2;注释(1)标号 标号是用户定义的符号,由以字母开始的18个字符(字母或数字)组成,它代表指令的符号地址,通常在程序分支、转移等所需要的地方加上一个标号,并不是每条指令都必须有标号。当将指令转换成机器指令时,指令第一字节(也称首字节)的存储单元地址值赋给该标号。(2)操作码助记符 助记符是一些代表操作含义的英文缩写,一般由25个英文字母组成,如“MOV”表示“传送”、“ADD”表示“加”等。操作码助记符对应的机器码是指令的第一字节,也是指令不可缺少的部分。(3)操作数 与机器指令格式中的操作数相似。(4)注释 注释是对本指令或本段程序的功能说明,便于
7、对程序的阅读理解,在转换成机器指令时不予考虑。注释的前面需加分号“;”。,二、理论知识链接,4、根据本实验涉及相关指令内容,本节重点介绍跳转和转移指令。(1)长跳转指令 1)长跳转指令 LJMP addrl6 2)功能 该指令执行时把16位地址中的高8a15a8位送入PCH,低8位a7a0送入PCL中,无条件地转向指定地址。该指令不影响任何标志,转移的范围可达64K字节,故称长转移指令。(2)短跳转指令 1)短跳转指令 AJMP addrll 2)功能 该指令的操作数“addrll”应是一个十六位二进制数,表示转向的目标地址,其中“addrll”表示低11位,说明转向的目标地址范围由低11位组
8、合决定,故跳转的范围是2K字节。(3)相对转移指令 1)相对转移指令 SJMP rel 2)功能 该指令执行时程序计数器指针PC+2后成为PC当前值,并把有符号数“rel”值加到PC上,并计算出转向目标地址。,二、理论知识链接,(4)条件转移指令 条件转移指令是指满足一定条件时,程序才进行相对转移,若条件不满足时则顺序执行下面的指令。测试条件符合转移指令 1)指令与指令代码 指令:JZ rel;JNZ rel;JC rel;JNC rel;JB bit,rel;JNB bit,rel;JBC bit,rel 2)功能 JZ 如果A为0,则转移;否则顺序执行。JNZ 如果A不为0,则转移;否则顺
9、序执行。JC 如果进位标志CY=1,则执行转移;否则顺序执行。JNC 如果进位标志CY=0,则执行转移;否则顺序执行。JB 如果直接寻址的位值为1,则执行转移;否则顺序执行。JNB 如果直接寻址的位值为0,则执行转移;否则顺序执行。JBC 如果直接寻址的位值为1,则执行转移,然后直接寻址的位清“0”;否则顺序执行。,三、实践练习,(1)硬件实验操作步骤(2)keil uvision2的软件操作方法(3)软件操作实验 注:以上内容略,四、随堂思考,对于本实验延时子程序Delay:MOV R6,0 MOV R7,0DelayLoop:DJNZ R6,DelayLoop DJNZ R7,DelayL
10、oop RET如使用12MHz晶振,粗略计算此程序的执行时间为多少?,项目一 任务2 显示一位LED灯,教学环节设计,一、实践环节,一、实践环节,3、具体操作步骤如下:(1)使用单片机最小应用系统模块。关闭该模块电源,用导线分别连接P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。注意,插座与连接线的槽口是八个,一旦连接,则相应单片机端口与其它电路相应接口均接通。(2)用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。(3)打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_B.ASM源程序,进行编译
11、,直到编译无误。(4)进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。(5)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,拨动拨断开关,观察发光二极管的亮灭情况。向上拨为熄灭,向下拨为点亮。,一、实践环节,4、软件程序的设计,KEYLEFT BIT P1.0;定义 KEYRIGHT BIT P1.1 LEDLEFT BIT P1.2 LEDRIGHT BIT P1.3 ORG 0000H LJMP START ORG 0030HSTART:SETB KeyLeft;欲读先置一 SETB KEYRIGHTLOOP:MOV A,P0 CJNE A,#03H,NEX
12、T AJMP LOOPNEXT:ACALL DELAY MOV C,KEYLEFT MOV LEDLEFT,C MOV C,KEYRIGHT MOV LEDRIGHT,C LJMP LOOP END ORG 0070HDELAY:MOV R6,0 MOV R7,0 DELAYLOOP:DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RET,一、实践环节,5、利用keil uvision2的软件调试程序(1)打开keil uvision2软件,点击“新建”图标,在弹出的窗口中输入以上程序,如下图:,(2)点击“保存”图标,出现保存对话框,如下图所示:,二、理论知识链接,1
13、、LED灯的显示原理为方便人们观察和监视单片机的运行情况,通常把数码显示器作为单片机的输出设备,用来显示单片机的键输入值、中间信息及运算结果等。在单片机应用系统中,常用的显示器主要有LED(发光二极管显示器)和LCD(液晶显示器)。这两种显示器具有耗电省、成本低廉、配置灵活、线路简单、安装方便、耐振动、寿命长等优点。但因其显示内容有限,且不能显示图形,因而其应用有局限性,近年来对某些要求较高的单片机应用系统开始配置简易形式的CRT接口。因为目前应用最广泛的还是数码显示器,所以本节将以LED显示器为例进行介绍。(1)LED显示器结构与原理 LED显示器是由发光二极管显示字段的显示器件,也可称为数
14、码管。其外形结构如下图)所示,由图可见它由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示09、AF及小数点“.”等字符。,二、理论知识链接,数码管通常有共阴极和共阳极两种结构接法,见上图(b)和(c)。本试验所采用的LED显示电路为两组共阳极电路,只不过LED灯不是管形的。图中电阻为外接的,一般共阳极数码管必须外接电阻,共阴极不一定外接电阻。共阴极数码管的发光二极管阴极共地,当某发光二极管的阳极为高电平(一般为+5V)时,此二极管点亮;共阳极数码管的发光二极管是阳极并接到高电平,对于需点亮的发光二极管使其阴极接低电平(一般为地)即可。显然,要显示某字形就应使此字形的相应字段点亮,
15、实际就是送一个用不同电平组合代表的数据至数码管。这种装入数码管中显示字形的数据称字形码。下面以共阳极数码管为例说明字形与字形码的关系。对照下图字段,字形码各位定义如下:D7 D6 D5 D4 D3 D2 D1 D0,数据线D0与a字段对应,D1与b字段对应,依此类推。参考图1-2-6(a)和(c)可以看出,如要显示“7”字形,a、b、c三字段应点亮,所以对应的字形码为lllll000B。如要显示“E”,对应的a、f、g、e、d字段应点亮,所以其字形码为10000110B。,二、理论知识链接,LED显示器有静态显示与动态显示两种方式,下面分别予以介绍。(2)静态显示接口 数码管工作在静态显示方式
16、下,共阴极或共阳极点连接在一起接地或高电平。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。这里的8位并行口可以直接采用并行I/O接口片,也可以采用串入/并出的移位寄存器。考虑到若采用并行I/O接口,占用I/O资源较多。因而静态显示方式常采用串行口输出方式,外接74LSl64移位寄存器构成显示电路,如下图所示。,二、理论知识链接,()LED动态显示接口 动态扫描式显示是最常用的显示方式之一。动态显示,也称扫描显示。显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,经由一片74LS245驱动输出给LED管,由P1口输出位码,经由74
17、LS06反相输出给LED管。下图是单片机应用系统中的动态显示示意图。,二、理论知识链接,2、键盘电路的去抖方法键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反映在电压上就是呈现出高电平或低电平,若高电平表示断开,则低电平表示键闭合。所以,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。但在实际中,仅仅根据电平进行键的确认是不够可靠的,还要进行下面重键与连击两个方面的处理。在实际操作过程中,若无意中同时或先后按下两个以上的键,这就是连击。系统要确认连击操作过程中究竟是哪个键有效,完全由设计者的意志来决定。既可以把先
18、按下的键或按下时间最长的键视为有效输入,也可以把后释放的键视为有效输入。不过,在单片机控制系统的应用中,通常总是采用单键按下有效,多键同时按下无效的原则进行设计。重键指的是有些操作人员按键动作不熟练,会在一个键上的停留时间过长而产生多次击键的效果。为了排除重键的影响,编制程序时,可以将键的释放作为按键的结束。等键释放后,再转去执行对应的功能程序,从而有效地避免一次击键多次执行的错误发生。,二、理论知识链接,无论是按键或键盘都是利用机械触点的闭合与断开来确认键的输入。由于按键机械触点的弹性作用,在闭合及断开瞬间均伴随有一连串的抖动过程,其波形如下图所示。抖动时间的长短,与开关的机械特性有关,一般
19、为510ms。按键的稳定闭合期,由操作人员的按键动作所确定,一般为十分之几至几秒。为了保证单片机对按键的一次闭合只作一次键输入处理。必须去除抖动影响。通常去除抖动有硬件和软件两种方法。,二、理论知识链接,对于硬件去抖有多种方法,最常用的有滤波去抖电路和双稳态去抖电路。(1)滤波去抖电路(左图)(2)双稳态去抖电路(右图),二、理论知识链接,(3)软件去抖除了以上所说的硬件除抖动的方法,也可以用软件去除抖动。如前所述,若采用硬件去除抖动的电路,则N个键就必须配有N个去抖电路。因此,当键的个数比较多时,硬件去抖会过于复杂。为了解决这个问题,可以采用软件的方法来去除抖动的影响。当第一次检测到有键按下
20、时,先用软件延时1020ms,然后再确认该键电平是否仍维持闭合状态电平。若保持闭合状态电平,则认为此键确已按下,从而消除了抖动的影响。这种方法由于不需要附加的硬件投入,而被广泛应用,前面的试验就采用了这种方法。当然,是在确定按键是否被按下的基础上,采用延时程序获得键盘信息。具体实现程序如下:LOOP:MOV A,P1 CJNE A,#03H,NEXT AJMP LOOPNEXT:ACALL DELAY,二、理论知识链接,三、拓展型理论知识 1、单片机常用汇编指令(1)定位伪指令ORG 格式:ORG nn;nn为十进制或十六进制数。nn指出在该伪指令后的指令的汇编地址,即生成的机器指令起始存储地
21、址。(2)定义字节伪指令 格式:DB X1,X2,Xn;Xi为单字节数据,它为十进制或十六进制数,也可以为一个表达式。Xi也可以为由两个单引号括起来的 一个字符串,这时Xi定义的字节长度等于字符串的长度,每一个字符为一个ASCII码。(3)赋值伪指令 格式:字符名称 EQU 数据或汇编符;EQU伪指令称为赋值伪指令,用于给它左边的“字符名称”赋值。(4)位地址赋值伪指令 格式:字符名称 BIT 位地址;BIT称为位地址赋值伪指令,用于给以符号形式的位地址赋值。(5)汇编结束伪指令 格式:END;该伪指令指出结束汇编,即使后面还有指令,汇编程序也不作处理。(6)短调用指令 ACALL addrl
22、l;这条指令无条件调用首址由addrll所指出的子程序。(7)长调用指令 LCALL addrl6;这条指令无条件地调用位于指定地址的子程序。(8)返回指令(2条):返回指令是使CPU从子程序返回到主程序执行的指令。从子程序返回指令:1)指令 RET,2)功能 从堆栈中退出PC的高位和低位字节,把堆栈指针SP-2,并从产生的PC值开始执行程序。从中断返回指令:1)指令 RETI,2)功能 这条指令除了执行RET指令功能外,还清除内部相应的中断状态寄存器,二、理论知识链接,2、流程图的分析方法(1)程序流程图的作用程序流程图是人们对解决问题的方法、思路或算法的一种描述。流程图的优点:(a)采用简
23、单规范的符号,画法简单;(b)结构清晰,逻辑性强;(c)便于描述,容易理解。(2)流程图采用的符号,2)终止框,3)执行框,4)判别框,1)起始框,实例,三、实践练习,(1)硬件实验操作步骤(2)keil uvision2的软件操作方法(3)软件操作实验 注:以上内容略。,四、随堂思考,对于本实验,如果按下一个按钮,相应的LED灯亮,并且闪烁,如何设计这个实验。如使用12MHz晶振,闪烁延时为1ms,并予以实验验证。提示:可使用子程序指令进行设计。,项目一 任务3 流水八位LED灯,教学环节设计,一、实践环节,一、实践环节,1、学习单片机八位LED流水灯的的实验方法(1)使用单片机最小应用系统
24、模块。关闭该模块电源,用扁平数据线连接单片机P0口与八位逻辑电平显示模块。(2)用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。(3)打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。(4)进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。如下图所示:(5)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。,一、实践环节,4、软件程序的设计,二、理论知识链接,1、数据传送指令在单片机中,数
25、据传送是最基本和最主要操作。数据传送操作可以在片内RAM和SFR内进行,也可以在累加器Acc和片外存储器之间进行。指令中必须指定传送数据的源地址和目的地址,以便机器执行指令时把源地址中内容传送到目的地址中,但不改变源地址中内容。MCS-51单片机的数据传送指令共有28条,分为内部数据传送指令、外部数据传送指令、堆栈操作指令和数据交换指令等四类。(1)内部数据传送指令1)以A为目的操作数的指令这类指令的格式为:MOV 目的操作数,源操作数 指令与指令代码含义 指令 操作 MOV A,Rn A(Rn)MOV A,direct A(direct)MOV A,Ri A(Ri)MOV A,#data A
26、data对Rn寻址的指令,其机器码字节的低三位为rrr,对应于8个工作寄存器之一,当为000时,表示R0;为001时,表示R1;以此类推。指令功能 这组指令的功能是把源操作数的内容送入累加器Acc。,二、理论知识链接,2)以Rn为目的操作数的指令 指令与指令代码含义 指令 操作 MOV Rn,A Rn(A)MOV Rn,direct Rn(direct)MOV Rn,#data Rndata 功能 这组指令的功能是将源操作数的内容送入当前工作寄存器区的R0R7中的某一个寄存器。3)以直接寻址的单元为目的操作数指令 指令与指令代码含义 指令 操作 MOV direct,A direct(A)MO
27、V direct,Rn direct(Rn)MOV directl,direct2 directl(direct2)MOV direct,Ri direct(Ri)MOV direct,#data directdata 应注意:“MOV directl,direct2”指令译成指令代码时,源地址(direct2)在前,目的地址directl在后。功能 这组指令的功能是把源操作数送入由直接地址指向的存储单元。,二、理论知识链接,4)以寄存器间接寻址的单元为目的操作数指令 指令与指令代码含义 指令 操作 MOV Ri,A(Ri)(A)MOV Ri,direct(Ri)(direct)MOV Ri,
28、#data(Ri)data 功能 本组指令是将源操作数送入以R0或R1内容为地址的存储单元 中。(2)外部数据传送指令1)16位数据传送指令 指令与指令代码含义 指令 操作 MOV DPTR,#datal6 DPTRdatal6 功能 把16位常数送入DPTR,16位的数据指针DPTR由DPH和DPL组成,执行结果把高位立即数送入DPH,低位立即数送入DPL。2)外部ROM的字节传送指令 由于外部程序存储器只读不写,因此数据传送是单向的,即只从外部程序存储器中读出数据,并且只能向累加器Acc传送。这类指令共有两条,均属于变址寻址指令,因专门用于查表而又称为查表指令。指令 MOVC A,A+PC
29、 指令 MOVC A,A+DPTR,二、理论知识链接,()LED动态显示接口 动态扫描式显示是最常用的显示方式之一。动态显示,也称扫描显示。显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,经由一片74LS245驱动输出给LED管,由P1口输出位码,经由74LS06反相输出给LED管。下图是单片机应用系统中的动态显示示意图。,二、理论知识链接,2、键盘电路的去抖方法键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反映在电压上就是呈现出高电平或低电平,若高电平表示断开,则低电平表示键闭合。所以,通过电平状态(高或低
30、)的检测,便可确定相应按键是否已被按下。但在实际中,仅仅根据电平进行键的确认是不够可靠的,还要进行下面重键与连击两个方面的处理。在实际操作过程中,若无意中同时或先后按下两个以上的键,这就是连击。系统要确认连击操作过程中究竟是哪个键有效,完全由设计者的意志来决定。既可以把先按下的键或按下时间最长的键视为有效输入,也可以把后释放的键视为有效输入。不过,在单片机控制系统的应用中,通常总是采用单键按下有效,多键同时按下无效的原则进行设计。重键指的是有些操作人员按键动作不熟练,会在一个键上的停留时间过长而产生多次击键的效果。为了排除重键的影响,编制程序时,可以将键的释放作为按键的结束。等键释放后,再转去
31、执行对应的功能程序,从而有效地避免一次击键多次执行的错误发生。,二、理论知识链接,无论是按键或键盘都是利用机械触点的闭合与断开来确认键的输入。由于按键机械触点的弹性作用,在闭合及断开瞬间均伴随有一连串的抖动过程,其波形如下图所示。抖动时间的长短,与开关的机械特性有关,一般为510ms。按键的稳定闭合期,由操作人员的按键动作所确定,一般为十分之几至几秒。为了保证单片机对按键的一次闭合只作一次键输入处理。必须去除抖动影响。通常去除抖动有硬件和软件两种方法。,二、理论知识链接,对于硬件去抖有多种方法,最常用的有滤波去抖电路和双稳态去抖电路。(1)滤波去抖电路(左图)(2)双稳态去抖电路(右图),二、
32、理论知识链接,(3)软件去抖除了以上所说的硬件除抖动的方法,也可以用软件去除抖动。如前所述,若采用硬件去除抖动的电路,则N个键就必须配有N个去抖电路。因此,当键的个数比较多时,硬件去抖会过于复杂。为了解决这个问题,可以采用软件的方法来去除抖动的影响。当第一次检测到有键按下时,先用软件延时1020ms,然后再确认该键电平是否仍维持闭合状态电平。若保持闭合状态电平,则认为此键确已按下,从而消除了抖动的影响。这种方法由于不需要附加的硬件投入,而被广泛应用,前面的试验就采用了这种方法。当然,是在确定按键是否被按下的基础上,采用延时程序获得键盘信息。具体实现程序如下:LOOP:MOV A,P1 CJNE
33、 A,#03H,NEXT AJMP LOOPNEXT:ACALL DELAY,二、理论知识链接,三、拓展型理论知识 1、单片机常用汇编指令(1)定位伪指令ORG 格式:ORG nn;nn为十进制或十六进制数。nn指出在该伪指令后的指令的汇编地址,即生成的机器指令起始存储地址。(2)定义字节伪指令 格式:DB X1,X2,Xn;Xi为单字节数据,它为十进制或十六进制数,也可以为一个表达式。Xi也可以为由两个单引号括起来的 一个字符串,这时Xi定义的字节长度等于字符串的长度,每一个字符为一个ASCII码。(3)赋值伪指令 格式:字符名称 EQU 数据或汇编符;EQU伪指令称为赋值伪指令,用于给它左
34、边的“字符名称”赋值。(4)位地址赋值伪指令 格式:字符名称 BIT 位地址;BIT称为位地址赋值伪指令,用于给以符号形式的位地址赋值。(5)汇编结束伪指令 格式:END;该伪指令指出结束汇编,即使后面还有指令,汇编程序也不作处理。(6)短调用指令 ACALL addrll;这条指令无条件调用首址由addrll所指出的子程序。(7)长调用指令 LCALL addrl6;这条指令无条件地调用位于指定地址的子程序。(8)返回指令(2条):返回指令是使CPU从子程序返回到主程序执行的指令。从子程序返回指令:1)指令 RET,2)功能 从堆栈中退出PC的高位和低位字节,把堆栈指针SP-2,并从产生的P
35、C值开始执行程序。从中断返回指令:1)指令 RETI,2)功能 这条指令除了执行RET指令功能外,还清除内部相应的中断状态寄存器,二、理论知识链接,2、流程图的分析方法(1)程序流程图的作用程序流程图是人们对解决问题的方法、思路或算法的一种描述。流程图的优点:(a)采用简单规范的符号,画法简单;(b)结构清晰,逻辑性强;(c)便于描述,容易理解。(2)流程图采用的符号,2)终止框,3)执行框,4)判别框,1)起始框,实例,三、实践练习,(1)硬件实验操作步骤(2)keil uvision2的软件操作方法(3)软件操作实验 注:以上内容略。,四、随堂思考,对于本实验,如果按下一个按钮,相应的LE
36、D灯亮,并且闪烁,如何设计这个实验。如使用12MHz晶振,闪烁延时为1ms,并予以实验验证。提示:可使用子程序指令进行设计。,项目二 设计表决器,教学环节设计,一、实践环节,1、实验连接示意、表决器显示模块 示意图,一、实践环节,3、表决器的实验方法 使用单片机最小应用系统模块。关闭该模块电源,用数据线连接单片机P1口的高4位与逻辑电平显示模块,将P1口低四位用数据线与按钮电路相连。用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着设计源程序,进行编译,直到编译无误。进行软件设置
37、,选择硬件仿真,选择串行口,设置波特率为38400。打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,按下相应表决器按钮,察看表决结果。,一、实践环节,4、软件程序的设计,二、理论知识链接,1、位操作指令在MCS-51系列单片机中,可以以程序状态字寄存器的进位位CY(PSW.7)作为累加器C,以数据存储器(RAM)和特殊功能寄存器SFR内的位寻址区的位单元作为操作数,进行位变量的传送、修改和逻辑等操作。()位变量传送指令 1)位操作指令 指令 MOV C,bit MOV bit,C 2)功能 该指令把源位单元中的数据送到目标位单元中,其中一个操作数必须是位累加器C,另一个可以是任
38、何直接寻址的位,也就是说位变量的传送必须经过C。其中位地址可参照书本。()位变量修改指令 1)指令与指令代码 指令 CLR C CLR bit CPL C CPL bit SETB C SETB bit 2)功能 这组指令将操作数指出的位清“0”、取反、置“1”。“CLR”是清0,“CPL”是取反,“SETB”是置“1”,二、理论知识链接,(3)位变量逻辑与操作指令 1)位变量逻辑与指令 ANL C,bit ANL C,/bit 2)功能 如果源位的内容为逻辑0,则CY清0,否则CY保持不变。“/bit”的斜线表示用位内容的逻辑非为源值,但不影响本身值。()位变量逻辑或操作指令)位变量逻辑或指
39、令 ORL C,bit ORL C,bit 2)功能 如果源位的值为1,则进位标志CY=1,否则进位标志CY保持原来状态。斜线“”表示逻辑非,但源位本身保持不变。3、字节逻辑指令(1)逻辑与指令 指令助记符为“ANL”,表示是“AND”(与)和“LOG”(逻辑)的组合。1)指令与指令代码 指令 ANL A,Rn;ANL A,direct;ANL A,Ri;ANL A,#data ANL direct,A;ANL direct,#data 2)功能 该组指令将源操作数和目的操作数之间按位进行逻辑与操作,结果存放在目的操作数中。,二、理论知识链接,(2)逻辑或的指令 指令助记符“ORL”,由“OR
40、”(或)和“LOG”(逻辑)的组合。1)指令与指令代码 ORL A,Rn ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#data 2)功能 这组指令将源操作数和目的操作数之间按位进行逻辑或操作,结果存到目的操作数。(3)逻辑异或指令 指令助记符“XRL”,XR表示异或,比较的两数码,相同出0,不同出1,“L”表示“逻辑”。1)指令与指令代码 指令 XRL A,Rn XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data 2)功能 这组指令将源操作数和目
41、的操作数之间执行按位的逻辑异或操作,结果存放到目的操作数中。,二、理论知识链接,【例2-7】设(A)=64H,(R5)=0F7H,说明执行指令“XRL A,R5”后的结果。解 01100100)11110111 10010011结果为(A)=10010011即93H。(4)累加器清零和取反指令(1)清零指令 CLR A 该指令的指令代码为11100100,功能是将累加器Acc清“0”,不影响CY、AC、OV等标志。(2)取反指令 CPL A 该指令的指令代码为11110100,功能是将累加器Acc中的每一位取反,原来为1的位变0,原来为0的位变1,不影响标志位。【例2-8】设(A)=01010
42、101B,说明执行指令“CPL A”的结果。解 结果为(A)=10101010B。,三、实践练习,(1)硬件实验操作步骤(2)keil uvision2的软件操作方法(3)软件操作实验 注:以上内容略。,四、随堂思考,(1)对于本实验,如果八位表决者进行表决,如何设计这个实验程序。并予以实验验证。提示:可使用字节传送指令进行设计。()可否将表决者信息用七段码进行表示,设计相应的显示电路。,项目三 设计计算器,教学环节设计,一、实践环节,1、实验连接示意图,一、实践环节,2、计算器的实验操作步骤本实验采用44键盘,16个键依次对应09、“+”、“-”、“”、“”、“=”和清除键。可以进行小于25
43、5的数的加减乘除运算,并可连续运算。当键入值大于255时,将自动清零,可以重新输入。具体步骤如下:(1)使用单片机最小应用系统模块,P0口接阵列式键盘,P3.6、P3.7连接串行静态显示模块的DIN、CLK端。(2)用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。(3)打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 计算器.ASM源程序,进行编译,直到编译无误。(4)进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。(5)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。键入值,在连续5个八
44、段数码管上观察运算过程与结果。,一、实践环节,4、主要程序的分析,一、实践环节,4、主要程序的分析,一、实践环节,4、主要程序的分析,二、理论知识链接,1、44按键电路工作原理行列式键盘是键盘输入的主要方式。键盘按键编码分为独立式键盘和行列式键盘两种编码方式。独立式键盘主要是指直接用I/O线构成的单个键盘电路,每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态,如前面表决器输入电路。行列式键盘由行线和列线组成,按键设置在行线和列线的交叉点上,按键的两端分别连接在行线和列线上。结合实验,重点学习行列式键盘。键盘的工作方式一般有编程扫描方式和中断扫
45、描方式两种。下面重点介绍编程扫描方式。编程扫描方式是利用单片机在完成其它工作的空余,调用键盘扫描子程序,来响应键输入要求。在执行键功能程序时,CPU不再响应键输入要求。结合实验,键盘电路如下所示:,二、理论知识链接,键盘扫描程序一般应具备下述几个功能(1)判断键盘上有无键按下。其方法为逐列扫描输出“0”(即低电平)时,读口状态,若全为1,则键盘无键按下,若不全为“1”,则有键按下。(2)去除键的抖动影响。方法为软件延时一段时间(一般为10ms左右)后,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键被按下,否则按键抖动处理。(3)扫描键盘,得到按下键的键号。按照行列式键盘的工作原理,
46、图3-4中16个键的键值从左上角的数字“0”键开始向右下分布。(4)判别闭合的键是否释放。键闭合一次仅进行一次键功能操作。等键释放后即将键值送入累加器Acc中,然后执行键功能操作。(5)计算器读键子程序分析:计算器读键子程序为列扫描方式,具体功能分析如下:KEYTABLE:DB 0EEH,0DEH,0BEH,07EH;键码定义 DB 0EDH,0DDH,0BDH,07DH DB 0EBH,0DBH,0BBH,07BH DB 0E7H,0D7H,0B7H,077HGETKEY:MOV R6,#10;设定内延时循环次数 CALL DELAY;延时去抖 MOV P0,#0FH;将键盘列值全置“0”M
47、OV A,P0;读取键盘端口状态 CJNE A,#0FH,K12;判断键盘端口状态,有动作,跳转到K12 LJMP MLOOP;键盘无动作,返回主程序,重新检测K12:MOV B,A;键盘端口值送给B MOV P0,#0EFH;将键盘第一列置“0”MOV A,P0;读取键盘端口状态 CJNE A,#0EFH,K13;判断键盘端口状态,有动作,跳转到K13 MOV P0,#0DFH;将键盘第二列置“0”MOV A,P0;读取键盘端口状态 CJNE A,#0DFH,K13;判断键盘端口状态,有动作,跳转到K13 MOV P1,#0BFH;将键盘第三列置“0”,二、理论知识链接,、七段数码管的显示过
48、程静态串行显示电路原理与程序在前面已讲过,这里不再累述。重点要讲解如何获得显示的数据。本实验允许的数值最多为3位。另外,如何将其转换成十进制,为下面的运算做好准备工作。分析如下相关程序:INC R3;按键个数(以下均为主程序部分)CJNE A,#0,NEXT1;判断是否为数字键“0”,为“0”转E1,否则转NEXT1 LJMP E1;转数字键处理NEXT1:CJNE A,#1,NEXT2;判断是否为数字键“1”,为“1”转E1,否则转NEXT2 LJMP E1 NEX10:CJNE A,#10,NEX11;判断是否功能键“10”,为“10”转E2,否则转NEXT11 LJMP E2;转功能键处
49、理NEX11:CJNE A,#11,NEX12;判断是否功能键“11”,为“11”转E2,否则转NEXT12 LJMP E2 NEX15:LJMP E3;判断是否功能键“15”,为“15”转E3E1:CJNE R3,#1,N1;判断第几次按键,R3为“1”转E11,否则转N1 LJMP E11;跳转E11N1:CJNE R3,#2,N2;判断第几次按键,R3为“2”转E12,否则转N2 LJMP E12;跳转E12N2:CJNE R3,#3,N3;判断第几次按键,R3为“3”转E13,否则转N3 LJMP E13;跳转E13N3:LJMP E3;第四个数字输入则溢出E11:MOV R4,A;输
50、入值暂存R4 MOV 34H,A;输入值送个位显示缓存 MOV 33H,#10H;显示键值“零”送十位显示缓存 MOV 32H,#10H;显示键值“零”送百位显示缓存 LJMP MLOOP;返回主程序,等待再次输入E12:MOV R7,A;个位数暂存R7 MOV B,#10;将十赋予B,二、理论知识链接,、算术运算指令(1)加法指令加法指令使用助记符“ADD”。1)不带进位的加法指令 指令代码 ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data 功能 将源操作数与累加器Acc的内容相加,其结果放于累加器Acc中。对标志位的影响 加法运算对程序状态字寄存器PSW