




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学单片机课程设计目录1系统设计原理 .1 1.1总体方案 设计12主要模块设计.2 2.1红外遥控及LED模块.2 2.11红外遥控编解码原理.2 2.12 LED部分.5 2.2 步进脉冲产生模块.6 2.2.1步进电机工作原理.6 2.2.2步进电机的调速.83系统硬件线路设计.104系统软件设计.115系统分配表.126源程序.137仿真分析138性能分析159心得及体会1610参考文献.18附录一(红外控制程序).191 系统设计原理:利用红外遥控器控制步进电机其实和用键盘控制步进电机原理类似,只不过按键是用导线传递键是否按下的信号,而红外则是利用LED发射红外线传递按键信息。由于红外采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,在解码时通过判断高低电平持续时间的长短来识别发送的键值。控制步进电机正、反方向转动、单步、连续、快慢等动作,原理其实并不困难。步进电机将电脉冲信号转换成角位移,即给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。单片机的晶振为12MHz,单周期指令执行时间为1MHz,由于机械动作需要一定时间来完成,如果以这么快的速度来给脉冲,电机是不会转动的,因此,在两个脉冲之间必须要有一定时间差,电机才有时间来执行动作。电机转动的速度与脉冲频率成正比,控制脉冲间隔时间就相当于控制了步进电机的转动角频率即快慢。步进电机的转动需要向电机以一定的顺序分配驱动脉冲。如四相单四拍,其脉冲分配的方式和顺序为A-B-C-D-A,如此周而复始,即可转动。转动方向与脉冲顺序有关,如果给相反脉冲,那么电机就会反转。1.1总体方案设计:根据该系统设计要求,需要通过红外遥控器按下按键和显示器来改变步进电机的运动状态以及显示,只需要红外遥控器中6个按键就可满足需求,外加8位LED数码显示管即可。由于实验箱上只有8个连体数码管,因此需要动态扫描。通过从键盘上输入正、反转命令,按键数值显示在数码管上,CPU再读取正、反转命令,加减速后执行。经键盘可完成启动、停止、正转、反转、速度设置控制功能。按下红外遥控器上的相关按钮电机执行相关动作,同时数码管上显示按键的数值,系统大部分都是软件实现的,整个设计框图如下: LED显示单片机步进电机红外遥控按键红外接收2主要模块设计:2.1红外遥控及LED模块:本模块应完成对红外遥控器有无键按下进行确认,当有键按下时,确定按键值,并根据所得键值进行处理(包括所按键是不是停止键还是执行键。如是停止键,不断扫描键盘程序,等待执行键按下;如是执行键就启动产生步进电机控制信号程序)。显示模块主要是完成在进行键盘按下时,显示输入的数据值(转矩数、转动方向、转动速率及运行方式)。2.1.1红外遥控编解码原理:红外遥控系统由发射和接收两大部份组成,应用编/解码专用集成电路芯片来进行控制操作,如图1 所示。发射部份包括键盘矩阵、编码调制、LED红外发送器;接收部份包括光、电转换放大器、解调、解码电路。由于采用不同芯片其发送和接受的过程是不一样的,我们用的实验箱采用的是HT6221红外编码芯片,因此以HT6221为例来说明红外遥控器编码和解码原理。1 HT6221 键码的形成当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。当一个键按下超过36ms 振荡器使芯片激活如果这个键按下且延迟大约108ms,这 108ms 发射代码由一个起始码9ms ,一个结果码4.5ms ,低 8 位地址码9ms18ms ,高 8 位地址码9ms18ms ,8 位数据码9ms18ms 和这 8 位数据的反码9ms18ms 组成 如果键按下超过108ms 仍未松开接下来发射的代码 连发代码将仅由起始码9ms 和结束码2.5ms 组成。1.12ms为0,2.24ms 为1,如下图:每发送一个码,HT6221 会先送出一个9ms 的头码和4.5ms 的间隙,然后依次送出16 位的地址码(18ms36ms)、8 位数据码(9ms18ms)和8 位数据反码,如下图:注: 代码宽度算法:16 位地址码的最短宽度:1.12 *16=18ms16 位地址码的最长宽度2.24ms *16=36ms易知 8 位数据代码及其8 位反代码的宽度和不变:(1.12ms+2.24ms)* 8=27ms32 位代码的宽度为18ms+27ms (36ms+27ms)2 代码格式(以接收代码为准,接收代码与发射代码反向)位定义单发代码格式连发代码格式3解码方法1 解码的关键是如何识别0 和 1 从位的定义我们可以发现0 1 均以 0.56ms的低电平开始不同的是高电平的宽度不同0 为 0.56ms, 1 为 1.68ms,所以必须根据高电平的宽度区别0 和 1 如果从 0.56ms 低电平过后开始延时0.56ms 以后 若读到的电平为低说明该位为0 反之则为1 为了可靠起见 延时必须比0.56ms 长些 但又不能超过1.12ms,否则如果该位为0 读到的已是下一位的高电平因此取1.12ms+0.56ms /2=0.84ms 最为可靠一般取0.84ms2 根据码的格式应该等待9ms 的起始码和4.5ms 的结果码完成后才能读码左右均可这样接收到的仅仅是普通的代码要得到标准的键值还必须进行代码识别和代码转换2.1.2LED部分:共阳接法:低电平亮,高电平灭数码管部分 JP5(控制数码管的8段) JP8(输入高电平选中相应的数码管)数码管实际上是由7个发光管组成的8字形构成的,加上小数点就是8个。分别把它命名为ABCDEFGH,由于接法是共阳接法,所以低电平是亮,高电平是灭。例如,要显示一个数字2则是C、F、H(小数点)不亮,P0.0-P0.7控制数码管的8段,0为亮,1为灭,从高往低排列,P0.0-P0.7写成二进制为10100010,把它转化为十六进制数为A2H,当然在此之前,还必须指定哪一个数码管亮。 原理图中把所有数码管的a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受IO线控制。CPU向字段输出口送出字形码,所有显示器接收到相同的字形码,由8个PNP的三极管,来控制这8位哪位工作如果要选中第一位,只需将该位清零即可。所有数码管的8个笔划段a-h同名端连在一起,在这种接法中同一瞬间所有的数码管显示都是相同的,不能显示不同的数字。在单片机里,首先显示一个数,然后关掉,然后显示第二个数,又关掉,那么将看到连续的数字显示,轮流点亮扫描过程中,每个显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余晖效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会由闪烁感。 特别说明:实验箱采用的数码管较为特殊,和一般的共阴、共阳数码管都不一样,在Proteus中共阳数码管给高电平才表示选中,而实验箱采用低电平选中,各字段表也不一样。如一般共阳给C0H表示0,但实验箱需要给28H,为了仿真的需要,后面的程序均采用的是一般共阳数码管写法,在实验箱上调试程序时进行了变更!2.2步进脉冲产生模块:2.2.1步进电机工作原理:步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。 该电机定子上有8个凸齿,相距180的两个凸齿构成一相,每一相上的线圈反相连接,这样8个齿就构成四相,AA1、BB1、CC1、DD1,因此称为四相步进电机。当有一相绕组被励磁时,磁通从正相齿,经过软铁芯的转子,并以最短的路径流向负相齿,而其他的六个凸齿并无磁通。为使磁通路径最短,在磁场力的作用下,转子被迫转动,使最近的一对齿与被励磁的一相对准。在图1的a图中B相被励磁,转子与B相对准。在这个位置上,再对A相进行励磁,则转子在磁场作用下顺时针转过15,如图1的b图所示,这样步进电机就转过了一个步距角。继续对C相进行励磁,转子在磁场的作用下进一步顺时针转过15,到达c图所示的位置,又转过了一个步距角。再对D相进行励磁,又产生了一个新的磁场,在磁力的作用下转子又转过一个步距角15。这样步进电机的四相完成一个通电循环,若要继续转动,就继续顺次励磁,即步进电机按照ABCDA顺序顺次励磁,那么电机就不停地转动。一般对步进电机采用半步驱动,即四相八拍工作方式,使步进电机每次励磁转过1/2的步距角,即每次改变励磁方式步进电机转过7.5,它的励磁方式是AABBBCCCDDDAA,若要反转也是只需改变励磁方式即可,即按照AADDDCCCBBBAA,采用八拍工作方式使得电机的转动更加稳定,也进一步增强了步进电机的控制精度。 实验箱中使用的是四相步进电动机,步进电机的控制有三个问题需要解决,下面分别阐述:(1) 控制其转动按照一定的顺序向步进电动机的各相分配驱动脉冲。就四相步进电机而言,如果采用但四拍方式,其脉冲分配的方式和顺序是A-B-C-D-A,如果采用单双八拍的方式,其脉冲分配的方式和顺序为:A-AB-B-BC-C-CD-D-DA-A.四相步进电动机的励磁工作方式如下表所示:编码结果(十六进制)ABCD0701110300110B10110910010D11010C11000E1110060110表2 四相步进电动机励磁工作方式示例(2) 控制其转动方向控制其转动方向,其实只需考虑在脉冲分配的过程中注意一定得顺序即可解决。就四相步进电机而言,如果采用单四拍方式,其脉冲分配的方式和顺序是A-B-C-D-A,为正转;则其反转的脉冲分配方式和顺序是D-C-B-A-D。如果采用单双八拍方式,其反转的脉冲分配方式和顺序是D-DC-C-CB-B-BA-A-AD-D。(3) 控制其转动速度解决的方法是在脉冲分配的过程中,控制在每两个相邻脉冲输出中的间隔时间即可解决速度问题。图2.2.1 单片机与步进电机的连接2.2.2步进电机的调速步进电机的速度由单片机发送的脉冲频率决定,而脉冲频率可以通过软件延时和硬件定时两种方式实现。通过调用标准延时子程序产生脉冲的方法称软件延时,该法首先设置两个字节作为延时程序的入口地址,再根据需要延时的时间长短给这两个字节赋值,则单片机就会按照设置的延时时间不断地产生脉冲信号控制步进电机转动。软件延时的方法程序简单、思路清晰,而且不占用单片机的硬件资源,但是在延时过程中一直占用着单片机的CPU的宝贵时间,CPU不能处理来自外部传感器的各种事件。通过使用单片机的定时/计数器T0或T1,定时产生脉冲的方法称为硬件定时,该法首先根据定时的时间长短设定定时器的工作模式,然后输入定时器的定时常数,则定时器就会定时溢出,单片机就会每溢出一次就产生一个脉冲信号控制步进电机转动。硬件定时的方法既需要硬件(定时/计数器T0或T1),又需要软件来产生所需频率的脉冲信号,是一种软硬结合的方法,虽然占用了一个定时器,但是提高了CPU的利用率,CPU在定时器没产生溢出时运行其它程序。用定时中断方式来控制电动机变速时,实际上是不断改变定时器装载值的大小。在程序中,每按一次加减速键,程序中speed都会加减1,最后通过查表的方法改变定时计数器初值,达到加减速的目的。至于步进电机的正反转则是公用一个键,按下转动方向就相反,正反转的实现是通过判断20号单元的第2位即20H.1是0还是1,若是0则去查反转的表否则去查正转的表,实行起来比较方便。电机的加减速控制,只需控制好脉冲频率即可,可以采用中断计时的方法,内部定时器中断主要是利用单片机的内部定时器的方式1(16位计数方式)产生不同周期的定时信号,每次中断都给步进电机三个绕组一次脉冲,使得步进电机转动一个节拍。因此步进电机的转速是由单片机内部定时器的中断频率决定的,不断改变定时器的装载初值就可改变电机的运转速度。不论步进电机处于何种状态,只要按下复位键,马上跳转到主程序,停止给脉冲,电机停止运转3系统硬件线路设计图4系统软件设计:系统的软件设计通常采用模块化结构,软件系统总体框架一般包括三部分:主程序、中断服务子程序以及其他相应的辅助子程序(包括正转子程序、反转子程序、LED显示子程序、红外键盘子程序)YesNo Yes图4.1 主程序 图4.2 中断子程序 图4.3 脉冲子程序总流程图采用模块化结构,分功能模块结构,可实现无扰动重入.软件模块按功能划分,是以子程序的形式设计的,程序分别对各个功能进行调用,各个模块功能清晰明了.本次设计采用单极性直流电源供电,只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动.按键子程序中包括按键扫描、按键去抖动、按键的键后处理.按键扫描采用单个按键的扫描,分别对不同功能的按键扫描并存放不同的按键标志.按键去抖动采用延时去抖法.根据按键扫描后的按键标志位结果来处理相应的子程序.显示模块采用传统的LED数码管显示数字,程序编译容易,资源占用少.使用八位数码管,动态扫描显示的方式.总程序流程框图见图1.5资源分配表: 在上面的仿真图中,由于Proteus中没有红外模块,只能用普通按键键盘代替,下面的说明为实际在试验箱上的实验情况1. P0.0一P0l.7输出字形码到LED数码管,用于显示按下的键值。2. P3.4一P3.6:显示动态扫描位选线,即选中哪个数码管。3.P1.7:红外接收信号口,红外遥控器发出的信号经过接收器接收后通过P1.7进行动态扫描和键值处理.。4.P2.0、P2.1、P2.2、P2.3:步进电机控制脉冲输出口,通过控制给脉冲的频率和数量达到加减速和单步、连续的目的。详细接线见系统硬件连接图。6源程序:见附录7仿真分析:1.运行模式设定:在停机状态下按模式键进行运行模式切换,当七段LED显示数值时为预置步数模式,灭时为连续运行模式或可以进行单步运行。2.方向设定:在停机或运行状态下按方向键进行选择。开始默认为反向。电机的运行正反向表示的是顺时针还是逆时针是由操作者在接步进电机时的相序决定的,按下反转键后数码管会有相应显示。3.步数设定:在设定为连续模式后,按UP键可以加速:按下Down键为减速。当加到35时,再按UP键,速度不变;当减到25时,再按一下DOWN键,速度也不变。4.单步运行模式:电机以设定的运行方式正向运行一步;按P1.1键一下,电机以设定的运行方式反向运行一步。单步运行时,与方向键设定的运行方向无关。5.连续模式运行:按下连续键后,电机以设定的方式和方向连续运行,同时七段LED显示当前按键值。在运行时,按加速键一下,速度上升一档;按减速键,速度下降一档,七段LED会相应的显示数值。在运行时,按方向键可以进行方向切换。再次按下启停键后,电机停止运行。6.强行复位:按下P1.5键即可。图7.1按下单步键的情况从上图中可以看出,按下单步键后,数码管显示0,提示用户按键有效,同时从示波器波形可以看到按下有一个脉冲,电机会转动一次。图7.2按下连续键的情况 从图形上我们可以看到,单片机给步进电机的脉冲为连续的,有很多个,因此,电机的运转也应是连续的,于此同时数码管显示1,提示用户按的是连续键。图7.3按下加速键的情况图7.4按下减速键的情况 对比上面两张图形,就可以看到加速和减速的效果了,加速后脉冲频率明显变高,减速后脉冲变稀疏,说明步进电机加减速有效,数码管显示相应的按键值,表明用户按键有相应.图7.5按下减速键的情况当数码管显示5时表明系统已经启动,可以相应用户的需求,按下按键后就可以执行相应的动作。8性能分析: 因为电机步进角为7.5,一圈需要360/7.5=48个脉冲。电机转速为1/(T*48),其中T为定时计数器中断时间,开始时电机以最小速度运行,即查表中第一个数据,HT0=15H,TL0=A0H,通过计算为60ms,因为单片机给48个脉冲步进电机才转一圈,因此电机的速度为0.35转/s。表中各种值对应的速度如下表: 转速(r/s)中断时间(ms)TH0TL00.356015HA0H0.385529H28H0.42503CHB0H0.464550H38H0.524063HC0H0.603577H48H0.69308AHD0H0.83259EH58H1.0420B1HE0H1.3915C5H68H 电机单步运行:7.5/次 电机连续运行:0.35 r/s1.39r/s 数码管显示:红外按键值05可能程序还有不足的地方,按下加减速,可以感到电机有加速和减速的情况,但和原来设计初衷有点出入。在加到最大速度时,即每秒1.39圈,在Proteus中仿真明显感到电机有强烈的摇晃感,每转一下。感觉都要向后退一下,在试验箱上根本就不会转。9心得及体会: 这次课程设计做得比较长,开始感觉应该比较简单,但做起来确实有点幸苦。不过这其中还是有不少乐趣。 开始连步进电机都不知道,只知道直流电机,虽然很多有关单片机的书籍中都有步进电机的设计,但大多要么用C写,要么写得非常复杂,加了液晶显示,加了键盘,可以由用户随意输入电机的转速,以目前的时间来说,我肯定是搞不定了。在设计前,我设想有单步、连续、启停、正反转这些按键,写程序时遇到了不小麻烦,开始我想撇开红外遥控着部分,因为比较复杂,有现成的驱动可用,我只需写好其它部分就行,而且Proteus中也没有红外模块,不能进行仿真,所以写程序时用键盘代替,按下一个键执行一个动作。 开始完全是自己设计,没和别人商量,因此也走了不少弯路。我在设计没弄清按键的含义,想着在每个子程序在扫描键盘时,都要将这几个键扫描进去,按下就跳转。后来程序实在写不下去了,每个子程序跳到哪我自己都搞不清楚了,跳来跳去我自己也晕了头。后来一个组的几个人谈了下思路,我觉得原来设计的键有很多是多余的,比如:启动键可以不要,即使你按了启动键,没按单步和连续,它也是不转的。因此,我把整个按键分为两大部分:单步和连续。它们共有一个动作:正反转和停止,在连续时有加速和减速。确定好思路后,写代码就非常简单了。 在做的过程中,确实受到了不少诱惑,比如说有的书本中介绍这种方法,有的介绍那种,一时不好说哪种好。应该说实现的方法有很多,只能选一种。比如说控制电机的转速,有的采取按下加速键一次,就多调用一次延时;有的按下一次就给不同的延时子程序中的计数值;也有用中断计时的,按一次就给定时计数器不同的计数初值最终我选择了用中断方式,因为这可以给主程序更多自由,不受延时程序执行时主程序漫长的等待,应该说还是比较科学和人性化的。每按一次加减速键,就利用查表方法,查出计数器初值。 困难总是有的,在程序编译没有问题后,在Proteus中仿真的结果与实际差距很大,比如按下单步时根本就没有动,按下停止也没有停有的问题在于粗心,像停止键写程序时用P2.5.结果接线时用P2.6。有的问题自己看了好半天都没有解决,后来把四班的同学叫来,也看了半天,终于解决了。至于加减速按键,我实在不好意思再去麻烦别人,自己认认真真看程序,由于按下减速键后电机反转,很奇怪,因为不论如何都不可能出现这种情况。后来一想,我利用的是psw中的Cy来进行正反转控制,按一次,Cy就取反,最终通过Cy的不同查询不同的表来实现步进电机的正反转。莫非按下加减速后Cy的值变了?仔细看了后终于明白,在进行判断时用了CJNE语句,它实际上是利用两数相减后是正负来判断大小,结果肯定会影响Cy,找到原因后我想再找一个可以位操作的符号,平时很多符号都有特定用处,实在找不到了,就改用20号单元的第一位进行位操作,修改之后,仿真一切正常,真是太过瘾了!有时我也不想亲自动手写程序,在别人程序基础上进行修改轻松不少,但想想如果自己实力不行,以后这也可能是自己的饭碗,不提高点实力拿什么和别人竞争啊!10参考文献:1韩全立。单片机控制技术及应用。北京:电子工业出版社,20042求是科技。单片机典型模块设计实例导航。北京:人民邮电出版社,20043胡汉才。单片机原理及系统设计。北京:清华大学出版社,20024王晓明。电动机的单片机控制。北京:北京航天航空大学出版社,20025汪道辉。单片机系统设计与实践。 北京:电子工业出版社 ,2006附录一:红外控制电机程序Minspd EQU 25Maxspd EQU 35Speed DATA 23HORG 0000HAJMP startORG 000BHJMP DJZDORG 0030Hstart: SETB 20H.1 MOV P3,#0FFH MOV R0,#00H MOV TMOD,#01H ;TO采取方式1,16位定时 MOV TH0,#115 MOV TL0,#96SETB EA ;开T0中断SETB ET0 CLR TR0 ;停止TO工作 MOV P2,#0ffH main: MOV Speed,#Minspd LCALL sweep CJNE A,#62H,Q1 CPL 20H.1Q1: CJNE A,#7EH,Danbu CJNE A,#0A2H,Lianxu AJMP mainDanbu: CJNE A,#7EH,$ CALL ZF JMP mainLianxu: SETB TR0LCALL sweepCALL KEY JMP LianxuKEY: CJNE A,#1DH,mainKY2: CJNE A,#7EH,DanbuKY4: CJNE A,#62H,KY6 CPL 20H.1KY6: CJNE A,#74H, KY7 JMP UpspdKY7 : CJNE A,#61H,K1 JMP DowspdUpspd: INC Speed MOV A,Speed CJNE A,#Maxspd,K1 DEC Speed JMP K1Dowspd: DEC Speed MOV A,Speed CJNE A,#Minspd,K1 MOV Speed,#MinspdK1: RETDJZD: CALL ZF CLR TR0 MOV A,Speed SUBB A,#Minspd MOV R1,AMOV DPTR,#DjHMOVC A,A+DPTRMOV TH0,AMOV A,R1MOV DPTR,#DjLMOVC A,A+DPTRMOV TL0,A RETIZF: JNB 20H.1 ,FanzhuanZhengzhuan:MOV A,R0MOV DPTR,#TABLE MOVc A,A+DPTR JNZ K3 MOV R0,#00H AJMP ZhengzhuanFanzhuan:MOV A,R0MOV DPTR,#TABLE1 MOVc A,A+DPTR JNZ K3 MOV R0,#00H AJMP FanzhuanK3: MOV P2,A INC R0 RETDELAY:MOV R7,#60H DJNZ R7,$ RETDjH: DB 0D8H,15H,29H,3CH,50H,63H,77H,8AH,9EH,0B1H,0C5HDjL: DB 0F0H,0A0H,28H,0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68HTABLE: db 07H,03h,0BH,09h,0DH,0ch,0EH,06h ;正转表 db 00h ;正转结束TABLE1: db 06h,0Eh,0CH,0Dh,09h,0BH,03H,07H ;反转表 db 00h ;反转结束sweep:MOV A,#00HJB P1.7,$ ;等待遥控信号出现SB:MOV R4,#8 ;8 毫秒为高电平错误SBA:MOV R5,#250SBB:JB P1.7,SXB1DJNZ R5,SBBDJNZ R4,SBAMOV R4,#2JMP SBCSXB1: MOV R5,#5SXB2: ;去掉20US 的尖峰干扰信号JNB P1.7,SBBDJNZ R5,SXB2JMP STARTSBC:MOV R5,#250SB1: JB P1.7,SB2 ;2MS 内不为高电平错误DJNZ R5,SB1DJNZ R4,SBCJMP STARTSB2: ;去掉20US 的尖峰干扰信号MOV R5,#5SB2_A:JNB P1.7,SB1DJNZ R5,SB2_AMOV R4,#3SB2_1:MOV R5,#250SB3: ;监测4.5MS 高电平,如3MS内出现低电平错误JNB P1.7,SXCDJNZ R5,SB3DJNZ R4,SB2_1MOV R4,#2JMP SB3_1SXC: ;去掉20US的尖峰干扰信号MOV R5,#5SXC1:JB P1.7,SB3DJNZ R5,SXC1JMP STARTSB3_1:;监测4.5MS 高电平,如5MS 内不为低错误MOV R5,#250SB3_2:JNB P1.7,SB4DJNZ R5,SB3_2DJNZ R4,SB3_1JMP STARTSB4: ;去掉20US 的尖峰干扰信号MOV R5,#5SB4_1:JB P1.7,SB3_2DJNZ R5,SB4_1MOV R1,#1AH ;设定1AH 为起始RAM 区MOV R2,#4PP: MOV R3,#8JJJJ:MOV R5,#250JJJJ2: ;1MS 内不为低电平错误JB P1.7,JJJJ3DJNZ R5,JJJJ2JMP STARTJJJJ3:LCALL YS1 ;高电平开始后用882 微秒的时间尺去判断信号此时的高低电平状态MOV C,P1.7 ;将P1.7 状态0 或1 存入C 中JNC UUU ;如果为0 就跳转到UUU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老服务机构委托管理合同
- 企业劳动合同模板与风险防范
- 公司合同保密管理规范
- 商业门店买卖合同标准范文
- 绿色环保1000吨日生物质能源化利用项目可行性研究报告
- 绿色节能1000吨年工业废水深度处理及回用项目可行性研究报告
- 绿色大型绿色能源智能电网建设可行性研究报告
- 绿色节能1000MW太阳能光伏发电站建设容量及绿色运营模式可行性研究报告
- 绿色节能1000吨年绿色能源储存系统运营模式可行性研究报告
- 跨境电商海外仓项目2025年物流成本控制策略报告
- 光电检测技术及应用 周秀云
- 2025至2030中国糠醛衍生物市场未来趋势及发展态势展望报告
- VW 50134-EN-2024 PA6用于车辆内部外部的成品零件 材料要求
- 山东省国企资产管理办法
- 腮腺脓肿护理查房
- 美容中医技术课件
- 卸货流程培训
- 儿童素描入门教学课件
- 护理专利相关课件教学
- 2025年中医诊断学试题
- 高二秋季开学第一课班会课件:启航高二把握未来
评论
0/150
提交评论