20092334940-朱成刚-基于单片机的高效省时豆浆机控制器设计

更新时间:2023-03-08 16:55:58 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

滨江学院

毕业论文(设计)

题 目 基于单片机的高效省时豆浆机控制器设计

院 系 滨江学院电子工程系 专 业 通信工程 学生姓名 朱成刚 学 号 20092334940 指导教师 吴阳春、张银胜 职 称 高级工程师

二 O一 三 年 五 月 三 十 日

目 录

1引言 ............................................................. 1 1.1课题背景 ...................................................... 1 1.2目的及意义 .................................................... 2 1.3 主要完成的任务 ............................................... 2 2方案比较 ......................................................... 2 3硬件电路设计 ..................................................... 2 3.1总体电路设计 .................................................. 2 3.2单片机最小系统 ................................................ 3 3.3电源电路设计 .................................................. 4 3.3.1 电源的作用 ................................................ 4 3.3.2 电源的组成 ................................................ 4 3.3.3 变压器容量、整流二极管的计算与选择 ........................ 4 3.3.4稳压器的选用 .............................................. 4 3.3.5电源工作原理 .............................................. 5 3.4 加热及磨浆电路设计 ........................................... 6 3.5 水位检测及沸腾溢出检测电路设计 ................................ 7 3.6 报警电路设计 ................................................. 8 3.7 主动消泡装置电路设计 ......................................... 9 4元器件介绍 ...................................................... 10 4.1 AT89C51简介 ................................................. 10

4.1.1 主要性能 ................................................. 10 4.1.2 管脚说明 ................................................. 11 5软件设计 ........................................................ 13 5.1 控制系统的软件功能分析 ....................................... 13 5.2 控制系统的软件功能实现 ....................................... 13 5.3 控制系统的仿真及调试 ........................................ 15 6结束语 .......................................................... 18 参考文献 .......................................................... 18 致谢 .............................................................. 19 附录 .............................................................. 21 附录1 ........................................................... 21 附录2 ........................................................... 22 附录3 ........................................................... 30

基于单片机的高效省时豆浆机控制器设计

朱成刚

南京信息工程大学滨江学院,南京 210044

摘要:本文研究了基于AT89C51单片机的豆浆机控制器设计,实现豆浆机控制系统基本功能,如加热、防干烧,防溢出,报警等功能的实现。通过应用1500W大功率加热管,并在搅拌机上添加了消泡装置,实现大功率加热与打浆同时进行,文火加热阶段伴随着消泡装置消除气泡。最终实现的成果是要与普通豆浆机相比,工作一次仅需10分钟左右,大大提高了豆浆机的工作效率。 关键词:豆浆机;高效省时;单片机;主动消泡

1引言

1.1课题背景

在中国,喝豆浆成为老百姓离不开的日常活动,并诞生出豆浆文化。豆浆也被中国营养学家推荐为防治高脂血症、高血压、动脉硬化等疾病的理想食品,豆浆成为众多家庭的早餐必备饮品。因此,在豆浆摊、餐饮店、超市货架等地,随处可见豆浆的身影。不过,公开销售场所豆浆的卫生状况、掺水比例、新鲜指数、煮熟程度等问题,颇令消费者顾虑。因此,为了喝上新鲜营养的豆浆,很多家庭开始购买豆浆机自治豆浆[1]。

世界上第一台全自动家用豆浆机是九阳1994年生产的。自此豆浆机开始步入普通人的生活。到2008年,豆浆机从有网进入了无网时代,可以说是中国豆浆机发展史上一次里程碑的技术进步。而我想通过PLC技术为豆浆机增加新的功能,为客户提供更快更舒适更周全的服务。除了让老百姓每天能喝上健康的豆浆外,还能感受生活美好[2]。

国内医学在很早以前就已经肯定豆浆的保健作用。豆浆具有平和,补虚润燥、清肺化痰的功效。现代医学研究认为,中老年女性喝豆浆有益于身体健康、对于延缓衰老有着明显的好处。豆浆中除了含有氧化剂、矿物质和维生素等物质,还含有一种牛奶所没有的植物雌激素叫做\黄豆苷原\,该物质对于调节女性内分泌系统具有很大的帮助[3]。

