全自动豆浆设计说明书_第1页
全自动豆浆设计说明书_第2页
全自动豆浆设计说明书_第3页
全自动豆浆设计说明书_第4页
全自动豆浆设计说明书_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、郑州华信学院课程设计任务书题 目 豆浆机程序及仿真设计 专 业 班 级 学 号 姓 名 完 成 期 限: 指导教师签名: 课程负责人签名: 年 月 日 郑州华信学院课程设计说明书题目: 豆浆机程序及仿真设计 姓 名: 院 (系): 专业班级: 学 号: 指导教师: 成 绩: 时间: 年 月 日至 年 月 1 功能介绍全自动家用豆类和谷物处理机(即全自动豆浆机)具有按预设模式自动粉碎谷物、加热功能、防止溢出、处理完毕报警等基本功能。一般可以处理如豆类、玉米、其他五谷杂粮、蔬菜等多种食品。全自动家用豆类和谷物处理机的处理食品的过程通常为:加热粉碎1加热粉碎2加热完成报警,整个加工过程的进行按时间控

2、制。由于食品原料的物理特性不同,在加工处理时采用不同的加工(过程)模式,其主要区别在于加热和粉碎时间的长短不同。在工作过程中,被加工的食品液体被限定在某一个给定的液位范围内,当液体加热时泡沫达到溢出液位时,停止加热,待脱离溢出液位区时继续加热。2 设计参数电机 5W 24VDC加热器 500W 220V AC加热容器 1.25升电力供应:220V AC3 设计要求实现多模式选择。被选中的模式用LED显示器表明实现不同模式下的加工过程:加热粉碎1加热粉碎2加热完成报警,整个加工过程的进行按时间控制,时间自定液位检测和控制:使被加工的食品液体限定在某一个给定的液位范围内,当液体溢出容器时,报警并断

3、电。4 设计系统各个部分的工作电源。目 录 1摘 要 2题目:全自动豆浆机控制系统的设计 2设计要求 21.功能介绍 22.设计参数 33.设计要求 3前 言 4方案分析 5硬件需求分析 5软件功能分析 7主要硬件元件分析 8STC89C52RC芯片的介绍 874LS245驱动器 9数码显示管 10调 试 101.接电源等待状态 102.模式选择 113.加热状态 124.粉碎状态 125.工作完成状态 136.超液位中断状态 147.液体溢出中断和液位过低中断状态 14总 结 15附 录 16豆浆机控制程序清单 16参考资料 22& 摘 要本豆浆机的控制系统是基于可编程的AT89C5

4、2单片机来实现的。本控制系统主要实现以下几个功能:1. 针对不同的豆类和谷物进行不同程度的加热粉碎,即有不同的工作模式2. 不同的工作模式和加热粉碎时间用数码管予以显示3. 在整个过程中,将液位限制在安全的范围之内4. 处理完毕后,进行报警并关断电源5. 液体溢出或液位过低时,立即关断电源并报警在豆浆机工作过程中,全部用软件控制。对不同物料的不同处理用处理时间加以区分。定时系统采用AT89C52内部的定时器T0来完成。先用T0定时器定时20ms,并用循环指令定时1s加定时,之后在不同的时间段采取不同的操作。液位限定、液体溢出保护和液位过低保护用中断来控制,其检测用防溢电极、温度传感器等控制传感

5、器来实现。& 前 言 豆浆机是一种新型的家用饮料机,以黄豆等谷物等为原料,直接加工成熟的味道鲜美的热豆浆。豆浆机由粉碎谷物的电机、豆浆加热器和控制电路三大部分组成。用AT89C52单片机研制的全自动豆浆机的控制系统,当放入适量浸泡好的的谷物后,加入适量的冷水,插入220V交流电源,豆浆机指示灯亮起,按下按钮,先对豆浆机进行水位检测,符合要求后加热管开始对水进行加热,当加热到一定时间后,豆浆机停止加热,并启动磨浆电机开始粉碎,运转一定时间后停止运转,继续加热。在加热过程中当温度达到一定值时豆浆上溢,当豆浆沫接触到防溢电极时,停止加热,待液位下降至安全液位后,继续加热。如果温度过高,致使液

