毕业
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
(论文)-智能控制玩具小车
广东农工商职业技术学院
毕业论文(设计)
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目 智能控制玩具小车 姓 名 专 业 电气自动化技术 年级班级 学 号 指导教师 完成日期
摘要
根据近年来全球玩具销量增幅与全球平均GDP增幅大致相当。而全球玩具市场的内在结构比重却发生了重大变化:传统玩具的市场在逐步缩水,高科技含量的电子玩具则蒸蒸日上。美国玩具市场的高科技电子玩具的年销售量2004年较2003年增长52%,而传统玩具的年销售额仅增长3%。英国玩具零售商协会选出的2001年圣诞最受欢迎的十大玩具中,有7款玩具配有电子元件。从这些数字可以看出,高科技含量的电子互动式玩具已经成为玩具行业发展的主流。本设计一个具有障碍检测、字符显示功能的智能遥控小车。该小车对传统的手动遥控做了改进,使之可以实现任意角度转向和以任意速度前进,而不像一般的小车那样只能以固定角度转向和以固定速度前进,因此更加接近真实的车辆。同时还在小车的控制系统中采用红外远程遥控,使控制者可以对小车进行遥控操作,产生相应的操作,而且小车和控制者还具有一定的交互功能。
本系统主要完成的功能有:红外线遥控操作、小车速度控制、转向控制、前方障碍检测、声音报警、字符显示等。
关键字:红外线遥控 速度控制 转向控制 声音报警 字符显示
目录
摘要 ............................................................................. 0 目录 ............................................................................. 1 智能控制玩具小车 ................................................................. 2 一、系统设计 ..................................................................... 2
,一,系统组成 ................................................................ 2
,二,速度控制系统 ............................................................ 3
,三,转向控制系统 ............................................................ 3
,四,检测系统 ................................................................ 4
,五,语音系统 ................................................................ 5
,六,显示系统 ................................................................ 5
,七,遥控系统 ................................................................ 6
,八,“看门狗”设计 ........................................................... 7 二、硬件设计 ..................................................................... 8
,一,直流电机驱动 ............................................................ 8
,二,转向控制系统 ............................................................ 8
,三,检测系统硬件设计 ........................................................ 9
,四,语音系统 ............................................................... 10
,五,显示系统 ............................................................... 11
,六,遥控系统 ............................................................... 12
,七,“看门狗”硬件设计 ...................................................... 13 三、软件设计 .................................................................... 14
,一,软件框图 ............................................................... 15
,二,电机控制软件 ........................................................... 15
,三,语音系统 ............................................................... 18
,四,显示软件 ............................................................... 21
,五,红外接收软件 ........................................................... 24
,六,“看门狗”软件设计 ...................................................... 27
1. 避免在中断服务子程序中插入喂狗程序段 .................................. 27
2. 避免在用户应用程序中的局部循环圈内插入喂狗程序段 ...................... 27
,七,软件抗干扰技术 ......................................................... 27
1.数字滤波技术 ........................................................... 28
2.开关量的软件抗干扰技术 ................................................. 28
3.指令冗余技术 ........................................................... 29
4.软件陷阱技术 ........................................................... 29 参考文献: ...................................................................... 29 附录: .......................................................................... 30
1 - -
智能控制玩具小车
一、系统设计
系统采用Intel公司的8052AH进行智能控制。
Intel公司是第一家出产都是依照Intel的8051为最基本的架构,再加上自己一些额外的功能以显示出自己的特色,让用户能依照电路所需,选择最适合的8051单片机去做控制。为方便设计者能随时更换不同厂商的8051,各厂商的单片机引脚大都相同,而且每个引脚的定义也都相同。
8052AH具有以下特点:
*是一个8位的MCU,与8051完全兼容
*4个8位的Port,共有32条双向可独立控制的I/O。
*有256*8RAM
*有8K*ROM
*有3组16B计时器
*具有双工工的UART
*6个中断源,具有优先权中断架构。
*内部有时钟(CLOCK)振荡器电路(12MHZ)。
(一)系统组成
系统利用红外传感器进行小车遥控操作通过单片机控制小车电机启动停止,速度调节,转向,由超声波传感器进行了障碍检测,蜂鸣器发出报警声音并能演奏简单音乐,字符型液晶显
示模块显示遥控信息和报警。
2 - -
系统组成框图
(二)速度控制系统
本实例采用直流电机驱动的方式为智能玩具车提供动力。直流电机具有体积小,体格低等优势,常用于各种机械玩具。
对直流电机速度的控制有三种方案。
*方案一、功率三极管速度控制
使用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R的电流大,发热高,损耗大。
*方案二、继电器速度控制
采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
*方案三、脉冲宽度调制速度控制(PWM控制)
通过脉冲宽度调制的方法实现对小车速度的控制由于调整系统的开关频率较高,公靠电枢电厂的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1/10000左右。这种调速方式还具有调速特性优良、调整平滑、调速范围广,过载能力大,能承受频繁的负载冲击,可以实现频繁的快速启动,制动和反转等优点。因此本实例采用PWM脉宽调制的方法控制直流电机。
(三)转向控制系统
1.转向控制两种方案
(1)方案一:普通电机转向控制
采用普通电机转向控制电动机的转向,虽然此种电机的控制很简单,但是其不能实现精确转向
(2)方案二:步进电机转向控制
用步进电机来控制电动车的转向,此方法的优点是转向算法易实现,且能实现具体角度的转向,可靠性较高。
步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变为角位移,即给一个脉冲,步进电机就转一个角度,因此非常适合单片机控制,在非超载的情况下,电机则转过一个步距角,同时步进电机只有周期性的无累积误差,精确高。
步进电机有两种工作方式:整步方式和半步方式。以步进角1.8?四相混合式,步进电机
3 - -
为例,在整步方式下,步进电机每接收一个脉冲旋转1.8?,旋转一周则需要200个脉冲;在半步方式下,步进电机每接收一个脉冲旋转0.9?,旋转一周则需要400个脉冲。控制步进电机旋转必须按一定时序对步进电机引线输入脉冲,具体的时序可查看步进电机的相关资料。
步进电机在低频工作时,会有振动大、噪声大的缺点。如果细分方式,就能很好的解决这个问题,步进电机的细分控制,从本质上讲是对步进电机励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。一般情况下,合成磁场矢量之间的夹角大小决定了步距的大小,步进电机半步工作方式就蕴涵了细分的工作原理。 2.元器件选型
实现细分方式有多种方法,最常用的是脉宽调制式斩波驱动方式,大多数专用的步进电机驱动芯片都采用这种驱动方式,TA8435就是其中一种芯片。为简化单片机对步进电机的控制,我们选用TA8435作为步进电机驱动芯片。
TA8435是东芝公司生产的单片机正弦细分二相步进电机驱动专用芯片,该芯片具有以下特点:
, 工作电压范围宽(10-40V)
, 输出电压可达1.5A(平均)和2.5A(峰值)
, 具有整步、半步、1/4细分、1/8细分运行分式可供选择
, 采用脉宽调试式斩波驱动方式
, 具有正/反转控制功能
, 带有复位和使能引脚
, 可选择使用单时钟输入或双时钟输入 (四)检测系统
检测系统主要利用传感器实现对车可能发生的碰撞进行检测,并通过语音系统进行报警,并将警告利用显示模块呈现出来。
1. 障碍检测方案
(1)*方案一 :红外线障碍检测
利用红外线进行测距。采用反射式红外发射/接收装置,该装置向前方发射红外线,当外线碰到物体时,被反射回来,装置的接收部分将被反射回来的红外线转换为电信号,其信号强度与小车距离成正比,因此可利用信号强度作为避障依据。
(2)*方案二:超声波障碍检测
4 - -
超声波是一种在弹性介质中的机械振荡,其频率超过20kHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其播放速度不同。它有折射和反射现象,且在传播过程中有衰减。利用超声波的特性,可做成各种超声波传感器,结合不同的电器,可以制成超声波仪器及装置。
2. 障碍检测方案选择
对比两种方案,超声波障碍检测较红外线障碍检测有更强的抗干扰性能,因此我们选用超声波进行障碍检测。根据实际要求,这里选用气相、窄波束、40kHz的超声波换能器。且由于小车避障时不须在很远处发现障碍物,且强度法较易实现,故采用超声波强度法进行避障。
(五)语音系统
这里的语音系统主要实现报警等简单的发声功能,因此采用蜂鸣器作为发声器件。
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,主要分为压电式蜂鸣器和电磁式蜂鸣器两类。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5-15V直流工作电压),多谐振荡器起振,输出1.5-2.5kHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
蜂鸣器在电路中常用字母“H”或“HA”
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示。
(六)显示系统
显示系统主要实现对接收的遥控命令以及检测系统的报警信息进行显示。
显示系统采用的字符型液晶模块是一种用5×7点阵形来显示字符的液晶显示器,根据显示容量可以分为1行16个字、2行16个字、2行20个字等,这里主要采用2行20个字的DM-162液晶模块。
DM-162液晶模块内部的字符发生器已经存储了160个不同的点阵字符图形,这些字符有:
5 - -
阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,例如大写的英文“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,就能看到字母“A”。
DM-162液晶模块内部的控制器共有11条控制指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。下面为常用指令及其功能。
, 指令1:清显示,指令码01H,光标复位到地址00H位置
, 指令2:光标复位,光标返回到地址00H
, 指令3:光标和显示模式设置
, 指令4:显示开关控制
, 指令5:光标或显示移动
, 指令6:功能设置命令
, 指令7:字符发生器RAM地址设置
, 指令8:DDRAM地址设置
, 指令9:读忙信号和光标地址
, 指令10:写数据
, 指令11:读数据
液晶显示模块是一个慢显示器件,所以在执行每条指令一定之前一定要确认模块的忙标志
位低电平(不忙),否则此指令失效。
(七)遥控系统
1. 红外遥控系统
通用红外遥控系统由发射和接收两部分组成,应用编/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
2. 遥控发射器及其编码
遥控发射器专用芯片很多,这里以运用比较广泛、解码相对容易的HT6221专用芯片为例
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
编码原理
遥控器将不同的按键编成不同的遥控编码,当发射器的按键按下后,发射器即发出一遥控码,其遥控码具有以下特征
采用脉宽调制的串行码:以脉宽为0.56ms、间隔0.56ms、周期1.12ms的组合表示二进制的“0” ;以脉宽为0.56ms、间隔1.68ms、周期2.24ms的组合表示二进制的“1” 。
6 - -
上述“0”和“1”组成的32位二进制码(4个字节)经38kHz的载频进行二次调制以提高发射效率,然后通过红外发射二极管产生红外线向空间发射。
HT6221产生的遥控编码是连续的32位二进制码组,其中前16为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后十六位为8位操作码(功能码)及其反码。
遥控器在按键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms-18ms),高8位地址码(9ms-18ms),8位数据码(9ms-18ms)和这8位的数据反码(9ms-18ms)组成。如果键按下超过108ms仍未松开,接下来的发射的代码(连发代码)将仅由起始码(9ms)结束码(2.5ms)组成。
3.接收解调
接收解调部分采用1838红外集成接收头。它将红外接收管与放大电路集成在一体,具有体积小(大小与一只中功率三极管相当)、密封性好、灵敏度高、价格低廉等优点。它仅有三条管脚,分别是电源正极、电源负极以及信号输出端,其工作电压在5V左右。只要给它接上电源即是完整的红外接受放大器。其主要功能有放大、选频和解调,要求输入信号是已经被调制的信号。经过它的接收放大和解调会在输出端直接输出原始的信号,而且灵敏度和抗干扰性都非常好。
(八)“看门狗”设计
PC受到干扰而失控,引起程序乱飞,也可能使程序陷入“死循环” 。指令技术、软件陷阱技术不能使失控的程序摆脱“死循环”的困境,这时系统完全瘫痪。如果操作者在场,就可以按下人工复位按钮,强制系统复位。但操作者不能一直监视着系统。通常是在引起不良后果之后才进行人工复位。为使程序脱离“死循环” ,通常采用“看门狗技术” 。“看门狗”技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设置时间,则认为系统陷入了“死循环” ,然后强迫程序返回到0000H入口,在0000H处安排一段出错处理程序,使系统运行纳入正规。
“看门狗”技术可由硬件实现,可由软件实现,也可由两者结合实现。本系统采用硬件“看门狗”电路。
实现硬件“看门狗”电路方案较多,目前采用较多的方案有以下几种: , 采用微处理器监控器
, 采用单稳态电路来实现“看门狗” ,单稳态电路可采用74LS123
7 - -
, 采用内带振荡器的记数芯片
二、硬件设计
一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O口、定时//记数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择的芯片,设计相应的电路。二是系统外设,既按照系统功能要求配置外围设备,如键盘、显示器、A/D、D/A转换器以及各种驱动电路等,要设计适合的接口电路。 (一)直流电机驱动
本系统采用软件产生PWM信号,下图是直流电机驱动的电路图。P1.0、P1.1控制电机进退,二者不能同时为低电平,其输出周期为80ms的调宽方波。三极管的功率视电机电流而定。
直流电机驱动电路图
(二)转向控制系统
转向控制系统电路图如下图所示。TA8435为步进电机的控制芯片,引脚M1和M2决定电机的转动方式:M1=0、M2=0,电机按整步方式运转:M1=1,M2=1,电机按8/1步细分方式运转。CW/CWW控制电机转动方向。CK1、CK2时钟输入的最大的频率不能超过5kHz,控制时钟的频率,
8 - -
即可控制电机转动速率。REFIN为高电平时,NFA和NFB的输出电压为0.8V,REFIN为低电平时,NFA和NFB输出电压为0.5V,这2个引脚控制步进电机输入电流,电流大小与NF端外接电阻关系为:IO=Verf/Rnf。R1,R2选用0.8Ω、2W的大功率电阻。步进电机按二相双极性使用,四相按二相使用时可以提高步进电机的输出转矩,D200-D203快恢复二极管用来泄放绕组电流。
转向控制系统电路原理图
(三)检测系统硬件设计
超声波障碍检测如下图所示。本设计采用T/R-40-12小型超声波传感器作为探测前方障碍物体的检测元件,其中心频率为40kHz脉冲信号驱动超声波传感器发送器发出40kHz的脉冲超声波,如电动机前方遇到有障碍物时,此超声波信号被障碍物反射回来,由接收器接收,经LM318两级放大,再经带有锁相环的音频解码芯片LM567解码,当LM567的输入信号大于25mV时,输出端由高电平变为低电平,送8052AH单片机处理。
9 - -
超声波检测电路原理图 (四)语音系统
语音系统采用蜂鸣器作为发声器件,其连接电路图如下图所示
10 - -
语音系统电路原理图
(五)显示系统
显示系统电路原理图如下图所示。DM-162采用
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的14脚接口,其中VSS为地电源,VDD接5V正电源,V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10KB的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0~D7为8位双向数据线。
显示系统电路原理图
11 - -
(六)遥控系统
1.遥控系统发射硬件设计
遥控系统发射部分被放在遥控器中,其电路原理图如下图所示。
遥控系统发射电路原理图 2.遥控系统接收硬件设计
遥控系统接收解码部分被放置在小车中,其电路原理图如下图所示。注意经过红外集成接
收头后,信号被反相,即与发送时的高低电平颠倒。
12 - -
遥控系统接收电路原理图
(七)“看门狗”硬件设计
我们采用内带振荡器的记数芯片CD4060实现看门狗。CD4060是带振荡器的14位计数器,由该芯片构成的看门狗如下图所示,由14位二进制计数器CD4060和三极管Q700、Q701等组成
看门狗电路图
单片机的P3.6口设计成输出口,由8052AH的CPU向看门狗电路发送喂狗信号——正脉冲,在两个正脉冲间隔内,P3.6保持为低电平(此功能要结合软件才能实现,相应的软件设计在下面介绍)。单片机8052AH的I/O口带灌电流负载的能力比较大,每个引脚低电平时的吸入电流为20mA,带拉电流负载的能力却很小,实测情况是,每个引脚高电平时的输出电流仅25uA,现在P3.6口被设计成带拉电流负载的方式,为了提高P3.6口带拉电流负载的能力,所以电路中设置了上拉电阻R700。
14位二进制计数器CD4060的计数脉冲由其内部振荡器和外接阻容元件R702、R704、C700
13 - -
的电路产生,振荡周期为:
T0SC=2.2×R702×C700=0.22ms
振荡器产生的计数脉冲(矩形波)可以直接引出,同时还可以从CD4060的10个输出端Q4-Q10和Q12-Q14得到不同分频系数的方波输出。这样,如果CD4060得不到CPU通过P3.6口发送来的喂狗信号——正脉冲,则CD4060的输出端Q14在1.8s内将产生一个完整周期的方波信号,而且低电平在前,高电平在后,其高电平经三极管Q700、Q701处理后形成单片机8052AH的复位信号,使单片机8052AH复位。由此可见,单片机8052AH正常工作时,只要在0.9s内从p3.6口送出一个正脉冲,便可及时清零看门狗,输出端Q14就不会产生定时溢出信号,从而使看门狗电路对单片机系统不起作用。并且,从CD4060的10个输出端Q4~Q10和Q12~Q14可以得到不同周期的方波信号,经三极管Q700、Q701处理后形成单片机系统的复位信号,可以适应不同用户应用程序,从而使硬件看门狗电路可以适应不同的单片机应用系统。
对MCS-51系列的单片机而言,他所需要的复位信号时高电平宽度大于2个机器周期的正脉冲,例如,单片机的时钟脉冲频率为12MHz时,则所需要的复位信号高电平宽度为2us以上就可以了,而由此可知,CD4060的Q14输出的是高电平宽度为0.9s以上的方波,如果让它直接作为单片机的复位信号,则单片机的复位时间势必在0.9s以上,这样尽管可以使程序跑飞的单片机复位,但是显然没有做到尽快地引导跑飞的程序到正确的轨道来,如果这样做的话,对于某些单片机应用系统而言可能带来非常严重的后果。图22.12中的三极管Q700、Q701及其周围阻容元件构成波形转换电路,把较宽的正脉冲变换为较窄的正脉冲,从而较好地解决了上述问题。三极管Q700、Q701构成的2级直接耦合放大器作为缓冲器使用,它是CD4060的输出端Q14的灌电流负载,C701、R705是微分电路。
经分析后不难看出,电路中的R707、R705、R701还具有单片机上复位的功能。
CPU必须在正确完成所有工作后才能发扫描输入信号,且程序中发扫描输入信号的地方不能太多。否则,在哪里有死循环,看门狗就不产生记满输出信号,不能重新启动CPU。
CD4060的记满输出信号不但要接到单片机的RST脚,而且还应接到其他芯片的RST脚,因为程序乱飞后,其他具有RST脚的芯片也混乱了,必须全部复位。
三、软件设计
在进行单片机控制系统设计时,除了系统硬件设计外,大量的工作就是如何设计和调试应用程序。因此,软件设计设计中占重要位置。
在单片机控制系统中,大体上可分为数据处理、过程控制两个类型。数据处理包括:数据
14 - -
的采集、数字滤波、标度变换等。过程控制程序主要是是单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。
模块程序设计法的主要优点是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序允许分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序、电机控制软件、转向控制软件、检测软件、语音软件、显示软件、红外接收软件构成。
(一)软件框图
软件由命令队列模块、命令执行模块、红外接收模块、障碍检测模块、速度控制模块、转向控制模块、语音软件、显示软件组成。红外接收模块将接收到的信息以及障碍检测模块将检测到的报警信号组装成命令的形式,加入到命令队列中,主程序由命令队列取出一命令并调用解释执行模块执行命令,解释执行模块根据命令的需要调用对应的速度控制模块、转向控制模块、语音软件、显示软件。
(二)电机控制软件
由软件产生脉冲宽度调制(PWM),周期为80ms,每个周期内0与1的占空分成8档。
具有的设计为:将T0设计10ms的定时中断,变量Time记录一个PWM周期(80ms)内所需要的定时中断个数,变量cPWM_1记录80ms内高电平所需要的定时中断个数,每中断一次,当cPWM_1非零时,输出高电平;当cPWM_1为零时,输出低电平;且cPWM_Time与cPWM_1减一,cPWM_Time为零时 ,cPWM_Time与cPWM_1重新置为初值。
对电机的速度和方向控制只需调用函数SetMotionSpeed()和SetMotionDirection()。
具体的程序如下:
sbit cPWM_RunForword=P1^0;
sbit cPWM_RunBack=P1^1;
unsigned char data cPWM_Time;
unsigned char data cPWM_1;
unsigned char data cPWM_Speed;
bit bMotionRunForword;
15 - -
//T0计数周期为10ms
#define T0TIMERH 0xD8 #define T0TIMERL 0xF0 #define PWM_TimeInit 0x08
//初始化直流电机控制
void InitialMotionCtrl(void) {
cPWM_Time=PWM_TimeInit;
cPWM_1=0;
cPWM_SPeed=0;
bMotionRunForword=1;
TR0=0;
TH0=T0TIMERH;
TL0=T0TIMERL;
TR0=1;
ET0=1;
}
void SetMotionSpeed(unsigned char cSpeed)
{
cPWM_Speed=cSpeed;
}
void SetMontionDirection(bit bForword)
{
bMotionRunForword=bforword;
}
16 - -
void MotionDrive(bit bStop)
{if(bStop)
//全部输出1,则电机停止转动
cPWM_RunForword=1;
cPWM_RunBack=1;
}
else
{if(bMotionRunForword)
{ cPWM_RunBack=1;
cPWM_RunRorword=0;
}
else
{cPWM_RunForword=1;
cPWM_RunBack=0;
}
}
}
void T0CountInt(void)interrupt 1
{
TR=0;
TH0=T0TIMERH;
TH0=T0THMERL;
if(cPWM_1)
{
MotionDrive(1);
cPWM_1--;
17 - -
}
else
(MotionDrive(0);
}
cPWM_Time--;
if(cPWM_Time==0);
{
cPWM_Time=PWM_TimeInit;
cPWM_1=cPWM_Speed;
}
TR0=1;
}
(三)语音系统
该语音软件的功能是播放两首简单的音乐:生日快乐和三轮车,播放时只需调用函数
Music()。
具体的程序如下:
//number=1 为生日快乐?,number2=为三轮车,
void Music(unsigned char number) {
unsigned int k,n;
unsigned int SoundLong, SoundTone;
unsigned int i,j,m;
for(k=0;k
=57)i=0;
}
for(k=0;k=75)j=0;
}
do
{
if(i>=75)i=0;
if(j>=75)j=0;
SoundLong=SOUNDLONG[I]; SoundTone=SOUNDTONE[J]; i++;
j++;
for(n=0;n>1; da[m]=da[m]|0x80; }
else
da[am]=da[am]>>1; da[am]=da[am]|0; }
// while(IR);
// while(!IR);
}
}
if(da[0]==0x0)&&(da[1]==0xff))
{
if(da[2]==(~da[3])
return da[2];
}
exit:
26 - -
return 0;
}
(六)“看门狗”软件设计
单片机应用系统运行正常时,单片机的CPU应在0.9秒内从P3.6口送出一个正脉冲,使看门狗及时清零,也就是说,CPU要在0.9S以内执行一次下面的喂狗程序。
喂狗程序段插入到用户应用程序之中。单片机系统的用户应用程序一般由循环结构的主程序和中断服务子程序组成。首先,应尽可能准确地估算个应用功能模块的运行时间,估算运行时间的时候,应考虑程序可能被中断,应把中断程序的运行时间也计算在内。然后,在若干个应用功能模块的运行时间小于0.9S的两个应用功能模块之间插入上面的喂狗程序段。
为了防止看门狗非正常失效(已发生程序跑飞但看门狗不产生单片机所需要的复位信号),在用户应用程序中插入喂狗程序时应注意下面两点。
1.避免在中断服务子程序中插入喂狗程序段
当MCU受干扰而发生程序跑飞,只要MCU片内中断允许控制寄存器不遭破坏,则不论程序飞到什么地方,CPU仍能像程序正常运行时一样响应和执行中断服务子程序。因此,在各中断服务子程序中都不应该插入喂狗程序段。
2.避免在用户应用程序中的局部循环圈内插入喂狗程序段
这样,即使程序跑飞后非正常进入该循环圈内,并且跑飞后的程序在该循环圈内“死循环” ,也会因为看门狗接收不到信号,发生看门狗定时计数溢出,进而使系统恢复正常运行。
喂狗程序具体如下:
Void FeedWatchdog(void)
{
#pragma asm
SETB P3.6
NOP
NOP
CLR 3.6
#pragma endasm
(七)软件抗干扰技术
提高玩具车智能控制的可靠性,仅靠硬件抗干扰是不够的,需要进一步借助于软件抗干扰
27 - -
技术来克服某些干扰。在单片机控制系统中国,如能正确的采用软件抗干扰技术,与硬件干扰措施构成双道抗干扰防线,无疑将大大提高控制系统的可靠性。经常采用的软件抗干扰技术是数字滤波技术、开关量的软件抗干扰技术、指令冗余技术、软件陷阱技术等。 1.数字滤波技术
一般单片机应用系统的模拟输入信号中,均含有种种噪音和干扰,他们来自被测量本身、传感器、外界干扰等。为了进行准确测量和控制,必须消除被测信号中的噪音和干扰。对于这类信号,采用积分时间等于20ms的整数倍的双积分A/D 转换器,可有效消除其影响。后者为随机信号,他不是周期信号。对于随机干扰,可以用数字滤波的方法予以消弱或滤除。所谓数字滤波,就是通过一定的计算或者判断程序减少干扰在有用信号中的比重。故实质上他是一种程序滤波。数字滤波克服了模拟器的不足,它与模拟滤波器相比,有以下几个优点: , 数字滤波是用程序实现的,他不需要增加硬件设备,所以可靠性高,稳定性好。 , 数字滤波可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便,功能强的特点。
, 数字滤波可以对频率很低的信号实现滤波,克服了模拟滤波器的缺陷。 数字滤波器具有以上优点,多以数字滤波在微机应用中得到了广泛应用。 2.开关量的软件抗干扰技术
干扰信号多呈毛刺状,作用时间短,利用这一点,在采集某一开关信号量时,可多次重复采集,知道连续两次或两次以上结果完成一致方为有效。若多次采样后,信号总是变化不定,可停止采集,给出报警信号,由于开关量信号主要是来自各类开关型状态传感器,如限位开关、操作按钮、电气触电等,对这些信号的采集不能用多次平均的方法,必须绝对一致才行。如果开关量信号超过8个,可按8个一组进行分组处理,也可定义多字节信息暂存区,按类似方法处理。在满足实时性要求的前提下,如果在各次采集数字信号之间接入一段延时,效果会好一些,就能对抗较宽的干扰。
输出设备是电位控制型还是同步锁存型,对干扰的敏感性相对较大。前者有良好的抗“毛刺”干扰能力,后者不耐干扰,当锁存线上出现干扰时,它就会盲目锁定当前的数据,也不管此时的数据是否有效。输出设备和惯性(响应速度)与干扰的耐受能力也有很大关系。惯性大的输出设备(如各类电磁执行机构)对“毛刺”干扰有一定的耐受能力。惯性小的输出设备(如通行口、显示设备)耐受能力就小一些。在软件上,最为有效的方法就是重复输出同一个数据。只要有可能,其重复周期尽可能短些。外设设备接受到一个被干扰的错误信息后,还来不及做出有效的反应,一个正确的信息又来了,就可及时防止错误操作的产生。另外,各类数据锁存
28 - -
器尽可能和CPU安装在同一电路板上,使传输线上传送的都是锁存好的电位控制信号,对于重要的输出设备,最好建立检测通道,CPU可以检测通道来确定输出结果的正确性。 3.指令冗余技术
当CPU受到干扰后,往往将一些操作数当作指令码来执行,引起程序混乱。当程序弹飞到某一字节指令上时,便自动纳入正轨。当弹飞到某一双字节指令上时,有可能落到其操作数上,从而继续出错。当程序弹飞到三字节指令上,因它有两个操作数,继续出错的机会就更大。因为,应多采用单字节指令(NOP)或将单字节指令重复书写,这便是指令冗余。指令冗余无疑会降低系统的效率,但在绝大多数情况下,CPU还不至于忙到不能执行几条指令的程度,故这种方法还会被广泛采用。
在一些对程序流向起作用的指令之前插入两条NOP指令,以保证弹飞的程序迅速纳入正确轨道。在某些对系统工作状态重要的指令前也可插入两条NOP指令,以保证正确执行。指令冗余技术可以减少程序弹飞的次数,使其很快进入程序轨道,但这并不能保证在失控期间不干坏事,更不能保证程序纳入正轨后就太平无事了,解决这个问题必须采用软件容错技术。 4.软件陷阱技术
指令冗余使弹飞的程序安定下来是有条件的。首先,弹飞的程序必须落到程序区;其次,必须执行到冗余的指令。所谓软件陷阱,就是一套引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行进行处理的程序。如果把这段程序的入口标记为ERR,则软件陷阱即为一条无条件转移指令,为了加强其捕捉效果,一般还在它前面加两条NOP指令,因此真正的软件陷阱由3条指令构成:NOP、NOP、ERR。
软件陷阱安排在以下4中地方:
, 未使用的中断向量区;
, 未使用的大的ROM空间;
, 表格;
, 程序区。
由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率,在当前EPROM容量不成问题的条件下,还是多多益善。
参考文献:
?ALAN V.OPPENHEIM著,《信号与系统》,西安:西安交通大学出版社,1997年;
?元秋奇著,《数字图像处理学》,北京:电子工业出版社,2000年;
?《模拟电子线路基础》,吴运昌著,广州:华南理工大学出版社,2004年;
?《数字电子技术基础》,阎石著,北京:高等教育出版社,1997年;
29 - -
?《单片机原理及应用》,李建忠著,西安:西安电子科技大学,2002年;
附录:
附1:程序清单
/*////////////////////////////////////////////////////////////////////////////////////////////
/////
FFT转换函数,dataR:实部,datai:虚部,
//////////////////////////////////////////////////////////////////////////////////////////////
//*/
void FFT(float *dataR,float *dataI,int n) {
int i,L,j,k,b,p,xx,qq;
int x[11]={0};
float TR,TI,temp;
float QQ;
//////////////////////////////////位倒置////////////////////////////////////////////////////
for(i=0;i
本文档为【毕业设计(论文)-智能控制玩具小车】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。