1

1.2目的及意义

本论文设计的这款豆浆机的目的在于利用AT89C51完成单片机豆浆机控制系统基本功能如加热功能,防干烧功能,防溢出功能,报警功能和主动消泡装置的设计。利用大功率加热和主动消泡装置在制作豆浆过程中节约很多时间,从而只需要等待十分钟就能制浆成功,为上班族带来更好的方便省时。

1.3 主要完成的任务

本论文针对现有豆浆机制浆时间长的问题,在不改变原有豆浆机的基础上,实现基本功能如加热,防干烧,防溢出,报警等并且增加了主动消泡装置,通过单片机控制器使加热和制浆同时进行,将现有的时间缩短一半,最终制成新鲜口渴的豆浆。

2方案比较

方案一:豆浆的传统制作方法

传统的豆浆机是由粉碎黄豆的电机、豆浆加热器和控制电路三大部分组成。用单片机研制的全自动豆浆机的控制系统,当将适量浸泡好的的黄豆放入杯皿中,然后加入适量的冷水,再将浆豆浆机电源插头插入220V交流电源,这时豆浆机指示灯就会亮起,按下按钮,先对豆浆机进行水位检测,符合要求后加热管开始对水进行加热,当水温达到80℃左右,豆浆机停止加热。启动磨浆电机开始磨浆,磨浆电机按间歇方式打浆:运转15秒后停止运转,间歇5秒后再启动打浆电机,如此循环5次。磨完浆后,开始对豆浆加热,豆浆温度达到一定值时豆浆上溢,当豆浆沫接触到防溢电极时,停止加热,间歇20秒后在开始加热,如此循环5次,豆浆加工完成,间歇10秒后发出音响信号[4]。

方案二:高效省时全自动控制

本文选择了方案二,在设计的这款新型豆浆机是在原有的基础上加上了主动消泡装置,并且加热煮浆和打豆磨浆同时无间歇进行。由此就可以大大缩短制作时间,提高工作效率,只需稍等几分钟就能喝到美味又营养的豆浆。整个过程由单片机全自动控制,让您用起来更加的方便快捷、更加的安全放心。

3硬件电路设计

3.1总体电路设计

本文设计的硬件上豆浆机控制系统分为三个部分。首先,需要有一个单片机芯片作为控制核心来控制它的工作过程,刚开始需要进行水位检测,这就需要一个传感器,为了减少成本,这里采用一个探针来代替传感器的使用,然后开始对水进行加热,加热时需要把水预先加热到80℃,这时使用全功率加热,加热管功率为1500W,这里加热管的功率是传统的豆浆机的两倍,这样就能够节省出一部分时间。第二

2

图4 缺水及沸腾溢出电路原理图

3.6 报警电路设计

报警电路的作用是通过蜂鸣器发出声音信号,提醒主人豆浆已经煮好了。

声音信号电流从单片机的P3.5脚输入到三极管T4,使功率放大,驱动蜂鸣器B1发出声音。 报警电路由单片机AT89C51、电阻R7、三极管T4与蜂鸣器B1组成。通过事先编写的程序,在单片机的控制下,系统开始工作,当加热完成后,单片机P3.5脚自动输出一个高电平,通过电阻R7使三极管T4饱和导通,于是蜂鸣器B1发出报警声音,提醒主人豆浆加热完成[10]。

控制系统的报警电路原理如图5所示

8

图5 控制系统的报警电路原理图

3.7 主动消泡装置电路设计

主动消泡装置主要是由两根吊挂在磨浆电机主轴上的铜制金属棒制成。

通过多次试验得出:当两根铜棒安装在防溢电极水平线下方3cm处时,消泡效果最佳[11]。 豆浆机结构及消泡装置具体位置如图6所示

9

图6豆浆机的主要结构简图

4元器件介绍

4.1 AT89C51简介

4.1.1 主要性能

AT89C51具有以下标准功能:

