毕业设计(论文)智能控制玩具小车.doc

上传人:laozhun 文档编号:3983005 上传时间:2023-03-30 格式:DOC 页数:31 大小:390KB
返回 下载 相关 举报
毕业设计(论文)智能控制玩具小车.doc_第1页
第1页 / 共31页
毕业设计(论文)智能控制玩具小车.doc_第2页
第2页 / 共31页
毕业设计(论文)智能控制玩具小车.doc_第3页
第3页 / 共31页
毕业设计(论文)智能控制玩具小车.doc_第4页
第4页 / 共31页
毕业设计(论文)智能控制玩具小车.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《毕业设计(论文)智能控制玩具小车.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)智能控制玩具小车.doc(31页珍藏版)》请在三一办公上搜索。

1、广东农工商职业技术学院毕业论文(设计)题 目 智能控制玩具小车 姓 名 专 业 电气自动化技术 年级班级 学 号 指导教师 完成日期 摘要根据近年来全球玩具销量增幅与全球平均GDP增幅大致相当。而全球玩具市场的内在结构比重却发生了重大变化:传统玩具的市场在逐步缩水,高科技含量的电子玩具则蒸蒸日上。美国玩具市场的高科技电子玩具的年销售量2004年较2003年增长52%,而传统玩具的年销售额仅增长3%。英国玩具零售商协会选出的2001年圣诞最受欢迎的十大玩具中,有7款玩具配有电子元件。从这些数字可以看出,高科技含量的电子互动式玩具已经成为玩具行业发展的主流。本设计一个具有障碍检测、字符显示功能的智

2、能遥控小车。该小车对传统的手动遥控做了改进,使之可以实现任意角度转向和以任意速度前进,而不像一般的小车那样只能以固定角度转向和以固定速度前进,因此更加接近真实的车辆。同时还在小车的控制系统中采用红外远程遥控,使控制者可以对小车进行遥控操作,产生相应的操作,而且小车和控制者还具有一定的交互功能。本系统主要完成的功能有:红外线遥控操作、小车速度控制、转向控制、前方障碍检测、声音报警、字符显示等。关键字:红外线遥控 速度控制 转向控制 声音报警 字符显示 目录摘要1目录2智能控制玩具小车3一、系统设计3(一)系统组成3(二)速度控制系统4(三)转向控制系统4(四)检测系统5(五)语音系统6(六)显示

3、系统6(七)遥控系统7(八)“看门狗”设计8二、硬件设计9(一)直流电机驱动9(二)转向控制系统9(三)检测系统硬件设计10(四)语音系统11(五)显示系统12(六)遥控系统13(七)“看门狗”硬件设计14三、软件设计15(一)软件框图16(二)电机控制软件16(三)语音系统19(四)显示软件22(五)红外接收软件25(六)“看门狗”软件设计271. 避免在中断服务子程序中插入喂狗程序段272. 避免在用户应用程序中的局部循环圈内插入喂狗程序段28(七)软件抗干扰技术281.数字滤波技术282.开关量的软件抗干扰技术293.指令冗余技术294.软件陷阱技术29参考文献:30附录:30智能控制玩

4、具小车一、系统设计系统采用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)

5、振荡器电路(12MHZ)。(一)系统组成 系统利用红外传感器进行小车遥控操作通过单片机控制小车电机启动停止,速度调节,转向,由超声波传感器进行了障碍检测,蜂鸣器发出报警声音并能演奏简单音乐,字符型液晶显示模块显示遥控信息和报警。系统组成框图(二)速度控制系统本实例采用直流电机驱动的方式为智能玩具车提供动力。直流电机具有体积小,体格低等优势,常用于各种机械玩具。对直流电机速度的控制有三种方案。*方案一、功率三极管速度控制使用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R的电流大,发热高,损耗大。*方

6、案二、继电器速度控制采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。*方案三、脉冲宽度调制速度控制(PWM控制)通过脉冲宽度调制的方法实现对小车速度的控制由于调整系统的开关频率较高,公靠电枢电厂的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1/10000左右。这种调速方式还具有调速特性优良、调整平滑、调速范围广,过载能力大,能承受频繁的负载冲击,可以实现频繁的快速启动,制动和反转等优点。因此本实例采用PWM脉宽调制的方法控制直流电机。(三

7、)转向控制系统1. 转向控制两种方案(1) 方案一:普通电机转向控制 采用普通电机转向控制电动机的转向,虽然此种电机的控制很简单,但是其不能实现精确转向(2) 方案二:步进电机转向控制 用步进电机来控制电动车的转向,此方法的优点是转向算法易实现,且能实现具体角度的转向,可靠性较高。 步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变为角位移,即给一个脉冲,步进电机就转一个角度,因此非常适合单片机控制,在非超载的情况下,电机则转过一个步距角,同时步进电机只有周期性的无累积误差,精确高。 步进电机有两种工作方式:整步方式和半步方式。以步进角1.8四相混合式,步进电机为例,在整步方式下,步进电机每

