还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
广东石油化工学院单片机原理及应用技术课程设计题目洗衣机人机界面的设计班级电气专09-1团队:8号队成员郑伟宁(队长)、冯超宇、孙政、曾建平学号090331601420903316011209033160128090331601392011年7月4日~2011年7月8日目录TOC\o1-1\h\z\u
一、设计任务及团队分工说明3
二、总体设计及需求分析4
三、硬件选型及电路设计5
四、软件设计6
五、结论7
六、设计心得8
七、致谢9参考文献
101、设计任务及团队分工说明题目十二洗衣机人机界面的设计★★★
1.见下图,包括洗涤过程、脱水转速、温度的调节及程序切换、启动暂停等功能(20分)
2.用2个7段LED数码管显示剩余洗涤时间(30分)
3.设计一个“预约”键,用于定时启动洗衣机;(30分)4*.不同模式下的过程及转速组合[例如,在棉普通方式下,过程包括洗涤、脱水;脱水转速为800,水温30度]105@.其他功能(创新部分10分)团队分工说明总体设计及需求分析由团队所有人负责;硬件选型及电路设计由团队所有人分析负责;软件设计由团队所有人负;设计心得由冯超宇负责;结论由孙政负责;致谢由郑伟宁,曾建平负责特别感谢余春辉提供技术支持
2、总体设计及需求分析
1.设计总体思路洗涤过程就是电机的正反转,脱水就是一个方向高速转,温度调节可以采用DS18B20检测水温,程序切换、启动、暂停以及预约都是键盘功能处理从课程设计要求来看,要求实现电机的正传、反转、暂停,实际上没有电机给我们接上,这回要用四个LED灯的状态来表示
3、硬件选型及电路设计
1.单片机(如图)本次设计使用单片机芯片AT89C51,AT89C51的工作特性内含4KB的FLASH存储器擦写次数1000次;内含128字节的RAM;具有32根可编程I/O线;具有2个16位编程定时器;具有6个中断源,5个中断矢量,2级优先权的中断结构;具有1个全双工的可编程串行通信接口;具有1个数据指针DPTR;具有可编程3级程序锁定位;AT89C51的工作电源为5(1±
0.2)V且典型值为5V;最高工作频率为24MHZ;AT89C51的编程程序频率为3~24MHZ,编程启动电流和电压分别为1mA、5或12V
2.keil软件介绍keil软件是目前最流行开发MCS-51系列单片机的软件,这从近几年各仿真机厂商纷纷宣布全面支持keil即可看出keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开放方案,通过一个集成开发环境将这些部分组成在一起..
3.总电路设计图
4、软件设计
(1).keil软件介绍keil软件是目前最流行开发MCS-51系列单片机的软件,这从近几年各仿真机厂商纷纷宣布全面支持keil即可看出keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开放方案,通过一个集成开发环境将这些部分组成在一起.单片机应用系统的软件设计是系统设计中最基本而且工作量较大的任务与系统机上操作系统支持下的纯软件不同,单片机的软件设计是在裸机的条件下进行的,而且随应用系统的不同而不同在软件中一般需考虑以下几个方面1) 根据要求确定软件的具体任务细节,然后确定合理的软件结构一般系统软件的主程序和若干个子程序及中断服务程序组成,详细划分主程序、子程序和中断服务程序的具体任务,确定各个中断的优先级主程序是一个顺序执行的无限循环的程序不停地顺序查询各种软件标志,以完成对事务的处理在子程序和中断服务程序中要考虑现场的保护和恢复,以及它们和主程序之间的信息交换方法2) 程序的结构用模块化结构,即把监控程序分解为若干个功能相对独立的较小的程序模块分别设计,以便于调试具体设计时可采用自底向上或自顶向下的方法3) 在进行程序设计时先根据问题的定义描述出各个输入变量和输出变量之间的数学关系,即建立数学模型然后绘制流程图,再根据流程图用汇编语言进行具体程序的编写4) 在程序设计完成后,利用相应的开发工具和软件进行程序的汇编,生成程序的机器码
[6]本设计中系统软件是采用C51编写的.在研制单片机应用系统时,汇编语言是一种常用的软件工具,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统
(2)程序设计#includereg
51.h#defineucharunsignedchar#defineuintunsignedint#defineEnable;EA=1;#defineDisable;EA=0;#defineBIAOZHUN0#defineJINGJI1#defineDANDU2#definePAISHUI3#defineQIANGXI0#defineRUOXI1#defineZanTing;ET0=0;ET1=0;Stop;#defineJiXu;ET0=1;ET1=1;sbitLED_BiaoZhun=P1^0;//标准程序显示灯sbitLED_JingJi=P1^1;//经济程序显示灯sbitLED_DanDu=P1^2;//单独程序显示灯sbitLED_PaiShui=P1^3;//排水程序显示灯sbitLED_QiangXi=P1^4;//强洗状态灯sbitLED_RuoXi=P1^5;//弱洗状态灯sbitLED_XiDi=P1^6;//洗涤状态灯sbitLED_PiaoXi=P1^7;//漂洗状态灯sbitLED_TuoShui=P2^0;//脱水状态灯sbitK_SEL_ChengXu=P3^0;//选择程序键sbitK_SEL_QiangRuo=P3^1;//选择强弱键sbitp32=P3^2;//voidProgramme_PaiShuivoid;ucharflag_SEL_ChengXu;//默认为标准程序,bitflag_SEl_QiangRuo;//默认为强洗,1为弱洗bitflag_Run;//运行标志,1为运行bitflag_JinShui;//进水标志,1为进水bitflag_PaiShui;//排水标志,1为排水bitflag_XiDi;//置洗涤标志bitflag_PiaoXi;//置漂洗标志voidDelay_10msuintT1{uintt1t2;fort1=0;t1T1;t1++fort2=0;t21250;t2++;//10ms}voidPin_Initvoid{LED_BiaoZhun=0;//默认为标准程序,灯亮LED_JingJi=1;//经济程序显示灯,灭LED_DanDu=1;//单独程序显示灯,灭LED_PaiShui=1;//排水程序显示灯,灭LED_QiangXi=0;//默认为强洗状态,灯亮LED_RuoXi=1;//弱洗状态灯,灭LED_XiDi=1;//洗涤状态灯,运行后灯亮LED_PiaoXi=1;//漂洗状态灯,运行后灯亮LED_TuoShui=1;//脱水状态灯,运行后灯亮}voidExInt_Initvoid{IT0=1;EX0=1;IT1=1;EX1=1;}voidTimer0_Initvoid{TMOD=TMOD|0X01;TH0=0X3C;TL0=0XB0;TR0=1;}voidTimer1_Initvoid{TMOD=TMOD|0X10;TH1=0X3C;TL1=0XB0;}voidint0voidinterrupt0{if!p32{Delay_10ms1;if!p32{if!flag_Runflag_Run=1;{staticbitflag_ZanTing;flag_ZanTing=~flag_ZanTing;ifflag_ZanTingif!flag_ZanTingJiXu;}}}}voidTimer0voidinterrupt1{TR0=0;//停止计数TH0=0X3C;//重装定时器值TL0=0XB0;TR0=1;}voidSEL_ChengXUvoid{if!K_SEL_ChengXu//程序选择键{Delay_10ms1;//延时10ms左右,去抖动if!K_SEL_ChengXu{while!K_SEL_ChengXu;flag_SEL_ChengXu++;ifflag_SEL_ChengXu==4flag_SEL_ChengXu=0;switchflag_SEL_ChengXu{caseBIAOZHUN:LED_BiaoZhun=0;//亮LED_JingJi=1;//灭LED_DanDu=1;//灭LED_PaiShui=1;//灭break;caseJINGJI:LED_BiaoZhun=1;LED_JingJi=0;LED_DanDu=1;LED_PaiShui=1;break;caseDANDU:LED_BiaoZhun=1;LED_JingJi=1;LED_DanDu=0;LED_PaiShui=1;break;casePAISHUI:LED_BiaoZhun=1;LED_JingJi=1;LED_DanDu=1;LED_PaiShui=0;break;default:break;}}}}voidSEL_QiangRuovoid{if!K_SEL_QiangRuo//强弱选择键{Delay_10ms1;//延时10ms左右,去抖动if!K_SEL_QiangRuo{while!K_SEL_QiangRuo;flag_SEl_QiangRuo=~flag_SEl_QiangRuo;if!flag_SEl_QiangRuo{LED_QiangXi=0;//强洗状态,灯亮LED_RuoXi=1;//弱洗状态灯,灭}else{LED_QiangXi=1;//强洗状态,灯亮LED_RuoXi=0;//弱洗状态灯,灭}}}}voidJinShuivoid{TR1=0;TR0=0;TF0=0;}voidXiDivoid{flag_XiDi=1;TR1=1;Timer0_Init;whileflag_XiDi;TR1=0;LED_XiDi=1;}voidProgramme_BiaoZhunvoid{LED_XiDi=0;//洗涤状态灯LED_PiaoXi=0;//漂洗状态灯LED_TuoShui=0;//脱水状态灯JinShui;XiDi;}voidProgramme_JingJivoid{TR1=0;LED_XiDi=0;//洗涤状态灯LED_PiaoXi=0;//漂洗状态灯LED_TuoShui=0;//脱水状态灯}voidProgramme_DanDuvoid{LED_XiDi=0;//洗涤状态灯LED_PiaoXi=1;//漂洗状态灯LED_TuoShui=1;//脱水状态灯}voidProgramme_PaiShuivoid{LED_XiDi=1;//洗涤状态灯LED_PiaoXi=1;//漂洗状态灯LED_TuoShui=0;//脱水状态灯}voidmain{Pin_Init;//管脚初始化ExInt_Init;//外中断初始化Timer1_Init;ET0=1;ET1=1;Enable;//开总中断while1{if!flag_Run//运行前按键才有效{SEL_ChengXU;//程序选择程序SEL_QiangRuo;//强弱选择程序}ifflag_Run{switchflag_SEL_ChengXu{caseBIAOZHUN:Programme_BiaoZhun;//标准洗衣程序break;caseJINGJI:Programme_JingJi;//经济洗衣程序break;caseDANDU:Programme_DanDu;//单独洗衣程序break;casePAISHUI:Programme_PaiShui;//排水洗衣程序break;default:break;}}flag_Run=0;}}
五、结论本设计以MCS-51单片机为核心,设计洗衣过程主要包括洗涤过程、漂洗过程、脱水过程根据洗衣过程的要求,控制程序设计主要包括主程序、内部定时中断服务程序、外部服务中断程序的设计本设计侧重于软件的设计,采用C语言编程,通过程序实现洗衣机的自动完成注水、洗涤、漂洗、和脱水全过程用数码管来显示洗衣各功能的剩余时间以及实时所处的洗衣状态本设计已基本实现洗衣机的各种功能,但是由于自身水平有限等原因,本设计中没有设计不同模式下的过程及转速组合,所以本设计还存在一些不足,有待改进
六、设计心得经过了一周的课程设计,深有感触啊我们组直到星期四晚才设计完成,其他组的同学有的在第一天就有做完的了,每天一直搞到凌晨那是家常便饭了,每天都在想这个问题该如何解决,那个地方有什么不对;大家都急啊,千呼万唤经过近5天出来了,第二天,赶快去进行仿真,吃饭也宿舍,吃完就直接去调试,这么个小事就搞得大家这样,可以想象搞开发是如何的不容易了,工作更是不简单,生活不是我们在寝室里所想象的那样,首先自己的事情主要还是靠自己,虽然合作也同样重要,有一个好的合作伙伴也是不容忽视的,现在的很多工程、项目或者开发都是一个团体共同努力,每一个成员都要用功,一个项目或课题决定在一个人手里,那是不健康的、没有什么更好的前途的,从本次课程设计的目的来看,收获也是不少的,它使我们对课本以及以前学过的知识有了一个更好的总结与理解,也让我们知道了,光分开使不够的,从外面学到的知识要把形成一各整体,这也很好的训练了外面对开发一个项目应该有怎样的思路和准备更清晰来学校两年多了,无论是从C语言课程设计到金工实习,还是到现在的单片机的课程设计,每一次自己都觉得有一个进步,虽然有些方面自己做不出,但可以从老师和其他同学那里学到更好更多的东西,他们从另一个方面透析了自己的困难,这是很重要的,它让我学会了怎样学习别人的长处并把它变成自己的长处有这样的机会和收获,要感谢老师的辅导以及同学的帮助,是他们让自己有了一个更好的认识经过一个星期的课程设计,我们小组的每一个成员都收获了许多刚开始时,我们接到这个任务,大脑一片茫然,根本不知道如何下手因为基础知识不够扎实,对各种硬件和程序的认识存在各方面的不足前期这些障碍给我们造成了很大的困难我们从最初开始,通过查找各种书籍,上网查阅相关知识,加入各种单片机Q群向网友们请教最终才得已完成这份设计用isis及keiluVisiion4软件进行仿真分析首先要搞清楚步进电机的工作原理,与外部电路的连接,单片机原理,汇编语言等电路图设计出来后,总是存在各种的问题,我们总是不停地修改,在和各位队友们的交流中,我们不停地修改,最终得出了这份作业,虽然还存在各种的不足,但是看着我们自己辛苦设计出来的作业,心里还是充满了自豪这次设计实验,锻炼了我们的团队合作能力,加强了我们的动手能力,我们从这次设计中学到了很多知识,其实设计是一份很有趣的工作我们基本上是从0开始,不停地学习,研究遇到问题,想着去解决问题,锻炼了自己查找资料的能力在学习单片机这条道路上,我们要走的路还很长,我想我们每个学习这一门学科的学生都应该学好这门学科
七、致谢经过一个学期的努力,我和我的已基本将我们的毕业设计--基于MCS-51单片机的洗衣机控制系统设计完成首先最要感谢的是我们的指导老师在本次设计任务中我们遇到了好多困难,是老师在我们不知所措的时候给了我们精心指导,老师严谨的治学态度、对科研工作的执着追求、谦逊和蔼的风范对自己产生的深远影响,使自己受益终生在他的严格要求下,我们的设计有了很大的进展,每次的指导我们都会从中获得丰富的理论知识同时也会提高实践能力,这对我将来进一步学习电子方面的知识有着极大的帮助同时还要感谢我的同组同学,在与他和合作中他给了我很大的帮助,与他的讨论和交流给了自己很多有益的启迪,对自己掌握学科知识、完成设计任务和论文写作给予了很大帮助同时,还要感谢学校为我们安排了这个教学环节,也感谢在此次设计过程中给与我极大帮助和理解班主任和辅导员参考文献
[1]郭天祥编著.51单片机C语言教程(新概念).电子工业出版社
[2]谭浩强编著.C++程序设计.清华大学出版社.
[3]王琰.基于MCS-51单片机的洗衣机控制系统设计[J]自动化与仪器仪表200804Y开始系统初始化启动相关功能洗衣状态显示洗衣功能设置结束。