6、体沸腾,溢出容器,或液体减少至过低液位时,立即触动检测开关,关断电源,停止工作并报警。正常情况下,当粉碎2次后,谷物已经粉碎完全。之后再对豆浆进行最后的加热,豆浆就加工好了。此时系统关断电源并发出报警信号,等待主人处理。可见,只要按下启动按键,豆浆机就开始工作,一会儿就能喝到美味又营养的豆浆。整个过程由单片机全自动控制,并配合安全保护措施,用起来更加的方便、更加的安全。& 方案分析硬件需求分析硬件上豆浆机的控制系统首先需要有一个单片机芯片作为控制核心来控制它的工作过程,我们选用AT89C52。模式选择时需用3×1个微型按钮开关。因为要显示工作模式和工作时间,我们选择了1个共阴

7、极的SEG-MPX6-CC LED数码显示管。并配套选用74LS245芯片以驱动数码管、 74LS138芯片以产生数码管片选信号。 在刚开始时需要进行水位检测,这就需要一个传感器,为了减少成本,这里采用一个开关来模拟代替传感器的作用,然后开始进行加热和粉碎。本设计过程用LED灯进行模拟指示即可。超液位、液体溢出和液位过低信号同样用开关来模拟。对豆浆再次加热完毕后,预示着豆浆加工完成了,最后发出报警信号,这里就选用一个报警器和一个蜂鸣器就可以了。综上,现实中需要的硬件有1个AT89C52,1个SEG-MPX6-CC LED数码显示管,2个74LS245芯片,1个74LS138芯片,4个BUTTO

8、N开关3个,1个电动机(带粉碎刀头),1个发热板,2个LED指示灯(电源指示和报警灯),1个蜂鸣器和2个继电器等。而本模拟控制过程只需1个AT89C52,1个SEG-MPX6-CC LED数码显示管,2个74LS245芯片,1个74LS138芯片, 4个BUTTON开关,3个LED指示灯,1个蜂鸣器等即可。本豆浆机系统框图如下图1a和图1b所示:89C52显示器指示灯键 盘电机和发热板中 断保 护 图1a 系统框图图1b 豆浆机模拟控制系统硬件电路图(注:键1、键2、键3分别为模式1、模式2、模式3的选择开关。SW2为超液位信号模拟开关。SW1和SW3分别为液体溢出和液位过低信号模拟开关。LE

9、D D3和D5分别为加热和粉碎指示灯。功能工作时第3个数码管显示模式,第5、6两个数码管显示计时时间。)软件功能分析超液位选择模式设置初值加 热粉 碎加 热粉碎2次关电源,报警开 始结 束YNYN软件上就是对单片机的编程了,在编程前需要画出一个流程图,如图2 。根据豆浆机控制系统的设计要求及目的,即插上电源按下按钮后,先对豆浆机进行水位检测,符合要求后,再设定工作模式。根据豆浆机的工作场合,我们模拟设定3个工作模式:模式1,加热6S,粉碎6S;模式2,加热9S,粉碎9S;模式3,加热12S,粉碎12S。当粉碎2次,加热3次后,豆浆机完成工作,此时关电源,报图2 主程序简单流程图警。另外,程序需

10、设3个中断:超液位中断、液位溢出中断和液位过低中断(液位溢出中断和液位过低中断可用一个中断)。超液位中断时,系统暂停工作,报警灯亮。待液位下降至安全位置时,继续之前的操作;当液位溢出中断和液位过低中断时,系统直接断电结束操作,报警灯亮,蜂鸣器响。按照上述对豆浆机控制系统的要求,软件程序应包括主程序、键盘子程序、显示子程序、两个中断子程序和报警子程序。具体程序见附图。用软件的编程配合硬件的设计以至于完成整个豆浆机控制系统的设计。& 主要硬件元件分析AT89C52芯片的介绍结构,、32个可编程I/O口线、一个6向量两级中断结构,一个全双工串行通信口,片内振荡及时钟电路。同时,AT89C52

