单片机自动洗衣机程序.docx

上传人:b****2 文档编号:3228267 上传时间:2023-05-05 格式:DOCX 页数:28 大小:18.70KB
下载 相关 举报
单片机自动洗衣机程序.docx_第1页
第1页 / 共28页
单片机自动洗衣机程序.docx_第2页
第2页 / 共28页
单片机自动洗衣机程序.docx_第3页
第3页 / 共28页
单片机自动洗衣机程序.docx_第4页
第4页 / 共28页
单片机自动洗衣机程序.docx_第5页
第5页 / 共28页
单片机自动洗衣机程序.docx_第6页
第6页 / 共28页
单片机自动洗衣机程序.docx_第7页
第7页 / 共28页
单片机自动洗衣机程序.docx_第8页
第8页 / 共28页
单片机自动洗衣机程序.docx_第9页
第9页 / 共28页
单片机自动洗衣机程序.docx_第10页
第10页 / 共28页
单片机自动洗衣机程序.docx_第11页
第11页 / 共28页
单片机自动洗衣机程序.docx_第12页
第12页 / 共28页
单片机自动洗衣机程序.docx_第13页
第13页 / 共28页
单片机自动洗衣机程序.docx_第14页
第14页 / 共28页
单片机自动洗衣机程序.docx_第15页
第15页 / 共28页
单片机自动洗衣机程序.docx_第16页
第16页 / 共28页
单片机自动洗衣机程序.docx_第17页
第17页 / 共28页
单片机自动洗衣机程序.docx_第18页
第18页 / 共28页
单片机自动洗衣机程序.docx_第19页
第19页 / 共28页
单片机自动洗衣机程序.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机自动洗衣机程序.docx

《单片机自动洗衣机程序.docx》由会员分享,可在线阅读,更多相关《单片机自动洗衣机程序.docx(28页珍藏版)》请在冰点文库上搜索。

单片机自动洗衣机程序.docx

单片机自动洗衣机程序

#include

#defineWrite_Data1

#defineWrite_Command0

unsignedcharcodetable[]={"BZJJDDPSJSXDPXTSQR"};

unsignedcharsc,minc,park,park1,h,min,s,ms5,sound,p,X,Y,Z,Key_temp,mino,mint,ho,ht,i,jj,sct,sco,minct,minco,t[4],ts,st,so;

unsignedcharKey_process();

voidrun1();

voidrun2();

voidrun3();

voidrun4();

voidshow();

voidbegin();

voidp_trevise();

voiddelay(unsignedintn);

sbitE=P3^3;//液晶使能端(E)

sbitRW=P3^5;//液晶读写选择端(RW)

sbitRS=P3^6;//液晶数据指令选择端(RS)

sbitp26=P2^6;sbitp10=P1^0;sbitp11=P1^1;sbitp12=P1^2;sbitp13=P1^3;

voidCheck_Busy(void)

{

P0=0xff;//P0口作为输入

delay

(1);

RS=0;

RW=1;

E=1;

delay

(1);

while(P0&0X80);

E=0;

RW=0;

P0=0X00;

}

voidWrite_Lcd(bitCom_Data,unsignedcharDat)

{

Check_Busy();

if(Com_Data)//若为写数据指令

RS=1;

else

RS=0;

RW=0;

P0=Dat;

delay

(1);

E=1;

delay

(1);

E=0;

}

voidInit_Lcd(void)//初始化

{

E=0;

RW=0;

RS=0;

Write_Lcd(Write_Command,0x38);//设置16x2显示,5x7点阵,8位数据接口

Write_Lcd(Write_Command,0x0c);//开显示,不显示光标

Write_Lcd(Write_Command,0x06);//地址指针加1,且光标加1,整屏显示不移动

Write_Lcd(Write_Command,0x01);//清屏

}

voidmain()

{

Write_Lcd(Write_Command,0x01);

EA=1;//开总中断

ET0=1;//开内部中断0

TMOD=0x11;

TH0=0xe1;//计数器0高八位

TL0=0x48;//计数器0低八位

TR0=1;

sound=0;

X=0;//默认为标准状态

Y=0;//默认为强洗

Z=0;//默认为高水位

Init_Lcd();

while

(1)

{

Write_Lcd(Write_Command,0x80+0x40);

Write_Lcd(Write_Data,ht+48);//小时高位

Write_Lcd(Write_Data,ho+48);//小时低位

Write_Lcd(Write_Data,10+48);//冒号

Write_Lcd(Write_Data,mint+48);//分钟高位

Write_Lcd(Write_Data,mino+48);//分钟低位

Write_Lcd(Write_Data,10+48);//冒号

Write_Lcd(Write_Data,st+48);//秒高位

Write_Lcd(Write_Data,so+48);//秒低位

Key_temp=Key_process();//键扫描

switch(Key_temp)

{

case0:

begin();break;

case4:

begin();break;

case8:

begin();break;

case12:

begin();break;

case1:

Y=1;break;

case5:

Z=1;break;

case6:

begin();break;

case15:

p_trevise();break;//设置北京时间

default:

break;

}

}

}

