重训部分:考虑到有重训的需要,设置重训按键,当检测到该键按下,擦除训练标志位(0xe000单元),等待复位。复位后,重新执行程序,当检测到训练标志位为0xffff时会重新对其训练。
4.1.3 训练子程序设计
当训练标志位为0xffff时,则需对小车进行训练操作。小车训练操作流程图如图18所示。
图18 训练子程序流程图
训练采用应答式训练,每条指令的训练次数为两次,每一条命令的训练过程都是一样的,以“前进”为例说明:
步骤一:小车提示“前进”;
步骤二:告诉小车“前进”;
步骤三:小车提示“请再说一遍”(重复训练提示音);
步骤四:再次告诉小车“前进”(重复训练一次)。
这是一个完整的训练过程,若训练成功,小车即自动训练下一条指令,并语音提示下一条指令动作;若没有训练成功,小车会语音提示“说什么呀”或“没有听到呀”等信息,此时就要重复以上四个步骤,直至成功为止[18]。整个训练过程需进行5次,依次为:名称——前进——后退——左转——右转。
4.1.4 语音识别子程序设计
其流程图如图19所示。
图19 语音识别子程序设计
语音识别的实现正如流程图所示,需获取辨识器中的结果,之后,判断有无语音触发,则返回辨识结果的ID号,不同的辨识结果对应不同的ID号,进行不同的动作。若ID号是名称,则结束当前运动,进入等待命令状态,直至下一指令触发;若是动作,则语音告知将要进行的动作命令,执行相应操作。
4.1.5 动作子程序设计
动作子程序包括前进、后退、左转、右转和停止四个子程序。以前进子程序为例,其流程图如图20所示。由小车的结构原理及驱动电路知,当IOB8为高电平时,IOB9、IOB10和IOB11均为低电平时,小车前进。前进子程序包括语音提示、置端口数据、启动定时器等操作。其它动作同理,不同之处在于端口数据设置不同,详见基本输入与小车的运行状态的对照表(表1)。
4.1.6 中断子程序设计
虽然有动作控制,考虑到环境的干扰和有效距离的限制,小车可能不能正常接收语音命令而保持运行。为防止这种情况发生,在小车接收命令运行的同时,加入定时中断,定时时间到小车就停止运行。采用2Hz时基中断定时,其流程如图21所示。
图20 动作子程序流程图 图21 中断子程序流程图
4.2 环境监测单元程序设计
4.2.1 环境信息采集与处理
其流程图如图22所示,主要包括五个部分:初始化部分、温湿度上下限设置部分、温湿度显示及超限报警部分、烟雾报警部分及人体感应部分。
图22 环境监测单元主程序流程图
初始化部分:主要进行端口设置、定义变量、清屏、初始化定时器、开中断等,防止程序出错,为后续系统实现提供保障。
温湿度上下限设置部分:通过设置键和加、减键修改当前温湿度上下限设置,只有按下保存键才存盘,否则掉电不保存。
温湿度显示及超限报警部分:采用LCD1602闪烁显示的方法,实现温湿度显示。由于1602只能显示两行字符,本设计首行显示温度(℃),次行显示湿度(%RH)。当温湿度低于或高于设定值,分别点亮不同的LED。
烟雾报警部分:当烟雾超过设定值,进行声光报警,实现安全监察。
人体感应部分:设置感应开关控制,全自动感应,当总开关打开后,人进入其感应范围,即输出高电平,触发声光报警,可用于家庭安保。 51单片机智能小车控制系统设计(10):http://www.youerw.com/zidonghua/lunwen_1557.html