的单片机全自动洗衣机设计北理工.docx

上传人:b****3 文档编号:11512294 上传时间:2023-06-01 格式:DOCX 页数:19 大小:202.38KB
下载 相关 举报
的单片机全自动洗衣机设计北理工.docx_第1页
第1页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第2页
第2页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第3页
第3页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第4页
第4页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第5页
第5页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第6页
第6页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第7页
第7页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第8页
第8页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第9页
第9页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第10页
第10页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第11页
第11页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第12页
第12页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第13页
第13页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第14页
第14页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第15页
第15页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第16页
第16页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第17页
第17页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第18页
第18页 / 共19页
的单片机全自动洗衣机设计北理工.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

的单片机全自动洗衣机设计北理工.docx

《的单片机全自动洗衣机设计北理工.docx》由会员分享,可在线阅读,更多相关《的单片机全自动洗衣机设计北理工.docx(19页珍藏版)》请在冰点文库上搜索。

的单片机全自动洗衣机设计北理工.docx

的单片机全自动洗衣机设计北理工

全自动洗衣机课程设计

基于51单片机,C语言实现。

基本要求

模拟全自动洗衣机工作过程。

以电机替代洗衣机电机。

显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。

显示工作剩余时间(洗衣程序可自定义,时间精度:

秒)。

洗衣时交替正、反转。

扩展要求

洗衣和脱水时电机转速不同。

增加水位传感器输入。

故障报警。

增加声音提示。

其它自定义功能。

设计用Preteus仿真:

仿真图如下:

C文件函数代码:

#include

//****************************//

#defineucharunsignedchar

#defineuintunsignedint

//*******************************//

//***************************//

sbitmo_r=P3^2。

//电机右控制线

sbitmo_l=P3^3。

//电机左控制线

//****************************//

sbitkey_menu=P3^4。

//菜单按键

sbitkey_on=P3^5。

//开始按键

sbitkey_off=P3^6。

//结束按键

sbitkey_se=P3^7。

//菜单选择按键

//***************************//

sbitled_in=P0^0。

//进水指示灯

sbitled_xi=P0^1。

//洗衣指示灯

sbitled_pao=P0^2。

//泡洗指示灯

sbitled_xx=P0^3。

//脱水指示灯

sbitled_out=P0^4。

//出水指示灯

sbitled_over=P0^5。

//洗衣结束指示灯

sbitled_work=P0^6。

//电机工作指示灯

sbitled_wring=P0^7。

//报警指示灯

sbitother=P3^1。

//脱水电源控制开关

sbitanther=P3^0。

//洗衣电源控制开关

//******************************//

ucharcodenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。

//

//*****************************//

charsec=0。

//时间秒

charmin=0。

//时间分

ucharcount=0。

//中断计数

ucharflag0=0。

//洗衣机工作状态标志

ucharflag1=0。

//进水次数标志

ucharflag2=0。

//出水次数标志

ucharflag3=0。

//泡洗次数标志

ucharerr=0。

//报警标志

ucharquan=0。

//正反转计数

//**********************************//

//函数声明

//*************************************//

voiddelay()。

//延时函数

voidin()。

//进水子程序

voidout()。

//出水子程序

voidover()。

//结束子程序

voidxi()。

//洗衣子程序

voidpao()。

//泡衣子程序

voidxx()。

//脱水子程序

voidon()。

//工作on处理子程序

voidse()。

//显示菜单选择

voidSEG_display()。

//显示时间子程序

voidkey_scan()。

//按键扫描子程序

//*****************************//

//延时函数

//****************************//

voiddelay(uinti)

{

uintx,y。

for(x=i。

x>0。

x--)

for(y=120。

y>0。

y--)。

}

//******************************//

//工作on处理子程序

//********************************//

voidon()

{

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()。

}

//*******************************//

//结束子程序

//*********************************//

voidover()

{other=0。

anther=0。

P0=0xff。

mo_r=0。

mo_l=0。

led_over=0。

EA=0。

}

//*********************************//

//进水子程序

//*********************************//

voidin()