8、接收一个脉冲旋转1.8,旋转一周则需要200个脉冲;在半步方式下,步进电机每接收一个脉冲旋转0.9,旋转一周则需要400个脉冲。控制步进电机旋转必须按一定时序对步进电机引线输入脉冲,具体的时序可查看步进电机的相关资料。 步进电机在低频工作时,会有振动大、噪声大的缺点。如果细分方式,就能很好的解决这个问题,步进电机的细分控制,从本质上讲是对步进电机励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。一般情况下,合成磁场矢量之间的夹角大小决定了步距的大小,步进电机半步工作方式就蕴涵了细分的工作原理。2. 元器件选型 实现细分方式有多种方法,最常用的是脉

9、宽调制式斩波驱动方式,大多数专用的步进电机驱动芯片都采用这种驱动方式,TA8435就是其中一种芯片。为简化单片机对步进电机的控制,我们选用TA8435作为步进电机驱动芯片。TA8435是东芝公司生产的单片机正弦细分二相步进电机驱动专用芯片,该芯片具有以下特点:l 工作电压范围宽(10-40V)l 输出电压可达1.5A(平均)和2.5A(峰值)l 具有整步、半步、1/4细分、1/8细分运行分式可供选择l 采用脉宽调试式斩波驱动方式l 具有正/反转控制功能l 带有复位和使能引脚l 可选择使用单时钟输入或双时钟输入 (四)检测系统 检测系统主要利用传感器实现对车可能发生的碰撞进行检测,并通过语音系统

10、进行报警,并将警告利用显示模块呈现出来。1. 障碍检测方案(1)*方案一 :红外线障碍检测 利用红外线进行测距。采用反射式红外发射/接收装置,该装置向前方发射红外线,当外线碰到物体时,被反射回来,装置的接收部分将被反射回来的红外线转换为电信号,其信号强度与小车距离成正比,因此可利用信号强度作为避障依据。 (2)*方案二:超声波障碍检测超声波是一种在弹性介质中的机械振荡,其频率超过20kHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其播放速度不同。它有折射和反射现象,且在传播过程中有衰减。利用超声波的特性,可做成各种超声波传感器,结合不同的电器,可以制成超声波仪器及装置。2

11、. 障碍检测方案选择 对比两种方案,超声波障碍检测较红外线障碍检测有更强的抗干扰性能,因此我们选用超声波进行障碍检测。根据实际要求,这里选用气相、窄波束、40kHz的超声波换能器。且由于小车避障时不须在很远处发现障碍物,且强度法较易实现,故采用超声波强度法进行避障。(五)语音系统 这里的语音系统主要实现报警等简单的发声功能,因此采用蜂鸣器作为发声器件。 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,主要分为压电式蜂鸣器和电磁式蜂鸣器两类。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当

12、接通电源后(1.5-15V直流工作电压),多谐振荡器起振,输出1.5-2.5kHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。蜂鸣器在电路中常用字母“H”或“HA”表示。(六)显示系统显示系统主要实现对接收的遥控命令以及检测系统的报警信息进行显示。显示系统采用的字符型液晶模块是一种用57点阵形

13、来显示字符的液晶显示器,根据显示容量可以分为1行16个字、2行16个字、2行20个字等,这里主要采用2行20个字的DM-162液晶模块。DM-162液晶模块内部的字符发生器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,例如大写的英文“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,就能看到字母“A”。DM-162液晶模块内部的控制器共有11条控制指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。下面为常用指令及其功能。l 指令1:清显示,指令码01H,光标复位到地

14、址00H位置l 指令2:光标复位,光标返回到地址00Hl 指令3:光标和显示模式设置l 指令4:显示开关控制l 指令5:光标或显示移动l 指令6:功能设置命令l 指令7:字符发生器RAM地址设置l 指令8:DDRAM地址设置l 指令9:读忙信号和光标地址l 指令10:写数据l 指令11:读数据 液晶显示模块是一个慢显示器件,所以在执行每条指令一定之前一定要确认模块的忙标志位低电平(不忙),否则此指令失效。(七)遥控系统1. 红外遥控系统通用红外遥控系统由发射和接收两部分组成,应用编/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大

