版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第页绪论课题研究背景及意义随着空调在日常生活中的普遍应用,很容易能想到电风扇会逐渐成为空调的社会淘汰品,其实经过市场的考验和证实,事实并非如此。虽然空调确实具有很强大的生命力,但是电风扇在市场的验证下也显示着它不可小觑的市场优势,并且其销售在不停的复苏中具有强大的发展空间。根据市场调查,电风扇的不停复苏主要在于以下三个方面:一是电风扇虽然没有空调那样强大的制冷功能,但电风扇是直接取风,风力更加温暖,比较适合老年人、儿童以及体质弱的人使用;二是电风扇经过多年的市场使用,比较符合人们的使用习惯,而且结构简单、操作方便、安装简便;三是电风扇比起空调产品而言,其价格低廉,相对省电,更容易进入老百姓的家庭。随着社会科技水平以及人们生活水平的不断提高,现在家电在款式、功能各方面日益求精,并朝着健康、安全、多功能、节能等方向发展。过去的电器不断的显露出其不足和短板之处,电风扇作为家用电器的一种,同样存在类似的问题。传统的电风扇较为突出的缺陷点就是:一是风扇的风力大小不能根据声音智能控制调节风速,对于人们比较忙碌和有需要的情况下,声控智能调节风速就显的尤为重要了,特别是在忙碌是忘记调节风速,既浪费电资源又容易耽误事;二是传统的风扇是用机械式的定时方式,机械式的定时方式常常会伴随着很大的机械运动的声音,特别是在夜间影响人们的睡眠质量,机械定时也有一定的局限性,定时范围有限;三是传统的电风扇设有远程手动遥控控制电风扇的功能,对平时需要调节风扇风速,而又不想走近风扇带来很多的不便。鉴于以上方面的考虑,我们需要设计一种智能声控风扇系统来解决这些问题。国内外研究现状及已有成果电风扇在中国仍然具有很大的市场,所以我国对电风扇的优化研究是很积极的。智能声控风扇已经开始投入市场,目前这方面的技术已经成熟。下一阶段的研究将是使其更加人性化,更加方便人们的生活,更好的满足不同群体的人的需求。在国外,电风扇方面的研究相对我国来说不那么积极,但其在智能化电器方面的研究却比我国更加成功。“智能化电器”包括三个层次:智能化的电器元件、智能化开关柜和智能化供配电系统。本文研究内容目前的声控开关大多都是应用模拟电子技术进行设计,分立元件多,不可靠,而且许多声控开关的平均使用寿命不长,主要是因为电路作频繁的开关,启动电流非常大,导致功率元件可控硅由于过载而损坏。如果在设计中采用开关电压零保护技术,可消除白炽灯开启瞬间的大电流冲击,有效地防止可控硅元件启动时的电流过载,大大地延长了开关的使用寿命,而且可以起到保护灯泡的作用。如今单片机技术已经相当成熟,本文则运用单片机设计出智能型的声控开关,电路设计好后,运用软件编程来实现其功能,灵活方便,修改简单。在使用过程中更加的安全节电,智能环保。首先单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机特点:种类多,型号全;提高性能,扩大容量,性能价格比高;增加控制功能,向真正意义上的“单片”机发展;低消耗;C语言开发环境,友好的人机互交环境。单片机优点:使用寿命长;运行速度越来越快;低噪声和高可靠性技术;OTP与掩膜。本文介通过利用单片机STC11L08XE作为系统的核心控制模块,通过驻极体话筒采集信号、编程传入单片机,单片机数据进行适当处理后传输到继电器模块,实现电风扇的开关及风速大小的显示。在语音模块中,主要靠声音来实现各种显示要求的选择与切换。系统原理设计系统功能本系统为设计一个智能声控系统,通过语音识别,以单片机为核心控制模块,信号由驻极体麦克风收集并编程到单片机中,再由单片机进行处理,最后传入继电器模块,去实现风扇的启动、停止、风速状态和相应显示灯的亮灭以及转速显示。先对系统进行手动控制,若能够顺利实现其功能和各个运行状态的显示等,则可使用自动控制系统控制和实现每个功能,比如按键对应显示灯情况,转速显示情况等。手动控制系统,通过手动控制,当按下不同的按键时,实现对应各状态的转化、指示灯显示情况,以及对应转速的显示。比如,当按下K4按钮时,对应风扇状态为低速,风扇提速或降速到低速状态,黄色指示灯亮一个,转速显示实时显示每一时刻的转速。自动控制系统,当手动控制能够顺利实现以后,在系统中加入语音识别模块,通过外界的语音控制,以单片机为控制核心,采集到相应的信号,单片机进行处理后用继电器模块去控制风扇驱动,以此来实现调控风扇的不同状态、指示灯和对应的转速显示情况。语音识别原理语音识别技术,由于这项技术是全自动的,因此也被称为自动语音识别,这项技术是通过识别人类说话时语音中的词汇,并将其所识别的内容转换为计算机可读的,最后将其输入进计算机,例如按键、二进制编码或者字符序列。需要区别和注意的是,大众常常将语音识别技术与“说话人识别及说话人确认技术”混淆。说话人识别及确认技术的原理是识别或确认发出语音的说话人,而不是语音识别技术的非识别说话人语音中的词汇句子等。现今社会已经不难看到应用了语音识别技术的产品,比如,小米的智能音箱等智能家居,智能手机的语音助理,还有小孩子们的智能玩具等等。语音识别技术被大范围、灵活的应用,大幅度的提高了产品的易用性,给人们的生活带来了极大便利。除此之外语音识别技术还有它存在的必要,特别是在某些场合,操作者需要同时控制多个设备的时候。比如目前最为常见的问题:人们在开车的时候突然出现紧急情况。再举个例子就是军事训练的时候,难免会出现一些紧急情况需要处理,在这些场合中操作者无法进行复杂的操作,语音控制也就成为了不可或缺的选择。自动语音识别技术的主要任务就是让计算机能够顺利无障碍的“听懂”人类的语音,让计算机能够将语音中所表达的信息识别并提取。因此先进的ASR技术也就成为了我们想要制成的智能计算机系统中,必不可少的角色。它的作用就是相当于让计算机具备“能听”的功能,就像是计算机系统灵敏的耳朵,最终达到人机通信和交互的目的,这也是信息时代最自然、最便捷的手段。前途是光明的,道路是曲折的,语音识别技术的发展不会一帆风顺。其实语音识别技术并不是现在才有人去关注和研究,在二十世纪五十年代,全世界的国家,特别是发达国家,早就有诸多科学家加入到政府的项目中,一起研究语音识别技术,力度最大的时期应该是最近二十年,不仅是国内外的研究机构,连很多看到商机的企业也加入到了研究中,在众人的努力下,也有了可喜的成果。但是不得不说的是,情况依旧不容乐观,虽然在今天不断进步的这项技术已经成功应用到了许多场合,但是我们这项语音识别技术离完美二字还有很大距离。本文研究的此系统采用的是STC11系列单片机,这个系统通过驻极体话筒来采集复杂的信号,以电容的形式进行传输,在语音模块方面则采用了大家所熟知的LD3320模块。这个LD3320也就是一款芯片,主要功能是语音识别。这个芯片采用的是ASR技术,这个技术的优势在于为用户提供了一种简单便捷的操作,这种操作脱离按键、键盘、鼠标、触摸屏等,并且它是一种基于语音的用户界面VUI。识别的工作过程也很先进,用户说出语音以后,它会识别其中的内容,同时将其通过频谱转化为特定的语音特征,最后把语音特征和我们设定的关键词进行相对准确的匹配,最优匹配的一条即作为识别结果。关于这个关键词列表的设置,其中工作原理就是,用户设置相关的寄存器,然后系统就会以字符形式把待识别条目输入到识别引擎。这项技术在手机应用上比较常见,比如手机的语音控制功能,它的关键词列表就是手机联系人的人名、手机菜单、内存中的歌名等等。REF_Ref515823752\h图2.1是一个语音识别系统原理框图,由LD3320和单片机组成,详细解释了LD3320的内部原理结构,本文中选用的MCU是STC1108XE单片机。图STYLEREF1\s2.SEQ图\*ARABIC\s11语音识别系统原理框图由图可知,当MIC麦克风接收到外界人的指令声音后,麦克风会将声音转换成语音流,然后系统会通过频谱分析,将分析结果转化为语音特征,接着将特征与关键词列表进行对比匹配,最优的一条通过语音识别器作为识别结果,最后系统将把识别结果传送到主控芯片MCU上,MCU也就控制了整个系统的运行。自动控制原理本文设计是智能声控系统,是一个全智能的通过人的语音指令去控制风扇各个功能的系统,所以当发出指令后,自动的去实现、控制整个系统的运行。当人们发出指令后,麦克风接收指令,语音识别模块将匹配的识别结果传输给主控芯片MCU中,提前输入程序指令的MCU经过程序运行,然后自动驱动电机系统,使得风扇达到不同的状态显示。自动控制系统,是语音识别模块,主控芯片模块,风扇驱动模块等紧密衔接无误的共同工作过程。设想如果其中一个模块突然出现故障,那么这将导致整个系统陷入瘫痪状态,最终也就不能自动控制。比如,MIC接收到人们发出的信号后,在语音识别模块出了故障,不能识别出相信的结果或者识别错误,直接影响整个系统最后的结果。手动控制原理众所周知,电风扇都有几个分别控制启停、风力大小等不同状态的机械按键。本文介绍的手动控制系统,通过不同的按键控制电风扇的启停状态、转速控制以及相应的状态显示。本系统设计有四个按键,分别为启动(K1)、高速挡(K2)、中速档(K3)、低速挡(K4)以及四个按键指示灯。启动电源后,当按下按键K1时,电风扇开始启动转动起来,第一个红色指示灯亮,转速稳定在某一数值;当按下按键K4时,风扇转速慢慢提升,第四个黄色指示灯亮,转速逐渐稳定在低速档值;当按下按键K3时,显然风扇将会继续提升转速,而同时第三个黄色指示灯将会亮起,是亮两个黄灯;转速逐渐稳定在中速档值;当按下按键K2时,风扇继续提升转速,第二个黄色指示灯亮,黄色指示灯全亮,最后稳定在高速档值。本系统设LCD显示器,是为了实时显示电风扇的转速。当电风扇启动,风扇转起来以后,通过单片机和继电器模块,使LCD及时显示每一时刻的风扇转速。当风扇被控制为不同的档位时,更需要显示其状态下的转速。系统硬件设计系统整体结构图STYLEREF1\s3.SEQ图\*ARABIC\s11系统整体结构图系统整体结构框图如REF_Ref515823815\h图3.1所示,这个系统是可以分为两个方式控制的,分别为自动控制即语音智能控制和手动控制,不管哪种方式,都是将信号传输到主控芯片MCU中,通过程序控制,一方面,驱动电机程序,使得风扇达到不同要求时的实时控制,另一方面,MCU芯片控制风扇不同状态下的指示灯亮灭情况,还有风扇每时每刻的转速显示。如图,系统接通电源后,若为语音控制模式,将外界信号接受,通过识别以串口通信方式传送给MCU,主控芯片做出处理后,使得电机驱动开始,风扇开始转动,并且控制LED指示灯和LCD显示不同时间的风扇转速。同理,若为手动按键控制模式,按下不同的按键时,通过I/O通信方式传输给MCU,主控芯片做出处理后,使得电机驱动开始,风扇开始转动,并使得LED显示不同的状态亮灯和LCD显示风扇转速。主控电路设计如图为主控芯片MCU电路接线图。图STYLEREF1\s3.SEQ图\*ARABIC\s12主控设计电路图众所周知,可以通过使用最少数量的组件以及单片微型计算机的操作系统,被称为单片机的最小系统或最小的应用系统。单片机,电源,晶体振荡电路,复位电路。电源由图可知,如图,VCC电源为5V直流电压,其中正极接40引脚,负极(地)接20引脚。上拉电阻在右上角VCC接入了一排100R的上拉电阻。所谓的上拉电阻,顾名思义也是通过一个电阻,把不确定信号钳位到高电平,与此同时该电阻还充当限流器。上拉电阻一端接电源,一端接芯片管脚。在这一结构中,由于有上拉电阻,所以没有按下按钮时,输入端口就会自己读取高电平。而与此同时,由于VCC和输入端口两者之间电流小到可以忽略,所以输入端读取的电压非常接近VCC。当按下按钮时,输入直接接地,通过上拉电阻的电流流到地,所以输入读取一个低电平。显然,如果没有上拉电阻,按下按键后,VCC直接接地,上拉动作非常重要。晶振电路在每个SCM系统中,都有一个晶体振荡器,这个振荡器可以生成时钟频率,并且是微控制器所需的。因此单片机的运行速度也就越快。如图,芯片内部振荡电路输入端XTAL1(19脚),芯片内部振荡电路输出端XTAL2(18脚),晶体振荡器使用11.0592MHz。结果可想而知,这个晶体振荡器最终将会大大提高微控制器的运行速度。电路中接入的是22pF的电容,既有利于振荡器的稳定,又可加快晶振起振。复位电路在环境受到错误干扰时,同时单片机系统也在运行时,系统中的复位电路此时就显得异常重要。微控制器需要在启动时重置,以确保CPU和系统组件处于初始状态并从初始状态开始工作。这个复位系统的结构是使用了一个10uF电解电容器,还有一个100R电阻器,此外还有一个复位按钮S2。工作原理是,当MCU的RST负责接收电平信号,然后当我们按下复位按钮,系统的电容就会发生短路,所有的电能释放,此时电阻两端的电压会增加,最终系统就复位了。语音识别硬件设计人类之间信息交换主要靠语言,人与机器之间交换信息也可以靠语言。在过去的二三十年里,图形用户界面作为人们和机器的通信接口取得了巨大的进步。但是,使用GUI技术的产品不能使人们摆脱手的操作,所以导致上文提到的有些场合和情况下,操作还不够方便。因此,语音用户界面成为人们的下一个目标。语音识别这项技术其实属于数字信号处理,在以前它的算法是通过计算机和数字信号处理器等各种方式精益求精的实现的。时代在进步,随着微电子和集成电路技术的日趋成熟,语音识别IC市场也在不断扩展和延伸。其中,LD3320就是一款性价比高的芯片。LD3320芯片由语音识别处理器和一些外部电路组成,其中包括ADC,DAC,麦克风接口,声音输出接口。它无需外部辅助芯片,就能够实现语音识别、人机对话等功能。LD3320完成非特定人类语音识别。长度不超过10个汉字或者79个字节的拼音串。另一方面,它的优势体现在可以动态编辑语句的内容。因此可由一个系统支持多种场景。这个芯片的封装是采用的48引脚QFN塑料封装,在3.3V的电压下工作。REF_Ref515823955\h图3.3所示,该系统的核心是一个语音识别算子。在语音识别工作中,它和输入输出和AD/DA转换模块一起完成工作。LD3320还支持并行和串行接口。图STYLEREF1\s3.SEQ图\*ARABIC\s13LD3320内部电路的逻辑框图LD3320的基本应用电路,由一个微控制器和LD3320组成。电路中的主要控制MCU芯片,由这个芯片完成寄存器的操作。LD3320芯片上的各种操作必须通过寄存器操作完成。比如设置标志位;读取状态;向FIFO写入数据;识别完成后获得识别结果等。例如,编辑关键字时,主MCU通过将关键字的拼音设置到LD3320相关寄存器中完成编辑。其寄存器大致可分为以下几类:FIFO数据缓冲区,语音识别控制寄存器,音量调节,模拟电路和其他辅助寄存器。LD3320寄存器的地址空间为8位,编号从00H到FFH。本文选用的主控MCU是51内核的单片机STC11L08XE。由主控MCU直接控制LD3320由其执行与语音识别相关的任务。电源设计,采用AMS117芯片,为LD3320提供3.3V的电压;音频输入输出采用驻极体MIC和0.5W小号喇叭;语音识别完成后,MCU的串口可以用来连接其他模块,以实现后续电路的驱动。主MCU和LD3320的连接如REF_Ref515824042\h图3.4所示。此外还连接了复位信号和中断信号。对于LD3320,复位信号(RSTB)由MCU发出,中断信号由LD3320发出。此外,还有一些辅助电路,如麦克风偏置,扬声器音量控制和电源去耦。图STYLEREF1\s3.SEQ图\*ARABIC\s14核心芯片的连接关系主MCU将会用LD3320的寄存器完成工作。有两种编程方式:“中断模式”和“轮询模式”。中断模式,是指主控MCU受到如按键一类的触发后,引发了此芯片的时序识别过程。要注意的是,在这个过程中,有必要说出要识别的语音关键字。在此过程之后,则需要再次触发,以再次开始识别过程。轮询模式就是指主控MCU重复启动识别的这样一个过程。在没有识别结果之前,如果没有人说话,则每当识别过程超时后,系统会自动开始识别过程;如果存在识别结果,则根据该识别在对应处理之后开始识别处理(例如,播放某个语音作为回复)。语音识别的操作流程是:语音识别的初始化。在这过程中,每一个都被初始化。写入识别列表。LD3320是一款基于单词的语音识别芯片。想要写入列表就必须遵守规则,每个标识条目都需要对应于特定的数字,与此同时不同的标识条目可以具有相同的数字。而且不用连续,但是数值要小于256(00H~FFH)。开始识别,随时准备中断响应功能,以便打开中断使能位。响应中断。当麦克风收集到了声音,系统就会断信号。此时被读取的值就表明有多个候选答案。如果不需要中断,也可以通过查询工作。之后系统会读取寄存器B2H的值,当显示是21H时,此时也就意味着识别结果已生成。在这之后,读取候选项等操作与中断模式相同。LD3320的功能是能够完成有限短语的非特定语音识别,这个功能使其能够被应用于虚拟环境中的战术训练主题。因为在战术训练中,通常需要发布一些简短的密码,所以我们就使用LD3320和语音识别,以达到语音控制的目的。独立按键设计图STYLEREF1\s3.SEQ图\*ARABIC\s15控制按键设计电路图如图为控制按键设计电路图,系统在手动控制方式时,用按键控制整个电路的运行。按键是由I/O线构成的单键电路,I/O端口的级别即高低电平反映了相应按钮的状态。若输入低电平则可以确认该I/O口线所对应的按键已按下。如图所示,VCC连接到5V电压并连接到10K上拉电阻。在P1.0管脚口得0.5mA的小电流,读到一个高电平。电压非常接近VCC。当按下按键K1时,端口直接接地,通过上拉电阻的电流流到地,端口读取低电平。同理,其他按键K2、K3、K4都是同样的电平变化。当按钮关闭并断开连接时,触点将被震动。为了避免这种现象,本系统采用软件消抖,用抖动延时的方法,跳过抖动区域。电源设计USB5V供电图STYLEREF1\s3.SEQ图\*ARABIC\s16USB5V供电该电路图如图,USB与VCC相连,USB接口也称串行口,其优点有:在使用外部设备的过程中,不需要关闭引导等操作,在计算机工作时可以直接使用,USB设备携带方便,可同时连接多台设备,USB供电电压为5V直流电,输出电流达500mA左右。在设计中我在VCC和USB之间安装了开关S1,这个开关其作用是用于控制整个电路电源的通断。电路中还用了三个滤波电容,用以增加电路的工作稳定性和降低对电路的干扰。3.3V供电图STYLEREF1\s3.SEQ图\*ARABIC\s173.3V供电电路图该电源设计采用AMS117芯片设计,为语音识别模块LD3320提供3.3V电压供电。VCC之后是一个小电流高频开关二极管1N4148用于单电路隔离,然后接AMS117芯片,下面接有滤波电容,上面接有一LED灯。AMS117是一款正向低压差稳压器,1A下降1.2V。它具有集成的过温保护电路限流电路,芯片内的过温切断电路提供过载和过温保护,是本系统供电的最佳选择。为了确保AMS117的稳定性,输入和输出连接了10uF的电容C7和C9。电路中还接有LED显示灯,用于显示3.3V电源供电电路的通断情况,若整个电路连接正确无语,则显示灯显示绿色,若有部分连接不正确,则不显示。电机驱动设计图STYLEREF1\s3.SEQ图\*ARABIC\s18电机驱动电路图如图所示,这个驱动电路有VCC电源电路、电机驱动芯片、整流电路和电机一起构成。其中电机驱动芯片是采用的L298N芯片,这个芯片有可承受高电压低电流的优势。因此它可以驱动两相步或进电机,甚至也可以驱动两个直流电机。其特点有:信号指示,速度可调,抗干扰能力强,过电压和过电流保护,两个直流电机或电机独立控制一个步进电机,PWM脉宽平滑,正反转,光电隔离可供选择。如图,VCC5V供电直接与芯片相连,在左上方接有滤波电容电路,芯片内,ENA与P2.0相连,实现PWM调速;IN1和IN2连接到输入端子电平;OUT1和OUT2接驱动电机,接口没有正负之分,如果发现电机转向不对将电机两线调换即可;D2-D5是整流二极管IN4007,这是一种半导体器件,是用于将交流电转换为直流电的,有着显著的单向导电性。状态指示电路设计图STYLEREF1\s3.SEQ图\*ARABIC\s19状态指示灯电路图如图所示,NPN型晶体管2N3904连接到电路。第一个LED启动指示器。当P2.3电流逐渐增大时,并不用担心电流过大的问题,因为由于R3的限制,集电极电流增加到一定值后就不会再增加。还需要注意的就是在集电极和发射极二者之间,电压将是极小的,甚至可以理解为开关是闭合的。当基极P2.3电流为0时,晶体管集电极电流为0,这相当于关断。因此,假设当基极P2.3的电流为0时,集电极电流也将为0,LED灯将会熄灭;如果P2.3电流很大,晶体管饱和,开关闭合。如果基极的电流从0缓慢增加,则LED灯的亮度也将随之逐渐变亮。同理,指示灯2,3,4也是如此。电机转速显示图STYLEREF1\s3.SEQ图\*ARABIC\s110电机转速显示电路图设计系统需要显示电机转速。LCD即为液晶显示器,其主要原理是液晶加为一种有机化合物,加热后再冷却后变成混浊固态的液晶,在电场的作用下,会引起一系列变化,液晶分子排列的变化会引起光线的变化,最终在偏光片的作用下,液晶能够控制光线明暗变化,显示图像。LCD主要特点为:机身轻薄,所以节省空间,能够省电却没有因此高温,低辐射对健康无损害,画面柔和,不损伤视力。其优点有:在节能方面,显然液晶有明显的优势,相对CRT,液晶的辐射指数要远低于它。并且因为液晶的原理问题,画面不会出现任何几何失真,更让人欣喜的是线性失真也成为了一大优势,这就使得液晶显示器让观众有了较大的观看区域,能够享受高清画质。LCD1602表示显示内容为16X2的字符和数字。如图,在芯片中,1脚和16脚接地;2脚VCC接5V电源正极;3脚:V0表示液晶显示器的对比度调整端,当我们接通电源时,对比度将达到最低状态,当电源接地时对比度达到最高状态;4脚:RS是寄存器选择,我们使高电平去选择数据型的寄存器,而低电平则选择指令型的寄存器;5脚:RW读写信号线,在高电平时将执行读取的工作,低电平时将执行写入的工作;7-14脚:数据端口。其内部含有复位电路,提供各种指令。系统软件设计语音识别本系统采用的语音识别模块除语音识别部分外,其余与普通的单片机操作一样,在程序方面只要保持驱动程序不改动,其余的操作亦和单片机操作一样,模块具备的I/O口属单片机I/O口,模块配套的程序主要针对语音识别功能的应用,如用户测试完毕,可以将config.h文件中的定义进行注销,程序将不再输出提示信息。配套程序识别命令修改添加关键词和识别码打开配套程序,在LDChip.C文件中找到uint8LD_AsrAddFixed()函数,在该函数里面找到如下所示内容:#defineDATE_A8”/*数组二维数值*/#defineDATE_B20/*数组一维数值*/Uint8codesRecog[DATE_A][DATE_B]={“xiaojie”,\“kaifabanyanzheng”,\“daimaceshi”,\“kaiqi”,\“tingzhi”,\“beijing”,\“shanghai”,\“guangzhou”,\};/*添加关键词,用户修改*/uint8codepCode[DATE_A]={CODE_CMD,\CODE_KFBYZ,\CODE_DMCS,\CODE_KQ,\CODE_TZ,\CODE_BJ,\CODE_SH,\CODE_GZ};/*添加识别码,用户修改*/根据关键词的数量和长度修改宏定义DATE_A和DATE_B,本系统需要要添加4个关键词,在这些关键词中最长的一句长度为30,那么定义如下:#defineDATE_A4#defineDATE_B30sRecog[][]数组为关键词数组,添加内容为拼音输入方式,本系统需要添加“开启”命令,则写入“kaiqi”,每个汉字间的拼音用空格隔开。pCode[]数组为识别码数组,所添加的识别码为预先定义好的宏定义常量值,同时必须和关键词一一对应,如上图所示,“damaceshi”命令对应的识别码为CODE_DMCS。定义识别码打开程序,在LDChip.h文件中找到如下所示内容://识别码客户修改处#defineCODE_CMD0x00//该命令码0x00用户不可进行修改#defineCODE_DMCS0x01//代码测试#defineCODE_KFBYZ0x02//开发板验证#defineCODE_KQ0x04//开启#defineCODE_TZ0x05//停止#defineCODE_BJ0x16//北京#defineCODE_SH0x17//上海#defineCODE_GZ0x2f//广州此处即为识别码的添加和修改,根据自己的需要和喜好任意定义识别码和宏名,但必须和前面所使用的识别码配对,否则会提示未定义错误。修改处理函数打开程序,在main.c文件中找到voidUser_handle(uint8dat)函数,在该函数中可以看到如下所示内容:switoh(dat) /*对结果执行相关操作,客户修改*/{caseCODE_DMCS: /*命令“测试”*/PrintCom(““代码测试”命令识别成功\r\n”);/*text*/break;caseCODE_KFBYZ: /*命令“全开”*/PrintCom(““开发板验证”命令识别成功\r\n”);/*text*/break;caseCODE_KQ: /*命令“复位”*/PrintCom(““开启”命令识别成功\r\n”);/*text*/break;caseCODE_TZ: /*命令“复位”*/PrintCom(““停止”命令识别成功\r\n”);/*text*/break;caseCODE_BJ /*命令“复位”*/PrintCom(““北京”命令识别成功\r\n”);/*text*/break;caseCODE_SH: /*命令“复位”*/PrintCom(““上海”命令识别成功\r\n”);/*text*/break;caseCODE_GZ: /*命令“复位”*/PrintCom(““广州”命令识别成功\r\n”);/*text*/break;default:PrintCom(“请重新识别发口令\r\n”);/*text*/break;}根据自己的使用情况在相对应的识别码后添加识别成功后的操作。单片机设备串口通讯本模块可以根据个人需要嵌入到自己的产品中,如果产品功能简单可尝试利用本模块自带的IO口进行外部连接控制。同时还可以通过串口与产品中的单片机进行串口通信达到控制效果,如采用这种方式进行控制,用户可以对main.c函数中的处理函数进行修改,将输出的信息更改为输出识别码,那么在每次识别成功后串口都将打印输出对应的识别码,产品中的单片机就可以对该识别码进行操作以达到控制效果。#include"config.h"voidUartIni(void) //串口初始化函数{ SCON=0x50;//SCON:serailmode1,8-bitUART,enableucvr TMOD|=0x20;//TMOD:timer1,mode2,8-bitreload PCON|=0x80;//SMOD=1; TH1=0xF4;//Baud:9600fosc=22.1148MHz IE|=0x90;//EnableSerialInterrupt TR1=1;//timer1run ES=1; EA=1;}voidUARTSendByte(uint8_tDAT) //串口发送一字节数据{ ES=0; TI=0; SBUF=DAT; while(TI==0); TI=0; ES=1;}voidPrintCom(uint8_t*DAT) //串口发送字符串数据{ while(*DAT) { UARTSendByte(*DAT++); }}独立按键本系统按键采用按键与IO口直连的方式,一个按键对应一个IO口。51单片机I/O口电平状态判断独立按键是否按下。当有按键按下时,单片机通过对变化的电平相应的分析即可判断所按下的按键。其具体程序如下:unsignedcharKey_Scan(){ unsignedcharkeyValue=0,i;//保存键值 //--检测按键1--// if(GPIO_KEY!=0xFF) //检测按键K1是否按下 { Delay10ms(1); //消除抖动 if(GPIO_KEY!=0xFF) //再次检测按键是否按下 { keyValue=GPIO_KEY; i=0; while((i<50)&&(GPIO_KEY!=0xFF)) //检测按键是否松开 { Delay10ms(1); i++; } } }returnkeyValue;//将读取到键值的值返回voidDelay10ms(unsignedintc)//误差0us{unsignedchara,b;//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//for(;c>0;c--) { for(b=38;b>0;b--) { for(a=130;a>0;a--); } }}风扇状态显示由于实际条件的显示,本文使用4路LED灯来显示风扇运行状态。51单片机引脚直接连接至LED的阳极,当单片机收到LED灯亮的控制信号后,相应引脚给至高电平,引脚输出5V控制LED灯亮。当需要灯灭时,输出引脚给至低电平即可。其驱动程序如下:voidmain(void){ unsignedcharledValue,keyNum;ledValue=0x00; while(1) { keyNum=Key_Scan();//扫描键盘 if(keyNum!=0) //有按键按下 { ledValue=keyNum; } GPIO_LED=ledValue;//点亮对应LED灯 } }风扇转速显示风扇转速显示采用LCD1602液晶显示屏,显示屏采用8位并口的方式驱动,在使用前首先需要进行初始化工作,初始化工作中包括清屏、光标设置、复位等操作。当显示屏初始化完成后,待单片机需要向屏中写入显示数据时,首先单片机需要发送清屏及光标复位命令,然后通过8位并口线向屏发送写命令,告诉显示屏即将发送显示数据。若显示屏当前处于就绪状态则会发送应答,若没有应答则表示显示屏当前在忙,无法对数据进行接收。当显示屏空闲后,显示屏执行显示命令。其流程图如图4.1所示。图STYLEREF1\s4.SEQ图\*ARABIC\s11显示屏驱动流程图向LCD1602写数据的时序图如所示。在启动时首先控制RS数据线,若RS数据线置高表示向LCD1602内部写入的是数据,反之表示向其内部写入的是命令。与此同时R/W数据线置低,表示要向内部写入一个字节数据,反之表示从内部读出一个字节数据。待两RS与R/W线稳定后将使能线拉高选中LCD12864显示屏。所有准备工作结束后八位并口DB0至DB7传输一个字节的数据给显示屏。传输结束后将使能线拉低停止对显示屏的控制防止之后数据线上传输其他数据时误操作。最后将RS以及R/W拉高回到原先状态。图STYLEREF1\s4.SEQ图\*ARABIC\s12写数据时序图如图4.3为单片机从LCD1602内部读数据的时序图。读数据与写数据相比只有R/W线存在不同,当需要读出一个字节数据时需要将R/W线置高表示从内部读出数据。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 16895.24-2024低压电气装置第7-710部分:特殊装置或场所的要求医疗场所
- tea'stone茶饮品牌手册
- 高一体育 背越式跳高教案
- 2024六年级英语上册 Module 6 Unit 2 I've got a stamp from China第4课时教案 外研版(三起)
- 2024-2025学年高中生物 第6章 第1节 杂交育种与诱变育种教案 新人教版必修2
- 2023四年级数学上册 八 垂线与平行线《直线、射线和角》说课稿 苏教版
- 2024-2025版新教材高中语文 第四单元 第一节 记录家乡的人和物教案 新人教版必修上册
- 房地产金融与投资概论教学课件第十二章房地产投资风险
- 防水工程抵房合同(2篇)
- 人教版灯光课件
- 高支模施工难点
- 大学生劳动教育-合肥工业大学中国大学mooc课后章节答案期末考试题库2023年
- 诉讼前民事调解委托书
- 孩子探视权起诉书
- 国家开放大学一网一平台电大《当代中国政治制度》形考任务1-4网考题库及答案
- 骨科常见的麻醉方式和术后护理
- 小企业会计准则财务报表
- 澄明之境:青泽谈投资之道
- 无人机基础 教案
- 机电运输专项检查实施方案
- 服装公司组织架构及岗位职责
评论
0/150
提交评论