基于单片机的声控燃气灶设计论文.docx

上传人:时光煮雨 文档编号:15014252 上传时间:2022-03-04 格式:DOCX 页数:15 大小:2.20MB
返回 下载 相关 举报
基于单片机的声控燃气灶设计论文.docx_第1页
第1页 / 共15页
基于单片机的声控燃气灶设计论文.docx_第2页
第2页 / 共15页
基于单片机的声控燃气灶设计论文.docx_第3页
第3页 / 共15页
基于单片机的声控燃气灶设计论文.docx_第4页
第4页 / 共15页
基于单片机的声控燃气灶设计论文.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《基于单片机的声控燃气灶设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的声控燃气灶设计论文.docx(15页珍藏版)》请在三一文库上搜索。

1、 基于凌阳单片机的声控智能化燃气灶设计摘要:文章以凌阳公司16位单片机SPCE061A为核心,与传统电子燃气灶结合,设计出家庭厨房应用的声控智能化燃气灶。该燃气灶是用语音控制点火、火力大小调节以及熄火。在硬、软件设计中,系统采用SPCE061A型单片机为控制核心,使用C语言为编程语言,提高了系统整体的稳定性。关键词:普通燃气灶;SPCE061A;步进电机;脉冲点火器,光耦隔离器;声控燃气灶是家庭普及率非常高的厨房电器,科技在不断发展,燃气灶也在不断更新换代,百姓的生活逐步走向自动化、完美化。电子燃气灶正在朝着自动化、智能化方向发展。本文设计的智能燃气灶实现了语音控制燃气灶的电火、火力大小以及熄

2、火等功能。设计并实现智能燃气灶,对于实现厨房智能化、自动化有着重要的现实意义。一、工作原理该燃气灶系统由普通燃气灶、SPCE061A单片机、步进电机、脉冲点火器,光耦隔离器、51单片机等组成。图片1:普通燃气灶 图片2:SPCE061A单片机 图片3:步进电机图片4:光耦隔离器 图片5:脉冲点火器智能燃气灶系统的工作原理:1. 系统接收来自使用者的“点火”语音信号,由单片机给出相关信号控制步进电机打开燃气阀给燃气灶通天然气,同时控制脉冲点火器点火;2. 当系统接收到来自使用者的“右转”(大火)语音信号时,由单片机给出相应信号控制步进电机正转合适角度调节燃气阀增大燃气进气量,来达到增加火力的目的

3、;3. 当系统接收到来自使用者的“左转”(小火)语音信号时,由单片机给出相应信号控制步进电机调节反转合适角度燃气器阀减小燃气进气量,从而实现减小火力;4. 当系统接收到来自使用者的“熄火”语音信号时,由单片机给出相应信号控制步进电机调节燃气阀停止供气,以达到熄火目的。二、硬件设计我们选择凌阳公司(Sunplus)开发的16位SPCE061A,它的突出优点是低功耗和功能集成,内部的语音资源可实现语音控制功能,并适合于自动信号采集、自动控制电机、点火器等领域应用。该系统的控制部分电路,主要由SPCE061A单片机、步进电机、脉冲点火器、光耦隔离器构成,其中通过步进电机来控制燃气阀的开断。控制部分以

4、凌阳SPCE061A单片机为控制核心。(一)点火部分点火部分由两部分组成,包括光耦隔离器模组和脉冲点火器部分。光耦隔离器模组用于实现弱电控制强电,其目的是减小脉冲点火器产生的高压脉冲对单片机的影响。该模组接单片机端有三个接线端,分别GND、VCC、IN三个端口,IN端接单片机相应IO口;接脉冲点火器端有两个端口分别为COM、CK,COM端接脉冲打火器的GND端,CK端接脉冲打火器的VCC端。脉冲点火器产生电火花点燃燃气,完成点火需要外接电源,外接电源由三节1.5V干电池提供。光耦隔离器制板图(二)火力控制部分火力控制主要有两种方法,一种是通过传统旋钮进行对火力大小进行控制,另一种是通过控制步进

5、电机来控制火力大小,从大火力转到小火力控制时通过单片机发出控制信号,控制步进电机,然后再控制燃气阀调节进气口的进气量来调节火力大小和关断燃气灶的。控制火力过程如下,通过单片机控制启动点火装置与步进电机,将燃气灶点燃并让火力处于中火位置。当需要大火时,使用者发出“大火”语音信号,CPU接收到语音信号并给出相应控制信号,控制步进电机产生相应动作,调节燃气阀增大进气量,从而增加火力。当需要小火时,使用者发出“小火”语音信号,CPU接收到语音信号并给出相应控制信号,控制步进电机产生相应动作,调节燃气阀减小进气量,从而减小火力。三、软件设计本系统使用凌阳单片机支持的C语言进行编写,程序采用模块化的编程方

6、法,将程序分为主程序、脉冲点火程序、火力大小调节程序等几部分。(1) 主程序流程图51单片机程序流程图:开始扫描点火信号P101点火 扫描p11p13熄火左转(小火)右转(大火)结束(二)程序设计 SPCE061A语音控制程序#include bsrsd.h#define NAME_ID 0x100#define COMMAND_ONE_ID 0x101#define COMMAND_TWO_ID 0x102#define COMMAND_THREE_ID 0x103#define COMMAND_FOUR_ID 0x104#define RSP_INTR0#define RSP_NAME0#