中断:AT89C51 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断如图10所示每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。中断服务程序必须判定TF2 或EXF2有没有进行中断的激活并且它的标志位是要通过软件进行清0设置。而定时器1和定时器0标志位TF0 和TF1是在计数溢出周期的S5P2被置位的。中断允许控制寄存器(IE):89C51对中断源的开放或屏蔽是由中断允许寄存器IE控制的中断允许控制位=1,允许中断;中断允许控制位=0,禁止中断[12]。

晶振特性:AT89C51 单片机里面有组成内部振荡器反相放大器的器件,XTAL1是放大器的输入断、而XTAL2是输出端。对于陶瓷谐振器和石英晶体,它们能够构成一些自激振荡器。如果要从外部时钟源来驱动器件,那么要从XTAL1 接入,XTAL2 可以不需要接。

振荡电路内外部链接如图7所示

10

4.1.2 管脚说明

AT89C51引脚图如图8所示

图 7 振荡电路内外部链接图

石英晶振 C1,C2=30PF±10PF 陶瓷谐振器 C1,C2=40PF±10PF

内部振荡电路连接图 外部振荡电路连接图

图8 单片机AT89C51的引脚图

11

VCC: 供电电压。 VSS:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。如果P2口是用来进行外部程序存储或者16位地址的外部数据存储进行存取,那么就会得到P2口的输出地址高八位。当我们给出地址为“1”的时候,它就会通过内部上拉的优势,若我们队对外部八位地址数据存储器进行读写操作时,那么就会得到P2口输出特殊功能寄存器相关内容。

P3口:P3口的管脚是具有带8个内部上拉电阻的双向形式的I/O口,可以用来接收具有输出4个TTL门的电流。一旦P3口是写入“1”,那么结果它们将会被内部上拉成高电平,这样就可以同作为输入来使用。如果是用来输入,那么当外部下拉为低电平的时候,P3口将输出电流,是由于上拉所得到 [13]。

ALE/PROG:用来访问外部存储器,从而使得地址锁存必须满足的输出电平是用于存储锁存地址的地位字节,可用作对外部输出的脉冲或用于定时目的。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA一直处于低电平的时候,那么这个过程中的外部程序存储器,就不需要有内部程序存储器。但是一定要注意当实现加密方式1时,/EA就会用RESET来将内部锁定;而当/EA端总是处于高电平期间,这个期间就是内部程序存储器的工作状态。

XTAL1:主要功能是是用来实现内部时钟工作电路输入和反向振荡放大器输入。

XTAL2:主要是功能用作实现反向振荡器输出。

在本设计中磨浆及加热电路,沸腾检测电路及报警电路等和单片机连接时,只用了P1口和P3口,首先通过单片机中的CPU将P1.6口变成高电位,使发光二极管D4 发光显示,以示电源电路正常,单片机开始工作。在对水位进行检测时,P1.0和P1.1都是作为输入端,单片机的CPU就是通过检测这两个端口的高低电位来对水位和沸腾溢出进行检测的。加热时,因为温度传感器为单线智能高效省时数字传感器,P1.5口只是作为常用的输入端口和CPU进行数字传输。当进行加热和打浆时,P3.0和P3.4作为输出端口,与三极管组成一个驱动控制电路,当程序给一个加热或打浆信号时,这两个端口相应的变成高电位使三极管饱和导通继而驱动继电器工作。报警电路和单片机端口组合时,单片机的端口同样也是作为一个输出端口来使用的。

12

5软件设计

5.1 控制系统的软件功能分析

软件上就是对单片机的编程了,在编程前需要画出一个流程图,根据高效省时的豆浆机控制系统的设计要求及目的,即插上电源按下按钮后,先对豆浆机进行水位检测,符合要求后加热管开始对水进行加热,这时加热管是以1500w的功率对水加热的。当水温达到80℃左右,启动磨浆电机开始磨浆,磨浆电机不间断的打浆,磨浆的同时对豆浆这时加热管改为750w的功率工作。当豆浆研磨完毕时电动机停止运转,加热管改为400w的功率对豆浆进行加热。最后阶段使用350W对豆浆加热,由于加热的缘故会豆浆上溢,当豆浆沫接触到防溢电极时,暂停磨浆,启动主动消泡装置,进行消泡。这样直到豆浆加工完成,间歇30秒后发出声音信号。实际工作中,打浆的时候会有少量的豆浆溅到防溢电极上,这时就需要一个延时子程序对其进行延时使得豆浆机不会产生误操作。按照上述对高效省时的豆浆机控制系统的要求,完成高效省时的豆浆机控制系统设计的流程图后,对单片机进行软件的编程来配合硬件的设计以至于完成整个高效省时的豆浆机控制系统的设计。