{anther=0。

other=0。

P0=0xff。

led_in=0。

flag1++。

mo_r=0。

mo_l=0。

min=0。

sec=8。

}

//*********************************//

//洗衣子程序

//*********************************//

voidxi()

{anther=1。

other=0。

P0=0xff。

led_work=0。

led_xi=0。

mo_r=1。

mo_l=0。

min=1。

sec=36。

quan=0。

}

//*********************************//

//泡衣子程序

//*********************************//

voidpao()

{

anther=1。

other=0。

P0=0xff。

led_pao=0。

led_work=0。

flag3++。

mo_r=1。

mo_l=0。

min=1。

sec=35。

quan=0。

}

//*********************************//

//脱水子程序

//*********************************//

voidxx()

{other=1。

anther=0。

P0=0xff。

led_xx=0。

mo_r=0。

mo_l=1。

min=0。

sec=50。

}

//*********************************//

//出水子程序

//*********************************//

voidout()

{anther=0。

other=0。

P0=0xff。

led_out=0。

flag2++。

mo_r=0。

mo_l=0。

min=0。

sec=5。

}

//*********************************//

//显示菜单选择

//*********************************//

voidse()

{

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。

}

}

//********************************//

//菜单处理子程序

//**********************************//

voidmenu()

{

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()。

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()。

}

}

}

}

//*********************************//

//按键扫描子程序

//*********************************//

voidkey_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()。

}

}

//*********************************//

if(key_off==0)

{

delay(5)。

if(key_off==0)

{

while(!

key_off)。

over()。

}

}

}

//*******************************//

//显示子程序

//*********************************//

voidSEG_display()

{

P1=0x01。

P2=num[min/10]。

delay(10)。

P1=0x02。

P2=num[min%10]。

delay(10)。

P1=0x04。

P2=num[sec/10]。

delay(10)。

P1=0x08。

P2=num[sec%10]。

delay(10)。

}

//*********************************//

//主函数

//*********************************//

voidmain()

{

led_in=0。

anther=0。

other=0。

while

(1)

{

SEG_display()。

key_scan()。

}

}

//**********************************//

//定时器0中断处理程序

//**********************************//

voidtimer0()interrupt1

{

TH0=(65536-50000)/256。

TL0=(65536-50000)%256。

count++。

if(count==20)

{

count=0。

sec--。

if((flag0==1)||(flag0==2))

{

quan++。

switch(quan)

{

case1:

mo_r=1。

mo_l=0。

break。

case10:

mo_r=0。

mo_l=0。

break。

case15:

mo_r=0。

mo_l=1。

break。

case25:

mo_r=0。

mo_l=0。

break。

default:

}

if(quan==30)

{

quan=0。

}

}

//**********************************//

if((sec==0)&&(min!

=0))

{

min--。

sec=59。

}

//**********************************//

if((sec<0)&&(min==0)&&(flag0==0))//进水结束

{

switch(flag1)

{

case1:

flag0=1。

xi()。

break。

case2:

flag0=2。

pao()。

break。

case3:

flag0=2。

pao()。

break。

case4:

flag0=2。

pao()。

break。

default:

err=1。

led_wring=0。

}

}

//**********************************//

if((sec<0)&&(min==0)&&(flag0==1))//洗衣结束

{

flag0=4。

out()。

}

//**********************************//

if((sec<0)&&(min==0)&&(flag0==2))//泡衣结束

{

switch(flag3)

{

case1:

flag0=4。

out()。

break。

case2:

flag0=4。

out()。

break。

case3:

flag0=4。

out()。

break。

default:

err=1。

led_wring=0。

}

}

//**********************************//

if((sec<0)&&(min==0)&&(flag0==4))//出水结束

{

switch(flag2)

{

case1:

flag0=0。

in()。

break。

case2:

flag0=0。

in()。

break。

case3:

flag0=0。

in()。

break。

case4:

flag0=3。

xx()。

break。

default:

err=1。

led_wring=0。

}

}

//***********************************//

if((sec<0)&&(min==0)&&(flag0==3))

{sec=0。

over()。

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2