15、器、解调、解码电路。2. 遥控发射器及其编码遥控发射器专用芯片很多,这里以运用比较广泛、解码相对容易的HT6221专用芯片为例说明编码原理遥控器将不同的按键编成不同的遥控编码,当发射器的按键按下后,发射器即发出一遥控码,其遥控码具有以下特征采用脉宽调制的串行码:以脉宽为0.56ms、间隔0.56ms、周期1.12ms的组合表示二进制的“0” ;以脉宽为0.56ms、间隔1.68ms、周期2.24ms的组合表示二进制的“1” 。上述“0”和“1”组成的32位二进制码(4个字节)经38kHz的载频进行二次调制以提高发射效率,然后通过红外发射二极管产生红外线向空间发射。HT6221产生的遥控编码是连

16、续的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.接收解调接收解调

17、部分采用1838红外集成接收头。它将红外接收管与放大电路集成在一体,具有体积小(大小与一只中功率三极管相当)、密封性好、灵敏度高、价格低廉等优点。它仅有三条管脚,分别是电源正极、电源负极以及信号输出端,其工作电压在5V左右。只要给它接上电源即是完整的红外接受放大器。其主要功能有放大、选频和解调,要求输入信号是已经被调制的信号。经过它的接收放大和解调会在输出端直接输出原始的信号,而且灵敏度和抗干扰性都非常好。(八)“看门狗”设计 PC受到干扰而失控,引起程序乱飞,也可能使程序陷入“死循环” 。指令技术、软件陷阱技术不能使失控的程序摆脱“死循环”的困境,这时系统完全瘫痪。如果操作者在场,就可以按下

18、人工复位按钮,强制系统复位。但操作者不能一直监视着系统。通常是在引起不良后果之后才进行人工复位。为使程序脱离“死循环” ,通常采用“看门狗技术” 。“看门狗”技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设置时间,则认为系统陷入了“死循环” ,然后强迫程序返回到0000H入口,在0000H处安排一段出错处理程序,使系统运行纳入正规。 “看门狗”技术可由硬件实现,可由软件实现,也可由两者结合实现。本系统采用硬件“看门狗”电路。 实现硬件“看门狗”电路方案较多,目前采用较多的方案有以下几种:l 采用微处理器监控器l 采用单稳态电路来实现“看门狗” ,单稳态电路可采用74LS123l 采

19、用内带振荡器的记数芯片 二、硬件设计 一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O口、定时/记数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择的芯片,设计相应的电路。二是系统外设,既按照系统功能要求配置外围设备,如键盘、显示器、A/D、D/A转换器以及各种驱动电路等,要设计适合的接口电路。(一)直流电机驱动 本系统采用软件产生PWM信号,下图是直流电机驱动的电路图。P1.0、P1.1控制电机进退,二者不能同时为低电平,其输出周期为80ms的调宽方波。三极管的功率视电机电流而定。 直流电机驱动电路图(二)转向控

20、制系统 转向控制系统电路图如下图所示。TA8435为步进电机的控制芯片,引脚M1和M2决定电机的转动方式:M1=0、M2=0,电机按整步方式运转:M1=1,M2=1,电机按8/1步细分方式运转。CW/CWW控制电机转动方向。CK1、CK2时钟输入的最大的频率不能超过5kHz,控制时钟的频率,即可控制电机转动速率。REFIN为高电平时,NFA和NFB的输出电压为0.8V,REFIN为低电平时,NFA和NFB输出电压为0.5V,这2个引脚控制步进电机输入电流,电流大小与NF端外接电阻关系为:IO=Verf/Rnf。R1,R2选用0.8、2W的大功率电阻。步进电机按二相双极性使用,四相按二相使用时可

21、以提高步进电机的输出转矩,D200-D203快恢复二极管用来泄放绕组电流。 转向控制系统电路原理图(三)检测系统硬件设计 超声波障碍检测如下图所示。本设计采用T/R-40-12小型超声波传感器作为探测前方障碍物体的检测元件,其中心频率为40kHz脉冲信号驱动超声波传感器发送器发出40kHz的脉冲超声波,如电动机前方遇到有障碍物时,此超声波信号被障碍物反射回来,由接收器接收,经LM318两级放大,再经带有锁相环的音频解码芯片LM567解码,当LM567的输入信号大于25mV时,输出端由高电平变为低电平,送8052AH单片机处理。 超声波检测电路原理图(四)语音系统 语音系统采用蜂鸣器作为发声器件

22、,其连接电路图如下图所示 语音系统电路原理图(五)显示系统 显示系统电路原理图如下图所示。DM-162采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10KB的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平