11、可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存RAM中的内容。但振荡器停止工作并禁中的内容,但振荡器停止工作AT89C52提供以下标准功能:8k字节可重擦写Flash闪速存储器、256×8字节内部RAM、32个可编程I/O口线、一个6向量两级中断图3AT89C52RC的引脚封装图 止其它所有部件工作直到下一个硬件复位。AT89C52的引脚封装图如上图 3所示。(1) 电源及时钟引脚l Vcc:电源接入引脚;l GND:接地引脚;l XTAL1:晶体振荡器接入的一个引脚(采用

12、外部振荡器时,此引脚接地);l XTAL2:晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。(2) 控制线引脚l RST:复位信号输入引脚。(3) 并行I/O口引脚l P0.0-P0.7:一般I/O口引脚或数据/低位地址总线复用引脚;l P1.0-P1.7:一般I/O口引脚l P2.0-P2.7:一般I/O口引脚或数据/高位总线引脚;l P3.0P3.7:一般I/O口引脚或第二功能引脚。74LS245驱动器表1 74LS245功能表如图4 74LS245的引脚图,图表一为其功能表。图中CE为使能端,AB/BA为方向控制端,A1-A8为A端的数据输入/输出,B1-

13、B8为B端的数据输入/输出。74LS245是一种三态输出的8总线收发驱动器,无锁存功能。当CE为低电平时,如果AB/BA为高电平,则74LS245将A端的数据传送至B端;如果AB/BA为低电平,则74LS245将B端的数据传送至A端。在其他情况下不传送数据,输出呈高阻态。 CEAB/BA操作LHABLLBAH×高阻图4 74LS245的引脚图数码显示管8段LED数码管是一种显示设备。它是由若干个发光二极管组成的显示字段。有共阳极和共阴极两种连接方式,在此设计中我们都用共阴极连接,即把所有的发光二极管的阴极连接一起。共阴数码管的公共端COM接低电平,当某个显示字段控制端接高电平时,对应

14、的字段就点亮,当显示字段控制端接低电平时,该显示字段熄灭。由于每个显示字段显示通常需要十到几十毫安的驱动电流,因此显示控制信号必须经过驱动电路(即通过74LS245)才能使显示器正常工作。& 调 试1. 接电源等待状态当接通电源且没有按键选择模式时,电源指示灯亮。显示器显示“0 0”,表示处于等待状态。如图5:电源指示灯图5 接电源等待状态出现的问题及解决办法:刚开始测试时,上电后显示管显示乱码。原因可能有三:1.编程问题,2.电路焊接问题,3.芯片问题。经过反复测试,终于找出原因,改正后显示管显示正常。2. 模式选择在等待状态下按下键1、键2或键3时,就会选择工作模式1、模式2或模式

15、3。现以模式3为例,其余两种模式雷同。当按下键3时,显示器显示“3 12”,表示选择了模式3,加热时间是12S。如图6所示。此后显示器上模式“3”闪三次后,豆浆机开始工作。键1键2键3图6模式选择出现的问题及解决办法:在此过程中,由于89c51芯片的原因,使得键盘比较混乱。原来设定的按键不会工作了。经过反复测试,测定了芯片P2口的管脚顺序,重新定义了按键,之后工作正常。3. 加热状态当显示器上模式“3”闪三次后,豆浆机开始第一次加热,加热指示灯(红灯)亮,计时显示器开始倒计数。如图7:加热指示灯图7 加热状态出现的问题及解决办法:加热时发现豆浆机倒计时12S和现实中的12S有较大的误差。经分析

16、找出病因:在定时器定时1S(20MS×50)的过程中,没有考虑显示程序所调用的1MS时间。经改进,将定时器定时改为19MS×50。定时准确了。4. 粉碎状态当第一次加热计时到0时,加热结束,开始第一次粉碎。计时显示器重新开始倒计时,粉碎指示灯(蓝灯)亮。如图8所示。之后又进行第二次加热,第二次粉碎。粉碎指示灯图8 粉碎状态5. 工作完成状态当两次粉碎,三次加热结束后,豆浆机工作完毕。此时豆浆机主动关电源,同时报警灯亮,蜂鸣器响。如图9报警灯蜂鸣器图9 工作完成状态6. 超液位中断状态当在工作中液位超过安全位置时,豆浆机暂停工作,报警灯亮。如图10。待液位回落后,继续接着执行

17、之前的操作。超液位中断开关图10超液位中断状态7. 液体溢出中断和液位过低中断状态在工作中当液体溢出或液位过低时,豆浆机直接停止工作,并报警。报警灯亮,蜂鸣器响。如图11:溢出,液位过低中断开关图11 液体溢出中断和液位过低中断状态& 总 结经过将两周的单片机课程设计,我做的全自动家用豆浆机的控制系统的设计终于完成了。虽然经过了多次曲折的修改和整理,最终还是比较圆满的实现了本次设计的基本要求。针对这个控制系统,我比较满意的有两点:第一,完美的安全防范措施。其有三重安全保护,使豆浆机的使用更安全;第二,全过程完全自动化,只需要将豆类等谷物和水加入豆浆机,并按键,片刻之后就会变成鲜美的豆浆