豆浆机控制器结构框图如图9所示[14]。

缺水检测模块 溢出检测模块 单 片 机 电动机驱动 加热驱动 晶振电路 电源电路 报警模块

图9 豆浆机控制器结构框图

5.2 控制系统的软件功能实现

高效省时的豆浆机控制系统的流程图如图10所示,先上电初始化,然后按下按钮,先检测水位符合要求,如果不符合,则由蜂鸣器发出嘀嘀的声音来提示主人,如果符合要求,则加热管用全功率1500W开始对豆浆机内的冷水进行加热,当加热到80℃以后,启动电动机进行打浆,2分钟后加热管的功率降

13

至750W,直到打浆结束进入小功率煮浆阶段,这时的加热管功率为400W。煮浆阶段豆浆由于加热会起泡,如果泡沫触到防溢电极则启动主动消泡装置,如此往复,直到完成煮浆过程,延时10后蜂鸣器发出声音进行提示。

第一步为初始化程序。单片机得到+5V工作电压后就进入工作状态。首先,+5V电压对 E1进行充电,使单片机RST(复位)端瞬间变成高电位,从而使单片机硬件复位。因为E1具有放电作用,这样就会又使复位端的电位慢慢的减低,最终,复位端就会从高电位变到低电位,至此已完成复位任务,之后51单片机即将进入任务初始化,51单片机首先要进行任务初始化工作状态也就是开执行行程序。程序是由51单片机里面的CPU将P1.6口就会变成高电位,这样就会让其中的发光二极管D4有发光显示,这样做的目的是为了检验电源电路能否工作正常,再者51单片机就开始工作。

第二步为水位检测程序。按下按钮SW1,51单片机工作时,单片机的CPU就会通过访问P1.1端电位的状态实现验证豆浆机有没有水,并且检验水位是否符合控制系统设计要求。如果P1.1端的电位是高电位,此时我们可以判断水位没有符合要求,单片机就会令P3.5端输出相关提示信号,之后再通过三极管T4放大之后来推动B1,从而能够让蜂鸣器有急促响声发出。若 P1.1端为低电位,则说明水位的高度是能够满足要求的,单片机就会进入下一个工作阶段。

第三步为水加热程序。当水位满足要求时,CPU就会令P3.0口从低电位变到高电位,目的是为了让能够T2导通,这样可以驱动继电器JR1动作,再通过JR1触点来将电热器和220V的电源接通,于是加热管开始对冷水进行加热,一直要让水温加热直到80℃,主要目的是防止在以后粉碎黄豆等物的时候,避免了产生过多的的泡沫。在烧煮豆浆时就不会因泡沫过多而造成频繁的溢出,造成加热频繁的被迫停止,延长了豆浆的加工时间,所以,预加热在自动豆浆机中是很有必要的,当加热3分钟后水温达到80℃时,CPU发出电机启动的控制信号后,即令P3.4口为低电位,使T3导通,JR2触点闭合,电机启动,至此加热冷水阶段结束。

第四步为粉碎程序。水温加热进行到80℃时候,单片机进入粉碎阶段中。CPU就会令P3.4口输出相应的高电位,使得T3能够导通,来驱动里面的的继电器JR2吸合,接着就会连接粉碎电机的电源,使粉碎电机能够进行高速模式旋转,于是就会带动刀片以高速的形式进行切削,做到对粉碎物的粉碎一直到粉碎完全为止。电机启动两分钟后,CPU向P3.0口发出指令,使之输出高低电平周期为之前的二分之一,起到半功率加热的目的。

