单片机机器人设计 下载本文

MOV R6,#14H AJMP S1

L4: MOV P1,#0FFH

MOV P0,#0FDH ;A2闭合 MOV R6,#7CH LCALL DELAY

JB P1.6,L4 ;k7检测 LCALL LED AJMP S3 ??

机器人的一只臂越障成功后,后面的手臂利用传感器继续检测,并由单片机发出信号,控制驱动电机按预定的路线动作,完成越障过程。在这个过程中,机器人实现了整个系统的闭环控制,该系统的硬件电路和软件编程相配合有效地完成了巡线机器人沿高压电力线行走功能,完成了检测并跨越障碍物的任务,运行较稳定、可靠。 4.3延时子程序的应用

除上面介绍的RC电路去除触点开关的抖动问题外,应用软件也可以去抖动。下面的延时子程序法就是软件去抖动的一个例子。

图4.2所示为开关输入控制的例子。单片机P1.0口接传感器的限位开关S1,当开关闭合时灯LED亮,断开时则灭。P1.0口在读入S1的状态时要采取软件延时方法,以克服按钮抖动。 程序如下:

START: CLR P3.7 ;灯灭

LOOP1: JB P1.0,START ;P1.0=1则等待 MOV R6,#64H ;软件延时 LOOP2: MOV R7,#0FAH

LOOP3: DJNZ R7,LOOP3 ;内循环250次 DJNZ R6,LOOP2 ;外循环100次 JB P1.0,LOOP1

SETB P3.7 ;灯亮 SJMP LOOP1 NOP

AT89S51单片机晶振为12MHz,则每个机器周期为1μs。指令MOV R6,#64H执行1个机器周期;指令MOV R7,#0FAH执行一次为1个机器周期,共执行100次;DJNZ R7,LOOP3执行一次为2个机器周期,内循环为250次,外循环100次;DJNZ R6,LOOP2执行一次为2个机器周期,共执行100次。由此可计算软件延时为:

1μS+(1μS+2μS×250+4μS)×100≈50ms

图4.2 P1.0口按钮接入

延时子程序除上面介绍的触点去抖动外,还用于机器人每次动作后的延时等待过程。延时子程序配合主程序,完成了系统需要的越障功能。 4.4软件编程的抗干扰措施

在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。

采用硬件抗干扰措施,只能抑制某个频率段的干扰,仍有一些干扰会侵入系统。因此,除了采用硬件抗干扰方法外,还要采取软件抗干扰措施。常用的软件抗干扰措施为:①数字滤波方法;②输入口信号重复检测方法;③输出端口数据刷新方法;④软件拦截技术(指令冗余、软件陷阱);⑤“看门狗”技术等。 4.4.1指令冗余技术

MCS-51的操作时序完全由程序计数器PC控制, CPU取指令过程是先取操作码,再取操作数。一旦PC因干扰出现错误,程序便脱离正常运行轨道,出现“乱飞”,出现操作数数值改变以及将操作数当作操作码的错误。在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。 4.4.2 拦截技术

所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。

软件陷阱的设计:当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:

NOP NOP

LJMP 0000H 其机器码为0000020000。

陷阱的安排:通常在程序中未使用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式: NOP NOP RETI

返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。 4.4.3软件看门狗技术

若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。

“看门狗”技术可由硬件实现,也可由软件实现。 在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。

在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。

对于软件抗干扰的一些其它常用方法如数字滤波、系统故障处理、自恢复程序的设计、非正常复位的识别、非正常复位后系统自恢复运行的程序设计、RAM数据保护与纠错等,限于篇幅,本文不再做讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一个稳定可靠的单片机系统是完全可行的。

软件编程在该机器人系统中占有非常重要的地位,也是大量科研结构投入大量的人力物力进行研究的方向。