历史上的今天
返回首页

历史上的今天

今天是:2024年11月23日(星期六)

2019年11月23日 | 单片机全自动洗衣机程序

2019-11-23 来源:51hei

一、设计任务与要求

利用51单片机模拟全自动智能洗衣机。

  • 按键功能要求

  • 通过“K1”键步进改变“标准]经济、单独、排水”四种方式,执行相应的程序。对应指示灯亮。

  • 通过“K2”键步进改变“强洗、弱洗”两种方式,执行相应的程序,对应指示灯亮。

  • 通过“K3”键控制洗衣机运行、暂停和解除报警功能。

  • 方式功能选择要求

一般洗衣机的步骤为:洗涤,漂洗,脱水,当处于某种状态时,对应的指示灯以0.7S周期闪烁,当洗衣机在洗涤过程中,洗涤指示灯闪烁。可以通过方式选择设定具体的运行过程。

  • 标准方式:进水—> 洗涤 —> 排水 —> 进水 —> 漂洗 —> 排水 —>进水 —> 漂洗—> 排水 —> 脱水。

  • 经济方式:进水 —> 洗涤 —> 排水 —> 进水 —> 漂洗 —> 排水 —> 脱水。

  • 单独方式:进水 —> 洗涤。

  • 排水方式:排水 —> 脱水。

  • 强洗即电动机转速快,弱洗即电动机转速慢。

  • 整机功能要求

  • 开机默认状态为标准方式、强洗。

  • 在洗涤和漂洗过程中,电动机正转一次,反转一次,连续运行。

  • 在进水和脱水过程中,相应的指示灯亮,继电器吸合。

  • 当执行某个步骤时,只有“K3”键有效,按下暂停,再按恢复运行。

  • 方案设计与论证

全自动洗衣机的实现方案组成框图如图一所示。它主要有电源、单片机最小系统、开关检测电路、控制按键输入电路和LED指示电路、继电器和电动机电路。

  • 硬件电路设计 

图二

  • 电动机驱动模块电路设计

电动机驱动采用LD298电动机驱动芯片,单片机P25、P24与L298的IN1、IN2分别对应相连,ENA直接接VCC,后面所加4个二极管VD3到VD6起连续作用。电动机驱动电路原理图如图二所示。

  • 电源模块电路设计

电动机驱动芯片的电源VCC和VS之间通过0欧的电阻R20进行隔离后,对LD298进行供电。

  • 控制按键

如图二所示,K3键接到单片机的外部中断0,通过中断实现运行、暂停、继续运行的控制功能,当K3键第一次按下时(num2=1)正常运行,当K3键第二次按下时(num2=2)暂停运行。

  • 进水阀和排水阀控制继电器

如图二所示,单片机的P23用来控制排水阀继电器,P22用来控制进水阀继电器,P22和P23对应输出为0时对应的阀打开,输出为1时对应的阀关闭。

软件设计

1)流程图

主程序流程图如图三所示。

  • 程序

程序附在最后

图三

  • 调试与分析

1、软件调试:

写程序代码时应先搭建好硬件电路,然后根据硬件电路写程序代码。在调试程序过程中,先保证程序能够运行无错误,然后在烧到实物中观察结果。

2、硬件调试:

硬件电路设计与软件设计完成后,将程序烧写到单片机中,观察运行结果是否符合要求。如果不符合设计要求,应先检查硬件是否能正常工作,如用实验板自带的正确代码检测硬件电路;然后根据设计要求到程序代码中分模块进行调试,比如该设计需用到液晶、矩阵键盘、定时器、独立键盘、中断和LED灯等,如果测试过程中液晶模块不能正常显示或者显示乱码,应将液晶模块单独分离出来进行测试,其他模块亦是如此。程序调试完成后,应在硬件电路上反复运行,以确保程序和硬件电路的稳定性。

  • 总结

这次单片机程序设计专周,我感觉收获了很多,尤其是在提升自身的工作和自主学习能力方面。我在大二上学期就开始在实验室自学单片机,但是因为是自学,自觉性就很差,而且自学也是一件比较难的事,学习过程中一直都是学习和模仿别人的代码,看着别人写出来的程序代码,总觉得都能看懂,所以自己基本上没有自己构思写程序代码,

唯一做过一次全自动洗衣机也是看着别人写的源程序代码,不停的修修改改。