18、。操作简便,更加人性化。在本次设计的过程中,我发现了很多的问题,并且也学会了很多东西。此刻我已经对单片机这科有了比较深的认识,能熟练地运用相关的编程软件和仿真软件,会用单片机去做一些比较简单的控制系统。这就是我在这次课程设计中的最大收获。虽然我的作品成功了,但我觉得还有一些可以改进的地方。第一:我将同一个模式下的加热时间和粉碎时间设置成相同的,虽然程序简单了,但不是很合理;第二:可以再加上加热很粉碎次数的统计;第三:我的控制系统中加热很粉碎是通过时间来控制的,我觉得要是改用温度来控制就更好了。等等。& 附 录豆浆机控制程序清单 ORG 0000H LJMP MAIN ORG 0003H

19、 LJMP INT0_RD ;INT0口中断(液位溢出和液位过低中断)入口 ORG 0013H LJMP INT1_RD ;INT1口中断(超液位中断) ORG 0030H ;#【主程序】# ;置初始状态MAIN: MOV SP,#70H SETB IT0 ;INT0口中断触发方式为跳变触发 SETB IT1 ;INT1口中断触发方式为跳变触发 SETB EA ;开放中断 MOV IE,#85H ;开中断 MOV IP,#01H ;INT0中断源为高优先级,INT1中断源为低优先级·· CLR P3.0 ;设初值 CLR P3.1 MOV 30H,#00H ;设置时间单元清

20、零 MOV 31H,#00H ;显示模式单元清零 MOV 34H,#00H ;显示定时时间单元清零 MOV 32H,#00H ;计时显示十位清零 MOV 33H,#00H ;计时显示个位清零SCAN_RD:LCALL XS_RD ;开始无键按下,显示00 LCALL SCAN_KEYB ;模式选择 JZ SCAN_RD ;有键按下 向下 LCALL KEY_PRSD MOV DPTR,#JMP_RD ;设置转移表首地址 MOV A,R5 ;取键值 RL A ;键值乘以2 INC R5 JMP A+DPTRJMP_RD:AJMP PRO_00 ;模式0 AJMP PRO_01 ;模式1 AJMP

21、 PRO_02 ;模式2 PRO_00:MOV 30H,#06 ;定时时间为6s AJMP LOOP_WPRO_01:MOV 30H,#09 ;定时时间为9s AJMP LOOP_WPRO_02:MOV 30H,#12 ;定时时间为12s AJMP LOOP_W ;模式选择后闪烁3次···LOOP_W:MOV 34H,30H ;调入定时时间显示数据 MOV R7,#3 ;闪烁3次···LOOP_RD:MOV R6,#30 ;延时20MS的次数···LOOP0_RD:LCALL XS_RD ;调显示程序 L

22、CALL DL20MS DJNZ R6,LOOP0_RD ;1S了? MOV R6,#25 ;延时20MS的次数···LOOP1_RD:LCALL XS0_RD LCALL DL20MS DJNZ R6,LOOP1_RD ;0.5S了? DJNZ R7,LOOP_RD ;闪烁3次了?··· ;开始工作···· MOV R6,#02 ;粉碎次数 LCALL JR_RDG00N_GZ:LCALL FS_RD LCALL JR_RD DJNZ R6,G00N_GZ LCALL BAOJ_WRD ;#【

23、主程序END】# ;加热子程序JR_RD: MOV 34H,30H ;给显示单元置数···· SETB P3.0 ;加热 MOV R4,#50 ;20MS程序循环50次1GOON_JR:LCALL TIME_19MS ;调用定时20MS子程序···· LCALL XS_RD ;显示 DJNZ R4,GOON_JR ;到1S了吗? MOV R4,#50 ;20MS程序循环50次1 DJNZ 34H,GOON_JR ;倒计时完成了吗? CLR P3.0 ;停止加热 RET ;粉碎子程序FS_RD: MOV 34H,30