第五步为烧煮豆浆程序。当粉碎过程结束,接下来就进入烧煮豆浆阶段。先使用400W的功率加热30秒,在改为350W加热直到结束。由于豆浆被粉碎时,虽然是在80℃水温下进行粉碎的,但还是会产生较多的泡沫,所以该阶段表现的是加热与溢出之间的一对矛盾,为了使豆浆机适应较多种类植物的加工需要,该程序中与防溢电极配合,当防溢电极检测到有豆浆溢出则停止磨浆,并启动主动消泡装置进行消泡,消泡结束后再继续进行磨浆加热,直到豆浆磨好煮熟,烧煮豆浆程序就宣告结束[15]。

第六步为报警程序。当豆浆煮好时,CPU就会令P3.5口输出较慢节奏的音频信号,再让T4推动蜂鸣器B1发出嘀嘀的响声,当然,在此之前,你也已经闻到香浓的豆浆味了。

14

初始化 水位符合 N 报警 Y 启动加热管用1500W全功率对水加热至启动电机打浆,两分钟后加热管功率降至打浆完毕,加热管功率降至400W进行Y 是否溢出 N 加热管使用350W功率文火煮浆,完成煮浆过启动主动消泡装30秒后声音提示 图10 控制系统的流程图

程序清单见附录。

5.3 控制系统的仿真及调试

由于各个模拟量建立在豆浆已经加热到80℃左右时发生。所以,仿真模拟的是80℃以后电机打浆、防溢出检测、防干烧检测、报警信号以及整体的工作状态。

在建立仿真电路时,由于缺少相应的元器件,我采用了等量的发生结果,所有的检测装置都模拟为脉冲发生装置,以此来模拟整体电路的工作。调试时,由于对豆浆机运转过程中出现的突发事件,例如豆浆沫溢出时容易污物,加水少时豆浆容易出现焦糊,影响饮用等等。在实物制作及测试中由于出现未知错误,没能实现电路应该具备的功能。不过由于仿真的实现符合预期,整个调试过程还是进行的比较顺利。以下是仿真进行时的部分电路,其中红色表示高电平,蓝色表示低电平。

15

图11运行中的整体电路

按下溢出检测时的电路如图12所示,按下溢出检测电路中的按键,电机停止工作,也就是发光二极管熄灭。当按键复位时,电机接着运转,每搅拌15秒,停5秒,如此反复,直到程序中规定的时间到达,电机停止转动。

16

图12 运行时按下溢出检测键,电机停止工作

图13 运行时按下防干烧检测电路,发出警报

17

6结束语

此次设计我做的是高效省时的豆浆机设计,经过多次的修改和整理,可以满足设计的基本要求。当放入适量已经浸泡好的的黄豆,再加入适量的一些冷水,将豆浆机的电源插头使用220V交流电源进行接通,此时豆浆机的指示灯就会亮起,按下按钮,先对豆浆机进行水位检测,符合要求后加热管开始对水进行加热,使用1500W大功率加热管加热3分钟后水温达到80度左右启动磨浆电机开始磨浆,磨浆电机不间断的打浆,磨浆的同时对豆浆加热,打浆进行2分钟后,加热管功率降为750W。当豆浆研磨完成时,加热管功率降为400W工作30秒,在使用350W的小功率对豆浆进行文火煮浆,这时由于加热豆浆会上溢,当豆浆沫接触到防溢电极时,暂停磨浆,启动主动消泡装置,进行消泡。这样直到豆浆加工完成,间歇30秒后发出声音信号。按照上述对高效省时的豆浆机控制系统的要求,完成高效省时的豆浆机控制系统设计的流程图,对单片机进行软件的编程来配合硬件的设计以至于完成整个高效省时的豆浆机控制系统的设计。

参考文献:

[1] 范志君.机械类工业品的产品形象系统研究[D]. 山东大学,2007

[2] 凌志勇 方旭群.智能豆浆机的设计[D],广东省电力工业学校仿真中心 ,2003 [3] 张向锋, 张强军, 任宏涛. 智能型豆浆机控制系统的开发[J]. 洛阳工学院学报, 2001 [4] 陈友德. DJJ-1250型全自动家用豆浆机[J]. 今日科技, 1994

