系统简介
下雨天时道路十分模糊,能见度非常低,司机分散注意力去手动打开雨刷器开关会非常危险。据统计,全世界雨天行车的车祸事故有7%是因为司机手动打开雨刷分心导致的。为了减小司机因为手动打开雨刷发生车祸的概率,所以如今研发一种雨刷自动控制器是非常有必要的。该系统主要从硬件设计和软件编程两个部分进行设计,硬件部分由单片机、雨滴传感器、步进电机、按键、ADC0832模数采集模块、LD3320语音模块、显示屏等模块组成,实现了根据车窗覆水量和识别语音指令来控制雨刷的转速。该系统通过覆水量判定的湿度阈值来设定上下限值,当覆水量小于设置的下限值,雨刷停止,当覆水量处于上限值和下限值之间,雨刷速度进入一档位,当覆水量大于设置的上限值,雨刷速度进入二档位。此外,还可以通过语音指令来实现雨刷转速控制、切换模式和开/关系统等功能。软件部分使用c语言对LD3320模块、键盘模块、语音识别模块、雨滴传感模块等模块进行子程序的编写和主程序的编写,实现了各个模块的运转从而实现了雨刷器的自动控制。该雨刷可以预防驾驶员在行车过程中会遇见的大多数未知情况,极大的减小了司机发生车祸的概率。
关键词:单片机;模块;传感器
1 引言
1.1 课题背景
最近的十几年里,科学技术呈现跨越式发展,尤其是单片机技术和传感器技术发展地尤为迅猛,单片机与传感器在各类电子产品中得到广泛应用,依靠单片机优秀的逻辑控制能力和传感器各种信息量的采集能力,众多的智能设备不断的出现在人们的视野当中。这些智能设备在生活中给人们尽可能最大的便捷,农业中为科学种植提供各种环境参数,工业中可以替代人工去完成工作,极大的节约了人力成本,提高了生产效率。单片机的应用在各行各业中占据着举足轻重的地位,尤其在近几年的大数据领域中,单片机为终端数据采集做出了巨大的贡献。汽车在人们日常生活中起到了重要的作用,随着中国经济的高速发展与国民经济的普遍提高,汽车已经进入了各家各户。当汽车不再是一种奢侈品之后,大家对汽车的功能要求也越来越高。现代汽车功能为了满足日常生活中人们的出行需求、出行安全、节能环保而日渐提高。
据统计,全世界雨天行车的车祸事故有7%是因为司机手动打开雨刷分心导致的[1],现在随着汽车生产公司将各种各样的电子器件投入到汽车制造上,汽车的功能也逐渐趋于智能化[2],这部分问题也逐渐得以改善。该设计内容为汽车的雨刷智能控制,雨刷的历史源于德国博世公司发明的电动刮水器,起初只是个刮片,随着感应喷水器等机械的出现,逐渐发展成了现在的刮水器[3]。伴随着雨滴传感器、语音识别等技术革新,现在提出了一种新的智能雨刷控制器——通过雨滴采集电路感应前车玻璃的覆水量值和通过语音识别指令来控制雨刷器的转速[4]。目前,只有BOSCH公司能够生产出达到标准的智能雨刷。因为智能雨刷控制器价格昂贵,基本应用于高档车型上,普通车型多数依旧应用旧式雨刷[5]。
1.2 研究意义
该课题研究的是通过51单片机实现汽车雨刷器的自动控制,该雨刷控制系统可通过车窗覆水量和语音指令来控制雨刷器的转速。可以使驾驶者在能见度极低的下雨天道路不用分散注意力去打开雨刷器的开关,极大的降低了此类事故的发生,并且能更好的适应人们的出行需要。智能化是当今社会的发展方向,近几年移动支付,人脸识别,语音语义识别等智能技术广泛应用,而姿态识别,协同目标检测等智能方向也日益成熟,而汽车的智能化除了无人驾驶以外,其他汽车功能智能化发展极为缓慢,该雨刷智能系统的提出与实现意味着这场汽车功能的智能改革已经开始。
1.3 研究综述
1.3.1 国外研究和发展现状
雨刷器本身属于汽车的一个小功能器件,在汽车刚开始被投入使用的时候,研发公司并没有发明与之对应的雨刷器和挡风玻璃,驾驶员和乘客需要佩戴护眼目镜来防止风沙进入眼睛,但效果并不显著,因此发明了挡风玻璃。可当防止风沙,风雪等问题解决的时候,清除挡风玻璃上残留的污垢又成了一个巨大的难题,经常会影响行车视野,人们曾试图用抹布和蔬菜等拭擦,但不见成效,而且在行车途中也不可能拿抹布拭擦。最后在20世纪初美国的一位富家千金经过多次试验终于发明出了汽车雨刷器,起初雨刷器的诞生并没有人看好,许多工厂都不愿意生产,但随着第二次世界大战结束,大型机械和电子器件广泛用于日常生活中,这个时候雨刷器终于被世人接受,功能也逐渐完善。从单纯的刮片到两段式雨刷器,再由两段式雨刷器到真空泵驱动的自动雨刷器,一直发展到了现在,这个小小的汽车配件在一个多世纪以来拯救了无数人的生命。目前国外生产的雨刷种类比我们想象的复杂很多,有传统的间歇式雨刷器,雨珠感应式雨刷,随速感应式雨刷器,无骨雨刷等,并且国外在雨刷器发展这方面一直保持创新,相信在未来会有更多方便的雨刷功能问世。
1.3.2 国内研究和发展现状
汽车工业作是我国高速发展的支柱产业,但是雨刷在我国始终没有得到创新的发展,汽车研发公司也没有重视雨刷器。在大多数驾驶者眼里,普通雨刷器已经足够能满足他们的行驶需求了,并且由于新的智能雨刷在推广时并没有老式雨刷那样全面,导致驾驶者接受智能雨刷器需要一段过渡的时间。国内的雨刷现状与国外相差不大,只是在创新研发方面略微落后于国外,新的智能雨刮系统不是正在测试,就是没有相应市场的宣传。
1.4 系统设计总体思路
设计项目是需要一个完整的总体思路作为指导,总体思路的正确会使项目在设计的过程中顺利执行,避免走入误区,一般项目在设计时通常会考虑以下的内容:
(1)硬件设计:硬件设计是基础型的原理性设计,首先就是对核心的单片机进行选择,根据单片机的型号、内存、引脚数量、运行速度等等参数,再结合项目的需求选取合适的单片机。其次需要对传感器的性能、功能进行全面的掌握,尤其是在传感器引脚的使用方面更要全面了解,通过查找传感器的器件手册了解传感器的引脚分布和封装尺寸,这样才能选取符合的传感器。在所有需要的模块确定完毕之后,进行原理图的绘制,绘制过程中不断的参考资料,完成原理图设计。最后对照原理图完成实物的焊接工作。
(2)软件设计:软件设计是依托于硬件原理之上进行设计的,硬件需要软件来运行功能,软件需要硬件实现功能,在本质上是一个相互依存的关系,软件设计必须严格对照硬件引脚进行代码的编写,否则将无法实现所需要的功能,对于大多数的时候,为了代码编写方便需要随时调整硬件引脚的位置。在软件代码设计的时候,第一步完成的就是主程序的框架设计,框架中可以没有具体的功能,但必须要层次清晰,为不同功能的子程序分配位置,避免相互干扰,出现混乱。主程序的框架结构搭建完成之后,就需要编写各个子程序的代码,实现模块化设计。
(3)系统的测试:系统测试在设计中是非常重要的,测试中会发现设计的缺陷,硬件和软件在设计的过程中难免会出现偏差[6],细微的偏差将会导致功能的不可实现,尤其在功能相互重叠的地方,子功能调试都没有问题,整体调试却出现功能不可控,这就需要优化代码或者变更硬件来解决。在反复的测试中查找问题,优化代码,使整个项目功能达到满意。
2 系统方案设计
2.1 系统设计内容
系统硬件设计框图如图2.1所示,其中单片机最小系统起到中枢的作用;LCD1602显示模块主要功能是显示覆水量大小,雨刷转速挡位,控制状态以及覆水量上限值和下限值;键盘模块主要是对覆水量量下限值的设置和对控制状态(自动或者手动)的设置;语音电路识别语音指令进而控制雨刷转动;雨滴传感电路采用专用的湿度传感器,需要经过数模转换电路传送给单片机。主要研究内容如下:
(1)完成雨滴传感器的硬件电路设计,软件程序设计,将数据采集到单片机;
(2)完成步进电机的电路设计,软件程序设计;
(3)完成电机驱动的电路设计,确定驱动电平;
(4)完成模数转换的电路设计,软件程序设计,将模拟量转换数字量;
(5)完成显示器的电路设计,软件程序设计,将单片机数据进行显示;
(6)通过按键具有设置参数功能;
(7)完成语音识别LD3320的电路设计,软件程序设计。
图2.1硬件框图
2.2 系统方案论证
2.2.1 主控方案选择
主控器件是系统最为核心的器件,是协调整个系统运行、协调外部传感器一起工作的核心模块,所以对于主控器件的选择尤为重要,选取原则是既要满足预算要求,又要满足所必须的功能。
方案选择1:选择32位单片机STM32,STM32单片机是一款功能和性能都非常优越的单片机,内部存储单元采用32个比特位作为存储单元,采用ARM内核架构,在内核中可以直接运行系统,内核系统分为M0、M1、M2、M3、M4。STM32单片机的应用比较晚,但是发展特别迅速,目前国内部分大学应用STM32单片机教学,并且市场上的商用电子产品几乎都是STM32单片机为核心开发的,但需要专门的烧写器,在使用方面几乎不存在缺点,唯一的问题是对于初学者而言,针对库函数开发还存在一定的困难。
方案选择2:选择STC单片机,STC单片机应用比较早,采用最原始的8位寄存器存储数据[7],使用的是51的内核,在处理数据的速度方面相比较而言,速度比较慢,程序存储空间有限,所以对于大型系统功能并不适用。但是STC单片机的优势也非常明显,在网络上和书籍中有着丰富的学习资料和使用例程,对于初学而言,一般都是首选的一款单片机,在单片机的资源中,相对于一般的小型系统是足够用的,并且在使用中很方便,搭载最小系统就可以独立运行,程序的下载功能使用串口进行下载,不需要专用的烧写器进行程序下载,对于单片机的费用而言,STC单片机是最为经济划算的。
方案选择3:选择MSP430单片机,MSP430型号的单片机是一款具有众多齐全功能的单片机[8],其内部资源非常丰富。在使用方面,一部分在工业控制场合使用的非常多,原因是内核设计部分采用8总线架构,对电磁的抗干扰性能极为强大,一般使用在手持设备中,具有非常好低功耗性能。消费类电子产品中一般并不多见,主要市场是工业产品,在单片机的开发设计中,需要专门的开发工具,网络和数籍中所介绍的知识比不多,相对而言,开发存在很大的困难,在价格方面比价昂贵,对于预算有限的项目来说,一般并不考虑此款单片机。
综上所述,通过比对三款单片机的功能,综合考虑可操作性和经济方面,本次的开发选择STC系列的单片机。
2.2.2 电源电路选择
方案一:采用市电220V交流电压作为系统的供电方式,220V交流电源需要通过变压器电路转为直流的电压才能给系统供电,并且在交流电压转为直流电压的过程中需要进行滤波、整流等等的电路设计,电路设计比较繁杂,并且在实验中会出现危险的情况,一旦线路错误,就会出现强电短路,危险程度极高,另一方面在转化中会出现多级转换的,由220V交流变为12V直流再变5V直流[9],这种多级装换并且进行滤波整流的电源电路设计极为复杂,对所使用的器件需要很高匹配程度,设计的复杂性是他最大的缺点。虽然电路复杂,但是他的优点也同样突出,输出功率较大,对于需要大功耗的器件具有无法比拟的优势,在输出时的特点是持续稳定,能够提供优质的功能能力。
方案二:电源采用USB接口电源供电,USB电源是现代生活中一种比较常见的供电电源,比如电脑USB接口、手机充电头、电源插座等地方都有USB接口,USB接口供电发展起步比较晚,但是发展迅猛,几年时间迅速占领5V电源领域。现在的使用中USB电源几乎随处可见,供电的技术也越来越走向成熟,输出电压的能力比较稳定,相对来说很安全。系统本身并不需要太大的功率要求,但是需要稳定的供电能力,USB电源极为符合弱电系统的要求,所以USB电源非常适合弱电系统供电。
方案三:电源采用锂电池进行供电,锂电池的应用比较广泛,安全性能很高,电池具有相当程度的稳定性,可以进行充电循环使用,一般应用在手持设备或者便携式设备中,可以不局限任何地点、任何场合使用。锂电池的电压一般为3.7V左右,一般在使用的时候需要升压之后在稳压使用在弱电系统中,由于锂电池材料的特点,需要对锂电池进行低电压检测,若果电池电压过低还在使用,就会对锂电池的内部材料造成永久性的损害,影响锂电池的使用次数,最大的缺陷就是供电不具有持续性,需要间隔的时间充电,输出电源的能力有限,除非是便携式的设备,一般不宜采用锂电池功能。
通过比对三种方案,从安全性和接电方便综合考虑,本次设计采用方案二的设计方式,采用USB的供电方式来作为电源。
2.2.3 按键电路选择
按键在系统中的占比很小,但是作用却很大,是实现人机对话的重要组成部分,通过按键的输入实现一定功能,对功能显像的观察,判断是否达到设计预期,从而实现人机的信息交互。按键在大多数的时候是完成参数的设置、功能控制、显示屏的翻页功能等等。按键在系统中一般会以两种方式出现,一种是键盘模式,一种是独立模式。
按键设计的方案1:键盘模式也叫矩阵按键,通常情况是4*4按键组成的,在程序的IO扫描中,通过横向和纵向的扫描交叉点确定按键动作,这样的按键设计为了节省单片机的IO资源,8个IO引脚就可以完成16个按键的工作测试,极大的减轻了开销,对于需要多按键的功能项目,会优先考虑键盘模式。使用IO资源的减少,就意味着编程的复杂度提高,不断的扫描会影响单片机的运行效率,一般会在定时中断中完成按键扫描,最大程度保证单片机的运行效率。
按键设计的方案2:独立模式也称独立按键,相对于键盘模式来说,独立模式的电路设计极为简单,只需要按键的两个引脚一个接在单片机的IO上,一个接电源地即可,程序在设计的时候提前将IO引脚置为高电平,通过检测引脚状态是否发生变化判断按键动作,这种方式没有编程算法,方便程序设计,一般对于按键需求较少的系统中应用。
综上所述,通过对比矩阵键盘和独立键盘的功能与运行效率,所以本设计选择了方案2作为我们的设计方案。
2.2.4 显示器的选择
设计方案1:数码管作为终端显示,数码管是一种比较古老的显示器件,通过发光的LED组合而成,根据阿拉伯数字的显示形态,使用8个LED就可以完成所有数字的表达,显示的内容比较单一,只能显示数字和部分字母,对于图形或者复杂的内容信息无法显示。硬件设计电路设计方面,比较容易理解,公共端与任何一个LED导通即可点亮,通过频闪效果,快速点亮多个LED,就完成了信息的显示工作。在经济效果上,价格不贵,对于预算有限并且显示内容不复杂应该优先考虑。
设计方案2:LCD1602作为终端显示,优势在于LCD1602显示的非常清楚,字体相较于其他显示器更加立体化,适用于一些功能多且显示内容大的系统。
综上所述,本次设计选择了LCD1602来作为本次的显示端器件。
2.2.5 AD采样选择
ADC0832:ADC0832作为AD数据的采集,将模拟量转换为单片机可以识别的数字量,ADC0832通过SPI与单片机的IO管脚连接,一共需要3个IO引脚。采用DIP8的封装形式,通过采集模拟量0-5V可以转换为0-255的单片机可识别的数字量,通过采集数字量的大小来间接获取传感器的数据采集状态。ADC0832可以采集两路模拟量数据,具有体积小,采集快速,在模拟量2路以内情况下非常的适合。
ADC0809:ADC0809数据转换是一个多路的AD转换,可以采集9路的模拟量数据。采集的模拟量传感器的电压输入也是在0-5V之间,然后通过单片机读取到每一路的数字量。ADC0809也是一个8位的模拟量转换器,单片机的数字量范围在0-255之间[10]。ADC0809具有与单片机引脚连接少,并且具有多路采集接口,比较适合在3路到9路模拟量采集的场合。由于采集的路数比较多,所以ADC0809的体积相对来说比较大。
综上所述,综合考虑本次设计需求,本次设计采用ADC0832作为AD的数据转换采集。
2.2.6 语音识别模块选择
最热门和最有发展前景的新型技术之一[11]。语音识别的方法有非常多种,语音识别芯片的选择也非常多种。我们要根据实现的功能去比对哪种语音模块最合适。
方案一:基于一般语音识别芯片控制设计,这一方案主要通过各模块之间的互相作用来实现控制,由语音信息采集和处理模块、语音信息存储模块、语音识别模块等几个模块组成。语音信号通过语音采集模块采集后,特定处理后交给语音信息存储模块进行存储;语音存储模块将数据发给微处理后,微处理再交给语音识别模块进行语音识别;语音识别模块识别特定语音信息,这时候会产生相应信号给微处理器;微处理器通过接收语音识别模块的信号控制,从而实现对系统的控制。
方案二:基于非特定人语音识别芯片LD3320的控制设计,语音信号直接由语音识别模块采集、识别并处理,识别到特定语音后LD3320将产生相应的信号给微处理器;微处理器根据LD3320接收到的信号控制去实现对系统的控制。
相比于方案二,方案一的成本更低,但是存在许多不足之处:方案一的系统结构较复杂,需要外加麦克风和语音信号处理装置;系统稳定性不高;语音采集与识别分开进行时,比方案二更容易出现识别不准确的情况;而LD3320语音芯片有自带的语音信号采集与处理功能,这样可以使得系统结构更加简单;所以方案二比方案一更优。
3 系统硬件设计
3.1 单片机
单片机是整个雨刷智能控制系统的中枢大脑,可以说该设计最需要注意的步骤就是单片机部分,该设计所实现的所有功能都是通过单片机来实现的。单片机如图3.1所示。
图3.1单片机
单片机是一种将CPU、储存器、输入、输出接口电路合并在一块的集成电路芯片,又被称为单片微控制器。单片机就相当于一个迷你型的电脑,只不过少了输入输出接口设备。如今单片机广泛应用于日常生活中了,是智能化时代不可缺少的一环。可以明确的看到单片机是由众多引脚组成的结构芯片,其内部是由成千上的硅晶体排列组合而成,这些硅晶体按照一定的顺序排列,通过与非门实现功能逻辑,在逻辑的运算中实现功能控制,这就是所谓的外设功能,在硅晶体管的外部进行陶瓷封装,只保留外设驱动引脚,这就是单片机的引脚,也就是我们所看到的单片机外部形态。单片机的引脚功能是根据内部硅晶体排列顺序的不同而不相同,大体上分为通用IO引脚和特殊功能引脚,通用IO引脚在单片机内部占有资源比较少,实现的功能比较单一。特殊功能引脚在单片机内部占有资源比较多,实现的功能也相对较多,同时对于程序设计而言就相对复杂,程序设计就是控制单片机的IO引脚,通过IO引脚的输入与输出,配合外围电路,实现设计功能。
单片机在封装形式上千差万别,上图所展示的仅仅是通用的两种形式,贴片式与直插式,贴片式的IO引脚密集,占用空间比较小,非常适合小型化产品。直插式的IO引脚比较疏散,占用的空间也比较大,相对而言,内部的硅晶体隔离空间也大,抗干扰能力较强,适合于工控场合产品,在安装方面就有明显的优势,并不是一次焊接而成,而是插接形式,更换方便。这两种封装形式的单片机只是外部形态不同,使用功能基本一致,主要是根据功能需求进行选择,并没有明显区分。
本次设计是通过单片机和外围电路连接的多个传感器协调工作,对于单片机的开发需要依靠内核设计厂家所提供的技术手册进行开发设计,严格按照手册介绍的功能进行设计,尤其在内部寄存器的设置方面,必须按照手册进行,否则单片机无法正常使用,比如在外部中断配置、内部计数器配置、串口配置等等。其次,单片机IO引脚的使用最为重要,与外部连接都是依靠IO引脚口完成,单片机的IO引脚作为外部器件的控制端,控制着外部器件的功能和读取外部器件的状态。单片机的IO引脚拥有两种功能,即输出和输入。当作为输入的时候,主要进行的工作是外部信号的检测,时刻对于外部的电平变化进行检查,当出现变化时,判断为信号标志。作为输出时,是通过程序控制引脚自身的电平变化控制外部器件,比如控制外部LED灯的亮灭,就是依靠自身电平的高低变化实现灯的亮灭。单片机是数据芯片,所发出的信号也是数字信号,就是“0”和“1”,高低电平指的就是“1”与“0”的逻辑变化,根据逻辑变化而进行控制。
3.2 单片机最小系统
单片机是具有核心智能化的小型中央处理器,在其内部拥有数以万计的微晶管,根据程序代码的控制使它在逻辑上进行不同的输出或者输入形式,完成设计的功能控制,虽然它具有智能化的形式,但是单片机并不能独立工作,需要配合外围电路构成一个最小工作系统,才具有智能工作的能力,不管任何型号的单片机,最小系统都是单片机不可或缺的一个前提必要条件,对于不同系列单片机而言,组成单片机最小系统的外围电路并不相同,需要根据单片机设计厂家给定的工作手册进行设计最小系统的搭建。最小系统由复位、晶振以及电源三个电路组成。本次设计使用的单片机型号是STC89C52,市场上使用极为广泛,性能相对稳定,单片机片上资源比较适中,虽然处于入门级单片机,但对于本次的功能来说完全足够,单片机的最小系统搭建如图3.2所示。
图3.2最小系统电路图
4 系统软件设计
本次程序设计采用的编程语言是C语言,C语言具有简单易懂,逻辑判断能力突出等特点,编写程序的开发软件是Keil软甲,在设计中,首先完成的是主函数的框架结构,在框架结构中布置各个子程序的分区功能,根据逻辑的执行确定子程序的先后执行顺序,主函数框架编写完成之后,开始进行子函数功能编写,根据每一个的功能实现代码设计,每完成一个子程序就可以进行Keil软件编译,编译成功将HEX文件下载到单片机运行,运行成功后进行下一个子函数编写,直到全部功能调试完毕。
4.1 系统程序设计软件介绍
程序软件设计所指的就是程序代码的设计,程序代码通过语言来进行编写,语言再通过编译软件编译成单片机能识别的只有1和0的逻辑语言。程序员所编写的是C语言或者汇编语言,通过工具完成编写语言到机器语言的装换,这个工具就是单片机的开发软件,我们所使用的开发软件是KEIL软件,使用的是C语言,KEIL软件将这种语言翻译成机器语言,也就是前文提到的只有0和1的逻辑语言,将其下载到单片机中,使单片机按照语言的逻辑运行。KEIL软件的功能极为强大,执行的工作不仅仅是翻译高级语言,同时还会查找高级言中的错误,并且进行提示,指出错误的地方,方便程序员进行修改。
KEIL软件的开发界面给人一种干净整洁的观感,没有丝毫的杂乱,简单明了的指令系统得到众多程序员的认可,是最受欢迎的软件之一,KEIL软件涵盖了众多型号的单片机库,很多的单片机都可以使用KEIL软件直接进行开发,无需对新的开发环境进行了解,节省开发的时间。新建工程界面如下图4.1所示。
图4.1新建工程界面
程序编写KEIL的界面如下图4.2所示。
图4.2程序编写KEIL
下载程序界面如图4.3所示。
图4.3HEX文件下载界面
4.2 系统主程序
系统的程序分为主程序和子程序,这也是模块化编程的基本思路,所有的子程序都需要围绕主函数展开,可以说主函数是整个系统的核心,主函数对系统的功能进行分层处理,架构起系统编程的框架,在框架下运行每一个子程序,通过顺序执行子函数完成系统的功能设计。首先进行系统的初始化和显示初始化,之后进行雨滴检测功能,当检测雨量大于限值,步进电机开始带动雨刷器工作,雨滴小于限值时停止步进电机工作,检测的雨滴数据通过显示模块进行显示,之后程序循环执行。
4.3 液晶显示子程序
本设计的显示程序采用的是LCD1602显示,显示程序首先开始进行初始化、然后设置坐标位置,这个时候显示等于0则显示结束,显示不等于0则需要用发送函数进行显示,显示一位之后,显示指针自动加1,继续判断字符是否为零,直到字符不等于零则结束显示。LCD显示流程图如图4.4所示。
图4.5LCD显示流程图
液晶显示模块部分程序如下:
voidLCD1602_cls()
{
LCD1602_write(0,0x01);
LCD1602_delay(1500);
LCD1602_write(0,0x38);
LCD1602_delay(1500);
LCD1602_write(0,0x0c);
LCD1602_write(0,0x06);
LCD1602_write(0,0xd0);LCD1602_delay(1500);
}
首先使用voidLCD1602_cls()对LCD1602进行初始化,然后用LCD1602_write(0,0x01)对LCD1602进行清屏操作,这时候LCD1602显示可能会出现抖动,因此需要用LCD1602_delay(1500)来进行延时。接下来用LCD1602_write(0,0x0c)来进行光标的设置,同样需要LCD1602_delay(1500)来进行延时。当初始化完毕之后,LCD1602就可以显示内容了。
5 系统仿真与制作测试
5.1 系统仿真
系统仿真的优势是可以实时观测系统内部的运行状态,我们在进调试时会不可避免的出现一些错误,这时候无论从硬件和软件有时都很难发现错误,但我们如果进行仿真去检测错误就会方便很多。系统仿真图如5.1所示。
图5.1系统仿真图
在仿真过程中,出现了在自己创建的元器件上无法连线的情况,原因是管脚之间的距离太小了,后来重新编辑无法连线的元器件,把它的管脚间距调大一些就解决了这个问题。在仿真过程中库里会经常找不到元器件,比如LD3320芯片,如果库中没有的话,我们可以通过找资料查询芯片手册来了解元器件功能来制作功能相近的原件。
5.2 系统制作
实物设计主要包括以下几个步骤:
(1)焊接实物是实物产品设计最为基础的分部,实物焊接是否正确决定实物功能是否能够实现,在这一过程中需要对传感器元器件进行确认,对元器件的引脚功能进行辨别,通过对比元器件的技术手册的引脚定义与原理图设计进行比对,确定无误后进行焊接,焊接时需要对焊接的温度进行控制,尤其对一些不耐热的器件需要快速准确完成焊接。
(2)焊接完毕后的检查工作,肉眼检查器件有没有反向焊接,检查引脚所焊接的位置和线路的连接,电路板上的焊点是否存在忘记焊接的现象,密集的焊点之间是否存在着连在一起的错误,这些可能出现的表面问题需要依靠肉眼完成检查,再检查的过程中做到细致、认真、耐心,需要条理清晰的逐一检查,以免漏检在后期上电的时候出现器件不可逆的损害。
(3)通路实验检测,依靠万用表工具对线路进行检查,使用万用表的通断测试档位,对电路板的电源和地进行测量,这一步是为了避免最为严重的短路现象发生,一旦发生就会对电路板上的所有器件造成一定的损害,使部分功能失效,影响后续的功能调试。电源故障排除之后,对其他的线路按照原理图一一测试,逐一排查,直到全部测试完毕。
(4)实物通电试验,实物上电后,对于弱电部分可以用手背感测器件的温度,温热表明器件正常工作,过热说明器件工作不正常,需要重新检测。使用万用表的电压档位测试各个部分的电压是否正常。
(5)实物调试,在实物调试中需要程序代码写入到实物中运行,运行时可以将功能进行模块化调试,对每一个功能单一调试,保证单一功能的程序正确性,所有功能逐一调试之后,进行总体调试,完成系统的功能设计。
(6)实物性能测试,性能测试建立在功能全部实现基础之上,通过程序代码的运行逻辑,对实物的运行速度、控制器的反应时间、极限数据测量等等进行测试,不断的通过优化代码设计,完成性能的测试工作。焊接的图片如图5.2所示:
图5.2系统焊接图
系统实物图片如图5.3所示:
图5.3系统实物图
5.3 硬件调试
实物的通电测试在系统设计中是一个关键的节点,通电后通过观察显示屏或者指示灯是否被点亮来确定通电后的实物是否正常工作,若果没有被点亮说明实物存在问题,需要立即断电查找原因,使用万用表进行线路的测量,查明原因将其解决,重新通电观察,实物正常工作后,用手背感受各个传感器的温度,没有存在发热的现象,说明所有的器件均可以正常工作。上电测试图如图5.4所示。
图5.4系统上电测试图
结论
该设计首先是设计出硬件电路原理图,之后通过网络查询、老师指导、图书馆查找书籍来了解单片机引脚和各个模块原理,最后绘制出该设计的总原理图。通过总原理图进行该设计的焊接,焊接的过程中出现了许多的问题,比如焊接时手法不太好导致两个焊点的锡连在一起,高温度电烙铁长时间接触焊盘导致焊盘脱落,电路出现短路等现象,最终长时间的实践完成了该设计,并且对自己的焊接能力又有一个大的提升。完成设计后,对系统进行反复测试,一直到系统可以正常运行,之后整理相关的资料与文件进行论文的编写,这次设计让自己无论是对硬件知识还是软件知识都有了一个巨大的提升,掌握了单片机的原理应用和梳理了C语言的编程技能。
该雨刷器控制系统对雨水采集电路,单片机最小系统,语音识别模块,电机驱动模块,显示电路模块都进行了硬件与软件的设计。实现了根据覆水量和语音识别指令自动控制雨刷器的转速,完美的解决了驾驶员在雨天分心打开雨刷发生车祸的概率,在硬件方案选取时从功能可靠性和经济实用性等多方面考虑,筛选出功能相对全面,发展相对完善,比较可靠的硬件设计方案。
该研究对我们的日常出行有着巨大的意义,雨刷控制系统是如今驾驶者都会考虑的汽车功能问题。该设计还有待完善,比如根据覆水量来自动开启雨刷会出现玻璃覆水量不高但却依然影响了驾驶视线的情况,而且语音识别功能的语音识别准确率也有待提高,该设计的生产成本也非常高,适用车型还是只有高档车型。考虑到价格的可行性和系统的功能不足,该设计在未来仍然有着巨大的发展空间,在未来会针对汽车行驶的安全性,可靠性,经济实用性开发出更加优越的功能。