• 950.50 KB
  • 2022-04-22 13:46:57 发布

微波炉语音控制系统毕业论文.doc

  • 52页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'微波炉语音控制系统毕业论文目录1绪论11.1设计的背景21.2设计的意义22设计任务与要求32.1设计路线32.2设计方案32.3实现功能43总体方案论证与比较53.1芯片选择53.2语音识别模块选择63.3显示模块方案选择113.4键盘模块选择133.5语音电路方案选择143.6电源方案选择163.7定时方案选择173.8掉电存储模块选择183.9火力输出方案选择184系统设计及操作说明214.1系统软件设计214.2硬件电路设计235总结31参考文献36致谢38附录A40附录B41 附录C42附录D43 语音控制微波炉系统一、绪论1.1设计的背景随着人们生活水平的不断提高,现代化的厨房电器已成为人们日常不可缺少的家用电器。不断更新的现代化家用厨房电器,极大地方便和丰富了们的家庭生活。如微波炉已经成为现代城市生活中人们不可缺少的烹饪工具,现在的微波炉已经可以做到煎、煮、烤、烘、焖、炖、蒸、烩等多种烹饪方式,做出各种营养美味的食物。与其他烹饪工具相比,微波炉具有热效率高、耗电量少、烹调速度快等优点。合乎经济原则,也比传统烹饪节省时间。由于独特的加热原理,它可以有效保持食物原有的色、香、味与营养成份,还可以迅速解冻食物,保持食物的水分与鲜嫩。而且微波炉使用中绝少产生油烟与炽热空气,使厨房保持清洁。微波炉有如此强大的功能与新技术的不断应用是分不开的。例如,微波炉的智能化、多功能化、节能化、健康化、操作简便化的发展,使得微波炉的发展前景越来越好,越来越受到人们的欢迎。微波炉,顾名思义是用微波来加热,用的频率是24.5亿赫左右的超短波,它由磁控管产生,经微波炉金属器壁反射再反射后,被炉中的食物吸收。食物能吸收微波是因为食物中含有水分[1]。水分子为极性分子,一端为正极,一端为负极,而微波是电磁波,有正半周与负半周。24.5亿赫即表示该微波在一秒钟内变换正负极达24.5亿次,每换一次,水分子即跟随反转一次;由于水分子一直振动反射,也就摩擦生热,热被食物分子吸收,食物就会变热、变熟[2]。微波炉控制器系统以AT89C52单片机为核心,由液晶显示模块、语音电路模块、键盘模块、掉电存储模块、电源模块等功能模块组成。本系统对基本的功能设置、语音识别控制功能、数据装入和定时功能进行了重点设计。此外,还扩展了微波火力八级档位设定、烹调模式、语音提示、烹调预约时间设置等功能,对微波炉的基本功能进行设计与实现。49 语音控制微波炉系统1.2设计的意义在现代人快节奏生活中,微波炉已成为便捷生活的一部分,为人们节省了时间,为社会节约了能源.随着控制技术和智能技术的发展。微波炉也向着智能化、信息化发展.除了可以实现常规解冻,烹调.烘烤三项基本功能外,又进行了创新设计,增加了温度涮量和压力测量,定时,防微波泄漏检测,自定义烹调,程序烹调等功能。采用数码显示工作状态和时闻,预留液晶显示端口,显示更直观更人性化.微波炉是一种用微波加热的现代化烹调灶具,它由电源、磁控管、控制电路和烹调腔组成。其中,微波炉控制器部分完成和工作状态之间的切换功能。虽然现今之微波炉的功能巳大大不同与以前。也由于此,更多的控制按键及不同要求的屏幕出现以配合不同的要求。系统的操作变得更烦琐。在市场上有些高档次的微波炉用了非常复杂的温度感应器加上高准及高灵敏度的湿度控制器,这类产品使生产成本大为提高,同时软件结构变得更加复杂直接影响系统的稳定性。然而语言是人类传递信息的主要手段,语音识别技术是目前世界上最热门和最具发展前景的新型信息技术之一。采用语音识别作为人机接口的设备能够具有简便、快捷、灵活的优点,其在军事、民用和商业领域都发挥了巨大的作用,并在未来一定会成为新一代操作系统的接口。语音控制技术在声控汽车、智能家电操作、自动导航、自动售票系统和智能玩具等方面有着广泛的应用。本文以嵌入式微处理器为核心,采用ICRoute公司的高性能LD3320语音识别芯片和相关控制电路,设计实现了微波炉的语音控制系统。由于LD3320芯片集成了语音识别处理器和外部电路,包括AD和DA转换器、麦克风、声音输出等接口,且不需要外接任何的辅助芯片如Flash、RAM等。在现有的产品中直接集成即可实现语音识别/声控,人机对话功能,识别的关键词语列表是可以任意动态编辑的,因而满足了小体积、低功耗和可通用的要求,因而本声控系统有着广泛的应用前景。本课题把语音识别模块内嵌到微波炉中,设计出一种语音识别控制微波炉。用户只需用简单,49 语音控制微波炉系统人性化的语音指令告诉微波炉-它要执行的任务之后它就愉快地帮主人完成系统操作。49 语音控制微波炉系统二、设计任务与要求2.1设计路线本项目详细分析微波炉控制器的原理和组成结构,设计一个语音识别控制的具有定时和信息显示功能的微波炉控制器。微波控制器系统可由以下五个电路模块组成:语音识别控制模块:其功能是识别微波炉工作过程中语音指令并执行操作;显示模块:其功能是显示各种工作模式、微波炉火力档的设定、预约时间和工作时间等等图文复杂的信息;语音电路模块,其功能是在按键模式工作时,芯片可以通过LED管脚给出信号来提示芯片的工作状态,并且伴随有提示音,用户也可自定4种提示音效;计时电路,其功能是对时钟进行减法计数,提供烹调完成时的状态信号;显示译码电路,其功能是显示微波炉控制器的各状态信息。单片机及外围电路单片机及外围电路单片机及外围电路2.2设计方案设计一个语音识别控制的具备定时和信息显示功能的微波炉控制器。要求:(1)该微波炉控制器能够在任意时刻取消当前工作,复位为初始状态。(2)可以根据需要设置烹调时间的长短,系统最长的烹调时间为59分59秒;开始烹调后能够显示剩余时间的多少。(3)显示微波炉控制器的烹调状态。(4)语音通过语音识别芯片和单片机的结合,实现输出控制,实现语音控制微波炉各种操作。(5)设计适当的外围电路,实现微波炉系统功能。49 语音控制微波炉系统2.3实现功能(1)语音识别菜单功能:识别微波炉工作过程中语音指令并执行操作。例如:语音输入命令:“上”、“下”、“左”、“右”、“确定”、“返回”可语音识别控制液晶显示屏选择对应的模式,确定烹饪模式和火力大小,调节定时并开始微波。(2)烹饪功能:烹饪模式有几种可选:有烧烤、解冻、汤类、蒸菜模式,同时人性化的增加了自定义模式,可自行选择适合的模式进行微波。可通过语音识别或加、减按键和确定键来对时间进行设置或预约,首先是对时间的设置,按确定键再对分进行设置,接着对秒进行设置,每次设置完就要按一次确定键,以完成对时间的设置。时间设置完毕返回等待系统开始烹饪。(3)火力调节功能:火力模式有对应的烹饪模式中有固定的火力大小,也可自定义选择火力大小。固定的烹饪模式的火力大小有:烧烤模式6档火力、解冻模式3档火力、汤类模式7档火力、蒸菜模式5档火力。可通过语音识别或加、减键来设置烹饪时间,最高是8档,最低是1档,流程同预约时间的设置相同,时间设置完毕就直接开始烹饪(4)液晶显示功能:液晶显示屏使用12864显示屏,液晶显示子程序显示各模式的工作状态,如显示火力模式、烹饪模式、预约时间和烹饪时间、也可显示“作者名”和“欢迎使用语音控制微波炉系统”。液晶显示器采用的是并行通讯的工作方式。(5)定时服务功能:程序检测系统是否开始烹饪,当系统已经进入烹饪状态,定时服务子程序开始工作,首先通过按键扫描判断预约时间标志按键是否被按下,当有按键按下进入预约时间的定时服务,如果没有按键按下,直接进入烹饪时间的定时服务。各固定烹饪模式的定时时间为烧烤模式定时十分钟、解冻模式定时五分钟、汤类模式定时一分三十秒、蒸菜模式定时八分钟。49 语音控制微波炉系统三、总体方案论证与比较3.1芯片选择方案一:采用数字逻辑芯片本系统有功能设置、数据装入、定时、显示、音响控制多个功能模块。各个状态保持或转移的条件依赖于键盘控制信号。由于键盘控制信号繁多,系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路实现该系统有一定的困难,需要用中大规模的可编程逻辑电路。这样,系统的成本就会急剧上升〔相对于方案二〕。因此,本设计并未采用这种方案。方案二:采用单片机作为整个控制系统的核心鉴于市场上常见的51系列8位单片机的售价比较低廉,我们的设计采用了P89V51RB2FN单片机作为主控制器,AT89C52是一款微控制器,包含16kBFlash和256字节的数据RAM,3个16位定时器/计数器,8个中断源,4个中断优先级,2个DPTR寄存器[3];主要负责系统的控制与协调工作。具体方案如下:首先,利用单片机检测各种模拟信号,通过接收键盘送来的命令,确认功能设置,实现数据装入和实时监控,其次,根据CPU发出的信号控制语音播报、显示等功能,用软件实现系统定时功能,节省了硬件成本的开销。这样的设计使安装和调试工作可以并行进行,极大地缩短了总体设计和制造的时间,综合考虑以上因素。我们采用了方案二,本方案的基本原理如图1所示,控制系统的原理图见附录。49 语音控制微波炉系统单片机及外围电路交流输入整流虑波输出调整单元液晶显示模块图1系统原理框图掉电存储模块键盘模块语音模块3.2语音识别模块选择语音识别模块选用LD3320语音识别模块(图2),该模块有16个单片机IO口,其中有一组8位IO扩展接口、1个定时器、1个外部中断,可做为单片机最小系统实现控制功能,可配套其他单片机也可独自完成工作。LD3320芯片(图3)是一款“语音识别”专用芯片,由ICRoute公司设计生产。该芯片集成了语音识别处理器和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等。本芯片在设计上注重节能与高效,不需要外接任何的辅助芯片如Flash、RAM等,直接集成在现有的产品中即可以实现语音识别/声控/人机对话功能。并且,识别的关键词语列表是可以任意动态编辑的。49 语音控制微波炉系统图2语音识别模块图3语音识别芯片3.2.1功能介绍(1)通过ICRoute公司特有的快速而稳定的优化算法,完成非特定人语音识别。不需要用户事先训练和录音,识别准确率95%。(2)不需要外接任何辅助的Flash芯片,RAM芯片和AD芯片,就可以完成语音识别功能。真正提供了单芯片语音识别解决方案。49 语音控制微波炉系统(3)每次识别最多可以设置50项候选识别句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79个字节的拼音串。另一方面,识别句内容可以动态编辑修改,因此可由一个系统支持多种场景。(4)芯片内部已经准备了16位A/D转换器、16位D/A转换器和功放电路,麦克风、立体声耳机和单声道喇叭可以很方便地和芯片管脚连接。立体声耳机接口的输幽功率为20mW,而喇叭接口的输出功率为550mW,能产生清晰响亮的声音。(5)支持并行和串行接口,串行方式可以简化与其他模块的连接。(6)支持MP3播放功能,无需外围辅助器件,主控MCU将MP3数据依次送入LD3320芯片内部就可以从芯片的相应PIN输出声音。产品设计可以选择从立体声的耳机或者单声道喇叭来获得声音输出。支持MPEGI(ISO/IEC11172-3),MPEG2(ISO/IEC13818-3)和MPEG2.5layer3等格式。(7)工作供电为3.3V,如果用于便携式系统,使用3节AA电池就可以满足供电需要。3.2.2电路说明图4内部电路的简单逻辑图49 语音控制微波炉系统(1)电压要求:VDD数字电路用电源输入3.0V-3.3VVDDIO数字1/0电路用电源输入1.65V-VDDVDDA模拟电路用电源输入3.0V-4.0V芯片管脚输入电压范围:高电压(逻辑“1”):0.7;lcVDDIO"VDDIO低电压(逻辑“0”):0"0.3~VDDIO(2)时钟(Clock)芯片必须连接外部时钟,可接受的频率范围是4-48MHz;而芯片内部还有PLL频率合成器,可产生特定的频率供内部模块使用。(3)复位对芯片的复位信号(RSTB:1:)必须在VDD/VDDA/VDDIO都稳定后进行。无论芯片正在进行何种运算,复位信号都可以使它恢复初始状态,并使各寄存器复位。如果没有后续的指令(对寄存器的设置),复位后芯片将进入休眠状态。此后,一个CSB:1:信号就可以重新激活芯片进入工作状态。(4)并行接口本芯片可通过并行方式和外部主CPU连接,此时使用8根数据线(PO-P7),4个控制信号(WRB#,RDB#,CS冰,AO),以及一个中断返回信号(INTB#)。(5)串行接口串行接口通过SPI协议和外部主CPU连接,首先要将MD接高电平,而将(SPIS:1:)接地。此时只使用4个管脚:片选(SCS冰)、SPI时钟(SDCK)、SPI输入(SDI)和SPI输出(SDO)。(6)寄存器对芯片的设置和命令,包括传送数据和接受数据,都是通过对寄存器的操作来完成的。例如进行语音识别时,设置识别的关键词语列表,设定芯片的识别模式,谀别完成后获得识别结果都是通过读/写寄存器来完成。播放声音时,就是将MP3格式的数据循环放入FIFO49 语音控制微波炉系统对应的寄存器。(识别结果是通过寄存器返回识别出的关键词语在关键词语列表中的排列序号Index数值,该Index数值是在设置关键词语列表时指定)。(7)喇叭音量的外部控制除了特定寄存器来控制音量以外,芯片外部的电路可以控制喇叭的音量增益。使用的是EPI、EP2、EP3对应的管脚。3.2.3管脚分布图图5管脚分布图3.3显示模块方案选择单片机应用系统最常用的显示器是LED(发光二极管显示器)和LCD(液晶显示器)[2]49 语音控制微波炉系统。这两种显示器可显示数字、字符及系统的状态。它们的驱动电路简单、易于实现且价格低廉,因此得到了广泛应用。现在就这两种显示模块进行分析,选择符合微波炉控制器的模块。方案一:数码管LED显示模块常用的LED显示器有LED状态显示器(俗称发光二极管)、LED七段显示器(俗称数码管)和LED十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示;LED十六段显示器用于字符显示。无论是单个LED(发光二极管)还是LED七段码显示器(数码管),都不能显示字符(含汉字)及更为复杂的图形信息,这主要是因为它们没有足够的信息显示单位。所以,在一些要求显示图文的系统中,不适宜用LED显示模块。方案二:液晶显示器LCD模块LCD是一种被动显示器,具有功耗低,显示信息大,寿命长和搞干扰能力强等优点,它不仅省电,而且能显示大量的信息如文字、曲线、图形等,其显示界面较之数码管有了质的提高,在低功耗的单片机系统中得到大量使用。[4]随着液晶显示技术的发展,LCD显示器的规格众多,其专用驱动芯片也相互配套,使LCD在控制和仪表系统中广泛应用提供了极大的方便。本微波炉控制器系统要显示各种工作模式、微波炉火力档的设定、预约时间和工作时间等等图文复杂的信息,故选择液晶显示器作为显示模块。本系统采用的是FYD12864-0402B[17]型号的液晶显示器。FYD12864-0402B液晶显示器是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字,也可完成图形显示;低电压低功耗是其又一显著特点。[6]由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。49 语音控制微波炉系统本系统中,液晶显示的工作方式是采用并行的工作方式。3.4键盘模块选择方案一:独立式按键结构独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图3.1所示。图中按键输入均采用低电平有效,些外,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。[12]方案二:矩阵式按键单片机系统中,若使用按键较多时,通常采用矩阵式(也称行列式)键盘。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。一个4*4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无按键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。[13]矩阵式键盘大大节省了I/O口线,比较适合微波炉控制系统的要求,为其它的模块省了很多I/O口线,减小了整个系统的硬件开销。49 语音控制微波炉系统3.5语音电路方案选择方案一:蜂鸣器蜂鸣器声音单一,无法实现一连串的语音播放,对一些要求比较高的系统来说,蜂鸣器不适合。本系统要求每次烹饪结束或者预约时间结束都要语音提示,所以本系统不采用蜂鸣器。方案二:语音处理电路在本设计中,提示音及语音播报功能都需要语音电路实现。本设计采用了ISD1730芯片实现语音处理功能,ISD1730属于华邦ISD公司2007年新推出的单片优质语音录放电路,该芯片提供多项新功能,包括内置专利的多信息管理系统,新信息提示(vAlert),双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。其特点为可录、放音十万次,存储内容可以断电保留一百年;两种控制方式,两种录音输入方式,两种放音输出方式;可处理多达255段信息;有丰富多样的工作状态提示;多种采样频率对应多种录放时间;通过音频放大器放大输出;音质好,电压范围宽,应用灵活,价廉物美。该电路可以在单片机的控制下实现按地址录、放音,并能检测到放音是否结束。根据设计需要,语音提示音播放伴有LED灯闪烁提示,直观方便。ISD1730的独立按键工作模式录放电路非常简单(见图6),而且功能强大。不仅有录、放功能,还有快进、擦除、音量控制、直通放音和复位等功能。这些功能仅仅通过按键就可完成。49 语音控制微波炉系统图6语音电路3.6电源方案选择方案一:开关电源用开关稳压电源给整机供电,此方案能够完成本作品电流源的供电,但开关电源比较复杂,而且何种也比较大,制作不便,因而此方案难以实现。方案二:LM7805三端稳压电源单片机控制系统以及外围芯片供电采用LM7805三端稳压器件,通过桥式整流,然后进行滤波稳压。可提供5V直流给单片机,如下图7所示。49 语音控制微波炉系统图7电源电路3.7定时方案选择方案一:采用实时时钟芯片针对计算机系统对实时时钟功能的普遍需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成电路,如DS1287、DS12887、DS1302等。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据并进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用事业存放需长期保存但有时也需变更的数据。由于功能完善,精度高,软件程序设计相对简单,且计时不占用CPU时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。但是实时时钟芯片对硬件要求较高,成本相对而言比较高,所以不采用该方案。[5]方案二:软件控制利用P89V51RB2FN49 语音控制微波炉系统内部的T0定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时,还有烹饪预约时间和烹饪时间的设置。该方案不但节省硬件成本,且能够加深我们对定时/计数器的使用、中断及程序设计方面的理解与提高,简化硬件设计,使整个设计整体小巧玲珑易携带。软件设计较适合现阶段我们的学习和锻炼,因此本系统将采用软件方法实现计时和定时。[6]3.8掉电储存模块为了在断电的情况下能保存好已经设置好的时间和菜单等数据,为此系统采用24C01E2PROM。24C01是一个4Kb的支持I2C总线数据传送协议的串行CMOSE2PROM可用电擦除,可编程自定时写周期(包括自动擦除时间不超过10ms典型时间为5ms)的串行E2PROM。当系统在工作过程中,遇到突然断电的情况下,系统会把断电前的状态和数据自动存进24C01E2PROM中,在系统重新开始工作时自动从24C01E2PROM中读取数据,以继续完成没有完成的工作,实现了系统的掉电存储功能。图8掉电存储模块3.9火力输出方案选择微波炉的心脏是磁控管。这个叫磁控管的电子管是个微波发生器,它能产生每秒钟振动频率为24.5亿赫的微波。这种肉眼看不见的微波,能穿透食物达5cm深,并使食物中的水分子也随之运动,剧烈的运动产生了大量的热能,于是食物煮熟了。这就是微波炉加热的原理。磁控管工作原理大意是把家用220V电转换20000伏高压,经过磁控管转化成2450MHZ的电磁波。磁控管阳极高压3000V-7000V,工作频率2450MHz,阳极电流为300mA-1200Ma[21],微波炉功率调整的原理就是通过高速控制磁控管的开停时间来调整功率,磁控管的功率是不可变的,因此直接控制磁控管的开关状态以实现对微波炉的火力设置是不可取的,现有两种方案选择。49 语音控制微波炉系统方案一:开关电源使用开关电源方式可以达到更高频率的开停速度,而且这个开关频率是可变的,这就实现的微波功率的精度控制,开关电源的使用以电子元件代替了高成本的高压变压器[18],大大节省了制造成本,但是相比较方案二,开关电源还是不合适。方案二:PWM使能脉宽调节模式P89V51RB2FN单片机内部的可编程计数器阵列(PCA)功能模块含有一个特殊的16位定时器,有5个16位的捕获/比较模块与之相连。每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速输出或脉宽调节器。每个模块都与P1口向连。模块0连接到P1.3(CEX0),模块1连接到P1.4(CEX1),依此类推。寄存器CH和CL的内容是正在自由递增计数的16位PCA定时器的当前值。PCA定时器是5个模块的公共时间基准,可通过编程工作在:1/6振荡频率、1/2振荡频率、定时器0溢出或ECI脚的输入(P1.2)。定时器的计数源由CMODSFR的CPS1和CPS0位来确定。所有PCA模块都可用作PWM输出(如图3.6)。输出频率取决于PCA定时器的时钟源。由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器CCAPnL有关。当PCACLSFR的值小于CCAPnLSFR时,输出为低,当PCACLSFR的值等于或大于CCAPnL时,输出为高。当CL的值由FF变为00溢出时,CCAPnH的内容装载到CCAPnL中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWM和ECOM位必须置位,如图9所示。本系统采用了PCA的模块0(P1.3)的使能脉宽调节模式(PWM)来控制单片机输出脉冲的占空比,通过改变输出占空比控制变压器初级绕组的通断电状态,即对其阳极电压的变压器初级绕组通断电的控制来实现对磁控管的开关控制。以此控制变压器的初级绕组微波炉磁控管的停和转,以实现对烹调功率的控制。49 语音控制微波炉系统PCA方框图和PCA模块的PWM模式的方框图分别如图8和图9所示,表10就是输出的火力档位对应的电压。表1火力档位设置表档位(档)012345678输出电额(V)0.20.71.351.952.553.153.754.354.9549 语音控制微波炉系统四、系统设计及操作说明本章主要是介绍微波炉控制器设计系统的设计及系统的操作说明,系统的液晶显示模块采用并行通讯的工作方式,键盘方面则采用程序扫描的工作方式,下面就各模块的软件设计进行了详细的介绍。本系统软件设计的程序见附录。4.1系统软件设计根据实际的硬件电路,为了有效地实现系统的基本功能,用软件方法实现了系统的定时功能、控制系统的语音播放、控制液晶显示等等。软件设计主程序流程图、按键功能扫描子程序图、预约时间子程序图、火力模式子程序图、火力自定义子程序图、烹饪模式子程序图、液晶显示子程序图、语音播放子程序图、定时服务子程序图和按键扫描子程序图分别如下图所示。4.1.1主程序主程序负责与各子程序模块的接口和检查键盘功能号,流程图如图11所示。4.1.2按键功能扫描子程序本系统的矩阵式键盘的工作方式采用的是程序扫描方式,为了能及时发现有键按下,CPU必须不断调用键盘处理程序,对键盘进行扫描以确定调用哪个功能子程序。通过调用按键程序扫描子程序,检测哪些功能按键被按下就进入哪种状态模块,以调用哪个功能子程序,进入哪种工作状态,不断地循环扫描,流程图如图12和图13所示。4.1.3烹饪预约时间子程序进入烹饪预约时间子程序,通过加、减按键和确定键来对时间进行设置,首先是对时的设置,按确定键再对分进行设置,接着对秒进行设置,每次设置完就要按一次确定键,以完成对时间的设置。时间设置完毕返回等待系统开始烹饪,流程图如图14所示。49 语音控制微波炉系统4.1.4火力模式子程序进入火力模式,通过加、减键,来设置烹饪时间,流程同预约时间的设置相同,时间设置完毕就直接开始烹饪,流程图如图15所示。4.1.5火力自定义子程序火力自定义模式,既要设置火力,也要设置烹饪时间,流程是先通过加、减键设置火力档,最高是8档,最低是1档,确定以后再通过加、减键开始设置烹饪时间,火力和烹饪时间都设置完毕,直接开始烹饪,流程图如图16所示。4.1.6烹饪模式子程序烹饪模式是系统预先已经设置好烹饪时间和烹饪火力,只要按确定键就马上进入开始烹饪状态。流程图如图17所示。4.1.7液晶显示子程序液晶显示子程序显示各模式的工作状态,如显示火力模式、烹饪模式、预约时间和烹饪时间,液晶显示器采用的是并行通讯的工作方式。流程图如图18所示。4.1.8定时服务子程序程序检测系统是否开始烹饪,当系统已经进入烹饪状态,定时服务子程序开始工作,首先通过按键扫描判断预约时间标志按键是否被按下,当有按键按下进入预约时间的定时服务,如果没有按键按下,直接进入烹饪时间的定时服务。流程图如图19所示。4.1.9语音播放子程序49 语音控制微波炉系统进入语音播放子程序,当预约时间结束,响应播放语音提示,当烹饪时间结束,响应播放语音提示。语音播放有三种情况,分别是开始烹饪、烹饪时间结束、烹饪预约时间结束三种情况,由三个按键模拟后三种情况,程序不断地对这五种情况进行扫描,当任何一种情况发生,系统立即响应并播放提示音给用户。流程图如图20所示。开始初始化液晶初始化调用键盘扫描子程序调用液晶显示子程序调用语音播放子程序结束图10主程序流程图调用语音或按键操作子程序49 语音控制微波炉系统保护现场调用预约时间子程序调用火力模式子程序调用预约时间子程序调用火力模式子程序YNY调用火力自定义子程序NY调用火力自定义子程序调用烹饪模式子程序N调用烹饪模式子程序恢复现场返回图11按键功能扫描子程序YN49 语音控制微波炉系统保护现场预约时+1>99?预约时=0是减键?预约时-1=0xFF?预约时=99确定键?图12烹饪预约时间子程序恢复现场返回是加键?预约分设置预约秒设置确定键?确定键?YYYYNNNNNNN49 语音控制微波炉系统保护现场是减键?是加键?火力档位+1>8?火力档位=8火力档位-1=0?火力档位=0确定键?调用火力模式子程序恢复现场返回图13火力自定义子程序NNNNNYYYYY49 语音控制微波炉系统保护现场保护现场确定键?开始烹饪返回恢复现场图14烹饪模式子程序显示火力模式保护现场显示烹饪模式显示预约时间显示烹饪时间返回图15液晶显示子程序取消键返回初始状态YYNN49 语音控制微波炉系统保护现场预约时间标志位为1?是否开始烹饪预约时间秒-1=0xFF?预约时间秒=59预约时间分-1=0xFF?预约时间分=59预约时间时-1=0xFF?预约时间结束烹饪时间秒-1=0xFF?烹饪时间秒=59烹饪时间分-1=0xFF?烹饪时间分=59烹饪时间时-1=0xFF?烹饪时间结束恢复现场返回图16定时服务子程序YYNNNNNNNN49 语音控制微波炉系统保护现场恢复现场有键闭合吗?二次调用延时子程序延时12ms有键闭合吗?求闭合键的键号闭合键释放否?键号送到A返回延时6ms图17按键扫描子程序NNYYNY49 语音控制微波炉系统49 语音控制微波炉系统图18语音播放子程序保护现场预约时间结束?播放语音提示烹饪时间结束?播放语音提示无水?播放语音提示播放语音提示恢复现场返回NNNNYYYY炉门是否关?无物?播放语音提示NY49 语音控制微波炉系统4.2硬件电路设计4.2.1常规模式测试在该模式下,主要对烹调、解冻和烧烤三个功能分别进行测试。在每个功能下,通过键盘和液晶显示器选择菜单,设置完后,按启动键,开始模拟加热。这个过程中,液晶显示屏显示火力强度和烹饪时间,烹饪时间倒计时工作,系统正常工作。总之,对系统各种功能测试均正常,具备一般微波炉系统的功能4.2.2定时时间测试表2定时时间误差测量表倒计时设定值实际测得值计时误差10分10秒10分10秒025分25秒25分25秒034分08秒59分59秒34分08秒59分58秒01定时时间测试如表21所示,就是设置食物的烹饪时间或烹饪预约时间与实际时间的误差,由表21可知,当定时时间较短时,系统的定时误差为0;当系统的定时时间较长时,如一个小时,则出现了误差,误差为一个小时有一秒的误差。造成误差的原因是由于晶振和单片机定时器的累积误差而导致系统定时误差的产生。49 语音控制微波炉系统4.2.3语音控制模块测试语音输入命令:“上”、“下”、“左”、“右”、“确定”、“返回”、“开门”可语音识别控制液晶显示屏选择对应的模式,确定烹饪模式和火力大小,调节定时并开始微波。使系统进入工作状态,当烹饪预约时间结束和烹饪时间结束,则语音模块正常工作;49 语音控制微波炉系统五、总结本系统以AT89C52单片机为核心部件,根据综合电子技术、数字与模拟电子电路以及单片机原理的知识,通过软件实现了微波炉的可编程控制系统,且各项功能达到了设计要求。在系统的设计过程中,我们力求硬件线路简单,充分发挥软件编程方便灵活的特点,并最大限度挖掘单片机片内资源,来满足系统设计要求。因时间有限,该系统还有许多值得改进的地方:例如硬件系统的集成度还可以进一步提高,控制系统的智能性有待于进一步加强,按键和系统性能有望进一步优化以增强用户使用的安全性与方便性,软件中某些逻辑判断方面的算法还有待于进一步优化。两个多月终于过去了,心情终于放松了一点点了,通过两个多月的设计,让我对以前的知识温故而知新,把以前所学的知识都很好地联系起来,对以前所学的知识更加巩固。此次的设计让我深深的体会到数字电路的世界是如此的复杂和明了,特别是一些简单的电路的设计,在此之前,我并不怎么会设计电路。在设计档位灯的控制和时钟脉冲的关段和开通以及档位选择的控制电路中,我通过复习以前的知识,看以前的实验课本以及一些图书馆的资料,我终于应付了设计电路这一关。在设计过程中,虽然遇到许多的困难,但是经过细心的研究还是突破了难关,现在回味还是无穷的。焊电路的时候特别需要耐心,没有耐心是无法完成这个即又简单又枯燥的任务,每一条连线和拉线错综复杂,既考眼力,又考脑力,在努力了整整五天,才把整块板焊好。调试的时候特别兴奋,当看到自己的劳动有成果的时候,那时的心情别提有多开心,就像中奖一样。当然在调试过程中也发现在了很多问题,但是我不气妥,有问题才有进步,解决问题的过程就是学习的过程,我一直坚信这一点,通过不断的调试,发现问题并解决问题,我从中学到了很多。虽然刚开始一点头绪都没有,心情依然很烦躁。但是只要用心去专研,持之以恒,就会有新的发现。在设计的过程当中,通过与同学互相交流,互相学习讨论,受益匪浅。在两个月的毕业设计当中,我学会了如何面对困难和解决困难。49 语音控制微波炉系统参考文献[1]江立主编《单片机原理与应用技术》清华大学出版社;[2]恰汗·合孜尔主编《C语言程序设计(第二版)》中国铁道出版社;[3]雷思孝,李伯成,雷向莉.单片机原理及实用技术.西安:西安电子科技大学出版社,2010[4]谢宜仁.《单片机接口技术实用宝典》.北京:机械工业出版社,2011:34-53[5]王东峰,王会良,董冠强.《单片机C语言应用100例》.北京:电子工业出版社,2009:56-73[6]胡宴如、耿苏燕编著《模拟电子技术基础》高等教育出版社;[7]余孟尝主编《数字电子技术基础简明教程》高等教育出版社;[8]王守中、赵朋朋、索世文编著《51单片机应用开发速查手册》人民邮电出版社;[9]格兰仕微波炉使用手册[Z].佛山市格兰仕微波炉电器有限公司.[10]潘永雄、沙河、刘向阳.电子线路CAD实用教程[M].西安:西安电子科技大学出版社,2011.[11]周康生.微波炉的原理、使用与维修[M] .成都: 成都科技大学出版社,1997.4.[12]李曾鹏.微波炉食谱[M] . 广州: 广东科技出版社,2008.6.[13]微波炉控制器的选型及其实例分析[OL].电子设计信息网,2012.7.23.河南质量工程职业学院  毕业设计(论文) [14]萧义娟.微波炉特色菜(一)[M] .广州: 广东科技出版社,2010.[15]林立、李琳.家用微波炉的使用与维修 [M].福州:福建科学技术出版社,2006.[16]许宝发、章雪影.家用电器的原理与维修400问[M]. 北京:机械工业出版社,2011.[17]FYD12864-0402B液晶显示模块使用手册[Z].www.cdfyd.com.[18]翟雷、罗权威、王光锋.可编程微波炉控制器系统设计报告[R].山东:中国海洋大学工程学院,2008.49 语音控制微波炉系统[19]P89V51RD2器件手册[Z].广州:广州周立公单片机发展有限公司.http://www.zlgmcu.com.[20]海尔家用微波炉使用说明书[Z].青岛:青岛海尔微波制品有限公司.2009.1.第一版.http://haier.com.[21]李广弟.单片机基础.北京航空航天大学出版社.201110-156[22]万福君,潘松峰.单片机微机原理系统设计与应用.中国科技大学出版社.201010-31[23]高鹏,安涛,寇怀成.Protel99入门与提高.人民邮电出版社2012.0715-115[24]郭永贞.数字电子技术.东南大学出版社(第二版).2008.02215-225[25]邵群涛.电气制图与电子线路CAD.机械工业出版社.2010.0250-135[26]徐富军,沈建良.C51单片机高效入门.机械工业出版社.2009.1035-46[27]杨将新等.单片机程序设计及应用从基础到实践.电子工业出版社.2010.0335-67[28]KeilSoftwareCompany.Cx51CompilerUser’sGuide.2012[29]Intel.MCS-51FamilyofSingleChipMicrocomputersUser’sManual.2010[30]赵德安等.单片机原理与应用.机械工业出版社.2008.0410-113[31]AT89C51DATASHEEPPhilipsSemiconductors2009.dec49 语音控制微波炉系统致谢从刚开始的一片空白到如今的成果展现最离不开的就是钟立华老师对我的细心指导,在这接近半个学期的学习研究中,随着老师的思路指引我们学会了很多!不仅仅是理论上的,更多的是我的实践能力得到了质的飞跃。老师为了我们放弃假日休息,我由衷的感动和感谢!我从申报课题,组成小组到确定课题方向和分组,之后我约见指导老师,随之又在老师的指导下论证方案,设计电路草图,程序框图,完成开题报告,在老师一遍又一遍的讲解开导下,我也一遍又一遍的修改电路草图,修改程序框图,在很多次的修改后我完善了初步设计,工作不是到此就结束了,接下来的日子完成了电路原理图,我对电路参数又进行了详细的分析,最后我在钟立华老师的指导下,进行了电路板的焊接,即实物制作,又把程序进行来了调试,确保万无一失。至此,我们的实践告一段落了。毕业设计是个繁琐而漫长的过程,因为大家都不在学校,大部分的人在实习,而且分布各个地方,这个原因又给毕业设计带来了极大的困难,老师有什么想法不好和我们进行面对面的交流,讨论在一定程度上受到了阻碍。可是钟立华老师有什么想法都会在第一时间内发邮件给我们,或者电话联系,或者QQ聊天!总之想到一切之可行办法联系我们,绝不耽误我们的毕业设计进程,在此,我忠诚的向钟立华老师说谢谢,谢谢您钟立华老师,这段日子您辛苦了!不积跬步何以至千里,本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业论文工作顺利完成,在此向电气工程系的全体老师表示由衷的谢意。感谢他们三年来的辛勤栽培。49 语音控制微波炉系统通过本次设计,使我对以前所学的知识进行了一个系统的复习,获得了许多新的知识,以及对以前不理解或不懂的地方进行了复习,让我有了新的认识和理解。通过设计,更让我有了实际的设计经验,对即将走上工作岗位的我来说,是一个很好的铺垫。尤其是在单片机系统方面,让我对以前的知识得到了强化,也学到了以前没有学到的知识,对系统的设计有进一步的理解。通过这次毕业设计使自己在理论上作一个归纳和总结。作毕业设计需要各个方面的资料,光靠课堂上所学的那点书本知识是远远不够的,因此,就需要查阅大量的资料,广泛的查阅资料,可以开阔自己的眼界。不仅加深对系统设计的认识,而且可以拓宽自己的思路,通过查阅资料,了解别人或参考别人设计的思路和方法,从而减少在设计中缩短设计周期,减少设计成本,使设计过程少走很多弯路。总之,本次设计是对大学四年来的一个检验和总结,通过设计锻炼了自己的动手能力和分析问题的能力,以及相互协作的团队精神,是走向工作岗位的一次模拟考试。在设计中也遇到了很多的问题,锻炼了我们解决问题的能力。同时我也深知自己知识的贫乏和不足,以及一些基础知识的不牢固。我希望自己在以后的工作和学习中,一定要努力完善自己。在本次的设计中,由于本人水平有限,有很多不足之处在所难免,望老师和同学们加以指正。谢谢!49 语音控制微波炉系统附录A元件清单元器件清单元器件名称型号/个数元器件名称型号/个数单片机AT89C52/1液晶显示模块LCD12864/1掉电存储芯片24C01/1语音识别模块LD3320/1电解电容10U/5电阻10K/1电容30P/2电阻82K/3排阻4.7K/1可调电阻10K/5复位开关--/10晶振12M/140脚芯片座--/1直流电源5V/149 语音控制微波炉系统附录B实物作品图49 语音控制微波炉系统附录C电路原理图49 语音控制微波炉系统附录D完整程序#include#include#definenop_nop_#defineucharunsignedchar#defineuintunsignedintsbitRS=P1^7;sbitRW=P1^6;sbitE=P1^5;#defineDBP0sbitFWD=P1^2;sbitPLAY=P1^3;sbitRESET=P1^4;sbitKEY1=P2^0;sbitKEY2=P2^1;sbitKEY3=P2^2;sbitKEY4=P2^3;sbitKEY5=P2^4;sbitKEY6=P2^5;//sbitKEY7=P2^6;sbitOPEN1=P1^5;sbitOPEN2=P1^6;sbitOPEN3=P1^7;ucharkey_up,key_x;//按键变量ucharfire,min,sec;//火力和时间变量ucharo_hour,o_min,o_sec,o_heating;//预约时间变量ucharrefurbish;//时间刷新标志voiddelay50us(uintm)//for双重嵌套型。公式:t=m*(2*n+12)+偏差值。m比较小时,偏差为+13;m=0时,t=14。{ucharn;for(;m>0;m--)for(n=19;n>0;n--);}voiddelay500us(uintm)//for双重嵌套型。公式:t=m*(2*n+12)+偏差值。m比较小时,偏差为+13;m=0时,t=14。{ucharn;for(;m>0;m--)for(n=244;n>0;n--);}voidlcd_wcom(ucharcom)//写指令函数{delay50us(1);RS=0;RW=0;DB=com;E=1;delay50us(1);E=0;}voidlcd_wdat(uchardat)//写数据函数{delay50us(1);RS=1;RW=0;DB=dat;E=1;delay50us(1);E=0;}voidlcd_init()//初始化{lcd_wcom(0x30);delay50us(2);lcd_wcom(0x30);delay50us(1);lcd_wcom(0x0c);delay50us(2);lcd_wcom(0x01);delay500us(20);lcd_wcom(0x06);delay50us(2);}voidlcd_wstr(uchar*s)//写字符串、、????{while(*s!=0)lcd_wdat(*s++);}voidlcd_clr()//清屏{lcd_wcom(0x01);delay500us(3);}voidkey_get()//按键录入{49 语音控制微波炉系统if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1&&KEY5==1&&KEY6==1)key_up=1;else{if(KEY1==0){key_up=0;key_x=1;}elseif(KEY2==0){key_up=0;key_x=2;}elseif(KEY3==0){key_up=0;key_x=3;}elseif(KEY4==0){key_up=0;key_x=4;}elseif(KEY5==0){key_up=0;key_x=5;}elseif(KEY6==0){key_up=0;key_x=6;}delay500us(100);}}voidspeak(ucharNumber)//选段{uchari;RESET=0;delay500us(100);RESET=1;delay500us(100);i=Number;FWD=0;delay500us(100);FWD=1;delay500us(2000);while(--i){FWD=0;delay500us(100);FWD=1;delay500us(1000);}PLAY=0;delay500us(100);PLAY=1;delay500us(100);}voidrecord()//放音模式{ucharNumber=1;ucharquit=0;do{lcd_clr();lcd_wcom(0x81);lcd_wstr("[录音模式]");lcd_wcom(0x8a);lcd_wstr("第段");lcd_wcom(0x8b);lcd_wdat(Number/10+0x30);lcd_wdat(Number%10+0x30);while(key_up==0)key_get();while(key_up==1)key_get();switch(key_x){case1:case4:if(Number<99)Number++;break;case2:case3:if(Number>1)Number--;break;case5:speak(Number);break;case6:quit=1;}}while(quit!=1);key_x=0;}voiddis_author()//作者{lcd_clr();lcd_wcom(0x80);lcd_wstr("作者:");lcd_wcom(0x93);lcd_wstr("郭壮举");while(key_up==0){key_get();if(key_x==5)record();}key_x=0;}voidheating()//加热倒计时{uchari,j,movie=1;speak(2);TMOD=0x01;TR0=1;ET0=1;EA=1;lcd_wcom(0x98);lcd_wstr("加热中..");49 语音控制微波炉系统while(key_up==0)key_get();while(key_x!=6){key_get();if(refurbish==1){refurbish=0;if(min==0&&sec==0){lcd_wcom(0x98);lcd_wstr("****加热完成****");TR0=0;ET0=0;EA=0;speak(5);continue;}i=movie;j=4-movie;lcd_wcom(0x98);while(j--)lcd_wdat(0x20);while(i--)lcd_wdat(0x02);i=movie;j=4-movie;lcd_wcom(0x9e);while(i--)lcd_wdat(0x02);while(j--)lcd_wdat(0x20);movie++;if(movie>4)movie=0;sec=sec-1;if(sec==-1){sec=59;min=min-1;}lcd_wcom(0x8b);lcd_wdat(min/10+0x30);lcd_wdat(min%10+0x30);lcd_wcom(0x8d);lcd_wdat(sec/10+0x30);lcd_wdat(sec%10+0x30);}}TR0=0;ET0=0;EA=0;key_x=0;}voidordering()//预约倒计时{ucharoing_hour,oing_min,oing_sec;ucharquit=0;oing_hour=o_hour;oing_min=o_min;oing_sec=o_sec;TMOD=0x01;TR0=1;ET0=1;EA=1;lcd_wcom(0x98);lcd_wstr("****准备加热****");while(key_up==0)key_get();while(key_x!=6)49 语音控制微波炉系统{key_get();if(refurbish==1){refurbish=0;if(oing_hour==0&&oing_min==0&&oing_sec==0){o_heating=1;TR0=0;ET0=0;EA=0;quit=1;break;}oing_sec=oing_sec-1;if(oing_sec==-1){oing_sec=59;oing_min=oing_min-1;if(oing_min==-1){oing_min=59;oing_hour=oing_hour-1;}}lcd_wcom(0x89);lcd_wdat(oing_hour/10+0x30);lcd_wdat(oing_hour%10+0x30);lcd_wcom(0x8b);lcd_wdat(oing_min/10+0x30);lcd_wdat(oing_min%10+0x30);lcd_wcom(0x8d);lcd_wdat(oing_sec/10+0x30);lcd_wdat(oing_sec%10+0x30);}}TR0=0;ET0=0;EA=0;key_x=0;}voidorder_mark(ucharsel)//预约光标{switch(sel){case11:lcd_wcom(0x89);lcd_wcom(0x0e);break;case12:lcd_wcom(0x8b);lcd_wcom(0x0e);break;case13:lcd_wcom(0x8d);lcd_wcom(0x0e);break;case22:lcd_wcom(0x9a);lcd_wcom(0x0c);lcd_wdat(0x10);}}voidorder_shift(ucharsel)//调整预约时间{ucharquit=0;chara;do{lcd_wcom(0x89);lcd_wdat(o_hour/10+0x30);lcd_wdat(o_hour%10+0x30);lcd_wstr("时");lcd_wdat(o_min/10+0x30);lcd_wdat(o_min%10+0x30);lcd_wstr("分");lcd_wdat(o_sec/10+0x30);lcd_wdat(o_sec%10+0x30);49 语音控制微波炉系统lcd_wstr("秒");order_mark(sel);lcd_wcom(0x0f);while(key_up==0)key_get();while(key_up==1)key_get();switch(key_x){case1:case4:a=1;break;case2:case3:a=-1;break;case5:case6:quit=1;}if(key_x<5){switch(sel){case11:o_hour=o_hour+a;if(o_hour==24)o_hour=0;if(o_hour==-1)o_hour=23;break;case12:o_min=o_min+a;if(o_min==60)o_min=0;if(o_min==-1)o_min=59;break;case13:o_sec=o_sec+a;if(o_sec==60)o_sec=0;if(o_sec==-1)o_sec=59;}}}while(quit!=1);key_x=0;}voidorder()//预约界面{staticucharsel=11;ucharquit=0;do{lcd_clr();lcd_wcom(0x82);lcd_wstr("[预约]");lcd_wcom(0x92);lcd_wstr("倒计时:");lcd_wcom(0x89);lcd_wdat(o_hour/10+0x30);lcd_wdat(o_hour%10+0x30);lcd_wstr("时");lcd_wdat(o_min/10+0x30);lcd_wdat(o_min%10+0x30);lcd_wstr("分");lcd_wdat(o_sec/10+0x30);lcd_wdat(o_sec%10+0x30);lcd_wstr("秒");lcd_wcom(0x9b);lcd_wstr("开始");order_mark(sel);while(key_up==0)key_get();while(key_up==1)key_get();49 语音控制微波炉系统switch(key_x){case1:if(sel==22)sel=12;break;case2:sel=22;break;case3:if(sel==12||sel==13)sel--;break;case4:if(sel==11||sel==12)sel++;break;case5:switch(sel){case11:case12:case13:order_shift(sel);break;case22:ordering();if(o_heating==1)quit=1;}break;case6:quit=1;}}while(quit!=1);lcd_wcom(0x0c);key_x=0;}voidshift_mark(ucharsel)//火力和加热时间光标{switch(sel){case11:lcd_wcom(0x92);lcd_wcom(0x0c);lcd_wdat(0x10);break;case21:lcd_wcom(0x8b);lcd_wcom(0x0e);break;case22:lcd_wcom(0x8d);lcd_wcom(0x0e);break;case31:lcd_wcom(0x98);lcd_wcom(0x0c);lcd_wdat(0x10);break;case32:lcd_wcom(0x9c);lcd_wcom(0x0c);lcd_wdat(0x10);}}voiddis_fire_time()//显示火力和时间{ucharf;lcd_wcom(0x90);lcd_wstr("火力");f=fire;while(f--)lcd_wdat(0x04);f=8-fire;while(f--)lcd_wdat(0x20);lcd_wcom(0x88);lcd_wstr("时间");lcd_wdat(min/10+0x30);lcd_wdat(min%10+0x30);lcd_wstr(":");lcd_wdat(sec/10+0x30);lcd_wdat(sec%10+0x30);}voidshift_fire_time(ucharcustom_sel)//调整火力和加热时间{ucharquit=0;chara;do{dis_fire_time();shift_mark(custom_sel);lcd_wcom(0x0f);while(key_up==0)key_get();while(key_up==1)key_get();switch(key_x){case1:49 语音控制微波炉系统case4:a=1;break;case2:case3:a=-1;break;case5:case6:quit=1;}if(key_x<5){switch(custom_sel){case11:fire=fire+a;if(fire==0)fire=1;if(fire==9)fire=8;break;case21:min=min+a;if(min==60)min=0;if(min==-1)min=59;break;case22:sec=sec+a;if(sec==60)sec=0;if(sec==-1)sec=59;}}}while(quit!=1);key_x=0;}voidcustom_heat()//自定义界面{ucharquit=0;staticucharsel=11;staticucharcustom_fire=1,custom_min=00,custom_sec=01;fire=custom_fire;min=custom_min;sec=custom_sec;do{lcd_clr();lcd_wcom(0x82);lcd_wstr("[自定义]");dis_fire_time();lcd_wcom(0x99);lcd_wstr("预约");lcd_wcom(0x9d);lcd_wstr("开始");shift_mark(sel);while(key_up==0)key_get();if(o_heating==1){o_heating=0;heating();fire=custom_fire;min=custom_min;sec=custom_sec;key_up=0}while(key_up==1)key_get();switch(key_x){case1:if(sel==21||sel==22)sel=11;elseif(sel==31||sel==32)sel=sel-10;break;case2:if(sel==11||sel==21||sel==22)sel=sel+10;break;case3:if(sel==22||sel==32)sel--;break;case4:if(sel==11||sel==21||sel==31)sel++;break;case5:switch(sel){case11:49 语音控制微波炉系统case21:case22:shift_fire_time(sel);custom_fire=fire;custom_min=min;custom_sec=sec;break;case31:order();break;case32:if(OPEN2==1)speak(3);elseif(OPEN3==1)speak(4);elseheating();fire=custom_fire;min=custom_min;sec=custom_sec;}break;case6:quit=1;}}while(quit!=1);lcd_wcom(0x0c);key_x=0;}voidfast_heat(ucharmenu_sel)//快速加热界面{ucharquit=0;staticucharsel=32;do{lcd_clr();switch(menu_sel){case11:lcd_wcom(0x82);lcd_wstr("[烧烤]");fire=6;min=10;sec=0;break;case12:lcd_wcom(0x82);lcd_wstr("[解冻]");fire=3;min=5;sec=00;break;case21:lcd_wcom(0x82);lcd_wstr("[汤类]");fire=7;min=1;sec=30;break;case22:lcd_wcom(0x82);lcd_wstr("[蒸菜]");fire=5;min=8;sec=00;}dis_fire_time();lcd_wcom(0x99);lcd_wstr("预约");lcd_wcom(0x9d);lcd_wstr("开始");shift_mark(sel);while(key_up==0)key_get();if(o_heating==1){o_heating=0;heating();key_up=0;}while(key_up==1)key_get();switch(key_x){case3:if(sel==32)sel--;break;case4:if(sel==31)sel++;break;case5:switch(sel){case31:order();break;case32:if(OPEN2==1)speak(3);elseif(OPEN3==1)speak(4);elseheating();}break;case6:quit=1;}}while(quit!=1);key_x=0;}voidmenu_mark(ucharsel)//菜单光标{switch(sel){case11:lcd_wcom(0x90);break;case12:lcd_wcom(0x94);break;49 语音控制微波炉系统case21:lcd_wcom(0x88);break;case22:lcd_wcom(0x8c);break;case31:lcd_wcom(0x98);}lcd_wdat(0x10);}voidmenu()//菜单界面{staticucharsel=11;do{lcd_clr();lcd_wcom(0x82);lcd_wstr("[菜单]");lcd_wcom(0x91);lcd_wstr("烧烤");lcd_wcom(0x95);lcd_wstr("解冻");lcd_wcom(0x89);lcd_wstr("汤类");lcd_wcom(0x8d);lcd_wstr("蒸菜");lcd_wcom(0x99);lcd_wstr("自定义");menu_mark(sel);while(key_up==0)key_get();while(key_up==1)key_get();switch(key_x){case1:if(sel==21||sel==22||sel==31)sel=sel-10;break;case2:if(sel==11||sel==12)sel=sel+10;elseif(sel==21||sel==22)sel=31;break;case3:if(sel==12||sel==22)sel--;break;case4:if(sel==11||sel==21)sel++;break;case5:switch(sel){case11:case12:case21:case22:fast_heat(sel);break;case31:custom_heat();}break;case6:dis_author();}}while(1);}time0()interrupt1//50ms定时器{statict_50ms=0;TH0=0x3c;TL0=0xb0;t_50ms++;if(t_50ms==20){t_50ms=0;refurbish=1;}}voidmain(){delay500us(1000);//芯片初始化lcd_init();lcd_wcom(0x91);lcd_wdat(0x02);lcd_wstr("欢迎使用");lcd_wdat(0x02);//开机画面lcd_wcom(0x89);lcd_wstr("智能微波炉");speak(1);menu();//显示菜单}49'