[5] 李华.MCS-51系列单片机使用接口技术[M],北京航空航天大学出版社,1993 [6] 彭为.单片机典型系统设计实例精讲[M],北京:电子工业出版社,2006 [7] 潘永雄.新编单片机原理与应用[M],西安:西安电子科技大学出版社,2003 [8] 王有绪,许杰,李拉成.PIC系列单片接口技术及应用系统设计;

北京:北京航空航天大学出版社,2001

[9] 王千.实用电子电路大全[M],电子工业出版社,2001

[10] 何立民.单片机应用技术选编[M],北京:北京航空大学出版社,1998

[11] 于善清,于仁师,姜学东. 家用豆浆机控制装置的研制[J].莱阳农学院学报,1995 [12] 刘升, 杨静丽. 基于PIC16C54单片机的全自动豆浆机控制系统[J].电子工程师, 2004

[13] Maurice, Wilkes. Progress in Computers [M] Prestige Lecture delivered to IEE, Computer Laboratory

University of Cambridge. Cambridge, on 5 February 2004

[14] Nancy Hplland.Automated Instruments Smooth Rapid Test System Development.Test & Measurement

World, AUGUST 2001

[15] George Lee, Karina Ng, Edmond Kwang. Design of ring oscillator based voltage controlled oscillator.

Project Final Report[R]. 2005

18

致谢

最后要感谢在整个论文写作过程中帮助过我的老师和同学。 首先,也是最主要感谢的是我的指导老师,吴阳春、张银胜老师。在整个过程中他们给了我很大的帮助,在设计论文题目的时候,他们先给了我题目总的框架,总的方向,但是老师又帮我仔细分析揣摩从而使我最后选择自动豆浆机控制系统设计这个具体目标,使得我在写论文的过程中时有明确的方向。一开始,对于确定论文提纲,我的思路比较模糊,在老师细心和大力的指导帮助下,我的写作思路变得很清晰,最终我我顺利的完成毕业论文设计。同时在写论文过程中遇到很大的困难的时候,我并没有气馁,而是一步一步脚踏实地的查阅搜集相关资料,向老师和同学请教,不断扫除学习过程中的一切障碍。经过这次的论文使得我在学习和生活上重新审视剖析自己,让在我在未来道路的选择上,坚定自己,要一丝不苟,认真对待每一件事,不断丰富自己的知识,从而在激烈的社会竞争中更好的发展自己,完善自己。

19

Explicitly based on the number of MCU design of the plus meter

Zhu Cheng Gang

Binjiang College, Nanjing University of Information Science and Technology, Nanjing210044, China

ABSTRACT:

This paper studies the soybean milk machine controller based on AT89C51 and implements control system of soybean milk machine’s relevant functions, such as heating, prevent dry, prevent overflow, the realization of the function of alarm, etc. By applying the 1500 w power heating tube, and on the mixer added defaming device, it realizes the high-power heating and beating and at the same time, slows fire heating stage with defaming device to eliminate air bubbles. Achieve results are compared with the ordinary soybean milk machine work only about 10 minutes at a time, greatly improving the soybean milk machine work efficiency.

Key word: Soymilk; efficient time-saving; SCM; active defaming

20

附录

附录1

基于AT89C51单片机的豆浆机控制器实物图

21

附录2

高校省时豆浆机控制系统总原理图

高效省时的豆浆机控制系统程序 #include

#define uchar unsigned char #define uint unsigned int

//------------------------------------ I/O定义 //输入

sbit KEY=P1^0; //豆浆键 sbit LOW=P1^1; //低位 sbit HIG=P1^2; //高位 //输出

sbit LED=P1^3; //工作指示 sbit HET=P1^6; //加热器 sbit MOT=P1^5; //搅拌机 sbit BUZ=P1^7; //蜂鸣器 //状态位

uchar data MOTS; //电机状态, uchar data HETS; //加热器状态 uchar data LEDS; //LED状态 uchar data BUZS; //FMQ状态 uint i;

//unsigned long data Num1; //计数1 //unsigned int data Num2; //计数2

unsigned char data Cond1,Cond2,Cond3;

unsigned long data Num1; //计数1 unsigned int data Num2; //计数2 unsigned int data Num3; //计数 unsigned char flag,flag_buz;

