幸运时时彩平台

PIC单片机对机器人的控制程序设计

2020-07-30来源: eefocus关键字:PIC单片机  机器人  控制程序

本文介绍项目是有关机器人控制的实现。控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。

PIC单片机对机器人的控制程序设计

1、 动作标志位的使用

在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序:

幸运时时彩平台list P=16c73

call lefthandup

call righthandup

LO call readinsignal

幸运时时彩平台bdss csl_v,1efthandligbts

call lefthandstop

btfsc csl_v,righthandlight4

goto L0

call righthandstop

L1 call readinsignal

btfsc csl_v,lefthandlight3

goto L1

call lefthandstop

lefthandlight表示光电开关,由此判断是否到相应的位置。1表示在手臂最下面的位置;2表示在手臂的握手位置;3表示在手臂的鼓掌位置;4表示在手臂的高举手位置。上面程序描写左手臂上升到举手位置和右手臂上升到鼓掌位置并停止的过程。先判断左手到达否,到达则左手停止,接着看右手是否到达举手位,到达则停止,否则循环上述的检测,直到左手到达鼓掌位,右手到达举手位。


注意,这里的3,4表示的就是鼓掌位,举手位。经过循环检测可以让手臂停在各位上,然而机械动作是有惯性的,机械停止位可能在该位的上一点或下一点,这就影响下面动作的进行,可能在若干动作后机械动作出现失常,也就是程序没法正常的运行。在此情况下,需要修改程序的编写方式,采用标志位来控制动作的进行。如果采用控制标志位,一定要在动作子函数中对标志位置零。程序如下:

list p=16c73

actlONstopflag equ Ox6e ;位定义

lefthandfla8 cqu 0x0 ;0表示停止左手动作

rightbandflag equ Oxl ;O表示停止右手动作

movlw Ox03

movWf actionstopflag

call lefthanduo

call righthandup

L2 call readinsignal

btfss csl_v,lefthandhght3

call lefthatldotop

btfss csl_v,righthandlight4

call righthandstop

movlw Ox00

subwf acTIonstopflag,w

btfss status,z

goto L2

继续下面的程序

acTIonstopflag 表示动作标志位参数,给动作标志位赋值,动作停止函数中将清零标志位的值。上述程序和前面所述程序的功能一样,实现两支手臂的动作。上面程序描写左手是否到达鼓掌位,到达停止,右手是否到达举手位,到达停止。看动作标志位是否为零,不是,不断地循环检测;是,执行下面的程序。


2 、GOTO,CALL指令的不同使用

在PIC的汇编程序中,CALL与GOT0指冷使用的场合不同。一般情况下,在于程序与主程序之间大多用CALL指令;而状态转换模块之间大多用GOTO 指令,即由此状态进入另一种状态不需返回。由于PIC单片机的堆栈有限,在程序中,不能无止境地使用GOTO语句,这样会使堆栈溢出,程序无法正常运行。各个小程序内部循环占用堆栈的级数不多,使用GOTO指令是可行的,但在大的程序中用GOTO则无法返回到调用前程序的下一条指令。CALL指令完成调用完子程序后返回到调用前的程序。程序如下:

list D=16c76

start:ca11 setcpu

call automatlsn、statel

L3 call readinsignal

btfsc cs2_v,ultrasonicdetectl

goto L3

goto autonatlsmstate2

automatlsmstate2:

return

auatomaTIsmstatel、 automaTIsmstate2表示两种状态,uhrasonicdetectl表示一个输入超声检测信号。上面程序描写调用 automatistmstate1状态,执行完后进行下面的检测ultrasonicdetect],没有触发就一直循环检测,触发就进入 autornatismstate2状态,执行完也不再回到下面的程序。


3 、状态标志位Z、C的不同使用情况

在进行判断标志位时,Z(零标志)、C(借位标志)是不同的。Z为l时,表示上面的结果为0,Z为0时,则结果不为0。C为l时,借位,C为0时,没有借位。在使用定时器的时候,一般使用C标志位,这是由于当完成某一动作去检查定时器时,时间可能没到,或是正好,或是已经超过时间,只要到了或超过时间,都要按照要求关闭定时器,如下面程序所述。如果用Z标志位,等于0时可能没有检测到,无法判断停止的状态,而用z可以很好地控制时间定时。进行一般的计算时大多用Z,如前面的动作标志位中就是如此使用的。


list D=16c76

call opentimerO

L4 movlw d’30’

subwf t0_v2,W

btfss status,c

goto L4

cau closetimer0


程序检测时间是否到达1.5s,没有则循环等待,到了或检测时间过了就关闭定时器,执行下面的程序。


总之,在PIC单片机的编程中采用合适的方法,可以使整个程序运行稳定,而且程序空间的使用也将有所减小,避免了调试中的Bug。这是笔者在实际中的一点体会,还有许多不足或没有考虑到的问题,希望在和大家的探讨中不断学习PIC单片机的精髓。

