项目五 启停按钮的应用_第1页
项目五 启停按钮的应用_第2页
项目五 启停按钮的应用_第3页
项目五 启停按钮的应用_第4页
项目五 启停按钮的应用_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

启停按钮的应用项目五1(1)掌握按钮与单片机的接法。234项目指南(2)掌握位判断转移指令JB、JNB的功能和用法。(3)掌握无条件转移指令SJMP、LJMP的功能和用法。(4)巩固延时程序的编写方法。5(5)巩固LED与单片机的连接方法。678项目指南(6)巩固程序流程图的画法。(7)熟悉按键去抖方法。(8)了解AT89C51的直流电气特性。用Proteus软件仿真按钮控制LED闪烁任务。(1)制作按钮控制LED闪烁系统实物。(2)实践清单知识链接项目四学习了带延时程序的LED闪烁控制,从仿真运行的结果来看,只要开始仿真LED就开始闪烁,这就好比只要插上插销通上电,电视就开始播放节目一样,这显然是不对的。需要给电路加开关进行控制,本项目学习用启停按钮控制LED闪烁。本项目设定的控制任务:将2个非自锁按钮分别用作启动按钮和停止按钮接在单片机上,将1个LED用灌电流的方式接在单片机上。当单片机通电后,不按下(单击)启动按钮,则LED不亮,按下启动按钮,则LED以1s的频率闪烁3次后常亮。此时如果不按下停止按钮,则LED保持常亮,按下停止按钮后LED熄灭,并且再次按下启动按钮后系统能重复上述过程。先结合项目四的程序流程图的知识,绘制这个控制任务的程序流程图,绘制后参考下一部分的讲解。知识链接一、绘制程序流程图知识链接分析控制任务,将系统工作过程分解成几个步骤,总体分为判断启动按钮是否按下、LED闪烁及常亮、判断停止按钮是否按下、灯灭四个部分。根据控制要求,如果不按下启动按钮就不能执行LED闪烁及常亮部分,如果不按下停止按钮就不能执行灯灭部分。由于需要重新单击启动按钮还能重复工作,因此最后一步执行完应当返回开头重新执行。根据以上分析绘制程序流程图,如图5-1所示。图5-1启停按钮控制闪烁流程图电路图的其他部分与项目四图4-1的画法相同,只是新增加了按钮元件,且LED连接的引脚发生了变化,在练习时可以自定连接位置。在元件搜索界面关键字中输入“BUTTON”就能找到按钮元件。将按钮一端接地线,另一端接单片机引脚,如图5-2所示。本例中将连接P1.0的按钮作为启动按钮,将连接P1.4的按钮作为停止按钮。知识链接二、绘制系统电路图知识链接图5-2带启停按钮的闪烁电路本项目控制任务的难点在于单片机怎样判断启、停按钮是否被按下。在画好上一节的电路图后开始仿真。将鼠标放在按钮的符号上单击,会看到按钮被按下又弹起了,此按钮为非自锁按钮。如果单击了按钮符号右侧的圆圈位置,则松开后按钮会保持接通状态,需要再单击一下圆圈才会断开,此时为自锁按钮。在本次控制任务中使用非自锁按钮,不要单击按钮符号右侧的圆圈。知识链接三、编程1.按钮接法及对单片机引脚的影响知识链接反复单击按钮并注意观察按钮两端的颜色标记,会发现当按钮断开时按钮两端一边是蓝色,一边是红色,当按钮按下时按钮两边都是蓝色。这是因为单片机引脚的复位状态是高电平,在软件中标记为红色;而地线是低电平,在软件中标记为蓝色。当按钮断开时,它们保持各自的电平,而当按钮接通时,高电平的引脚会被地线拉低为低电平。我们知道高电平状态用1表示,低电平状态用0表示,因此可以总结出按照图5-3的方式将按钮连接到单片机引脚上,按钮状态影响引脚数值,当按钮不按时引脚为1,当按钮按下时引脚为0。图5-3按钮对引脚的影响知识链接2.位判断转移指令查看附录“指令系统”找到位判断转移指令,看到如下表述:JCrel

;若(CY)=1,则PC←(PC)+2+rel

若(CY)=0,则PC←(PC)+2JNCrel

;若(CY)=0,则PC←(PC)+2+rel

若(CY)=1,则PC←(PC)+2JBbit,rel

;若(bit)=1,则PC←(PC)+3+rel

若(bit)=0,则PC←(PC)+3JNBbit,rel

;若(bit)=0,则PC←(PC)+3+rel

若(bit)=1,则PC←(PC)+3JBCbit,rel

;若(bit)=1,则PC←(PC)+3+rel,bit←0