//-------------------------------------------------------------------- //io_init:初始化IO子程序

//-------------------------------------------------------------------- void io_init(void) {

P0=0xFF; //P0 P1=0xFF; //P1

22

P2=0x0F; //P2 P3=0xFF; //P3 }

//------------------------------------------------------------------- //TIMER_init:初始化定时器

//------------------------------------------------------------------- void TIMER_init(void) {

TMOD=0x11; //定时器0和1配置为模式1

TH1=0x3C; //100ms,根据波特率和单片机计算出 TL1=0xB0;

ET1=1; //允许定时器1中断

TH0=0x3C; //100ms,根据波特率和单片机计算出 TL0=0xB0;

ET0=1; //允许定时器0中断 }

void delay(uint z) //延时子函数 {

uint x,y;

for(x=z;x>0;x--) for(y=110;y>0;y--); }

//main:主函数

void main(void) {

io_init(); //端口初始化 SP=0x5F; MOT=0; HET=0; MOTS=0; HETS=0; P1=0xFF; TIMER_init(); flag=0; flag_buz=0; EA=1;

while(LOW==1)BUZ=0; //有水检测,防止干烧

23

while(KEY==1); //判键 delay(10);

while(KEY==1); if(HIG) {

HETS=1; //水位不超,开始工作 LEDS=1; TR1=1; }

while(1) //循环检测 {

//////////////////////////////////////////

if(LOW) //水烧干,停止工作,LED灭 {

HETS=0; MOTS=0; LEDS=0; TR1=0; BUZS=1; }

if(MOTS==1) MOT=0; //到打浆时间,电机工作 else MOT=1;

if(HETS==1) HET=0; else HET=1;

if(LEDS==1) LED=0; else LED=1;

if(BUZS==1) BUZ=0; else BUZ=1; if(flag_buz) {

for(i=0;i<10;i++) {

delay(1500); BUZ=!BUZ; } } } }

//-------------------------------------------------------------------

//Timer1Int:定时中断子程序,用于显示输出及按键延时计时,1ms //------------------------------------------------------------------- void Timer1Int(void) interrupt 3 {

TH1=0x3C; //定时1s

24

TL1=0xB0;

Num1++; //超时计数 /////////////////////////////////////////////////

