基于的51单片机全自动洗衣机设计.doc

上传人:可**** 文档编号:34602240 上传时间:2022-08-16 格式:DOC 页数:23 大小:115KB
返回 下载 相关 举报
基于的51单片机全自动洗衣机设计.doc_第1页
第1页 / 共23页
基于的51单片机全自动洗衣机设计.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《基于的51单片机全自动洗衣机设计.doc》由会员分享,可在线阅读,更多相关《基于的51单片机全自动洗衣机设计.doc(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、- - 全自动洗衣机课程设计基于51单片机,C语言实现。根本要求模拟全自动洗衣机工作过程。以电机替代洗衣机电机。显示洗衣机工作的状态进水、浸泡、洗衣、脱水、完毕。显示工作剩余时间洗衣程序可自定义,时间精度:秒。洗衣时交替正、反转。扩展要求洗衣和脱水时电机转速不同。增加水位传感器输入。故障报警。增加声音提示。其它自定义功能。设计用Preteus仿真:仿真图如下:C文件函数代码:#include/*/#define uchar unsigned char#define uint unsigned int/*/*/sbit mo_r = P32; /电机右控制线sbit mo_l = P33;/电机

2、左控制线/*/sbit key_menu = P34; / 菜单按键sbit key_on = P35; / 开场按键sbit key_off = P36; / 完毕按键sbit key_se = P37; / 菜单项选择择按键/*/sbit led_in = P00;/进水指示灯sbit led_xi = P01; / 洗衣指示灯sbit led_pao = P02;/泡洗指示灯sbit led_xx = P03; / 脱水指示灯sbit led_out = P04; / 出水指示灯sbit led_over = P05; / 洗衣完毕指示灯sbit led_work = P06; / 电机

3、工作指示灯sbit led_wring = P07; /报警指示灯sbit other = P31; / 脱水电源控制开关sbit anther = P30; /洗衣电源控制开关/*/uchar code num10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /*/char sec = 0; / 时间秒char min = 0; / 时间分uchar count=0; / 中断计数uchar flag0=0; / 洗衣机工作状态标志uchar flag1=0; / 进水次数标志uchar flag2=0; / 出水次数标志uchar

4、flag3=0; / 泡洗次数标志uchar err =0; /报警标志uchar quan = 0;/正反转计数 /*/ 函数声明/*/void delay();/延时函数void in();/ 进水子程序void out(); / 出水子程序void over(); / 完毕子程序void xi(); / 洗衣子程序void pao();/ 泡衣子程序void xx(); /脱水子程序void on(); / 工作on处理子程序void se(); / 显示菜单项选择择void SEG_display(); /显示时间子程序void key_scan(); / 按键扫描子程序/*/ 延时函

5、数/*/void delay(uint i)uint x,y;for(x=i;x0;x-) for(y=120;y0;y-);/*/ 工作on处理子程序/*/void on()TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;P0 = 0xff;if(flag0 = 0) in();if(flag0 = 1) xi();if(flag0 = 2) pao();if(flag0 = 3) xx();if(flag0 = 4) out();/*/ 完毕子程序/*/void over()other=0;ant

6、her=0;P0 = 0xff;mo_r=0;mo_l=0;led_over = 0;EA=0;/*/ 进水子程序/*/void in()anther=0;other=0;P0 = 0xff;led_in = 0;flag1+;mo_r = 0;mo_l = 0;min = 0;sec = 8;/*/洗衣子程序/*/void xi() anther=1; other=0; P0 = 0xff; led_work = 0; led_xi = 0; mo_r = 1; mo_l = 0; min = 1; sec = 36; quan = 0;/*/ 泡衣子程序/*/void pao() anth

7、er=1;other=0;P0 = 0xff;led_pao = 0;led_work = 0;flag3+;mo_r = 1;mo_l = 0;min = 1;sec = 35;quan = 0;/*/脱水子程序/*/void xx()other=1;anther=0;P0 = 0xff;led_xx = 0;mo_r = 0;mo_l = 1;min = 0;sec = 50;/*/ 出水子程序/*/void out()anther=0;other=0;P0 = 0xff;led_out = 0;flag2+;mo_r = 0;mo_l = 0;min = 0;sec = 5;/*/ 显示

8、菜单项选择择/*/void se()P0 = 0xff;if(flag0 = 5)flag0 = 0; if(flag0 = 0)led_in = 0;if(flag0 = 1)led_xi=0;if(flag0 = 2)led_pao=0;if(flag0 = 3)led_xx=0;if(flag0 = 4)led_out=0;/*/ 菜单处理子程序/*/void menu() min = 0;sec = 0;mo_r=0;mo_l=0;SEG_display(); while(1) if(key_on = 0)delay(5);if(key_on = 0)while(!key_on);on

9、();break;/*/if(key_off = 0)delay(5);if(key_off = 0)while(!key_off);over();break;/*/if(key_se = 0)delay(5);if(key_se = 0)while(!key_se);flag0+;se();/*/ 按键扫描子程序/*/void key_scan() if(key_menu = 0)delay(5);if(key_menu = 0)while(!key_menu);menu();/*/if(key_on = 0)delay(5);if(key_on = 0)while(!key_on);on(

10、);/*/if(key_off = 0)delay(5);if(key_off = 0)while(!key_off);over();/*/显示子程序/*/void SEG_display()P1=0x01;P2 = nummin/10;delay(10);P1 = 0x02;P2 = nummin%10;delay(10);P1 = 0x04;P2 = numsec/10;delay(10);P1 = 0x08;P2 = numsec%10;delay(10);/*/ 主函数/*/void main()led_in=0;anther=0;other=0;while(1)SEG_display

11、();key_scan();/*/ 定时器0中断处理程序/*/void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+; if(count=20) count = 0;sec-;if(flag0=1)|(flag0=2) quan+;switch(quan) case 1:mo_r=1;mo_l=0;break;case 10:mo_r=0;mo_l=0;break;case 15:mo_r=0;mo_l=1;break;case 25:mo_r=0;mo_l=0;break;default:; if

12、(quan=30) quan=0; /*/if(sec = 0)&(min != 0) min-; sec = 59; /*/if(sec0)&(min=0)&(flag0=0) /进水完毕 switch(flag1) case 1:flag0=1;xi();break;case 2:flag0=2;pao();break;case 3:flag0=2;pao();break;case 4:flag0=2;pao();break;default: err=1;led_wring = 0; /*/if(sec0)&(min=0)&(flag0=1) /洗衣完毕 flag0 = 4; out();

13、 /*/if(sec0)&(min=0)&(flag0=2) /泡衣完毕 switch(flag3) case 1:flag0=4;out();break;case 2:flag0=4;out();break;case 3:flag0=4;out();break;default: err=1;led_wring = 0; /*/if(sec0)&(min=0)&(flag0=4) /出水完毕switch(flag2) case 1:flag0=0;in();break;case 2:flag0=0;in();break;case 3:flag0=0;in();break;case 4:flag0=3;xx();break;default: err= 1;led_wring = 0; /*/if(sec0)&(min=0)&(flag0=3) sec = 0; over();- - word.zl-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com