23、跳变成低电平时,液晶模块执行命令。D0D7为8位双向数据线。 显示系统电路原理图(六)遥控系统1. 遥控系统发射硬件设计 遥控系统发射部分被放在遥控器中,其电路原理图如下图所示。 遥控系统发射电路原理图2. 遥控系统接收硬件设计 遥控系统接收解码部分被放置在小车中,其电路原理图如下图所示。注意经过红外集成接收头后,信号被反相,即与发送时的高低电平颠倒。 遥控系统接收电路原理图(七)“看门狗”硬件设计 我们采用内带振荡器的记数芯片CD4060实现看门狗。CD4060是带振荡器的14位计数器,由该芯片构成的看门狗如下图所示,由14位二进制计数器CD4060和三极管Q700、Q701等组成 看门狗电

24、路图 单片机的P3.6口设计成输出口,由8052AH的CPU向看门狗电路发送喂狗信号正脉冲,在两个正脉冲间隔内,P3.6保持为低电平(此功能要结合软件才能实现,相应的软件设计在下面介绍)。单片机8052AH的I/O口带灌电流负载的能力比较大,每个引脚低电平时的吸入电流为20mA,带拉电流负载的能力却很小,实测情况是,每个引脚高电平时的输出电流仅25uA,现在P3.6口被设计成带拉电流负载的方式,为了提高P3.6口带拉电流负载的能力,所以电路中设置了上拉电阻R700。 14位二进制计数器CD4060的计数脉冲由其内部振荡器和外接阻容元件R702、R704、C700的电路产生,振荡周期为: T0S

25、C=2.2R702C700=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就不会产生定时溢出信号,从而使看门

26、狗电路对单片机系统不起作用。并且,从CD4060的10个输出端Q4Q10和Q12Q14可以得到不同周期的方波信号,经三极管Q700、Q701处理后形成单片机系统的复位信号,可以适应不同用户应用程序,从而使硬件看门狗电路可以适应不同的单片机应用系统。对MCS-51系列的单片机而言,他所需要的复位信号时高电平宽度大于2个机器周期的正脉冲,例如,单片机的时钟脉冲频率为12MHz时,则所需要的复位信号高电平宽度为2us以上就可以了,而由此可知,CD4060的Q14输出的是高电平宽度为0.9s以上的方波,如果让它直接作为单片机的复位信号,则单片机的复位时间势必在0.9s以上,这样尽管可以使程序跑飞的单片

27、机复位,但是显然没有做到尽快地引导跑飞的程序到正确的轨道来,如果这样做的话,对于某些单片机应用系统而言可能带来非常严重的后果。图22.12中的三极管Q700、Q701及其周围阻容元件构成波形转换电路,把较宽的正脉冲变换为较窄的正脉冲,从而较好地解决了上述问题。三极管Q700、Q701构成的2级直接耦合放大器作为缓冲器使用,它是CD4060的输出端Q14的灌电流负载,C701、R705是微分电路。经分析后不难看出,电路中的R707、R705、R701还具有单片机上复位的功能。CPU必须在正确完成所有工作后才能发扫描输入信号,且程序中发扫描输入信号的地方不能太多。否则,在哪里有死循环,看门狗就不产

28、生记满输出信号,不能重新启动CPU。CD4060的记满输出信号不但要接到单片机的RST脚,而且还应接到其他芯片的RST脚,因为程序乱飞后,其他具有RST脚的芯片也混乱了,必须全部复位。 三、软件设计 在进行单片机控制系统设计时,除了系统硬件设计外,大量的工作就是如何设计和调试应用程序。因此,软件设计设计中占重要位置。在单片机控制系统中,大体上可分为数据处理、过程控制两个类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是是单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干部分,每一部分叫做一个模块。所谓“模块”,

29、实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序允许分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由主程序、电机控制软件、转向控制软件、检测软件、语音软件、显示软件、红外接收软件构成。(一)软件框图软件由命令队列模块、命令执行模块、红外接收模块、障碍检测模块、速度控制模块、转向控制模块、语音软件、显示软件组成。红外接收模块将接收到的信息以及障碍检测模块将检测到的报警信号组装成命令的形式,加入到命令队列中,主程序由命