voidbegin()

{X=Key_temp

switch(X)

{

case0:

run1();break;//转到标准洗衣程序

case4:

run2();break;//转到经济洗衣程序

case8:

run3();break;//转到单独洗衣程序

case12:

run4();break;//转到排水洗衣程序

default:

break;

}

}

voiddelay(unsignedintn)//延时函数

{

unsignedchari,j;

j=100;

j=n*j;

for(i=0;i

}

voidShow_Lcd1()//标准

{

unsignedchari;

Write_Lcd(Write_Command,0x80);

for(i=0;i<2;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd2()//经济

{

unsignedchari;

Write_Lcd(Write_Command,0x80);

for(i=2;i<4;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd3()//单独

{

unsignedchari;

Write_Lcd(Write_Command,0x80);

for(i=4;i<6;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd4()//排水

{

unsignedchari;

Write_Lcd(Write_Command,0x84);

for(i=6;i<8;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd41()//洗衣程序里的排水

{

unsignedchari;

Write_Lcd(Write_Command,0x80);

for(i=6;i<8;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd5()//进水

{

unsignedchari;

Write_Lcd(Write_Command,0x84);

for(i=8;i<10;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd6()//洗涤

{

unsignedchari;

Write_Lcd(Write_Command,0x84);

for(i=10;i<12;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd7()//漂洗

{

unsignedchari;

Write_Lcd(Write_Command,0x84);

for(i=12;i<14;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd8()//脱水

{

unsignedchari;

Write_Lcd(Write_Command,0x84);

for(i=14;i<16;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd9()//强洗

{

unsignedchari;

Write_Lcd(Write_Command,0x87);

for(i=16;i<17;i++)

Write_Lcd(Write_Data,table[i]);

}

voidShow_Lcd10()//弱洗

{

unsignedchari;

Write_Lcd(Write_Command,0x87);

for(i=17;i<18;i++)

Write_Lcd(Write_Data,table[i]);

}

unsignedcharKey_process()//键盘扫描程序

{

staticunsignedcharKey_temp=0xff;

unsignedchartemp;

P1&=0xf0;//P1口低四位作为数字输入时应往相应引脚写0

P2&=0xf0;//置列扫描信号为0

temp=P1&0x0f;

Key_temp=0xff;

if(temp!

=0x0f)//P1口低四位不全为1,则有键被按下11110000

{

delay

(1);//延时消抖

if(temp==(P1&0x0f))//消抖后再判断键值

{

P2|=0x07;//P2.3为0

switch(P1&0x0f)

{

case0x0e:

Key_temp=0;break;

case0x0d:

Key_temp=4;break;

case0x0b:

Key_temp=8;break;

case0x07:

Key_temp=12;break;

}

while(p11==0||p10==0||p12==0||p13==0);

P2&=0xf0;

P2|=0x0b;//P2.2为0

switch(P1&0x0f)

{

case0x0e:

Key_temp=1;break;

case0x0d:

Key_temp=5;break;

case0x0b:

Key_temp=9;break;

case0x07:

Key_temp=13;break;

}

while(p11==0||p10==0||p12==0||p13==0);

P2&=0xf0;

P2|=0x0d;//P2.1为0

switch(P1&0x0f)

{

case0x0e:

Key_temp=2;break;

case0x0d:

Key_temp=6;break;

case0x0b:

Key_temp=10;break;

case0x07:

Key_temp=14;break;

}

while(p11==0||p10==0||p12==0||p13==0);

P2&=0xf0;

P2|=0x0e;//P2.0为0

switch(P1&0x0f)

{

case0x0e:

Key_temp=3;break;

case0x0d:

Key_temp=7;break;

case0x0b:

Key_temp=11;break;

case0x07:

Key_temp=15;break;

}

while(p11==0||p10==0||p12==0||p13==0);

}

}

returnKey_temp;

}

voidrun1()

{

EA=1;//开总中断

ET0=1;//开内部中断0

TMOD=0x11;

TH0=0xe1;//计数器0高八位

TL0=0x48;//计数器0低八位

TR0=1;

sound=0;

Show_Lcd1();

if(Y==1)

Show_Lcd10();

else

Show_Lcd9();

while

(1)

{

if(Z==1)

{

minc=21;

sc=0;

while

(1)

{

show();//显示北京时间

Key_temp=Key_process();

switch(Key_temp)

{

case9:

park=!

park;break;

case13:

main();break;

case2:

park1=!

park1;

sound=1;

jj=2;

while(jj);

sound=0;break;

}

switch(minc)

{

case20:

Show_Lcd5();break;

case19:

Show_Lcd6();break;

case14:

Show_Lcd4();break;

case13:

Show_Lcd5();break;

case12:

Show_Lcd7();break;

case8:

Show_Lcd4();break;

case7:

Show_Lcd5();break;

case6:

Show_Lcd7();break;

case2:

Show_Lcd4();break;

case1:

Show_Lcd8();break;

}

if(minc==0&&sc==0)

{

Write_Lcd(Write_Command,0x01);

sound=1;

jj=2;

while(jj);

sound=0;

main();

}

}

}

else

{

minc=27;

sc=0;

while

(1)

{

show();

Key_temp=Key_process();

switch(Key_temp)

{

case9:

park=!

park;break;

case13:

main();break;

case2:

park1=!

park1;

sound=1;

jj=2;

while(jj);

sound=0;break;

}

switch(minc)

{

case26:

Show_Lcd5();break;

case25:

Show_Lcd6();break;

case19:

Show_Lcd4();break;

case17:

Show_Lcd5();break;

case15:

Show_Lcd7();break;

case11:

Show_Lcd4();break;

case9:

Show_Lcd5();break;

case7:

Show_Lcd7();break;

case3:

Show_Lcd4();break;

case1:

Show_Lcd8();break;

}

if(minc==0&&sc==0)

{

Write_Lcd(Write_Command,0x01);

sound=1;

jj=2;

while(jj);

sound=0;

main();

}

}

}

}

}

voidrun2()

{

EA=1;//开总中断

ET0=1;//开内部中断0

TMOD=0x11;

TH0=0xe1;//计数器0高八位

TL0=0x48;//计数器0低八位

TR0=1;

sound=0;

Show_Lcd2();

if(Y==1)

Show_Lcd10();

else

Show_Lcd9();

while

(1)

{

if(Z==1)

{

minc=15;

sc=0;

while

(1)

{

show();

Key_temp=Key_process();

switch(Key_temp)

{

case9:

park=!

park;break;

case13:

main();break;

case2:

park1=!

park1;

sound=1;

jj=2;

while(jj);

sound=0;break;

}

switch(minc)

{

case14:

Show_Lcd5();break;

case13:

Show_Lcd6();break;

case8:

Show_Lcd4();break;

case7:

Show_Lcd5();break;

case6:

Show_Lcd7();break;

case2:

Show_Lcd4();break;

case1:

Show_Lcd8();break;

}

if(minc==0&&sc==0)

{

Write_Lcd(Write_Command,0x01);

sound=1;

jj=2;

while(jj);

sound=0;

main();

}

}

}

else

{

minc=19;

sc=0;

while

(1)

{

show();

Key_temp=Key_process();

switch(Key_temp)

{

case9:

park=!

park;break;

case13:

main();break;

case2:

park1=!

park1;

sound=1;

jj=2;

while(jj);

sound=0;break;

}

switch(minc)

{

case18:

Show_Lcd5();break;

case16:

Show_Lcd6();break;

case11:

Show_Lcd4();break;

case9:

Show_Lcd5();break;

case7:

Show_Lcd7();break;

case3:

Show_Lcd4();break;

case1:

Show_Lcd8();break;

}

if(minc==0&&sc==0)

{

Write_Lcd(Write_Command,0x01);

sound=1;

jj=2;

while(jj);

sound=0;

main();

}

}

}

}

}

voidrun3()

{

EA=1;//开总中断

ET0=1;//开内部中断0

TMOD=0x11;

TH0=0xe1;//计数器0高八位

TL0=0x48;//计数器0低八位

TR0=1;

sound=0;

Show_Lcd3();

if(Y==1)

Show_Lcd10();

else

Show_Lcd9();

while

(1)

{

if(Z==1)

{

minc=6;

sc=0;

while

(1)

{

show();

Key_temp=Key_process();

switch(Key_temp)

{

case9:

park=!

park;break;

case13:

main();break;

case2:

park1=!

park1;

sound=1;

jj=2;

while(jj);

sound=0;break;

}

switch(minc)

{

case5:

Show_Lcd5();break;

case4:

Show_Lcd6();break;

}

if(minc==0&&sc==0)

{

Write_Lcd(Write_Command,0x01);

sound=1;

jj=2;

while(jj);

sound=0;

main();

}

}

}

else

{

minc=7;

sc=0;

while

(1)

{

show();

Key_temp=Key_process();

switch(Key_temp)

{

case9:

park=!

park;break;

case13:

main();break;

case2:

park1=!

park1;

sound=

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

当前位置:首页 > 解决方案 > 学习计划

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

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