24、H ;重新给显示单元置数···· SETB P3.1 ;粉碎 MOV R4,#50 ;20MS程序循环50次1GOON_FS:LCALL TIME_19MS ;调用定时20MS子程序··· LCALL XS_RD ;显示 DJNZ R4,GOON_FS ;到1S了吗?· MOV R4,#50 ;20MS程序循环50次1 DJNZ 34H,GOON_FS ;粉碎完毕? CLR P3.1 ;停止粉碎 RET ;键盘子程序SCAN_KEYB:MOV P2,#0EFH ;扫描有无按键按下 MOV A,P2 ANL A,#0

25、EFH XRL A,#0EFH JZ NO_KEY ACALL DL20MS ANL A,#0EFH XRL A,#0EFH JZ NO_KEYNO_KEY: RETKEY_PRSD: MOV R4,P2 MOV R5,#00H MOV DPTR,#KEY_TABCAL_VAL: MOV A,R5 MOVC A,A+DPTR ;查键值表 XRL A,R4 JZ FIXED INC R5 ;键值加1 SJMP CAL_VAL FIXED: MOV A,P2 ;判断按键是否释放 ANL A,#0EFH XRL A,#0EFH JNZ FIXED ACALL DL20MS MOV A,P2 ANL

26、A,#0EFH XRL A,#0EFH JNZ FIXED RETKEY_TAB:DB 0EBH,0EDH,0EEHDL20MS: MOV R3,#20DD1:MOV R4,#200DD2:NOP NOP NOPDJNZ R4,DD2DJNZ R3,DD1RET ;显示子程序XS_RD: MOV 31H,R5 ;调入模式显示数据 MOV R0,#31H ;显示缓存区数据 MOV P1,#00000010B ;第三个灯为显示位置 ACALL DISP_RD ;显示一位 XS0_RD: MOV A,34H ;将定时数据分为两位····· MOV B

27、,#10 DIV AB MOV 32H,A ;十位 MOV 33H,B ;个位 CJNE A,#00H,XS1_RD0 ;十位是否为0? AJMP XS1_RDXS1_RD0:MOV R0,#32H MOV P1,#00000100B ;第五个为显示位置 ACALL DISP_RD ;显示一位 XS1_RD: MOV R0,#33H ;显示缓存区数据 MOV P1,#00000101B ;第六个灯为显示位置 ACALL DISP_RD ;显示一位 RETDISP_RD:MOV DPTR,#LED_RD ;字型码表首地址 MOV A,R0 ;取显示数据 MOVC A,A+DPTR ;求显示数据的

28、字型码 MOV P0,A ;输出字型码 ACALL DL1MS ;稳定显示1ms RET ;返回 ;延时小程序 DL1MS: MOV R3,#200DDD1: NOP NOP NOPDJNZ R3,DDD1RET ;字型码表LED_RD: DB 3FH,06H,5BH,4FH,66H; '0,1,2,3,4' DB 6DH,7DH,07H,7FH,6FH; '5,6,7,8,9' ;定时19MS子程序 TIME_19MS:MOV TMOD,#01H ;设置工作方式1和定时模式 MOV TH0,#0B5H ;计数初值为46536(O) MOV TL0,#0C8H

29、SETB TR0 ;启动定时器CONT_RD: JBC TF0,OVER_RD ;是否溢出 SJMP CONT_RDOVER_RD: MOV TH0,#0B5H ;重新设计数初值为46536(O) MOV TL0,#0C8H RET ;溢出中断和液位过低中断 ORG 0200HINT0_RD: LCALL BAOJ_WRD ;直接报警,并关发热器和电动机电源 RETI ;超液位中断 ORG 0300HINT1_RD: CLR EA ;关中断 PUSH ACC ;保护现场 PUSH PSW SETB EA ;开中断 SETB RS0 ;把工作寄存器切换到1区 MOV P1,#00000111B ;报警灯亮 JNB P3.0,INT0_FS ;判断是否在加热? · CLR P3.0 ;停止加热WAIT_RD: JNB P3.3,WAIT_RD ;液位是否下降? SETB P3.0 ;继续极热 LJMP OKINT0_FS: CLR P3.1 ;停止粉碎WAIT0_RD:JNB P3.3,WAIT0_RD ;液位是否下降? SETB P3.1 ;继续粉碎OK: CLR EA ;关中断··· POP PSW ;恢复现场 POP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论