关键字:PIC单片机  机器人  控制程序 编辑:什么鱼 引用地址:http://news.sonata9.com/mcu/ic504848.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:PIC单片机键盘系统的设计方案解析
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机方案开发注意事项及如何挑选PIC单片机进行学习
  要对PIC单片机进行编程,你需要了解特定的开发工具的基本构件,例如配置寄存器,总线和存储器类型。理解C编程语言、汇编语言等单片机开发语言等。此外,选择正确的软件开发工具集还可以使升级更加容易和快捷。  许多PIC的基础内存体系结构是哈佛体系结构,该体系结构广泛应用于英特尔8051单片机中。哈佛结构具有一个用于存储程序命令的存储空间,并为运行内存额外分配空间,单独的存储空间(可以是片上闪存,ROM,RAM或外部芯片)通常可以提高程序执行速度。  在对单片机方案开发之前,我们必须明确将要用于设计的PIC单片机。其中,8位PIC是一个不错的选择,因为它们的成本通常低于16位和32位MCU,并具有足够的外设集(例如A/D转换器
发表于 2020-07-22
基于PIC单片机的气体报警器
  天然气等气体如果泄露,可能具有极大的危险,如果不加以控制,甚至可能导致死亡。在这个方案中,英锐恩单片机工程师们将使用MQ-2气体传感器和PIC单片机制作一个简单的天然气报警系统。该报警系统既可以显示当前的检测到的其他浓度水平,又可以在天然气超过危险浓度水平时发出警报。  一、基于PIC单片机的气体报警原理图    二、基于PIC单片机开发的气体报警器的工作原理  该方案的两个主要组件是MQ-2传感器和PIC16F1516。MQ-2气体传感器能够检测多种可燃性气体,例如酒精,并且对包括LPG,丙烷和氢气在内的气体具有高灵敏度。传感器的核心是SnO 2(氧化锡),在清洁的空气中具有很大的阻力。当传感器与爆炸性气体接触时,传感器
发表于 2020-07-22
基于<font color='red'>PIC单片机</font>的气体报警器
使用PIC单片机开发的简易数字电压表
  对于单片机初学者来说,数字电压表是一个不错的练习项目。在本文中,单片机开发工程师们分享了一个使用PIC单片机开发的简易数字电压表。该数字电压表的范围是0-20V,当然你也可以自己增加或减少输入电压的范围。  在这个方案中,使用的是microchip的PIC16F688单片机,该PIC单片机通过8个模拟通道之一读取输入电压,并使用内部ADC将其转换为10位数字。用ADC转换做一些数学运算,该数字可以转换为实际测得的电压。电压显示在基于HD44780的字符LCD上。  一、数字电压表电路图和说明  你无法将20V信号直接馈入PIC单片机的输入通道。它的工作电压过高,可能会损坏单片机。因此,首先我们需要一个电压缩放器,该电压缩放器
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>开发的简易数字电压表
使用PIC单片机开发的被动红外传感器模块的报警器
  在本文中,单片机开发工程师们分享了一个使用PIC单片机开发的被动红外(PIR)传感器模块的报警器。在这个方案中,我们使用PIC12F635单片机进行开发,持续监控传感器模块的输出,并在其激活时打开蜂鸣器。  一、被动红外(PIR)报警器方案的原理  某些半导体材料具有暴露于热红外辐射时会产生表面电荷的特性。这种现象称为热电。被动红外(PIR)传感器模块的工作原理相同。人体以红外线辐射的形式辐射热量,最大约为9.4微米。人体的存在会导致热释电传感器感应到的周围环境的IR轮廓发生突然变化。PIR传感器模块在板上具有仪表电路,该仪表电路将该信号放大到适当的电压电平以指示运动的检测。  PIR传感器需要大约10到60秒的初始稳定
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>开发的被动红外传感器模块的报警器
使用PIC单片机制的简单拍手开关
  拍手开关对于初学者来说是一个很有趣的单片机方案。它以拍手的声音打开和关闭电器。在本文中,单片机开发工程师们将使用PIC单片机制作一个简单的拍手开关,当它连续检测到两个拍手声音时,该开关便会运行。在这个方案中,使用驻极体麦克风作为换能器,将拍手声转换为电信号。麦克风的输出由晶体管放大,然后发送到PIC12F683单片机,当检测到有效拍手时,PIC12F683单片机执行ON/OFF切换动作。  声控拍手开关的原理  拍手开关的输入端需要一个换能器,以将拍手的声音振动转换为电能。为此使用驻极体麦克风或简单的麦克风(OBO-04FN-0B)。麦克风的输出中的声音信号电流很低,因此我们需要一个放大器电路来增强检测到的声音信号。以下电路图
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>制的简单拍手开关
使用PIC单片机开发需要什么东西
  PIC单片机,由Microchip制造。目前,它有许多类型的单片机,具有相同替代方案的国产单片机有英锐恩的EN系列。但这里仅以PIC18F452为例,所以让我们对PIC18F452做一些简单的介绍。  PIC18F452是一个40引脚单片机,每个引脚都有自己的功能,这里不赘述了。  那么,假设我想创建一个关于LED闪烁的项目,这算是一个关于PIC单片机的最简单项目之一,所以用它来介绍PIC18F452可能非常简单、直观。  首先,我需要以下内容,以便我可以使用它们来处理PIC。英锐恩单片机工程师们在另一篇文章中讨论了PIC18F452单片机中另一些可用功能,可以去看一下。  一、MPLAB  MPLAB是一个软件
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>幸运时时彩平台开发需要什么东西
何立民专栏 单片机及嵌入式宝典

幸运时时彩平台北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 幸运时时彩平台京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
河北快3开奖 99棋牌 小米彩票开奖 山东11选5计划 五分时时彩 大资本登录 500彩票网 500万彩票导航网 福建快3 幸运时时彩