7、define RSP_FIRE1#define RSP_GUARD2#define RSP_AGAIN3#define RSP_NOVOICE4#define RSP_NAMEDIFF5#define RSP_CMDDIFF6#define RSP_STAR 7#define RSP_MASTER8#define RSP_HERE9#define RSP_GUNSHOT0#define RSP_PATROL11#define RSP_READY12#define RSP_COPY13#define RSP_NOISY14/.全程变量.int gActivated = 0;/该变量用于检测是否有

8、触发命令,当有识别出语句 /为触发名称则该位置1 int gTriggerRespond = RSP_MASTER, RSP_HERE, RSP_MASTER;int gComm2Respond = RSP_PATROL, RSP_READY, RSP_COPY;extern void ClearWatchDog();int PlayFlag = 0;void PlayRespond(int Result)BSR_StopRecognizer();SACM_S480_Initial(1);SACM_S480_Play(Result, 3, 3);while(SACM_S480_Status()

9、&0x0001) != 0)SACM_S480_ServiceLoop();ClearWatchDog();SACM_S480_Stop();BSR_InitRecognizer(BSR_MIC);BSR_EnableCPUIndicator();int TrainWord(int WordID, int RespondID)int res;PlayRespond(RespondID);while(1)res = BSR_Train(WordID,BSR_TRAIN_TWICE);if(res = 0) break;switch(res)case -1: /没有检测出声音PlayRespond

10、(RSP_NOVOICE);return -1;case -2: /需要重新训练一遍PlayRespond(RSP_AGAIN);break;case -3: /环境太吵PlayRespond(RSP_NOISY);return -1;case -4: /数据库满 return -1;case -5: /检测出声音不同if(WordID = NAME_ID)PlayRespond(RSP_NAMEDIFF);/两次输入名称不同elsePlayRespond(RSP_CMDDIFF);/两次输入命令不同return -1;case -6: /序号错误return -1;return 0;int

11、main()int x,res, timeCnt = 0, random_no = 0;InitIO();BSR_DeleteSDGroup(0);/ 初始化存储器RAM/PlayRespond(RSP_INTR); / 播放开始训练的提示音请输入触发名称/.训练名称.while(TrainWord(NAME_ID,0) != 0) ; /.训练第一条命令.while(TrainWord(COMMAND_ONE_ID,1) != 0) ;/.训练第二条命令.while(TrainWord(COMMAND_TWO_ID,2) != 0) ;/.训练第三条命令.while(TrainWord(CO

12、MMAND_THREE_ID,12) != 0) ;/.训练第四条命令.while(TrainWord(COMMAND_FOUR_ID,13) != 0) ;/.开始识别命令.BSR_InitRecognizer(BSR_MIC); /辨识器初始化BSR_EnableCPUIndicator(); /启动实时监控PlayRespond(RSP_STAR); /播放开始辨识的提示音while(1)random_no +;if(random_no = 3) random_no = 0;res = BSR_GetResult();if(res 0) /识别出命令if(gActivated)timeC

13、nt = 0;switch(res)case NAME_ID: /触发命令响应PlayRespond(gTriggerRespondrandom_no);break;case COMMAND_ONE_ID: /识别第一个命令PlayFlag = 1;LED_RED_ON();PlayFlag = 0;gActivated = 0;break;case COMMAND_TWO_ID: /识别到第二条命令LED_RED_OFF(); gActivated = 0;break;case COMMAND_THREE_ID: /识别第三条命令 LED_GRE_ON(); for(x=500;x0;x-)

14、; LED_REDD_OFF(); gActivated = 0; break; case COMMAND_FOUR_ID: /识别第四条命令 LED_GRE_OFF(); for(x=500;x0;x-); LED_REDD_OFF(); gActivated = 0; break; elseif(res = NAME_ID)PlayRespond(gTriggerRespondrandom_no);gActivated = 1;timeCnt = 0;else if (gActivated)if (+timeCnt 450)/超出定时PlayRespond(RSP_NOVOICE); /在

15、设定时间内没有检测出声音gActivated = 0;timeCnt = 0;51单片机控制程序部分#include sbit D1=P00;sbit D2=P01;sbit D3=P02;sbit D4=P03;sbit openfire=P07; unsigned char a=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9;void delay(int x) int m,n; for(m=x;m0;m-) for(n=10;n0;n-);void dianjiz(int x) int z,i=0;int cishu;cishu=x;while (cishu

16、-) for(z=50;z0;z-)for(i=0;i0;z-)for(i=7;i=0;i-)P1=ai; delay(12);void dianhuo() delay(2000); openfire=0;delay(1000);openfire=1;void main()unsigned int fire=0,huoli; while (1) if(D1=0)&(fire=0) huoli=2; dianjiz(2); dianhuo(); fire=1; if(D2=0)&(fire=1) dianjif(huoli);fire=0; if(D3=0)&(fire=1) /大火调节 dianjiz(1);huoli+; if(D4=0)&(fire=1)/小火调节 dianjif(1);huoli-; 四、结语采用基于凌阳单片机的语音智能燃气灶,是在传统的燃气灶的基础上加入了智能控制功能,其智能控制功能是由单片机来实现的。该设计很好的解决了传统燃气灶只能用手动大火、手动调节火力问题,同时利用凌阳单片机提供的语音功能,可以方便实现声控功能,从而实现厨房的智能化、自动化。该产品有广泛的应用前景,既适用于家庭,也适用于各种餐厅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1