
一、设计目的
1、能够根据题目要求实掌握编写程序、调试程序、软件仿真及与硬件结合。
2、熟悉C52单片机的内部结构和功能及I/O分配,合理使用其内部寄存器、存储器、位寻址。能够完成全自动洗衣机的软件编程设计工作。
3、对全自动洗衣机软件编程、调试、相关硬件设备的使用技能等方面得到真正的实践机会,把软硬件结合,克服其中的种种问题,提高编程能力。
二、设计要求
1、洗涤过程
通电后,洗衣机进入暂停状态,以便放好衣物。若不选择洗衣周期,则洗衣机从洗涤过程开始。当按暂停开关键时,进入洗涤过程。首先进水阀通电,打开进水开关,向洗衣机供水;当到达预定水位时,水位开关接通,进水阀断电关闭,停止进水;电机接通电源,带动波轮旋转,形成洗衣水流。电机是一个正反转电机,可以形成往返水流,有利于洗涤衣物。
2、脱水过程。
洗涤或漂洗过程结束后,电机停止转动,排水阀通电,开始排水。排水阀动作时,带动离合器动作,使电机可以带动内桶转动。当水位低到一定值时,水位开关断开,再经过一段时间后,电机开始正转,带动内桶高速旋转,甩干衣物。
3、漂洗过程。
与洗涤过程操作相同,只是时间短一些。
全部洗衣工作完成后,由蜂鸣器发出音响,表示衣物已洗干净。
4、具有弱、强洗涤功能
要求强洗时正反转驱动时间各为4S,间歇时间为1S;弱洗时正反转驱动时间各为3S,间歇时间为2S。
洗衣机的标准洗衣程序是:洗涤——脱水——漂洗——脱水——漂洗——脱水——漂洗——脱水。经济洗衣程序少一次漂洗和脱水过程。具体的时间自己设定。
5、暂停功能
不管洗衣机工作在什么状态,当按下暂停键时,洗衣机需暂停工作,待启动键按下后洗衣机又能按原来所选择的工作方式继续工作。
6、声光显示功能。
洗衣机各种工作方式的选择和各种工作状态均有声光提示和显示。
三、硬件电路
3.1 STCC52单片机
3.1.1 STCC52单片机结构
STCC52单片机如图3-1所示。
图3-1 STCC52单片机
STCC52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STCC52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STCC52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STCC52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
3.1.2 晶振电路
晶振电路如图3-2所示。
图3-2 晶振电路
晶振电路是内部时钟发生器,提供震荡脉冲。晶振的安装使用接插方式,可以直接取下更换所需晶振。
3.1.3 复位电路
复位电路图如图3-3所示。
图3-3 复位电路
复位电路的主要作用就是清零。按下复位按钮,与低电平相接,清除所执行过的程序,回到初始状态。
3.2 系统电路原理图
系统电路原理图如图3-7所示。
图3-7 系统电路图
四、流程图设计
4.1主程序
通过P0.0口是否为0判断洗衣模式是标准模式还是经济模式,当P0.0为0时洗衣模式为标准模式,程序跳到标准模式下执行,否则为经济模式,程序跳到经济模式下执行。
图4-1 主程序
4.2 强洗子程序
洗涤过程时首先进水阀通电,打开进水阀P1.0,向洗衣机供水;当到达预定水位时,水位开关P3.1接通,进水阀断电关闭,停止进水。正反转驱动时间各为4S,间歇时间为1S。
4.3 弱洗子程序
洗涤过程时首先进水阀通电,打开进水阀P1.0,向洗衣机供水;当到达预定水位时,水位开关P3.1接通,进水阀断电关闭,停止进水。正反转驱动时间各为3S,间歇时间为2S。
4.4 脱水子程序
洗涤或漂洗过程结束后,电机停止转动,打开排水阀P1.3,开始排水。排水阀动作时,带动离合器动作,使电机可以带动内桶转动。当水位低到一定值时,水位开关P1.3断开,电机开始正转,带动内桶高速旋转,甩干衣物,5S后脱水停止,脱水子程序返回。
4.5 漂洗子程序
漂洗过程时首先进水阀通电,打开进水阀P1.0,向洗衣机供水;当到达预定水位时,水位开关P3.1接通,进水阀断电关闭,停止进水。通过P0.2口判断洗涤功能是强洗还是弱洗,若P0.2为1时强洗,强洗时正反转驱动时间各为4S,间歇时间为1S。
五、源程序
#include sbit s1=P0^0; sbit s2=P0^2; sbit s3=P3^0; sbit s4=P3^1; sbit sheng=P0^7; sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit led4=P1^3; sbit led5=P1^4; sbit led6=P1^5; sbit led7=P1^6; sbit led8=P1^7; void delay(unsigned int z)//延时函数 {int x,y; for(x=z;x>0;x--); for(y=110;y>0;y--); } void qx() //强洗 {led1=1; if(s4==1); led2=1; delay(4000); led2=!led2; delay(1000); led3=1; delay(4000); led3=!led3; delay(1000); } void rx() //弱洗 {led1=1; if(s4==1); led2=1; delay(3000); led2=!led2; delay(2000); led3=1; delay(3000); led3=!led3; delay(2000); } void tuo() //脱水函数 {led4=1; led5=1; if(s3==1); led2=1; delay(5000); } void piao() //漂洗函数 {led8=1; led1=1; if(s4==1); led2=1; delay(4000); led2=!led2; delay(1000); led3=1; delay(4000); led3=!led3; delay(1000);} void main() //主函数 {int i; i=1; if(s1==0) {led6=1; if(s2==0) {led7=0; rx(); while(i<=4) {tuo(); while(i<4) { piao(); } i++;} } else led7=1; qx(); while(i<=4) {tuo(); while(i<4) { piao(); } i++; } } else {led6=0; if(s2==0) {led7=0; rx(); while(i<=3) {tuo(); while(i<3) { piao(); } i++;} } else led7=1; qx(); while(i<=3) {tuo(); while(i<3) { piao(); } i++; } } sheng=1; } 六、设计总结 通过完成单片机课程设计,过程虽是辛苦的,但从中我却学到了很多东西。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。单片机已经成为当今计算机应用中空前活跃的领域, 因此作为电气工程及其自动化专业的学生来说掌握单片机的开发技术是十分重要的。所以感谢学校安排这次单片机小学期,让我们有了将理论与实践同步的机会。在硬件焊接前我们先用Protel 99se将接线图画出,然后按照接通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和思考的能力。 七、参考文献 [1] 高峰.单片微型计算机原理与接口技术.科学出版社,2007 [2] 李飞.单片机原理及其应用.西安电子科技大学出版社,2007 [3] 张志良.单片机原理与控制技术.机械工业出版社,2007
