首页 基于SPCE061A单片机的红外智能避障寻迹小车.doc

基于SPCE061A单片机的红外智能避障寻迹小车.doc

举报
开通vip

基于SPCE061A单片机的红外智能避障寻迹小车.doc基于SPCE061A单片机的红外智能避障寻迹小车.doc 目录 摘要..................................................................................................................................................... 第一章 绪论......................................................................

基于SPCE061A单片机的红外智能避障寻迹小车.doc
基于SPCE061A单片机的红外智能避障寻迹小车.doc 目录 摘要..................................................................................................................................................... 第一章 绪论......................................................................................................................................3 第二章 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 论证与电路设计.............................................................................................6 2.1单片机最小系统方案设计与选择电路方框图及说明....................................................6 2.2 SPCE061A最小系统61板上各集成模块.........................................................................8 2.2.1 SPCE061A最小系统原理图...............................................................................................9 2.2.2电源电路...................................................................................................................................9 2.2.3麦克风录音输入及AGC电路...........................................................................................10 2.2.4语音播报电路...........................................................................................................11 2.2.5按键电路...................................................................................................................12 2.3传感器电路探测路线模块..........................................................................................13 2.4 电机驱动模块.............................................................................................................14 第三章 系统硬件方案......................................................................................................17 3.1 系统结构框图.............................................................................................................17 3.2 小车电机安装图.........................................................................................................18 3.3 传感器电路探头的安装.............................................................................................18 第四章 系统软件设计....................................................................................................19 4.1 主程序设计.................................................................................................................19 4.2 语音训练识别程序设计...........................................................................................20 4.2.1 训练部分..................................................................................................................20 4.2.2 语音识别子程序....................................................................................................20 4.3 动作子程序设计.......................................................................................................21 4.4 中断子程序...............................................................................................................21 4.5 寻迹避障程序设计...................................................................................................22 第五章 总结....................................................................................................................22 第六章 结束语..................................................................................................................23 第七章 致谢..................................................................................................................23 第八章 参考文献..........................................................................................................23 第九章 附录..................................................................................................................24 摘要 随着人工智能的发展,智能汽车技术得到了很大的提高,自动无人驾驶小汽车将会进入民用阶段.这对于改善日益恶化的城市交通具有很大意义,本系统模拟将来的智能小汽车,采用语音控制方式,使小车可以“听懂”人的命令,根据开始录制的语音命令来控制小车的启动,停止,拐弯等操作。并在小车的底部和前部安装四个反射式光电传感器以 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 障碍物和黑带路线,当传感器检测到黑带或障碍物时,输出电压信号到LM324,经电压比较后输入到送入主控单元SPCE061A单片机,处理数据后完成相应动作,以控制电动小车行驶状态,使之具有按设定路线行驶和避障功能。,系统以两电动机为主驱动,一是方向驱动,一是动力驱动。电机驱动电路采用两通道驱动集成芯片L298N,可以用来驱动两个直流电动机。 关键词:语音识别 智能小车 SPCE061A 寻迹 Abstract Along with artificial intelligence development,Smart car technology is gained very prodigious heighten,Auto—drive small car will into people’s daily life.This toward improvement 0f increasingly bad city’s traffic have very big effection. This system simulated smart car by voice recognition toy car which was gave a command that the car would drive as your command based on old rec’s command ,as follow start up,stop,turn and etc. The micro-controller adjusts the model car’s position by infared sensor .It has 4-infrared sensors on the bottom for detect black tracking tape, when the sensors detected black color, output of comparator, LM324 is low logic and the other the output is high. The imformation was send to SPCE061A which deal with the imformation and give control singal to H-Bridge driver L298N which were used to control speed of electromotor and can drive two electromotor. This system adopt two electromotor.one other is direction electromotor ,the other is driver electromotor.Microcontrollor SPCE061A were used to control direction of motor.This I created a speech controlled car using various electrical and mechanical domains such as digital signal processing, analog circuit design, and interfacing the car with the SPCE061A keyword:voice recognition smart car SPCE061A black tracking tape 1 绪论 1.1 语音处理研究背景 自20世纪90年代以来,包括微软、IBM、GOOGLE等国外大企业,都在语音领域加大了研发力度。语音技术的发展对IT业,对建立高度智能的信息化社会有着深远的意义,语音技术的突破,将会在整个信息产业掀起一股狂潮。语音技术,已被公认为是21世纪最有开发潜力和应用前景的高科技技术。 1.1.1 语音处理技术的发展和现状 计算机技术的飞速发展,使人与机器用自然语言进行对话的梦想一步步接近实现。进入九十年代之后,语音识别的研究进一步升温,除了连续语音听写机之外,还出现了诸多实用化的研究方向。IBM公司率先推出的ViaVoice标志着大词汇量、非特定人、连续语音识别技术正在趋于成熟。今后的发展方向,将由连续语音进一步进入自然话语识别与理解,并着手解决语音识别中的一系列难题,如鲁棒性问题。难度还会加大,但前景是乐观的。语音技术的应用已是产业发展的必然。无论是PC平台,还是高端的平台、甚至移动设备,各种形态的嵌入式的计算设备等等,语音技术都可以使冰冷的计算设备以更富友好和人性化的界面出现。我们相信,这项对人类生活产生重大影响的技术必将使更多人、更多时间和更有乐趣地享受IT和计算带来的深刻价值。尼葛洛庞帝在《数字化生存》一书中写到"在下一个千年里,我们会发现我们和机器说的话,与我们和人类说的话一样多,或甚至比跟人类说的话还要多";而比尔?盖茨在COMDEX展会上也说道:"工业界应对语音识别领域的重大突破作好充分的准备,那将是席卷全球的另一次狂潮"。这一切都将预示着语音技术的应用将为人类未来的生活带来巨大的变革。 1.1.2语音处理系统模型组成 语音技术主要有两个方面:语音合成和语音识别。 按照实现的功能划分,语音合成可分为两个档次 (1) 有限词汇的计算机语音输出; (2) 基于语音合成技术将文本信息转换为语音信息提供给用户,即文本语音转换 (text_to_speech,TTS)流程如图1所示。 按照人类语言功能的不同,语音合成可分为三个层次; (1) 从文字到语音的合成(TTS); (2) 从概念到语音的合成(CTS); (3) 从意向到语音的合成(ITS); 语音识别技术(ASR):用以取代繁琐的按键输入,使输入更为便捷和人性化。在现实应用中后者比前者更有应用前景,语音识别领域是我们研究的主要方向。 1.1.3语音识别技术介绍 让人与计算机自由地交谈,机器能听懂人讲话,是汉语语音识别技术最 其中声学特征的提取与选择是语音识别的一个重要环节。声学特征的提取既是一 个信息大幅度压缩的过程,也是一个信号解卷过程,目的是使模式划分器能更好 地划分。由于语音信号的时变特性,特征提取必须在一小段语音信号上进行,也 即进行短时分析。这一段被认为是平稳的分析区间称之为帧,帧与帧之间的偏移 通常取帧长的1/2或1/3。通常要对信号进行预加重以提升高频,对信号加窗以 避免短时语音段边缘的影响。难度虽然很大,但前景乐观。语音识别技术所涉及 的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人 工智能等等。 1.1.4语音识别系统的分类方式及依据。 语音识别技术有三大研究范围:口音独立、连续语音及可辨认字词数量。 (1)口音独立 根据对说话人的依赖程度可以分为特定人和非特定人语音识别系统。早期只能辨认特定的使用者模式,使用者可针对特定语辨认词汇,做简单快速的训练记录,以辨认使用者的声音特性。而非特定人语音识别模式,使用者无须训练即可使用,任何人都可随时使用此技术。 (2) 连续语音 分为单字音辨认和整个 句子 关于阅读的唯美句子关于古风的唯美句子执行力的经典句子鼓励人努力奋斗的句子用沉默代替一切的句子 辨认。单字音辨认是将一个字一个字地分开来念,与日常说话的连续方式有所不同;整个句子辨认是按照正常说话的速度,直接将要表达的话说出来,中间不需要停顿,这是最直接,自然的方式,但难度也最高。现阶段连续语音的辨识率及正确率仍需提高。然而,中文有大量的同音字,因此目前所有的中文语音辨识系统,几乎都是以词为依据,来判断正确的同音字。 (3)可辨认词汇数量 内建的词汇数据库的多少,直接影响其辨识能力。根据词汇量大小,可以分为小词汇量、中等词汇量、大词汇量以及无限词汇量语音识别系统。 不同的语音识别系统,虽然具体实现细节有所不同,但所采用的基本技术相似 。 语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。图2是简化的语音识别流程图。 1.2 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 研究的目的和意义 目的:对基于凌阳SPCE061A单片机的语音控制避障小车的设计,采用最基础的特定人,单个词识别模式,声控小车的前进,后退,停止,拐弯等操作,并具有避障功能。 意义: (1)熟悉语音识别处理方法的原理与过程 (2)增强小车与人的交互功能,使之更具人性化。 (3)学习16位单片机和C语言编程 (4)加强自己的动手能力,系统设计与调试的能力。 1.3 论文工作概述和章节安排 选择凌阳16位单片机作为语音识别的“大脑”。这种单片机具有集成了AD、DA、DSP等功能,所以使它具备了DSP处理功能,能较好的处理语音数据。我们利用此单片机和电机驱动电路,红外传感器电路制作了语音控制寻迹小车。实现了语音识别与控制的功能。能实现小车的前进,后退,停止,拐弯四个命令的语音识别,在识别的基础上能对小车进行控制。并通过红外对管传感器实现小车的避障功能。 论文分为以下几个部分,内容安排如下: 第一章绪论部分,介绍系统的背景资料、来源;论述了设计语音控制小车的目的和意义;阐述了论文工作的概要和内容安排。 第二章系统总体设计部分,明确系统设计的要求,阐明系统总体设计的框图及其原理。 第三章系统硬件设计,分析单片机,传感器的选型以及电路的设计。 第四章系统主要硬件电路的安装 第五章软件部分的设计,介绍了各个模块的软件编程,软件流程图以及整个系统的软件编写。 第六章系统硬件电路的调试 第七章结束语部分,对完成的工作的总结。 2 系统总体设计 2.1系统方案简述 系统采用SPCE061A单片机,由中央处理控制部分、电机驱动部分和反射式红外传感器电路部分构成,系统结构框图,如图3所示。SPCE061A单片机负责采集外部语音数据和接收传感器信号,进行数据处理和判断后,发出控制信号开关量给小车电机驱动电路;经驱动电路转换输出到电机来控制电机的运行状态;避障和寻迹传感器采用红外对管传感器,其中避障传感器安装在小车前部,寻迹传感器安装在小车底部,当遇到障碍物或检测到黑线时,传感器电路分别输出高、低电平到单片机的I/O口,单片机检测到后就可执行响应的程序以实现避障和寻迹。电机驱动电路用双通道集成式芯片L298N来驱动小车的方向和驱动电机。小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间一到,中断服务程序发出指令让小车停下来。 图3 系统结构框图 2.2 系统主要性能、特点和要求 (1)可以通过单片机的 I/O 操作实现小车的前进、后退、左转、右转、停车功能。 (2)利用系统的语音播放和语音识别资源,实现在行走过程中声控改变小车运动状态。 (3)传感器检测到障碍物和黑线可输出高低电平到单片机的I/O口。 (4)实现避障功能。 (5)系统采用双电源供电系统,单片机系统单独供电,电机驱动和传感器共用一个电源,两电源要求共地。10位ADC,转换速率要较快,因为语音信号频率较大。 2.3 系统设计的关键部分 (1)语音识别,提示的软件编程 语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。语音识别的具体流程如图4所示: 语音识别程序包括识别程序和中断服务程序。识别程序完成选取词库,初始化A/D和定时器,识别运算及识别结果处理中断服务程序定时读取A/D转换结果,并存入缓冲区。其中A/D采样频率与语音识别正确性和存储容量密切相关。为系统稳定起见,程序采用SPCE061A的编程软件自带的语音识别和提示库函数来实现。 (2)系统的稳定性 系统前端的语音信号数据采集部分干扰较大,需要滤除输入语音信号的噪音和进行预加重处理,提升高频分量,然后再进行A/D转换,在硬件设计上,采用将信号采集,A/D转换做在一个系统板上,采用SPCE061A的最小系统板61板。其上面集成了语音播报和音频输入电路。 3硬件电路设计及实现 3.1硬件总体设计原理 图5为系统硬件组成原理图 图5 系统硬件组成原理图 在进行语音识别时首先滤除输入语音信号的噪音,然后通过拾音器把语音信号转换为电信号,并进行预加重处理,提升高频分量再送到A/D转换部分把采集的模拟量转换成对应的数字量。单片机将数据进行编码用线性预测系数等方法进行频谱分析,找出语音的特征参数作为未知模式,接着与预先存储的标准模式进行比较,当输入的未知模式与标准的特征相一致时,便被机器识别,产生识别结果输出到电机驱动电路。语音信号含有不确定因素,完全一致的条件往往不存在,因此,预先制定好计算输入语音的特征模式与各特征模式的类似程度或距离度的算法规则固化在ROM中,把该距离最小,最类似的模式作为识别相应语音的手段。传感器部分将检测到障碍物和黑线状态输入到单片机,产生的结果同样作用在电机驱动电路上。 3.2单片机的选型 3.2.1单片机简述 单片微型计算机(Single Chip Microcomputer) 简称单片机,是指在一片芯片体上集成了中央处理器CPU,随机存储器ROM或EPROM,定时器/计数器、中断控制器及串行和并行I/O接口等部件,构成一个完整的微型计算机。目前,新型单片机内还集成有A/D,D/A转换器,I2C接口,浮点运算等特殊功能部件。 自1974年美国仙童公司首先推出8位单片机以来,单片机已经发展到近百个系列,500多个机种。各大公司相继推出自己的单片机系列产品,如Intel公司推出的MCS—48,MCS—51,MCS—96系列产品,Motorola的6801,6805系列产品,Zilog公司的Z80,Supper8 系列产品,在众多的单片机系列和机种当中选择一款合适的芯片对于系统设计来说至关重要.作为一个系统,芯片的选择应考虑到 其性能,价格与外部电路的接口和编程的方便性等众多因素.. 单片机的应用 3.2.2 因单片机具有体积小、重量轻、价格便宜、功耗低、控制功能及运算速度快等特点,所以在国民经济建设、军事及家用电器等领域均得到广泛的应用。主要应用领域: (1)测控系统。用单片机可构成各种工业控制系统、自适应系统、数据采集系统等。例如,室温人工气候控制、水闸自动控制、电镀生产线自动控制、气轮机电液调节系统、车辆检测系统、机器人轴处理器等。 (2)智能仪表。用单片机改造原有的测量、控制仪表,能促进仪表向数字化、智能化、多功能化、综合化、柔性化发展。如温度、压力、流量、浓度等的测量、显示及仪表控制。通过采用单片机软件编程技术,使测量仪表中长期存在的误差修正、线形化处理等难题迎刃而解。 (3)机电一体化产品。单片机与传统的机械产品结合,使传统机械产品结构简化,控制智能化。这类产品如:简易数控机床,电脑绣花机,医疗器械等。 (4)智能接口。在计算机控制系统,特别是较大型的工业测控系统中,普遍采用单片机进行接口的控制与管理,因单片机与主机是并行工作,故极大提高了系统的运行速度。例如:在大型数据采集系统中,用单片机对ADC接口进行控制不仅可提高采集速度,而且还能对数据进行预处理,如数字滤波、线形化处理、误差修正等。 (5)智能民用产品。在家用电器、玩具、游戏机、声像设备、电子称、收银机、办公设备、厨房设备等产品中引入单片机,不仅使产品的功能大大增强,而且获得了良好的使用效果。 (6)多机应用系统。 a)功能集散系统。多功能集散系统是为了满足工程系统多种外围功能的要求而设置的多机系统。例如:一个加工中心的计算机系统除了完成机床加工运行控制外,还要控制 对刀系统、坐标系统、刀库管理、状态监视、伺服驱动等机构。 b)并行多控制系统。并行多控制系统主要解决工程应用系统的快速问题,以便构成大型实时工程应用系统。典型的有快速数据采集、处理系统、实时图象处理系统等。 在本系统中有两种单片机方案实现。 一是采用MCS-51系列内核的单片机实现如ATMEL的89S52。语音识别处理技术是一门新兴的技术,它不仅包括数字滤波,语音的录制和播放,还涉及语音的压缩编码和解码等各种处理技术。以往做这方面的设计,一般有两个途径:一种方案是单片机扩展设计,另一种就是借助于专门的语音处理芯片,例如语音识别模块采用Sensory公司的集成语音识别芯片RSC-364组成。由于语音信号处理需要大量的运算而普通的MCS-51内核的单片机由于运算速度较慢往往不能实现快速运算数字滤波算法且本系统还具有传感器和电机驱动模块要勉强实现也要加很多的外围器件。但是专门的语音处理芯片功能比较单一,想在语音之外的其他方面应用基本是不可能的。由于有语音识别和语音播放功能,所以需要扩展语音识别模块和语音播放模块,这样必然造成端口的资源紧张,所以还必须加入接口扩展芯片。 二 是采用凌阳科技研发生产的性价比很高的一款十六位单片机SPCE061A,其内部集成了ADC,DAC。时钟和中断源丰富,它采用高性能的u’nSP内核,具有丰富的硬件资源,并集成了ICE(在线仿真电路)接口,可以直接利用该接口对芯片进行下载(烧写)、仿真、调试等操作.且SPCE061A单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件。如图6 是其内部结构图。基本特性有: 图6 SPCE061A内部结构图 (1)16位μ’nSP微处理器; (2)工作电压:VDD为2.4~3.6V(cpu), VDDH为2.4~5.5V(I/O); (3)CPU时钟: 32768Hz~49.152MHz ,内置2K字SRAM、内置32K FLASH; (4)可编程音频处理,32位通用可编程输入/输出端口; (5)32768Hz实时时钟,锁相环PLL振荡器提供系统时钟信号; (6)2个16位可编程定时器/计数器(可自动预置初始计数值); (7)7通道10位电压模-数转换器(ADC)和单通道语音模-数转换器; (8)使用凌阳音频编码SACM_S240方式,能容纳210秒的语音数据; (9)声音模-数转换器输入通道内置麦克风放大器自动增益控制(AGC)功能; (10)系统处于备用状态下(时钟处于停止状态)耗电小于2μA@3.6V; (11)14个中断源:定时器A / B,2个外部时钟源输入,时基,键唤醒等; (12)具备触键唤醒的功能和异步、同步串行设备接口; (13)具有低电压复位(LVR)功能和低电压监测(LVD)功能,内置在线仿真电路接口ICE; (14)2个10位DAC(数-模转换)输出通道,具有保密能力,WatchDog功能 与MCS—51单片机比较起来,使用SPCE061A作为系统核心具有几大优点: (1) 开发容易,周期短:容易实现C语言和汇编联合编程,提供的语音识别、播放函 数库丰富,编程简单。 (2)高速:最高时钟可达到49MHZ,精简指令系统,处理速度快。 (3)ADC:内部集成ADC和DAC,无须另外拓展芯片。 (4)SPCE061A带有硬件乘法器,运算能力强,能够实现乘法运算、内积运算等复杂的运算。SPCE061A内嵌32K字的FLASH程序存储器以及2K的SRAM。基于上述因素考虑,本系统在设计中采用SPCE061A作为语音处理核心。 3.3 SPCE061A最小系统原理图 SPCE061A最小系统中,包括SPCE061A芯片及其外围的基本模块,其中外围的基本模块有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,其原理图见附录。 3.4 麦克风录音输入及AGC电路模块 音频录入电路如图7所示。主要由Microphone、AGC电路、ADC电路构成。 语音信号经Microphone转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使削波减至最小 图7 麦克风录音输入及AGC电路 3.5语音播报电路模块 语音播报电路如图8所示。凌阳SPCE061A单片机自带双通道DAC音频输出, DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出, DAC输出为电流型输出,所以DAC输出经过SPY0030音频放大,以驱动喇叭放音,放大电路如图6(只列出了DAC1,DAC2类似),这为单片机的音频设计提供了方便。只需要外接功放电路即可完成语音的播放。音频的具体功能通过程序来实现。 图8 语音播报电路 3.6 传感器选择及其信号检测电路模块 小车寻迹的原理 。所谓寻迹,就是通过一定的传感器探测地面色调迥异的两种色彩从而获得引导线位置,修正小车运动路径的一种技术 。本系统是在指小车在白色地板上循黑线行走,通常采取的方法是红外探测法。 红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机将获得红外对管(传感器)反馈回来的电压信息转化为二值的(也就是二进制信息,1表示线存在,0表示线不存在)信息,然后通过处理每一个管子反馈回来的二值信息来确定黑线的位置位置信息和小车的行走路线。红外探测器探测距离有限,一般最大不应超过15cm。 第一种方法是用可见光发光二极管与光敏二极管组成的发射-接收电路。这种方案的缺点在于其他环境光源会对光敏二极管的工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;虽然采取超高亮发光管可以降低一定的干扰,但这又将增加额外的功率损耗 第二种方法采用集成式红外探头,它具有简单、可靠的工作性能,只要调节探头上的一个旋钮就可以控制探头的灵敏度。该探头输出端只有三根线(电源线、地线、信号线),只要将信号线接在单片机的I/O口,然后不停地对该I/O口进行扫描检测,当其为高电平时则检测到白纸,当为低电平时则检测到黑线。此种探头还能有效地防止普通光源(如日光灯等)的干扰。其缺点则是体积比较大,占用了小车有限的空间。 第三种方法采用自制红外探头组成。电路如图10所示,该电路可以驱动四个红外对管,集成运放用最实用的四运放集成芯片LM324。LM324采用14脚双列直插塑料封装,外形如图8所示。它的内部包含四组形式完全相同的运算放大器, 除电源共用外,四组运放相互独立。每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与 该输入端的相位相同。LM324的 引脚排列见图9 图9 LM324引脚图 由于LM324四运放具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。在此电路中接成电压比较器形式。其输出如不是高电平(V+),就是低电平(V-或接地)。当正输入端电压高于负输入端电压时,运放输出低电平,反之则输出高电平。当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,那么图中光敏三极管将导通,输出低电平到LM324的负向端,而LM324正向端的输入电平为电位器的分压电平而高于负向端,比较器输出为低电平;当小车行驶到黑色引导线时,红外线信号被黑色吸收后,光敏三极管截止,比较器输出高电平,从而实现了通过红外线检测信号的功能。将检测到的信号送到单片机I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑色引导线吸收了,表明小车处在黑色的引导线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。为了方便观察电路添加了指示灯电路,当检测到黑线时比较 器输出低电平发,发光二极管亮说明此时小车在黑线上, 否则则在白色地面上。此种方法简单,价格便宜灵敏可调。 图10 红外传感器电路图 基于对实现难易程度,抗干扰能力强弱等综合考虑,本系统使用第三种方法。 3.7 电机驱动模块 一个电动小车整体的运行性能,首先取决于它的电池系统和电机驱动系统。电动小车的驱动系统一般由控制器、功率变换器及电动机三个主要部分组成。电动小车的驱动不但要求电机驱动系统 具有高转矩重量比、宽调速范围、高可靠性,而且电机的转矩-转速特性受电源功 率的影响,这就要求驱动具有尽可能宽 的高效率区。所使用的电机一般为直流电机,主要用到永磁直流电机、伺服 电机及步进电机三种。直流电机的控制 很简单,性能出众,直流电源也容易实现。 方法一采用继电器对电机的开,关控制。通过开关的切换实现速度的控制,此方案硬件结构较简单,但继电器响应时间慢,机械结构易损坏,寿命短,可靠性不高。 方法二采用H桥驱动 直流电机驱动电路使用最广泛的就 是H型全桥式电路,这种驱动电路可以 很方便实现直流电机的四象限运行,分 别对应正转、正转制动、反转、反转制动。 它的基本原理图如图11所示。全桥式驱动电路的4只开关管都工 作在开关状态,S1、S2为一组,S3、S4 为另一组,两组的状态互补,一组导通则 另一组必须关断。当S1、S2导通时,S3、 S4关断,电机两端加正向电压,可以实 现电机的正转或反转制动;当S3、S4导 通时,S1、 S2关断,电机两端为反向电 压,电机反转或正转制动。 图11 H桥驱动示意图 在小车动作的过程中,我们要不断 地使电机在四个象限之间切换,即在正 转和反转之间切换,也就是在S1、S2导 通且S3、S4关断,到S1、S2关断且S3、 S4导通,这两种状态之间转换。在这种 情况下,理论上要求两组控制信号完全 互补,但是,由于实际的开关器件都存在 开通和关断时间,绝对的互补控制逻辑 必然导致上下桥臂直通短路。比如在上桥臂关断的过程中,下桥臂导通了。因此,为了避免直通短路且保证各个开关管动作之间的协同性和同步性,两组控制信号在理论上要求互为倒相的逻辑关系,而实际上却必须相差一个足够的死区时间,这个矫正过程既可以通过硬件实现,即在上下桥臂的两组控制信号之间增加延时,也可以通过软件延时来实现。驱动电流不仅可以通过主开关管流通,而且还可以通过续流二极管流通。当电机处于制动状态时,电机便工作在发电状态,转子电流必须通过续流二极管流通,否则电机就会发热,严重时烧毁。开关管的选择对驱动电路的影响很大,开关管的选择宜遵循以下原则: (1)由于驱动电路是功率输出,要求开关管输出功率较大; (2)开关管的开通 和关断时间应尽可能小; (3)小车使用的电源电压不高,因此开关管的饱和压降应该尽量低。 在实际制作中,为了使电路简化,我们采用集成有桥式电路的电机专用驱动芯片L298,其内部集成两路H桥;可以用来同时驱动两个直流电动机。自身工作电源电压为5V,外部控制信号采用TTL电平;H桥最高耐压50V,每路H桥的最大驱动电流为3A。驱动电路的性能比较稳定可靠。其自带有过热保护电路。图为L298的芯片封装图。 图12 L298的芯片封装图 其内部的结构如图13所示 图13 L298内部结构图 这种方法有一系列的优点。控制比较简单,电路也很简单,一个芯片内包含有8个功率管,这样简化了电路的复杂性,本系统利用L298及其外部辅助电路构成电机驱动电路。具体电路如图14所示: 。: 图14 电机驱动电路图 单片机控制口接L298的四个输入控制端PORT1, PORT2, PORT3, PORT4。L298的两个输出端OUT1,OUT2接电机B,OUT3,OUT4接电机A。电机转动状态真值表如表1所示: 表1电动机状态编码表 MCU控制电机端口 电机A 电机B 小车状态 Port1 Port2 Port3 Port4 1 0 0 0 正转 停 前行 0 1 0 0 反转 停 后退 1 0 1 0 正转 正转 左转 1 0 0 1 正转 反转 右转 4 系统主要硬件的安装 系统硬件结构主要包括以下三个部分:SPCE061A精简开发板与电机驱动板的连接、小车电机安装,传感器电路板安装。 4.1 SPCE061A精简开发板与电机驱动板的连接 图15 电机与单片机接口图 图中的语音输入部分MIC_ IN、按键输入KEY、声音输出部分的功率放大环节等已经做到了精简开发板——61板上,提供了很大的方便。在电机的驱动方面,采用集成芯片L298来实现驱动技术,利用四个I/O端口分为两组分别实现两个电机的正传、反转和停三态运行。 4.2 小车电机安装图 语音控制小车为四轮结构,车的结构示意图如图16所示。其中前面两个车轮由前轮电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自然状态下,前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整个小车提供动力,所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮, 图16 小车结构图 小车的行走原理. 直走:由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这是只 要后轮电机正转小车就会前进。 倒车:倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机反转,小车就会向后运动。 左转:前轮电机逆时针旋转(规定为正转),后轮电机正转,这时小车就会在前后轮共同作用下朝左侧前进。 右转:前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝右侧前进。 4.3 传感器电路探头的安装 在小车具体的寻迹行走过程中,为了能精确测定黑线位置并确定小车行走的方向,需要同时在底盘装设4个红外探测头,进行两级方向纠正控制,提高其寻迹的可靠性。这4个红外探头的具体位置如图17所示。图中寻迹传感器共安装4个,全部在一条直线上。其中sensor2与sensor3 为第一级方向控制传感器,sensor1与sensor4 为第二级方向控制传感器。小车行走时,始终保持黑线(如图2 中所示的行走轨迹黑线)在sensor2和sensor3这两个第一级传感器之间,当小车偏离黑线时,第一级探测器一旦探测到有黑线,单片机就会按照预先编定的程序发送指令给小车的控 制系统,控制系统再对小车路径予以纠正。若小车回到了轨道上,即4个探测器都只检测到白纸,则小车会继续行走;若小车由于惯性过大依旧偏离轨道,越出了第一级两个探测器的探测范围,这时第二级动作,再次对小车的运动进行纠正,使之回到正确轨道上去。可以看出,第二级方向探测器实际是第一级的后备保护,从而提高了小车寻迹的可靠性。 避障传感器安装在小车的前部,左,右各一个,左边有障碍物时小车往右偏,右边有障碍物时往左偏,均有障碍物时,小车后退并向右转。 图17 传感器电路安装图 5 系统软件设计 系统硬件连接:IOB8,IOB9 驱动电机A,IOB10,IOB11方向电机B,IOA4—IOA9接红外传感器,IOB4,IOB5 LED方向灯。 小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间到,中断服务程序会发出指令让小车停下来。 5.1 主程序设计 流程图如图19所示。设计思想是读键盘的键值,然后进行判断执行语音识别功能还是寻迹避让功能。两部分产生的控制信号都作用在电机驱动电路上。初始化部分:初始化操作将IOB8~IOB11,IOB4,IOB5设置为输出端,用以控制电机,LED方向指示灯,IOA4~IOA9设置为输入端接传感器。 图19 主程序流程图 5.2 语音训练识别程序设计 语音识别小车的主程序流程如图20所示,分为四大部分:初始化部分、训练部分、识别部分、重训操作。 初始化部分:初始化操作将IOB8~IOB11设置为输出端,用以控制电机。必要时还要 有对应的输入端设置和PWM端口设置等。 训练部分:训练部分完成的工作就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到FLASH,在以后使用时不需要重新训练;如果已经训练过会把存储在FLASH中的模型调出来装载到辨识器中。 重训操作:考虑到有重新训练的需求,设置了重新训练的按键(61板的KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位(0xe000单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为0xffff时会要求重新对其进行训练。 图20 语音识别流程图 5.2.1 训练部分 当程序检测到训练标志位BS_Flag内容为0xffff,就会要求操作者对它进行训练操作,训练操作的过程如图所示:训练采用两次训练获取结果的方式,如果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建立模型,小车会告知失败的原因并要求重新训练。成功训练名称后会给出下一条待训练指令提示音:前进,参照名称训练方式训练前进指令。依次训练小车的停车—前进指令—倒车指令—左转指令—右转指令,全部训练成功子程序返回,训练结束。 5.2.2 语音识别子程序: 语音识别流程如图所示:首先获取辨识器的辨识结果,判断是否有语音触发,如果有语音触发则会返回识别结果的ID号,ID号对应名称或者对应不同的动作。如果ID号为名称,则结束运动(如果当前在运动状态),进入待命状态,等待下一次的指令触发;如果ID号为动作,则语音告知将要执行的动作,并执行该动作。 图21 语音识别流程如图 5.3 动作子程序设计 动作子程序包括:前进、倒车、左拐、右拐、停车子程序。 前进:由小车的结构原理和驱动电路分析知:只要IOB8为高电平,IOB9,IOB10,IOB11全部为低电平即可实现小车的前进。前进子程序包括语音提示、置端口数据、启动定时器操作。 倒车:由小车的结构原理分析和驱动电路分析知:只要IOB9为高电平,IOB8,IOB10,IOB11全部为低电平即可实现小车的倒退。倒退子程序包括语音提示、置端口数据、启动定时器操作。 左转:由小车的结构原理分析和驱动电路分析知:小车左转需要两个条件:1.前轮左偏2.后轮前进,这时对应的I/O状态为:IOB8、IOB10为高电平,IOB9、IOB11为低电平。左转子程序包括语音提示、置端口数据、启动定时器操作。 右转:由小车的结构原理分析和驱动电路分析知:小车右转需要两个条件:1.前轮右偏2.后轮前进,这时对应的I/O状态为:IOB8、IOB11为高电平,IOB9、IOB10为低电平。 右转子程序包括语音提示、置端口数据、启动定时器操作。 5.4 中断子程序: 虽然已经有了前进、后退以及停等语音控制指令,但是考虑环境的干扰因素,小车运行时的噪音影响和有效距离的限制,小车运行后可能接收不到语音指令而一直运行。为了防止出现这种情况,加入了时间控制,在启动小车运行的同时启动定时器,定时器时间到停止小车的运行,该定时器借助于2Hz时基中断完成,图22所示为该程序的流程图。可以在程序中修改uiTimeset参数来控制运行时间,当uiTimeset=2时,运行时间为1s 图22 中断子程序流程图 5.5 寻迹避障程序设计 其程序控制框图如图。小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序(switch),先确定4个探测器中的哪一个探测到了黑线,如果sensor2(左面第一级传感器)或者sensor2(左面第二级传感器)探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是sensor3(右面第一级传感 器)或sensor4(右面第二级传感器)探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作 图23 寻迹避障程序流程图 6系统硬件电路的调试 在进行调试时,首先要对硬件进行静态测试,目的是排除明显的硬件故障。在集成电路元件未插入电路板之前,必须用万用表仔细检测线路,查看连线是否正常,防止电源短路。在排除所有的线路错误后,接上电源,用电压表测量加在各集成电路芯片插座上的电压、极性是否正确,特别要注意单片机插座的各点电位,插入集成电路芯片的操作必须在系统断电的情况下进行,要注意芯片的方向,不要插反。通电后如果发现某元件太热或冒烟,必须立即断电,重新检查。 6.1 红外传感器电路调试 红外发射管的电流在20—100mA之间,电流大,发射的红外线强,但杂散反射光分量多,不易调整,检测误差大;电流小,工作可靠,检测头相对被检测物体的距离窄,对于为2CM的黑色条纹,电流在50mA左右就可以了。将检测头对准在白板上,适当的靠近或拉开与白板间的距离,调整电位器,使比较器输出为低电平。再用黑白相间条纹划过探头,检测电路板上状态指示灯是否变化,若没有此现象,可用手机照相功能检测红外发射管是否发 光,若正常发光则漫漫调整电位器,直到指示灯正常。 6.2 电机驱动电路调试 按照图14连接好硬件电路,检查电路无短路、断路情况,6,11脚使能段接高电平,PORT1,PORT2,PORT3,PORT4四个端口分别设置如下表2,所示电平,检查电机是否正常工作。 表2电机运行状态检查表 MCU控制电机端口 电机A 电机B Port1 Port2 Port3 Port4 1 0 0 0 正转 停 0 1 0 0 反转 停 1 0 1 0 正转 正转 1 0 0 1 正转 反转 6 总结 系统用凌阳SPCE061A十六位单片机实现。内部集成了2K字的RAM、32K字的Flash加上用凌阳SPCE061A十六位单片机实现不需要外扩程序存储器和RAM,也不用外接语音芯片,即可实现语音辨识和一系列职能动作,。由于采用了高性能的MCU,省掉了大量的外围器件,如外扩RAM、ROM存储器等,使硬件结构大大简化,提高了系统的可靠性。软件编程采用C和汇编混合编程来实现,简化了编程过程,丰富了编程思想。采用别的单片机实现所有功能一般要两个单片机,硬件电路也更加复杂。若要实现语音播报功能和语音辨识,不是多用几个别的类型的单片机就可实现的,而凌阳单片机提供了很好的语音播放和录制机制以及简单的API接口编程。 7 结束语 毕业设计是一项对大学期间所学专业知识的综合性的考察和实践活动,是理论联系实际的最好体现。通过本次的毕业实践活动,使我有了很深的体会和很多的收获。首先我学会了如何有效的收集所需要的资料、查阅文献,学会了如何根据实际需要查阅各类数据手册,进行器件的选择和判断,更加锻炼了我分析问题和解决问题的能力。其次,通过本次的论文设计也使我对所学知识有了进一步的深入,巩固了以往所学的知识,增强了自己的实际动手能力。 虽然在本次的设计过程中遇到了许多的问题和困难,如电子器件的选型,电路模块的比较,传感器的安装和调试,时间分配等,但通过老师的耐心知道帮助最终还是解决了遇 到的问题。 总之,通过这次近半年的毕业设计活动,丰富了我各方面的知识,相信这将对以后的工作和学习产生积极的影响,为以后的学习打下坚实的基础。 第八章 致谢 第九章 参考文献 [1]《单片机实用技术问答》 谢宜仁 人民邮电 北京。2003.6 [2]《FLASH单片机原理及应用》 余永权 电子工业 北京 2004.8 [3]《模拟电子基础》 高等教育 北京 2001.5 [4]《凌阳16位单片机应用基础》 罗亚非 北航 北京 2005.5 [5]《C语言在凌阳十六位单片机中的应用》凌阳科技 北航 2006.7 [6]《十六位单片微处理器原理及应用》张培仁 张志坚 清华大学出版社 2005.4 第九章 附录 附录1 主程序 //======================================================== 硬件连接IOA0-----KEY1 ,IOA1-----KEY2,IOA2-----KEY3 IOB8-----前进,IOB9-----倒车,IOB10----左拐,IOB11----右拐 IOB7,IOB6 指示灯IOA4—IOA7 寻迹蔽障 //======================================================== #include "s480.h" #include "bsrsd.h" #define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Dir (volatile unsigned int *)0x7002 #define P_IOA_Attrib (volatile unsigned int *)0x7003 #define P_IOB_Data (volatile unsigned int *)0x7005 #define P_IOB_Dir (volatile unsigned int *)0x7007 #define P_IOB_Attrib (volatile unsigned int *)0x7008 #define P_TimerA_Data (volatile unsigned int *)0x700A #define P_TimerA_Ctrl (volatile unsigned int *)0x700B #define P_TimerB_Data (volatile unsigned int *)0x700C #define P_TimerB_Ctrl (volatile unsigned int *)0x700D #define P_Watchdog_Clear (volatile unsigned int *)0x7012 #define P_INT_Mask (volatile unsigned int *)0x702D #define P_INT_Clear (volatile unsigned int *)0x7011 #define NAME_ID 0x100 #define COMMAND_GO_ID 0x101 #define COMMAND_BACK_ID 0x102 #define COMMAND_LEFT_ID 0x103 #define COMMAND_RIGHT_ID 0x104 #define S_NAME 0 //停车命令 #define S_ACT1 1 //前进 #define S_ACT2 2 //倒车,请注意 #define S_ACT3 3 //左拐 #define S_ACT4 4 //右拐 #define S_RDY 5 //Yeah #define S_AGAIN 6 //请再说一遍 #define S_NOVOICE 7 //没有听到任何声音 #define S_CMDDIFF 8 //听不清 #define S_NOISY 8 //听不清 #define S_START 9 //准备就绪,开始辨识 #define S_GJG 10 //拐就拐 #define S_DCZY 11 //倒车,请注意 extern unsigned int BSR_SDModel[100]; //外部变量BSR_SDModel[100], // 辨识器自带 extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value); extern void F_FlashErase(unsigned int sector); unsigned int uiTimeset = 3; //运行时间定时,调整该参数控制运行时间 unsigned int uiTimecont; //运行时间计时 //============================================================ // 延时程序 void Delay() { unsigned int i; for(i=0;i<0x3Fff;i++) { *P_Watchdog_Clear=0x0001; } } //============================================================ void PlaySnd(unsigned SndIndex,unsigned DAC_Channel) { BSR_StopRecognizer(); //停止识别器 SACM_S480_Initial(1); //初始化为自动播放 SACM_S480_Play(SndIndex, DAC_Channel, 3); //开始播放一段语音 while((SACM_S480_Status()&0x0001)!= 0) //是否播放完毕, { SACM_S480_ServiceLoop(); //解码并填充队列 *P_Watchdog_Clear=0x0001; //清看门狗 } SACM_S480_Stop(); //停止播放 BSR_InitRecognizer(BSR_MIC); //初始化识别器 } //============================================================ int TrainWord(unsigned int WordID,unsigned int SndID) { int Result; PlaySnd(SndID,3); //引导训练,播放指令对应动作 while(1) { Result = BSR_Train(WordID,BSR_TRAIN_TWICE); //训练两次,获得训练结果 if(Result==0)break; switch(Result) { case -1: //没有检测出声音 PlaySnd(S_NOVOICE,3); return -1; case -2: //需要训练第二次 PlaySnd(S_AGAIN,3); break; case -3: //环境太吵 PlaySnd(S_NOISY,3); return -3; case -4: //数据库满 return -4; case -5: //检测出声音不同 PlaySnd(S_CMDDIFF,3); return -5; case -6: //序号错误 return -6; default: break; } } return 0; } //============================================================ void TrainSD() { while(TrainWord(NAME_ID,S_NAME) != 0) ; //训练名称 while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ; //训练第1个动作 while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) ; //训练第2个动作 while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ; //训练第3个动作 while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ;//训练第4个动作 } //============================================================ // 语法格式: void StoreSD(); //存储语音模型函数 void StoreSD() { unsigned int ulAddr,i,commandID,g_Ret; F_FlashWrite1Word(0xef00,0xaaaa); F_FlashErase(0xe000); F_FlashErase(0xe100); F_FlashErase(0xe200); ulAddr=0xe000;//******** for(commandID=0x100;commandID<0x105;commandID++) { g_Ret=BSR_ExportSDWord(commandID); while(g_Ret!=0) //模型导出成功, g_Ret=BSR_ExportSDWord(commandID); for(i=0;i<100;i++) //保存语音模型 SD1(0xe000---0xe063) { F_FlashWrite1Word(ulAddr,BSR_SDModel[i]); ulAddr+=1; } } } //============================================================ void LoadSD() { unsigned int *p,k,jk,Ret,g_Ret; p=(int *)0xe000; for(jk=0;jk<5;jk++) { for(k=0;k<100;k++) { Ret=*p; BSR_SDModel[k]=Ret; //装载语音模型 p+=1; } g_Ret=BSR_ImportSDWord(); while(g_Ret!=0) //模型装载成功, g_Ret=BSR_ImportSDWord(); } } //============================================================ void GoAhead() //前进 { PlaySnd(S_ACT1,3); //提示 *P_IOB_Data=0x0100; //前进 *P_INT_Mask |= 0x0004; //以下为中断定时操作 __asm("int fiq,irq"); uiTimecont = 0; } //============================================================ void BackUp() //倒退 { PlaySnd(S_DCZY,3); //提示 *P_IOB_Data=0x0200; //倒退 *P_INT_Mask |= 0x0004; //以下为中断定时操作 __asm("int fiq,irq"); uiTimecont = 0; } //============================================================ void TurnLeft() //左转 { PlaySnd(S_GJG,3); *P_IOB_Data=0x0900; //右转 Delay(); //延时 *P_IOB_Data=0x0500; //左转 *P_INT_Mask |= 0x0004; //以下为中断定时操作 __asm("int fiq,irq"); uiTimecont = 0; } //============================================================ void TurnRight() //右转 { PlaySnd(S_GJG,3); //语音提示 *P_IOB_Data=0x0500; //左转 Delay(); //延时 *P_IOB_Data=0x0900; //右转 *P_INT_Mask |= 0x0004; //以下为中断定时操作 __asm("int fiq,irq"); uiTimecont = 0; } //============================================================ void Stop() //停车 { *P_IOB_Data=0x0000; //停车 PlaySnd(S_RDY,3); //语音提示 } void F_ShunCtr() //壁障 { int i; i=*P_IOA_Data; i=i&0x00f0; switch(i) { case 0x00c0 GoAhead();break; case 0x0000: BackUp();TurnRight(); break; //正前方有障碍物 case 0x0040: // 左边有障碍物 TurnLeft(); BackUp(); TurnLeft(); BackUp(); TurnLeft(); BackUp(); TurnLeft(); BackUp(); break; case 0x0080: // 右边有障碍物 TurnRight(); BackUp(); TurnRight(); BackUp(); TurnRight() BackUp(); TurnRight(); BackUp(); break; case 0x0001: // 右边有黑线 TurnLeft(); BackUp(); TurnLeft(); GoAhead(); break; case 0x0002: // 左边有黑线 TurnRight(); BackUp(); TurnRight(); GoAhead(); break; } } //============================================================ void BSR(void) { int Result; //辨识结果寄存 Result = BSR_GetResult(); //获得识别结果 if(Result>0) //有语音触发, { *P_IOB_Data=0x0000; //临时停车 switch(Result) { case NAME_ID: //识别出名称命令 Stop(); //停车待命 break; case COMMAND_GO_ID: //识别出第一条命令 GoAhead(); //执行动作一:直走 break; case COMMAND_BACK_ID: //识别出第二条命令 BackUp(); //执行动作二:倒车 break; case COMMAND_LEFT_ID: //识别出第三条命令 TurnLeft(); //执行动作三:左转 break; case COMMAND_RIGHT_ID: //识别出第四条命令 TurnRight(); //执行动作四:右转 break; default: break; } } } //============================================================ void IRQ5(void)__attribute__((ISR)); //运动定时控制 void IRQ5(void) { if(uiTimecont++ == uiTimeset) { *P_IOB_Data = 0x0000; } *P_INT_Clear = 0x0004; } //============================================================ int main(void) { unsigned int BS_Flag,key; //Train标志位 *P_IOA_Dir=0xff00; //初始化IOA,IOA0~7下拉输入 *P_IOA_Attrib=0xff00; *P_IOA_Data=0x0000; *P_IOB_Dir=0x0f00; //初始化IOB,IOB8~11同向输出 *P_IOB_Attrib=0x0f00; *P_IOB_Data=0x0000; key=*P_IOA_Data; key=key& 0x0007; if(key==0x0001){ BSR_DeleteSDGroup(0); //初始化存储器RAM BS_Flag=*(unsigned int *)0xe000; //读存储单元0xe000 if(BS_Flag==0xffff) //没有经过训练(0xe000内容为0xffff) { TrainSD(); //训练 StoreSD(); //存储训练结果(语音模型) } else //经过训练(0xe000内容为0x0055) { LoadSD(); //语音模型载入识别器 } PlaySnd(S_START,3); //开始识别提示 BSR_InitRecognizer(BSR_MIC); //初始化识别器 BSR(); if((*P_IOA_Data)&0x0004) //是否重新训练 { F_FlashErase(0xe000); while(1); } } if(key==0x0002) // 按下KEY2为寻迹蔽障 { F_ShunCtr(); } } 附录2 最小系统板原理图
本文档为【基于SPCE061A单片机的红外智能避障寻迹小车&#46;doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_833902
暂无简介~
格式:doc
大小:358KB
软件:Word
页数:45
分类:
上传时间:2017-09-17
浏览量:26