若(bit)=0,则PC←(PC)+3知识链接根据前面所学知识,注释中含有“+rel”表示转移,不含“+rel”表示不转移,因此第一条指令的功能是若CY存储的数值为1,则要转移去执行rel指示的位置的指令,CY存储数值为0则不转移。这里“CY”是单片机中一个特殊存储位的符号,它位于项目四介绍过的程序状态字寄存器PSW的第7位,也就是CY即PSW.7,PSW寄存器数值的二进制形式中的最高位数值就是CY存储的数值。第二条指令的功能的理解参照第一条。第三条指令的功能为若bit=1则转移,查附录“指令系统符号”知道“bit”表示位地址(bit),就表示这一位存储的数值,在项目四介绍了存储单元和位的关系、字节与位的关系及位寻址的概念,因此可以将(bit)理解为单片机中某个可进行位操作的存储位的数值,bit代表所有可以进行位操作的位,而第一条和第二条指令中的CY则是众多位中特定的一个。第四条指令的功能理解参照第三条。第五条指令相比第三条指令多了一个若(bit)=1则将bit归零的操作。根据前面的叙述我们知道,当按钮不按下时引脚为1,当按钮按下时引脚为0,因此可以利用位判断转移指令来使程序根据按钮状态执行不同的指令。首先按钮影响位是P1.0和P1.4,不是CY,且引脚数值不需要自动归零,因此应选择JB或JNB指令来编程。其次,根据图5-1的第一步也就是第一个判断框,按下启动按钮时顺序向下执行即不转移,启动按钮未按下时返回上方执行即转移。由于按下引脚为0,不按下引脚为1,启动按钮连接在P1.0上,因此可以知道编程的要求是P1.0为0时不转移,为1时转移。查看前文表述的JB和JNB的功能可以知道,JB的功能符合要求,因此应使用“JBbit,rel”对流程图中的第一个判断框来编程。知识链接3.用位判断转移指令编写判断按钮状态的程序在这里启动按钮影响的位是P1.0,因此应用P1.0替换指令中的bit,用标号(如D0)替换rel,则根据图5-1的流程图,程序的第一条指令是“JBP1.0,D0”。由于转移后执行的指令是第一个判断框本身,因此“标号:”应放在这一句的开头,即程序的第一条指令是“D0:JBP1.0,D0”,也可以写成“JBP1.0,$”。根据图5-1的程序流程图,接下来完成闪烁3次后常亮的功能,因此程序的第二行及后面一段与项目四的程序相同,只是需要注意标号不要重复的问题。在写完常亮的指令后,应编写判断停止按钮是否被按下的指令。从流程图可以看出,停止按钮的用法与启动按钮一样,因此所用的指令相同,只是bit要换成停止按钮所连接的P1.4,rel要用另外的标号替换。例如,流程图中的停止按钮判断框编写为指令“D01:JBP1.4,D01”。知识链接3.用位判断转移指令编写判断按钮状态的程序停止指令判断框下面是灯灭,用“MOVP2,#11111111B”即可。60%知识链接知识链接4.无条件转移指令根据流程图,灯灭后要返回前面去执行第一条指令,实际就是不能向下执行而要转移执行,而这种转移是无须判断条件的,因此这里使用无条件转移指令。查附录“指令系统”找到无条件转移指令,看到如下表述:相对转移指令:SJMPrel

;PC←(PC)+2,PC←(PC)+rel长转移指令:LJMPaddr16