这次刚拿到设计题目时,本以为不难,一开始还信心满满,然而开始做就感觉有些茫然了,尤其是题目中还有些知识是我还没学过的,比如液晶。所以我们组就必须得先把液晶学了,把需要学习的模块学完后,先是毫无头绪的写主程序,整个过程举步维艰,然后我们去学习了别人的设计方法,开始分工和分模块进行。组内分组搭建硬件电路,和写程序,先把电路搭建好,再写程序。写程序的过程中,我们是把程序分成几个小模块:液晶显示模块、键盘输入模块、抢答模块,然后每个模块写成子程序,在主程序中只需调用各个子程序即可。

在程序调试过程中,也遇到各种问题,但都逐个解决了。在整个设计过程中,我学到了许多课堂上老师无法传授的知识,也真正地做出了一件自己的产品。


单片机源程序如下:

        #include

        #define uchar unsigned char

        #define uint unsigned int

        uchar num=0,num1=0,num2=0,num3=0,num4=0,num5=0,num6=0,flag=0,flag1=0,flag4=0,flag5=0,circle=0;

        sbit ledbiaozhun=P1^0; //LED指示灯

        sbit ledjingji  =P1^1;

        sbit leddandu   =P1^2;

        sbit ledpaishui =P1^3;

        sbit ledqiangxi =P1^4;

        sbit ledruoxi   =P1^5;

        sbit ledxidi    =P1^6;

        sbit ledpiaoxi  =P1^7;

        sbit ledtuoshui =P2^0;

        

        sbit sshuiwei   =P3^6; //水位开关

        sbit sgai       =P3^7; //盖开关

        sbit paishui=P2^3; //排水阀控制

        sbit jinshui=P2^2; //进水阀控制

        

        sbit U2=P2^4;

        sbit U3=P2^5;

        sbit k1=P3^0;  // 步进改变"标准、经济、单独、排水"四种方式

        sbit k2=P3^1;  //强洗、弱洗

        sbit k3=P3^2;  //运行、暂停和解除报替功能

        void init()

        {

                uchar a=0,b=0,c=0;

                TMOD=0x01;                       //T0工作于方式1

                TH0=(65536-50000)/256; //定时时间50ms

                TL0=(65536-50000)%256;

                EA=1;                                   //开总中断

                ET0=1;                                   //开T0中断

                TR0=0;                                   //关闭T0

                EX0=1;                                   //开外部中断0

                IT0=1;                                   //外部中断0边沿触发方式

                U2=1;                                   //电机停转

                U3=1;

                P0=0xff;

        }

        void delayms(uint xms) //延时

        {

                uint i,j;

                for(i=xms;i>0;i--)

                        for(j=110;j>0;j--);

        }

        

        void key()                //控制按键

        {

                circle=1;

                if(k1==0)                //标准、经济、单独、排水按下

                {

                        delayms(10); //延时消抖

                        if(k1==0)         //再判

                        {

                                num++;         //K1按下次数加1

                                if(num==4)

                                        num=0;        //等于4,按下次数清0

                                while(!k1);        //等待按键释放

                        }

                }

                

                if(k2==0)                                //强弱选择

                {

                        delayms(10);   //延时消抖

                        if(k2==0)           //再判

                        {

                                num1++;         //按下次数加1

                                if(num1==2)

                                        num1=0;        //等于2,按下次数清0

                                while(!k2);        //等待按键释放

                        }

                }

        }

        

        void qiang()                          //强

        {

                if(flag4==0)  //电机正转

                {        

                        U2=0;

                        U3=1;

                }

        

                if(flag4==1)  //电机反转

                {

                        U2=1;

                        U3=0;

                }        

        }

        void ruo()                        //弱

        {

                if(flag5==0) //电机正转

                {        

                        U2=0;

                        U3=1;

                }

        

                if(flag5==1) //电机反转

                {

                        U2=1;

推荐阅读

史海拾趣

FDI [Future Designs , Inc.]公司的发展小趣事

为了进一步扩大市场份额,FDI公司开始实施全球化战略。公司先后在欧美、亚洲等地设立了分支机构,并与当地企业建立了紧密的合作关系。同时,FDI还积极参与国际电子展会和论坛,与全球各地的行业精英交流学习。这些举措不仅提升了FDI的品牌影响力,也为其带来了更多的商业机会。

Golledge Electronics公司的发展小趣事

作为一家有社会责任感的企业,FDI公司始终关注社会公益事业。公司积极参与扶贫、教育、环保等领域的公益活动,为社会做出了积极贡献。同时,FDI还设立了奖学金和助学金,鼓励和支持年轻人投身电子科技事业。这些举措不仅提升了公司的社会形象,也为其赢得了广泛的赞誉。

Chicago Miniature公司的发展小趣事

随着LED技术的兴起,CML敏锐地捕捉到了这一趋势,并成为第一家引进LED灯具的公司。这一决策为公司带来了巨大的发展机遇。CML不断投入研发资源,推出了一系列具有创新性的LED产品,不仅提高了照明效率,还降低了能耗。这使得CML在微型照明领域逐渐取得了领先地位,并赢得了广泛的客户基础。

EWC Controls公司的发展小趣事

EWC Controls公司始终将产品质量视为企业的生命线。公司建立了一套严格的质量管理体系和检测流程,确保每一台产品都符合高标准的质量要求。同时,公司还不断追求卓越的品质和服务,通过持续改进和创新提升产品的性能和可靠性。这种质量为本、追求卓越的理念使得EWC Controls公司的产品赢得了客户的信任和好评。

e2v technologies公司的发展小趣事

随着电子行业的快速发展,e2v不断拓展其产品线,以满足市场的多样化需求。除了传统的图像传感器产品外,公司还开发了示波器数据转换器、高性能图像处理器等,广泛应用于科学、医学、工业、汽车和电信等领域。这些产品的推出,不仅拓展了e2v的市场空间,也为其带来了可观的经济效益。

Alliance Fiber Optics Products Inc公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,AFOP始终保持着创新的精神和敏锐的市场洞察力。公司不断投入研发力量,探索新的技术方向和产品应用。同时,AFOP还注重人才培养和团队建设,吸引了一批高素质的研发人员和管理人才,为公司的未来发展奠定了坚实的基础。

这五个故事展示了AFOP从创立到发展壮大的历程,体现了公司在技术创新、市场拓展和资源整合等方面的努力和成就。随着电子行业的不断发展和技术的不断进步,相信AFOP在未来会继续保持领先地位,为光网通信领域的发展做出更大的贡献。

问答坊 | AI 解惑

大家看一下我换个元件行不行?

d:\\m.jpg这个是调速电路图   有个人问我换个独石电容行不行。还有这个电容的作用。?哪位能给说详细点?…

查看全部问答>

USB分析工具 急

我现在时在CE上开发USB驱动。。但是我掉用USBd函数后没有什么反映读不到数。。也不知道数是否发出去了。。有没有什么USB在CE的的小工具能帮我看看。。我的数据是否发出去了。。。。请大侠们帮忙介绍下。。谢谢。。。…

查看全部问答>

WDT的问题急!!!

我用看门狗中断来采集A/D,芯片是F1232…

查看全部问答>

(刚接触AVR)关于自制USBASP下载线的问题,麻烦各位大大!

我用已有的ATMEGA8,弄出了下载线,能对atmega128烧写程序, 我想弄多几条这种下载线, 在网上已经找好下载的程序,但不知如何对ATMEGA8烧写程序, 能用这个下载线烧写吗?如何连接ATMEGA8?麻烦各位大大帮忙! 感谢各位!…

查看全部问答>

STM8怎么生成静态链接库呀

紧急求助呀!!!STM8怎样生成静态链接库!!! 万分感谢!!!…

查看全部问答>

初学者对 时钟的 问题

说430里面有 3个时钟 分别是 ACLK  MCLK  SMCLK 那么单片机在 工作的时候 这三个时钟都同时在工作吗?就是我想让ACLK 去干点啥  然后让MCLK去干另一个,SMCLK做其他的,还是这三个当中只有一个在工作啊  [ 本帖最后由 41 ...…

查看全部问答>

怎么选好驱动电路

谁能告诉我,5-10个mos管并联使用时使用什麽样的驱动电路比较合适?为什么?…

查看全部问答>

【程序设计】聊聊C语言 之 数据类型引发的程序异常

       我们在使用C语言进行程序设计时常常定义很多变量。对于每一个变量来说都有其特定的变量类型,比如“整型”就是我们使用较为频繁的一种变量类型。        对于像“整型”这种数据类型它更多表达的 ...…

查看全部问答>

ise14.6 license 支持全系列xilinx 7系列

vivado2013.2 license 支持全系列xilinx 7系列 ise14.6 license 支持全系列xilinx 7系列 推荐一个知名公司资深fpga工程师share的网站 www.rocetech.com KINTEX7,FPGA采集卡,pcieX8采集卡,pcie采集卡,万兆光网卡,rocetech 技术工程师电话1( ...…

查看全部问答>

国产操作系统COS

本帖最后由 季夏木槿 于 2014-1-23 14:10 编辑          昨天看电视的时候,看到一个广告,说的竟然是国产操作系统COS,对于这个操作系统,我还是第一次听说,上网搜了一下资料,发现是前几天才公布的。以下是这款 ...…

查看全部问答>