豆浆机毕业设计Word下载.docx
《豆浆机毕业设计Word下载.docx》由会员分享,可在线阅读,更多相关《豆浆机毕业设计Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
之后再对豆浆进行最后的加热,豆浆就加工好了。
此时系统关断电源并发出报警信号,等待主人处理。
可见,只要按下启动按键,豆浆机就开始工作,一会儿就能喝到美味又营养的豆浆。
整个过程由单片机全自动控制,并配合安全保护措施,用起来更加的方便、更加的安全。
3.设计要求
3.1.硬件设计原则
一个单片机应用系统的硬件设计包含两部分内容:
一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。
二是系统配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。
系统的扩展和配置设计应遵循下列原则:
(1)尽可能选择典型电路,并符合单片机的常规用法。
为硬件系统的标准化、模块化打下良好基础。
(2)系统的扩展与外围设备配置的水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。
(3)硬件结构应结合应用软件一并考虑。
硬件结构与软件方案会产生相互影响,考虑的原则是:
软件能实现的功能尽可能有软件来实现,以简化硬件结构。
但必须注意,由软件实现硬件功能,其响应时间要比直接用硬件实现来得长,而且占用CPU时间。
因此选择软件方案时,要考虑到这些因素。
(4)整个系统中相关的器件要尽可能做到性能匹配,例如选用晶振频率时,存储器的存取时间有限,应该选择允许存取速度较高的芯片;
选择CMOS芯片单片机构成低功耗系统时,系统中的所有芯片都应该选择低功耗的产品。
(5)可靠性及抗干扰设计是硬件系统设计不可缺少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。
(6)单片机外接电路较多时,必须考虑其驱动能力,驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力。
增设线驱动器或者减少芯片功耗,降低总线负载。
3.2.应用软件的设计原则
应用系统中的应用软件是根据系统功能要求设计的,应尽可能地实现系统的各种功能。
应用系统种类繁多,应用软件各不相同,但是一个优秀的应用系统的软件应具有下列原则:
(1)软件结构清晰、简捷、流程合理。
(2)各功能程序实现模块化、子程序化。
这样,即便于调试、链接,又便于移植、修改。
(3)程序存储区、数据存储区规划合理,既能节约内存容量,又使操作方便。
(4)运行状态实现标志化管理。
各个功能程序运行状态、运行结果以及运行要求都设置运行状态标志以便查询,程序的转移、运行。
控制都可以通过状态标志条件来控制。
(5)经过调试修改后的程序应进行规范化,除去修改“痕迹”。
规范化的程序便于交流、借鉴,也为今后的软件模块化。
标准化打下基础。
(6)实现全面软件抗干扰设计。
软件抗干扰是计算机应用系统提高可靠性的有力措施。
(7)为了提高运行的可靠性,在应用软件中设置自诊断程序,在系统工作运行前先运行自诊断程序,用于检查系统各特征状态参数是否正常。
3.3.应用系统开发过程
应用系统的开发过程包括四部分工作内容,即系统硬件设计、系统软件设计。
系统仿真调试及脱机运行调试。
在确定开发课题后,首先要进行方案调研,这是整个研制工作成败。
好坏的关键,千万不可忽视,方案调研包括查找资料,分析研究,并解决以下问题:
(1)了解国内外相似课题的开发水平,器材、设备水平,供应状态;
对接收委托研制项目,还应充分了解对方技术要求、环境状况,技术水平。
以确定课题的技术难度。
(2)了解可移植的软、硬件技术。
能移植的尽量移植,以防止大量的低水平重复劳动。
(3)摸清软、硬件技术难度。
明确技术主攻方向。
(4)综合考虑软、硬件分工与配合。
单片机应用系统设计中,软、硬件工作具有密切的相关性
通过调查研究,确定应用系统的功能技术指标,软、硬件指令性方案及分工。
系统的硬件设计与软件设计可并行。
硬件电路检查分两步走进行:
硬件电路检查与硬件系统诊断。
硬件电路检查在开发系统外进行,主要检查电路制作是否正确无误;
硬件系统诊断在开发系统上进行,用开发系统的仿真头代替应用系统中的单片机,开发系统输入各种诊断程序来检查应用系统中各部分是否正常。
系统软件结构方案确定后,软件的编制科根据开发系统的功能,利用交叉汇编屏幕编辑或手工编制,编制好的程序通过自动生成或手工翻译成目标程序后送入开发系统进行软件调试。
所有模块化软件调试完毕后要进行链接工作,链接成一个完整的系统应用软件。
软件链接调试后,要规范化,并重新修改ROM、RAM区域规则。
链接调试完毕后系统应用软件固化在EPROM中,然后可进行脱机(即离开开发系统)运行。
在一般情况下,应能正常运行,但有时却不可能,因此还必须要作必须的检查调试。
当脱机不能正常运行时,要考虑实际电路与仿真环境的差异。
3.4.应用系统工作过程
被选中的模式用LED显示器表明实现不同模式下的加工过程:
加热——粉碎1——加热——粉碎2——加热——完成报警,整个加工过程的进行按时间控制,时间自定液位检测和控制:
使被加工的食品液体限定在某一个给定的液位范内,当液体溢出容器时,报警并断电。
设计系统各个部分的工作电源。
家用豆类和谷物处理机(即全自动豆浆机)具有按预设模式自动粉碎谷物、加热功能、防止溢出、处理完毕报警等基本功能。
一般可以处理如豆类、玉米、其他五谷杂粮、蔬菜等多种食品。
全自动家用豆类和谷物处理机的处理食品的过程通常为:
加热——粉碎1——加热——粉碎2——加热——完成报警,整个加工过程的进行按时间控制。
由于食品原料的物理特性不同,在加工处理时采用不同的加工(过程)模式,其主要区别在于加热和粉碎时间的长短不同。
在工作过程中,被加工的食品液体被限定在某一个给定的液位范围内,当液体加热时泡沫达到溢出液位时,停止加热,待脱离溢出液位区时继续加热。
参数:
电机:
5W24VDC;
加热器:
500W220VAC;
加热容器:
1.25升;
电力供应:
220VAC
4.方案分析
4.1.硬件需求分析
硬件上豆浆机的控制系统首先需要有一个单片机芯片作为控制核心来控制它的工作过程,我们选用AT89C52。
模式选择时需用3×
1个微型按钮开关。
因为要显示工作模式和工作时间,我们选择了1个共阴极的SEG-MPX6-CCLED数码显示管。
并配套选用74LS245芯片以驱动数码管、74LS138芯片以产生数码管片选信号。
在刚开始时需要进行水位检测,这就需要一个传感器,为了减少成本,这里采用一个开关来模拟代替传感器的作用,然后开始进行加热和粉碎。
本设计过程用LED灯进行模拟指示即可。
超液位、液体溢出和液位过低信号同样用开关来模拟。
对豆浆再次加热完毕后,预示着豆浆加工完成了,最后发出报警信号,这里就选用一个报警器和一个蜂鸣器就可以了。
综上,现实中需要的硬件有1个AT89C52,1个SEG-MPX6-CCLED数码显示管,2个74LS245芯片,1个74LS138芯片,4个BUTTON开关,1个电动机(带粉碎刀头),1个发热板,2个LED指示灯(电源指示和报警灯),1个蜂鸣器和2个继电器等。
而本模拟控制过程只需1个AT89C52,1个SEG-MPX6-CCLED数码显示管,2个74LS245芯片,1个74LS138芯片,4个BUTTON开关,3个LED指示灯,1个蜂鸣器等即可。
本豆浆机系统框图如下图1a和图1b所示:
图1a系统框图
图1b豆浆机模拟控制系统硬件电路图
(注:
键1、键2、键3分别为模式1、模式2、模式3的选择开关。
SW1为超液位信号模拟开关。
SW2和SW3分别为液体溢出和液位过低信号模拟开关。
LEDD3和D2分别为加热和粉碎指示灯。
功能工作时第3个数码管显示模式,第5、6两个数码管显示计时时间。
)
4.2.软件功能分析
软件上就是对单片机的编程了,在编程前需要画出一个流程图,如图2。
根据豆浆机控制系统的设计要求及目的,即插上电源按下按钮后,先对豆浆机进行水位检测,符合要求后,再设定工作模式。
根据豆浆机的工作场合,我们模拟设定3个工作模式:
模式1,加热6S,粉碎6S;
模式2,加热9S,粉碎9S;
模式3,加热12S,粉碎12S。
当粉碎2次,加热3次后,豆浆机完成工作,此时关电源,报警。
另外,程序需设3个中断:
超液位中断、液位溢出中断和液位过低中断(液位溢出中断和液位过低中断可用一个中断)。
超液位中断时,系统暂停工作,报警灯亮。
待液位下降至安全位置时,继续之前的操作;
当液位溢出断和液位过低中断时,系统直接断电结束操作,报警灯亮,蜂鸣器响。
按照上述对豆浆机控制系统的要求,软件程序应包括主程序、键盘子程序、显示子程序、两个中断子程序和报警子程序。
具体程序见附图。
用软件的编程配合硬件的设计以至于完成整个豆浆机控制系统的设计。
5.主要硬件元件分析
5.1.AT89C52芯片的介绍
图2主程序简单流程图
AT89C52提供以下标准功能:
8k字节可重擦写Flash
闪速存储器、256×
8字节内部RAM、32个可编程I/O
口线、一个6向量两级中断结构,一个全双工串行通
信口,片内振荡及时钟电路。
同时,AT89C52可降至
0Hz的静态逻辑操作,并支持两种软件可选的节电
工作模式。
空闲方式停止CPU的工作,但允许RAM
、定时/计数器、串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容。
振荡器停止工作并禁
止其它所有部件工作直到下一个硬件复位。
AT89C52的引脚封装图如右图3所示。
电源及时钟引脚
Vcc:
电源接入引脚;
GND:
接地引脚;
XTAL1:
晶体振荡器接入的一个引
图3AT89C52的引脚封装图
脚(采用外部振荡器时,此引脚接地);
XTAL2:
晶体振荡器接入的另一个引
脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。
控制线引脚
RST:
复位信号输入引脚。
并行I/O口引脚
P0.0--P0.7:
一般I/O口引脚或数据/低位地址总线复用引脚;
P1.0--P1.7:
一般I/O口引脚
P2.0--P2.7:
一般I/O口引脚或数据/高位总线引脚;
P3.0—P3.7:
一般I/O口引脚或第二功能引脚。
5.2.74LS245驱动器
如图474LS245的引脚图,图表一为其功能表。
图中CE为使能端,AB/BA为方向控制端,A0-A7为A端的数据输入/输出,B0-B7为B端的数据输入/输出。
74LS245是一种三态输出的8总线收发驱动器,无锁存功能。
当CE为低电平时,如果AB/BA为高电平,则74LS245将A端的数据传送至B端;
如果AB/BA为低电平,则74LS245将B端的数据传送至A端。
在其他情况下不传送数据,输出呈高阻态。
CE
AB/BA
操作
L
H
A→B
B→A
×
高阻
表174LS245功能表
图474LS245的引脚图
5.3.数码显示管
8段LED数码管是一种显示设备。
它是由若干个发光二极管组成的显示字段。
有共阳极和共阴极两种连接方式,在此设计中我们都用共阴极连接,即把所有的发光二极管的阴极连接一起。
共阴数码管的公共端COM接低电平,当某个显示字段控制端接高电平时,对应的字段就点亮,当显示字段控制端接低电平时,该显示字段熄灭。
由于每个显示字段显示通常需要十到几十毫安的驱动电流,因此显示控制信号必须经过驱动电路(即通过74LS245)才能使显示器正常工作。
6.调试
6.1.接电源等待状态
当接通电源且没有按键选择模式时,电源指示灯亮。
显示器显示“00”,表示处于等待状态。
出现的问题及解决办法:
刚开始测试时,上电后显示管显示乱码。
原因可能有三:
1.编程问题,2.芯片问题。
经过反复测试,终于找出原因,改正后显示管显示正常。
6.2.模式选择
在等待状态下按下键1、键2或键3时,就会选择工作模式1、模式2或模式3。
现以模式3为例,其余两种模式雷同。
当按下键3时,显示器显示“312”,表示选择了模式3,加热时间是12S。
如图6所示。
此后显示器上模式“3”闪三次后,豆浆机开始工作。
在此过程中,由于89C51芯片的原因,使得键盘比较混乱。
原来设定的按键不会工作了。
经过反复测试,测定了芯片P2口的管脚顺序,重新定义了按键,之后工作正常。
6.3.加热状态
当显示器上模式“3”闪三次后,豆浆机开始第一次加热,加热指示灯(红灯)亮,计时显示器开始倒计数。
加热时发现豆浆机倒计时12S和现实中的12S有较大的误差。
经分析找出病因:
在定时器定时1S(20MS×
50)的过程中,没有考虑显示程序所调用的1MS时间。
经改进,将定时器定时改为19MS×
50。
定时准确了。
6.4.粉碎状态
当第一次加热计时到0时,加热结束,开始第一次粉碎。
计时显示器重新开始倒计时,粉碎指示灯(黄灯)亮。
之后又进行第二次加热,第二次粉碎。
6.5.工作完成状态
当两次粉碎,三次加热结束后,豆浆机工作完毕。
此时豆浆机主动关电源,同时报警灯亮,蜂鸣器响。
6.6.超液位中断状态
当在工作中液位超过安全位置时,豆浆机暂停工作,报警灯亮。
待液位回落后,继续接着执行之前的操作。
6.7.液体溢出中断和液位过低中断状态
在工作中当液体溢出或液位过低时,豆浆机直接停止工作,并报警,报警灯亮,蜂鸣器响。
7.总结
经过将几周的单片机课程设计,我做的豆浆机的控制系统的设计终于完成了。
虽然经过了多次曲折的修改和整理,最终还是比较圆满的实现了本次设计的基本要求。
针对这个控制系统,我比较满意的有两点:
第一,完美的安全防范措施。
其有三重安全保护,使豆浆机的使用更安全;
第二,全过程完全自动化,只需要将豆类等谷物和水加入豆浆机,并按键,片刻之后就会变成鲜美的豆浆。
操作简便,更加人性化。
在本次设计的过程中,我发现了很多的问题,并且也学会了很多东西。
此刻我已经对单片机这科有了比较深的认识,能熟练地运用相关的编程软件和仿真软件,会用单片机去做一些比较简单的控制系统。
这就是我在这次课程设计中的最大收获。
虽然我的作品成功了,但我觉得还有一些可以改进的地方。
第一:
我将同一个模式下的加热时间和粉碎时间设置成相同的,虽然程序简单了,但不是很合理;
第二:
可以再加上加热很粉碎次数的统计;
第三:
我的控制系统中加热很粉碎是通过时间来控制的,我觉得要是改用温度来控制就更好了。
等等。
附录
7.1.豆浆机控制程序清单
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0_RD;
INT0口中断(液位溢出和液位过低中断)入口
ORG0013H
LJMPINT1_RD;
INT1口中断(超液位中断)
ORG0030H;
置初始状态
MAIN:
MOVSP,#70H
SETBIT0;
INT0口中断触发方式为跳变触发`
SETBIT1 ;
INT1口中断触发方式为跳变触发
SETBEA;
开放中断
MOVIE,#85H;
开中断
MOVIP,#01H;
INT0中断源为高优先级,INT1中断源为低优先级
CLRP3.0;
设初值
CLRP3.1
MOV30H,#00H;
设置时间单元清零
MOV31H,#00H;
显示模式单元清零
MOV34H,#00H;
显示定时时间单元清零
MOV32H,#00H;
计时显示十位清零
MOV33H,#00H;
计时显示个位清零
SCAN_RD:
LCALLXS_RD ;
开始无键按下,显示00
LCALLSCAN_KEYB;
模式选择
JZSCAN_RD;
有键按下向下
LCALLKEY_PRSD
MOVDPTR,#JMP_RD;
设置转移表首地址
MOVA,R5;
取键值
RLA;
键值乘以2
INCR5
JMP@A+DPTR
JMP_RD:
AJMPPRO_00;
模式0
AJMPPRO_01;
模式1
AJMPPRO_02;
模式2
PRO_00:
MOV30H,#06;
定时时间为6s
AJMPLOOP_W
PRO_01:
MOV30H,#09;
定时时间为9s
PRO_02:
MOV30H,#12;
定时时间为12s
;
模式选择后闪烁3次
LOOP_W:
MOV34H,30H;
调入定时时间显示数据
MOVR7,#3;
闪烁3次
LOOP_RD:
MOVR6,#30;
延时20MS的次数
LOOP0_RD:
LCALLXS_RD;
调显示程序
LCALLDL20MS
DJNZR6,LOOP0_RD;
1S
MOVR6,#25;
LOOP1_RD:
LCALLXS0_RD
DJNZR6,LOOP1_RD;
0.5S
DJNZR7,LOOP_RD;
开始工作
MOVR6,#02;
粉碎次数
LCALLJR_RD
G00N_GZ:
LCALLFS_RD
DJNZR6,G00N_GZ
LCALLBAOJ_WRD
加热子程序
JR_RD:
MOV34H,30H;
给显示单元置数
SETBP3.0;
加热
MOVR4,#50;
20MS程序循环50次
GOON_JR:
LCALLTIME_19MS;
调用定时20MS子程序
LCALLXS_RD;
显示
DJNZR4,GOON_JR;
到1S了
DJNZ34H,GOON_JR;
倒计时完成
停止加热
RET
粉碎子程序
FS_RD:
重新给显示单元置数
SETBP3.1;
粉碎
GOON_FS:
DJNZR4,GOON_FS;
到1S
DJNZ34H,GOON_FS;
粉碎完毕
CLRP3.1;
停止粉碎
键盘子程序
SCAN_KEYB:
MOVP2,#0EFH;
扫描有无按键按下
MOVA,P2
ANLA,#0EFH
XRLA,#0EFH
JZNO_KEY
ACALLDL20MS
NO_KEY:
RET
KEY_PRSD:
MOVR4,P2
MOVR5,#00H
MOVDPTR,#KEY_TAB
CAL_VAL:
MOVA,R5
MOVCA,@A+DPTR;
查键值表
XRLA,R4
JZFIXED
INCR5;
键值加1
SJMPCAL_VAL
FIXED:
MOVA,P2;
判断按键是否释放
JNZFIXED
KEY_TAB:
DB0EBH,0EDH,0EEH
DL20MS:
MOVR3,#20
DD1:
MOVR4,#200
DD2:
NOP
DJNZR4,DD2
DJNZR3,DD1
显示子程序
XS_RD:
MOV31H,R5;
调入模式显示数据
MOVR0,#31H;
显示缓存区数据
MOVP1,#00000010B;
第三个灯为显示位置
ACALLDISP_RD;
显示一位
XS0_RD:
MOVA,34H;
将定时数据分为两位
MOVB,#10
DIVAB
MOV32H,A;
十位
MOV33H,B;
个位
CJNEA,#00H,XS1_RD0;
十位是否为0
AJMPXS1_RD
XS1_RD0:
MOVR0,#32H
MOVP1,#00000100B;
第五个为显示位置
显示一位
XS1_RD:
MOVR0,#33H;
显示缓存区数据
MOVP1