;PC←addr16知识链接其中SJMP的注释部分说明在执行该指令时先将PC的数值+2,也就是指向本指令存储的末地址,再将PC的数值加上偏移量完成转移。LJMP是执行时直接使PC的数值等于要转移去的指令存储位置的首地址,这里addr是英文地址的简写,addr16表示这个地址是一个16位的二进制数。从程序执行的结果来看,SJMP与LJMP都是完成无条件转移,当执行它们时会转移去rel和addr16指定的位置执行程序,但是两条指令能够转移的范围不同,SJMPrel只能转移至与(PC)+2的数值偏移-128~127的地址范围,而LJMPaddr16能转移至00H~FFH的全部范围。通常在使用这两条指令时都用标号代替rel和addr16。无条件转移指令的其余两条请自行学习理解。知识链接D0:JBP1.0,D0MOVP2,#11111110BMOVR1,#50D11:MOVR2,#20D12:MOVR3,#248D13:DJNZR3,D13DJNZR2,D12DJNZR1,D115.完整程序:【程序5-1】MOVP2,#11111111B……MOVP2,#11111110BD1:JBP1.4,D1MOVP2,#11111111BLJMPD0END实际使用的键盘一般为机械键盘,其中含有弹性元件,因此按钮操作过程中电路的断开和闭合并不是理想状态。以常开按钮为例,当按钮被按下达到稳定闭合状态前会有一段不稳定的通断状态,称为抖动,在松开过程中也会发生抖动。在抖动的过程中按钮会通断多次,这个抖动时间一般为5~10ms。因为抖动的存在,实际在一次操作中按钮会通断多次,在某些场合会产生误操作。知识链接四、按键抖动问题拓展延伸图5-4RS触发器按键去抖电路第一个方法是采用单稳态电路,如使用RS触发器,这种方法用于常开、常闭按钮,电路如图5-4所示。解决这个问题一般有以下三个方法:知识链接图中SW1为常开常闭按钮,U2为一个4路RS触发器,这里使用第1路,按钮通过RS触发器连接到P1.1。图中S1为低电压状态0,R1为高电压状态1,此时Q1输出0。若按下按钮,在SW1动触点脱离上方的静触点过程中由于抖动存在,S1会在0与1之间变化多次,而因为按钮行程的存在,SW1动触点距离下方静触点较远不会发生接触,R1将保持1,而S1R1为01时Q1输出0,S1R1为11时根据RS触发器的性质Q1输出不变,仍为0,因此上述抖动过程中Q1稳定输出0保持不变。当动触点与上方静触点完全脱离且未与下方静触点接触时,S1R1为11,Q1仍输出0。当动触点与下方静触点发生接触时已完全脱离上方静触点,因此S1保持1不变,R1变为0,此时Q1输出1。在动触点与下方静触点稳定接通前因抖动存在,R1会在0与1之间变化多次,但S1R1为10时Q1输出1,S1R1为11时Q1保持输出1不变。从上述描述可知,RS触发器的单稳态特性克服了按钮触点接通和断开时的抖动问题,单片机引脚能够获得稳定的1/0状态。知识链接图5-5电容去抖电路第二个方法是利用电容的充/放电性质消除因抖动引起的引脚电压变化,电路如图5-5所示。解决这个问题一般有以下三个方法:由于电容充/放电需要时间,即电容两端的电压变化需要一定时间,而抖动时间很短,在抖动过程中触点反复通断时因电容的存在使引脚电压平缓变化就不会使引脚电平高、低多次变化。如图5-5所示,此时按钮断开,P1.0为高电平。知识链接若按下按钮在抖动过程中P1.0与地线多次通断,如果没有电容,P1.0的电压会在低电平和高电平间变化多次,产生与多次按下按钮相同的作用,但是因为并联了电容,当触点刚闭合时引脚电压开始下降,但仍属于高电平范围。若很快触点又断开,则引脚电压又会上升一些,仍保持高电平。在触点抖动过程中,电容实际是从高电平状态因多次短时充/放电而电压微微波动的过程,此时引脚实际一直保持高电平,直到抖动结束触点稳定接通,此时电容持续放电引脚电压才会不断下降至高电平状态。知识链接触点断开时同理。因此并联电容可以消除键盘抖动的影响。按钮稳定接通时间一般为零点几秒至数秒,而抖动时间一般为5~10ms,因此选择电容使充/放电时间尽量大于抖动时间和小于稳定按钮时间就能消除抖动的影响,可参考图5-5中的电容值。知识链接3.MCS-51系列单片机简介第三个方法是利用编程克服抖动影响。其基本思路是识别出按钮变化后延时至抖动时间后确认变化再判定按钮动作。例如,图5-5中若按钮按下,则P1.0由1变为0,如果用位判断转移指令识别出了这一变化,则延时10ms后再判断一下P1.0是否为0,如果是表示按钮已稳定按下,可以确认“按钮按下”这个动作了。本项目的控制任务中,一旦按钮所接引脚变为0,就开始执行闪烁等动作,抖动引起的引脚电平反复变化不能影响程序的正常执行,因此不需要考虑去抖问题。仿真运行参照电路如图5-2所示。一、参照电路参照程序如【程序5-1】所示。二、参照程序仿真元件列表见表5-1。三、所用元件列表表5-1仿真元件列表点击图标可观看仿真运行:带启停按钮的1号灯闪烁项目训练(1)设计用1个按钮控制启/停的2个LED以0.5s频率交替闪烁的电路和程序。(2)设计单片机通电后2个LED常亮,按下启动按钮后2个LED以0.8s频率交替闪烁5次后都灭,按下停止按钮后能重复上述步骤的电路和程序。要求2个LED一个用灌电流方式连接P1.1,另一个用拉电流方式连接P1.4,启动按钮连接P3.5,停止按钮连接P2.7。项目训练(3)1号LED用灌电流方式连接P1.2,2号LE

温馨提示

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

评论

0/150

提交评论