if(Num1<=1800) {

/////////////

if(HIG==0) delay(1000); if(HIG==0) {

HETS=0; //加热3分钟内碰防溢电极 停止工作 MOTS=0; TR1=0; BUZ=0; } else { HETS=1; //1500W 加热3分钟 MOTS=0; }

//////////////// }

/////////////////////////////////////////////// if(Num1>1800&&Num1<=3000) {

//////////

if(HIG==0) delay(1000); if(HIG==0) {

HETS=0; //加热2分钟内碰防溢电极停止T1 TR1=0; TR0=1; MOTS=1; } else { HETS=1; //1500W加热2分钟 电机运行2分钟 MOTS=1; }

////////////////// }

25

//////////////////////////////////////////////// if(Num1>3000&&Num1<=3600) {

if(HIG==0) delay(1000); if(HIG==0) {

TR1=0;//加热1分钟内碰防溢电极停止T1 TR0=1; HETS=0; MOTS=1; } else { if((Num1>3000 && Num1<=3020)||(Num1>3075 && Num1<=3095)||(Num1>3150 Num1<=3170)||(Num1>3225 && Num1<=3245)||(Num1>3300 && Num1<=3320)||(Num1>3375 Num1<=3395)||(Num1>3450 && Num1<=3470)||(Num1>3525 && Num1<=3545)) HETS=1; //400W 加热1分钟 else HETS=0; MOTS=1; }

///////////////////////////////////////////// }

/////////////////////////////////////////////

//////////////////////////////

if( Num1>3600&&Num1<=6000) {

if(Num1>3600&&Num1<=3900)

MOTS=1;

else

MOTS=0;

Cond1=(Num1>3600 && Num1<=3620)||(Num1>3675 && Num1<=3695)||(Num1>3750 Num1<=3770)||(Num1>3825 && Num1<=3845)||(Num1>3900 && Num1<=3920)||(Num1>3975 Num1<=3995)||(Num1>4050 && Num1<=4070)||(Num1>4125 && Num1<=4145)||(Num1>4200 Num1<=4220)||(Num1>4275 && Num1<=4295)||(Num1>4350 && Num1<=4370)||(Num1>4425 Num1<=4445)||(Num1>4500 && Num1<=4520)||(Num1>4575 && Num1<=4595)||(Num1>4650 Num1<=4670)||(Num1>4725 && Num1<=4745)||(Num1>4800 && Num1<=4820)||(Num1>4875 Num1<=4895)||(Num1>4850 && Num1<=4870)||(Num1>4925 && Num1<=4945); Cond2=(Num1>5000 && Num1<=5020)||(Num1>5075 && Num1<=5095)||(Num1>5150 Num1<=5170)||(Num1>5225 && Num1<=5245)||(Num1>5300 && Num1<=5320)||(Num1>5375 Num1<=5395)||(Num1>5450 && Num1<=5470)||(Num1>5525 && Num1<=5545)||(Num1>5600

26

&& &&

&& && && && && && && && &&

Num1<=5620)||(Num1>5675 && Num1<=5695)||(Num1>5750 && Num1<=5770)||(Num1>5825 && Num1<=5845)||(Num1>5900 && Num1<=5920)||(Num1>5975 && Num1<=5995); if(Cond1||Cond2) HETS=1; //350W 加热4分钟 else HETS=0;

if(HIG==0) delay(1000); if(HIG==0) { TR0=1; } }

/////////////////////////////////////// if(Num1>6000) {

LEDS=0; //时间到,全部停止 HETS=0; TR0=0; MOTS=0; TR1=0; flag_buz=1; } }

void Timer0Int(void) interrupt 1 {

TH0=0x3C; //定时1s TL0=0xB0;

Num2++; //超时计数 Num3++; //超时计数 ////////////////////////////////////////// if(Num1>1800&&Num1<=3000) { if( Num2<=50) { HETS=0; //停止加热5s } if(Num2>50&&Num2<=100) { HETS=1; //加热5s }

27

if(Num2>100) { TR0=0; TR1=1; Num2=0; } }

///////////////////////////////////////////// if( Num1>3000&&Num1<=3600) { if( Num2>10&&HIG==0) { HETS=0; //泡沫碰防溢电极超1s, flag=1; } if(flag==1&&Num2>10&&Num2<=60) { HETS=0; //延迟5s } if (flag==1&&Num2>60&&Num2<=110) { HETS=1; //加热5s } if(flag==1&&Num2>110) { TR0=0; TR1=1; Num2=0; flag=0; } }

////////////////////////////////////////////////// if( Num1>3900&&Num1<=6000) { if( Num2>=10&&HIG==0) { HETS=1; //泡沫碰防溢电极超1s Num3=0; flag=1; } if(flag==1&&Num2>10&&Num3<=60) { HETS=1; //延迟5s MOTS=1;

停止加热28

} if(flag==1&& Num3>60) { MOTS=0; TR0=0; TR1=1; Num2=0; Num3=0; flag=0; } }

/////////////////////////////////////////////////////// }

29

112+R1A42+C4C2220u/25V0.1uC3470u/25VC10.1uT1附录3

16HEATC9104F1FUSE13AC220V+5VLNMOTOR R310KR410KC100.1uFR15+5VGND

1VinVout3E110uF/16VSW1T2D1D4LEDPNPR210K+5VR54.7K9RST +5VR1110KR1210KT3D2XT1PNPR64.7K+5VT4R74.7KC715P1912131415XTAL1P3.2P3.3P3.4P3.5C815P101118P3.0/RXDP3.1/TXDXTAL2IC3BR910KR1010KLM324C5104R1310K31293024232221EA/VPPPSENALEP2.3P2.2P2.1P2.0VCCJR130

NPN20GND80C51+5VVCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.7/RDP3.6/WRP2.4P2.5P2.6P2.74039383736353433328765432117162526272816AJR210A防干烧电极B1IC3CR1410KBUZZER防溢出电极LM324C6104

本文来源:https://www.bwwdw.com/article/ch86.html

Top