30、令队列取出一命令并调用解释执行模块执行命令,解释执行模块根据命令的需要调用对应的速度控制模块、转向控制模块、语音软件、显示软件。(二)电机控制软件 由软件产生脉冲宽度调制(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重新置为初值。对电机

31、的速度和方向控制只需调用函数SetMotionSpeed()和SetMotionDirection()。具体的程序如下:sbit cPWM_RunForword=P10;sbit cPWM_RunBack=P11;unsigned char data cPWM_Time;unsigned char data cPWM_1;unsigned char data cPWM_Speed;bit bMotionRunForword;/T0计数周期为10ms#define T0TIMERH 0xD8#define T0TIMERL 0xF0#define PWM_TimeInit 0x08/初始化直流电

32、机控制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; void MotionDrive(bit bS

33、top)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-; else (MotionDrive(0); cPWM_Time

34、-; 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;doif

35、(i=75)i=0;if(j=75)j=0;SoundLong=SOUNDLONGI;SoundTone=SOUNDTONEJ;i+;j+;for(n=0;nSoundLONG;n+)for(k=0;k12;k+)p_3=0;for(m=0;mSoundTone/2;m+);p3_4=1;for(m=0;mSoundTone/2;m+);delay50us(6);:while(SOUNDLONGi!=0)|(SOUNDTONEj!=0);/延时程序void delay10ms(unsigned char time)unsigned char a,b,c;for(a=0;atime;a+)for

36、(b=0;b10;b+)for(c=0;c120;c+);void delay50us(unsigned char time)unsigned char a,b;for(a=0;atime;a+)for(b=0;b6;b+);unsigned char code SOUNDLONG=9,3,12,12,24,9,3,12,12,24, 9,3,12,12,12,12, 9,3,12,12,24,0,/生日快乐end 6,6,9,3,6,6,12, 6,6,6,6,6,6,12, 6,6,9,3,6,6,9,3, 6,3,3,6,3,3,6,6?,0/三轮车end ; unsigned char

37、 code SOUNDTONE= 212,212,190,212,159,169, 212,212,190,212,142,159, 212,212,106,126,159,169,190, 119,119,126,159,142,159, 0,/生日快乐end 239,239,212,189,159,159,189, 159,159,142,126,120,120,159, 120,120,142,159,189,142,159,189, 239,212,189,159,142,159,189,212,239, 0/三轮车end ;(四)显示软件 液晶模块内部控制器的读写操作、屏幕和光标的操

38、作都是通过指令编程来实现的,具体的操作过程参看前面显示系统的设计。以下为显示函数:/Port Definitionssbit LcdRs=P33;sbit LcdRw=P31;sbit LcdEn=P37;sfr DBPPort=0x80; /P0?0x80数据端口/内部等待函数unsigned char LCDLcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();while(DBPort&0xb0);LcdEn=0;return DBPort;/向LCD写入命令或数据#define LCD_COMMAND 0 /Command#define LCD_DATA 1 /

39、Data#define LCD_CLEAR_SCREEN 0x01 /清屏#define LCD_HOMING 0x02 /光标返回原点void LCD_Write(bit style,unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0; _nop_()DBPort=input; _nop_()LcdEn=1; _nop_()LcdEn=0; _nop_()LCD_Wait();/设置显示模式#define LCD_SHOW 0x04 /显示开#define LCD_HIDE 0x00 /显示关#define LCD_CURSOR 0x02 /显示光

40、标#define LCD_NO_CURSOR 0x00 /无光标#define LCD_FLASH 0x01 /光标闪动#define LCD_NO_FLASH 0x00 /光标不闪动void LCD_SetDisplay(unsigned char Display Mode) LCD_Write(LCD_COMMAND,0x80|DisplayMode); /设置输入模式 #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 /default #define LCD_MOVE 0x01 /画面可平移 #define LCD_MOVE 0x00 /de

41、fault void LCD_SetInput(unsigned char InputMnputMode) LCD_Write(LCD_COMMAND,0x04|InputMode); /移动光标或屏幕#define LCD_CURSOR 0x02#define LCD_SCREEN 0x08#define LCD_LEFT 0x00#define LCD_RIGHT 0x04void LCD_Move(unsigned char object,unsigned char derection)if(object=LCD_CURSOR)LCD_Write(LCD_COMMAND,0x10|dir

42、ection);if(object=LCD_COMMAND,0x18|direction);/初始化LCDvoid LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);LCD_WRITE(LCD_COMMAND,LCD_CLEAR_SCREEN);LCD_SstInput(LCD_AC_UP|LCD_NO_MOVE);void GotoXY(unsigned char x,unsigned chary)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str) while(*str!=0) LCD_Write (LCD_DATA,*str) str+; (五)红外接收软件解码的关键是如何识别0和1,从位的定义可以发现0、1均以0.56ms的低电平开始,不同的是高电平的宽度不同,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号