金羚洗衣机维修电话

(1)洗衣机的故障排除

我们有一台老式自动洗衣机,是广东产的“爱德”。14年前,我买了一台金钟洗衣机,因为它不能排水。当时它的所有部件和外观都挺好的,有空的时候我就想留下来保养,所以没扔掉。

最近想把空杂物房腾出来,不得不考虑要不要把这台洗衣机报废。考虑到已经搁置了十几年,所有部件和电机应该都被腐蚀死了。但是机器调试的时候,没想到它的电机还能正常工作。其“无水调试程序”试运行也能正常冲洗和进出水。试试倒水进去,可以洗衣服,但是只能排水到一半的时候停下来,不能甩干。

打开后盖,看到主轴上有一个离合器,通过皮带和齿轮与电机相连,但完全看不懂它的工作原理。只好去网上找洗衣机的电路图和相关维修资料。离合器的工作原理介绍如下:

– == – ==

减速离合器洗涤过程:进入洗涤程序时,排水电磁铁断电,刹车杆被弹簧力锁住,脱水轴无法转动。同时,制动杆上的叉形棘爪将棘轮推过一个角度,固定在棘轮壁上的方丝离合弹簧的一端被拉动,另一端处于自由状态,离合套与外套轴分离,方丝离合弹簧松开,洗涤轴与脱水轴分离。当电机转动时,V带驱动,从大皮带轮传来的转动通过齿轮轴传到行星减速器,减速后从叶轮轴传来,带动叶轮转动。

洗涤时,电机运转,通过减速离合器降低转速,带动波轮间歇地正反旋转进行洗涤,此时洗涤脱水桶不旋转;脱水时电机运转,通过离合器带动脱水桶顺时针运转,不减速(即高速)进行脱水。此时,叶轮也随着脱水桶一起运转。

图1)

金羚洗衣机维修电话

– ==

上面的信息我琢磨了很久,还是没有头绪,只是大概了解了一下它的工作原理。没办法,就去做,去体验!

为了方便维修,我把洗衣机的盖板拆了下来(控制主板、进水电磁阀、水位传感器都固定在盖板上)。由于外壳不易拆卸,我把整个洗衣机翻了个底朝天。下图2+图3为离合器和排水电磁铁的结构外观(排水阀由电磁铁作用拉动)-俯视图和侧视图:

我想:我家洗衣机能正常洗,说明电机和离合器没有太大问题。排水只能排到一半,说明排水电磁阀没有完全损坏。很有可能是电磁铁芯生锈导致行程受阻,离合杆和棘爪动作不到位,导致电机无法带动脱水桶烘干。我试着用螺丝刀撬开电磁芯,强制离合杆和棘爪移动到位,转向滑轮,发现脱水桶可以转动,说明离合器没有生锈,问题可能是电磁芯没有吸好。

在电磁铁芯和相关驱动部件上涂抹一些机油,多次运行脱水程序,反复给电磁铁通电,使其吸合和释放。最后下水试运行,洗涤脱水正常。然而,启动机器时,水一直在流。好像是水位传感器出了问题,导致单片机检测不到水位信号,所以机器无法启动洗涤程序。

爱德洗衣机的水位传感器在市场上还没有找到合适的替代品。从电路图上看不出水位传感器的工作原理。我在网上找到的信息如下:

– =

图4是水位传感器的结构示意图。下气室和橡胶膜构成压力传感部分,上可动磁芯和线圈与振荡电路板构成LC振荡电路。
在运行过程中,随着水位的升高,气室中的压力也随之升高。当压力上升到一定值时,橡胶膜将塑料盘向上推向磁芯,电感线圈的电感发生变化,LC振荡电路的振荡频率也随之变化。当频率达到程序控制器的预设值(表示预设水位)时,程序控制器发出指令停止进水,切换到洗涤程序。水位传感器出厂前,振荡频率设定为高水位频率22.60 khz空水位频率25.20kHz,水位越低,传感器输出的信号频率越高。

– =

网上以上信息与爱德洗衣机的水位传感器一致。我拆开了我们的水位传感器,发现它的橡胶膜老化开裂了。难怪它不能工作。我找了一个气球等类似材料代替原来的橡胶膜,水位传感器又可以工作了。但是水位感应误差变大了,可以通过调节传感器中的螺丝来部分补偿误差。但最后只能用“中低水位”。如果用高水位,水会溢出,洗衣机还是会认为水位不够,继续进水。为了废物利用,我不得不就地使用“中低水位”洗衣服!

三点备忘录:

(1)洗衣机的开启安全开关SA1具有稳像功能:洗衣机脱水时,如果衣物叠放不均,脱水桶剧烈震动,以几十周的频率撞击安全开关SAI的感应杆,SA1连续输出通断信号,微处理器(单片机)发出修正指令,使洗衣机进入停水→进水→漂洗→排水→脱水程序,消除衣物排列不均引起的震动。如果反复多次仍不能消除这种现象,单片机将使洗衣机进入脱水保护状态。开关还有脱水时开盖断电的功能,因为用起来不方便,所以我把它拆了。以后不管开盖与否,洗衣机还是可以脱水的。

(2)排水电磁铁标牌的工作电压为198V DC,电路图中看不到198V DC电压的电路(其电源由双向晶闸管控制)。实测工作电压为202V DC,用AC gear测得为96V AC——这可能是220V AC半波整流得到的脉动DC。

(3)洗衣机的电路原理图如下(图5):

======================= –

(2)全自动洗衣机的硬件改造和软件设计

洗衣机使用一段时间后,在洗涤的最后阶段停了下来。硬件没有问题。估计是因为单片机程序无意失误触碰到高压点火干扰,导致软件被意外修改。虽然这种可能性很“可笑”,但反正洗衣机是可以循环洗涤和进水+排水三次的,只是最后的“甩干排水”不会实现。

我试着运行了产品的无水洗衣模拟测试程序,进出水洗涤各项功能正常(说明洗衣机硬件没问题)。因为产品配有参考电路图,我手头有几个洗衣机的套路,所以干脆尝试更换单片机,自己重写程序,看看效果如何。

一开始我觉得这是一个很简单的工作,但是当我真正开始做的时候,我发现了很多问题。

主要问题是原来的单片机不知道是什么型号。它的引脚排列与51系列产品完全不同,导致硬件工作量大大增加,甚至大于再做一台洗衣机的工作量。

下图6+图7:首先把原来的单片机拆开焊接,加一个单片机插座,这样以后就可以随意更换单片机了。

硬件改造完成后,在设计实际软件时,发现按照原来的硬件原理图布线设计软件会有很多不可避免的麻烦。

第一个难点:由于单片机的硬件接口有限,原来的洗衣机操作面板显示14个不同工作状态的LED灯,两个数码管共用单片机的端口,所以在软件编程时无法简单的将一个端口调高或调低来控制LED的开关,会造成数码管随机闪烁。反之,数码管显示时,LED会随机闪烁。如何通过控制四个片选晶体管分时显示LED和数码管,浪费了我很多测试时间。

第二个难点:我用定时器作为洗衣程序调度器,单片机在不同的时间间隔对洗衣机的按钮、led、数码管、电机进行不同的动作,这比顺序循环运行的软件设计和调试要麻烦得多。这个项目花了很长时间才通过。

第三难:水位传感器没买到合适的产品。通风室内自行换膜后,重新测试高、中、低不同水位对应的不同输出电压值。期间反复测试进水量和排水量也是相当费力的。最尴尬的是,我在房本里测试了水位和软硬件联合。经过一定的测试,洗衣机没有排水就报废了。结果我出去工作半天,洗衣机的排水阀漏水了,洗衣机里的水都漏出来了。房间泡了1厘米的水,还通过地板的缝隙漏进了楼下邻居的卧室,把别人的床、被子、床垫都弄湿了。最后我硬着头皮给别人道歉,赔钱。之后很长一段时间都不好意思面对别人。真的很尴尬!

(3)最终实现的软件和硬件的描述:

洗衣机采用STC89C52RC或STC89C54RC单片机,水位传感器采用感应振荡电路。为了节省端口,洗衣状态显示的14个LED与2个LED数码管共用端口,由4个三极管(VT7-VT10)驱动,通过软件分时控制依次显示,导致系统软件复杂难懂。

自动洗衣机-实际产品应用功能:

洗涤过程有三种:全洗(水洗+漂洗+甩干);漂洗-甩干;分别烘干。

有两种洗衣模式:标准和省时。

有四种水位设置:高、中、低2和低1。

按下启动按钮后,洗衣机开始给水,达到设定水位后停止给水。然后电机开始正反转,每次正反转由四拍组成:

1)正转= 5-10秒;2)失速= 3-4秒;3)倒车= 5-10秒;4)停止= 3-4秒。

进水=3分钟,洗涤=省时39分钟/标51分钟,排水= 3分钟,脱水=1.5分钟。脱水期间,电机正转90秒(Tspin_Minute)。

预定的洗涤时间结束后,沥干水分并甩干。达到预定的3个洗涤和排水周期后,洗涤过程结束,提醒蜂鸣器鸣响。全程节省约39分钟/标准51分钟。

为防止事故发生,在进水和排水期间,如果水位变化超过80秒,则认为进出水有故障,停止报警。

– =

(4)自动洗衣机的主要源代码

//* * * * * * * * * * * *洗涤方法的选择* * * * * * * * * * * * * * *

//标准洗涤程序=1,经济性=2,F_Normal=1,F _ Econormy = 2,

Void key_scan() //可以选择洗涤-暂停-菜单(改变洗涤模式)。

{ static uchar Kpress _ Count//击键计数器

如果(key _ start = = 0)/= p33 = key _ start =开始或暂停键,按键=低电平0。

{ beep 50();

if(Key_Start == 0)

{ while(!key _ Start);//等待按键释放

If (flag _ washing = = 0)/= 0表示洗涤尚未开始。

//第1次按开始键=开始。如果反复按& # 34;开/暂停& # 34;键,它的状态flag_Washing会反复从1变到0。

{ flag _ Washing = 1;//=1重置清洗标志,

ET1 = 1;//打开调度器(设置将使ET1=0)

If(Kpress_Count ==0) {//是第1次按开始键吗?

//第1次按开始键,Int1_Count=0。这里& # 34;普通洗衣& # 34;参数赋值。2th,Int1 _ Count & gt=1,不用给& # 34;普通洗衣& # 34;参数赋值,以免洗衣暂停后才赋值初始值,导致中间洗衣时机不正确。

kpress _ count++;

wash _ on();// -开始清洗

}

else重做();// -重做洗涤,//允许定时器T1中断开启水泵+1秒,然后T1会中断服务开启电机。

}

否则如果(flag _ washing)//-2按开始键=暂停。

{ flag _ Washing = 0;//==0表示洗涤或进出水暂停。

ET1 = 0;//关闭调度器,显示不刷新,洗衣机暂停!挂起();

LED _ Timer _ on();beep 50();

}//结束else

}

}

}

Void定时器0_Init(void) //T0设置为16位计数器,用于计数信号脉冲。

{ TMOD | = 0x 05;//设置16位计数模式1,手动重载初始计数模式选择bit C/T = 1 =计数模式。

TH0 = 0;TL0 = 0;//计数器T0的初始值为0。

TR0 = 1;ET0 = 1;

}

void定时器2_Init(void)

{//复位时,T2MOD=T2CON=00H,模式选择位C/T=0=定时工作模式。

T2CON = 0;

RCAP2H=(65536-62500)>& gt8;//在程序初始化时给RCAP2L和RCAP2H赋值。

RCA p2l =(65536-62500)% 256;//当中断发生时,自动使TH2 = RCAP2H,TL2 = RCAP2L。

TH2 = RCA p2h;TL2 = RCAP2L

ET2 = 1;//打开定时器2中断

TR2 = 1;//定时器2开始计数。

}

//T1=0001,设置为16位时序模式1,作为1秒调度器。

void定时器1_Init(void)

{ TMOD & = 0X0f;//将高T1计数模式清零。

TMOD | = 0x 10;// T1=计数模式1= 16位,

//T1模式选择位C/T=0=定时模式,定时模式1= 16位,参数不自动重载。

PreT1h = PreloadT1Hpret 1 l = preload t1 l;

TH1 = PreT1hTL1 = PreT1l

TR1 = 1;ET1 = 1;

PT1 = 1;//T1是最高优先级。

}

// -水位脉冲从P3.4=T0输入,需要以下中断计数:

Void定时器0(void)中断1 //16位计数器0溢出中断。

{//当计数溢出时,中断并累加计数(即每接收256个脉冲中断一次)。1秒钟后,中断被转换成T2频率。

TH0 = 00TL0 = 00//清零计数器,正常时TH0和TL0记录水位脉冲数。

}

// -计算服务中断期间的水位频率f _ level。

Void定时器2 (Void)中断5//12m晶体振荡器,定时器2中断(每62.5ms一次,每半秒测量一次),

{ TF2 = 0;//定时器2的中断标志位TF2不能被硬件清零,所以应该在中断服务程序中清零。

count _ T2++;

如果(T2伯爵& gt=8) //计时0.5s时间到。

{ TR0 = 0;//计数器停止计数

count _ T2 = 0;//中断数清零。

Led _ 1S = ~ Led _ 1S//=p16在模拟中很容易观察到。

//仿真过程中,为了无水运行,做了如下改动(以下水位采集语句需要屏蔽:-= start。

if(W _ progress = = 1)F _ level = W _ level;//进水时W _ level = W _ MIDD = 242;

else if(W _ progress = = 3)F _ level = W _ empty;//排水时,W_empty=252=超过最低水位=无水。

//模拟时,为了无水运行,修改:- = end。

f _ level =(uint)((TH0 & lt;& lt8)+TL0)/50;//如果不使用(uint)限定,F_level会变成0!!!

//比较20S区间的两个水位。如果没有变化,可能是进水和出水出了问题——启动。

t _ in _ out 20s++;

if(T_in_out20s ==40)

{ F _ level _ 40 = F _ level} //第1个水位值存储在F_level_40中。

else if(T _ in _ out 20S = = 80)//(80-40)* 0.5S = 20S

{ F _ level _ 80 = F _ level}//2水位值存储在F_level_80中。

TL0 = 0;TH0 = 0;//清除16位计数器T0。

TR0 = 1;//计数器T0开始计数。

T2 _旗帜= 1;//标志位置1=频率计算结束标志-未使用

}

}

//洗涤程序启动后,由调度程序控制。

Voidtime R1中断3//-1秒调度程序

{ TH1 = PreT1hTL1 = PreT1l//重载计时值PreloadT1H= (65536-50000)>& gt8;

if(T50ms _ count++ & gt;=20) // =1S中断- (1)

{ T50ms _ count = 0;

如果(flag_Washing==1) //=开始按钮被按下,运行标志,=1表示运行已经开始,0表示暂停-(2)

{

第二-;//计算每个洗涤过程的时间减少量(秒=0已在菜单中设置)

如果((秒& lt=0)&&(分钟!= 0)) //这是洗涤减去一个计时器。

{分钟-;秒= 59;

if(T _ all _ reman-& lt;0)T _ all _ reman = 0;//显示剩余时间

}//分、秒为每个洗涤阶段的剩余时间消耗值。

// W_progress =0-进水,1-洗涤,2-电机正反转,3-漂洗(排水),4-甩干,

if(w _ progress = = 0)//-wash _ on()开始后跳转到此处。

{ W _ progress = 1;water _ in();//进水时间在Water_in()中定义

t _ in _ out 20s = 0;err = 0;}//清除进出水的测频时间间隔。

Else if (w _ progress = = 1)/-(a)从(W_progress==0)开始进水,0.5S后跳到这里

{//li- Dump_count,初始值=0,排水一次,用完()一次,

//测试水位传感器是否有问题:-启动。

if(T _ in _ out 20s & gt;80) //T_in_ouT20s在T2累加,

{//如果传感器正常,f _ level >无水时;253, 0

t _ in _ out 20s = 0;//清除它,以便T2中断再次保存水位值。

if((F _ level _ 40 & F _ level _ 80)& &(F _ level _ 40 = = F _ level _ 80))

//如果40S内二次水位值不为0且相同,则水位传感器有问题。

{ if(err++ & gt;= 2)W _ progress = 8;}

}

/// -水位传感器是否有问题的测试结束:-结束。

if(F _ level & gt;W_level) //是否检测到预定水位W_level?

{ if((秒& lt0)&&(Minute==0)) //水位未达到,但已超时。

{ W _ progress = 8;} //=err,goto (F)超时处理。

进水期间}//W_progress=1。

else if((F _ level & lt;= W _ level)& &(F _ level & gt;0)) //没超时就去洗。

{ W _ progress = 2;

Xi();beep 50();}//要洗

}//-if结束(W_progress==1)

else if(w _ progress = = 2)//(b)-电机正反转的时间控制。

{ T _ motor++;//正负控制时序,

if(wash program = = 1)//=正常洗涤模式

{//如果是第1个,T_motor++=1。

switch(t _ motor)//1号,t _ motor = 1 = case1,每秒中断后+1。

{

//1号,电机右转10秒;10号,电机停转4秒;14号,电机左转10秒;23号后,停止旋转。

案例一:正传();打破;//第一秒,电机右转。

案例10:Stop _ Motor();打破;//第10秒,电机停止。

案例14:凡转();打破;//第14秒,电机左转10秒。

案例23:Stop _ Motor();打破;//第19秒,电机停止4秒。

默认://第27秒后,如果洗涤时间没有结束,再往前走。

if(T _ motor & gt;= 27){ T _ motor = 0;}

}

}

else if(wash program = = 2)//=经济洗涤模式

{

//如果设置分钟=1,则每分钟正反旋转3.5-4次,然后甩干10秒=15声,3个循环=3分钟后,洗涤结束。

switch(t _ motor)//1号,t _ motor = 1 = case1,每秒中断后+1。

{

//1号,电机右转5秒;6、电机停3秒;7、电机左转5秒;13号之后,停止旋转。

案例一:正传();打破;//第一秒,电机右转5秒。

案例六:Stop _ Motor();打破;//第6秒,电机停3秒。

案例九:凡转();打破;//第9秒,电机左转5秒。

案例14:Stop _ Motor();打破;//第14秒,电机停3秒。

默认://第15秒后,如果洗涤时间没有结束,再次前进。

if(T _ motor & gt;= 17){ T _马达= 0;}//17s后,重新开始。

}

}

如果((秒& lt=0)&&(分钟==0))

//如果洗cycal的时间达到1(秒=0xff=-1),则排水。

{ W _ progress = 3;water _ out();}//进行排水处理

}//-if结束(W_progress==2) –

Elseif (w _ progress = = 3)//(c) -排水完了就排水。

{

//测试水位传感器是否有问题:-启动。

if(T _ in _ out 20s & gt;80) //T_in_ouT20s在T2累加,

{//如果传感器正常,f _ level >无水时;253, 0

t _ in _ out 20s = 0;//清除它,以便水位值可以在T2中断服务中再次保存。

if((F _ level _ 40 & F _ level _ 80)& &(F _ level _ 40 = = F _ level _ 80))

//如果40S内二次水位值不为0且相同,则水位传感器有问题。

{ if(err++ & gt;= 2)W _ progress = 8;}

}

//测试水位传感器是否有问题:- end。

if((F _ level & lt;w _ empty)& &(F _ level & gt;0)) //有水吗?

{ if((秒& lt=0)&&(分钟==0)) //超时,未耗尽=err

{ W _ progress = 8;} //goto (F)超时处理

}

else if(F _ level & gt;= W_empty) //水真的排干了。

{//如果没有水,….

if(Wash _ count & lt;Wash_cycle) //水放干了,但是洗的次数不够。

{ W _ progress = 4;

托水();wash _ count++;}//水排干了,去脱水吧。

else if(Wash _ count & gt;wash _ cycle)W _ progress = 9;

//引流3次以上,不引流就完了-W_progress=9。

//如果是单独排水,设置Wash_count =Wash_cycle+1 > 3,那么只排水一次,没干就结束了。

}

}//-if结束(W_progress==3)

else if(w _ progress = = 4)//(d)-干燥、淹没或完成。

{ if((秒& lt= 0)&&(分钟= = 0))//-是时候甩干了吗?

{// Wash_cycle =洗涤次数=3次=(进水+洗涤+排水+甩干)*3

if(Wash _ count & gt;=Wash_cycle) //该甩干了,洗完了。

{ W _ progress = 9;} //goto (G)=over()

其他

{ W _ progress = 0;water _ in();}

//该甩干了,但是洗3次都不够,wash _ count

}

}//-if结束(W_progress==4)

//===============================================

Elseif (w _ progress = = 8)//(f) – ERR加班处理。

{ T _ all _ reman = 99秒= 0;分钟= 0;beep 300();

err = 1;stop _ Motor();

pump _ out _ off();Pump_in_off()。

}

else if(w _ progress = = 9)//(g)-洗涤结束。

{ T _ all _ reman = 88秒= 0;分钟= 0;over();}

//===================================================

}//-if(!Flag_Washing) //按开始键——(1)结束。

}//-if结束(T50ms _ count++ & gt;=20) – (2)结束

}

//因为LED和SEG共用P0口,所以需要用交替显示LED,数码管用中断刷新。

无效Led _更新(无效)

{ Seg _ disable();//数码管不显示。

show _ water _ led();delay _ 1 ms(1);//必须延迟1MS才能看到LED亮起。

show _ progress _ led();delay _ 1 ms(1);

show _ program _ led();delay _ 1 ms(1);

if(f_Ledtimer == 1)

{ LED _ Timer _ on();delay _ 1 ms(1);}//定时器LED亮,暂停时LED_Timer=on。

else LED _ Timer _ off();//正常工作时LED_Timer=off。

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

void InitAll(void)

{//LED _ Regular = ON;//ON=1,默认为标准程序,灯亮。

Pump _ in = OFF//OFF = 0;进水口控制,关闭,单逆变器驱动

pump _ out = 1;//P2 0 =排水控制,1=关,因为我加了两个逆变器串联电路。

Motor _ R = OFF//电机正转不动=OFF=0,单逆变器驱动。

Motor _ L = OFF//电机反转,不走=关=0,单逆变器驱动。

蜂鸣器=关;//报警喇叭,未叫=关=0

P1 = 0x ef;//让P1端口is输入= 3个按钮=P12-P14-P15,注意:P17 =bp机=0无声。

k _ program = 1;//设P33为输入,k _ program = p33 =开始/停止键1=int1端口。

//清除标志:

flag _ Washing = 0;//Running标志,1表示已经开始运行,0表示挂起。

f _ led timer = 0;//控制LED开或关的符号,timer_led=off=0。

F _ level = W _ empty// F_level是检测到的水位频率,

W _ level = W _ MIDD;// W_level是预设的水位,W_MIDD=242,中LED=亮

level _ case = F _ MIDD;//设置水位时增量累加器= 1-2-3-4 =高-中-低2-低1,

t _ Normal _ min = 9;//=9对应于=9*3+24=51分钟。

t _ Normal _ sec = 0;

t _ economy _ min = 5;//=5对应=5*3+24=39分钟=省时洗,模拟=1。

t _ economy _ sec = 0;

//进出水时间+脱水时间

tin _ Minute = 3;//进水时间=3分钟

tin _ Second = 0;//=秒

tout _ Minute = 3;//出水时间=3分钟

tout _ Second = 0;

ts pin _ Minute = 1;//烘干时间=1分30秒,如果2分钟太长。

Tspin _ Second = 30//如果模拟需要30秒,

t _ in _ out 20s = 0;//20S时间间隔计数器——用于每隔20S检测一次进出水,看是否正常。

f _ level _ 40 = 0;

f _ level _ 80 = 0;//以//80S为间隔的水位频率暂存值,对比其变化值判断流入流出是否正常?

wash _ count = 0;//实际循环洗涤次数计数器=清零。

wash _ cycle = 3;//循环洗涤次数(一次循环=进水+洗涤+脱水)=3为标准洗涤次数。

w _ progress = 0;//工作状态跳转控制标志=0-进水(浸泡),1-洗涤,2-排水,3-甩干。

wash program = 2;//1=标准,2=节省时间。

If(Washprogram== 1) //1=标准,2=节省时间。

{ Txi _ Minute = T _ Normal _ min//正常洗涤=7分钟*3,对应=21分钟;模拟时间=0分钟+30秒

Txi _ Second = T _ Normal _ sec

}

其他

{ Txi _ Minute = T _ Econormy _ min//省时洗=5分钟*3,对应=15分钟;模拟时间=0分钟+30秒

Txi _ Second = T _ Econormy _ sec

}

}

//==================================-

void main()

{ uchar Tms = 500//延时显示参数-实际应用=APP=500

InitAll();//引脚初始化,报警喇叭,进水,排水,电机正反转=关。

beep 50();//Beeper = 0 =停止蜂鸣器,=1=响铃=p17。

定时器1 _ Init();// T1作为调度程序

定时器0 _ Init();//定时器0中断作为水位检测脉冲计数。

timer 2 _ Init();//定时器2中断计时,并将T0的频率计数转换为频率。

EA = 1;

T _ all _ reman = T _ all//T_all(总洗涤时间);T_all_reman=洗涤剩余时间。

while(1)

{

//设置洗涤参数:

If(flag_Washing==0) //只有处于暂停状态(第一次开机或按暂停键)才能设置洗涤参数。

{

set _ Level _ case();//设置水位,=key2=p13,Level _ case++;

//改变洗涤过程:

set _ progress();//progress=key3=p15,

//更改洗涤模式:

set _ program();//program=key4,洗涤模式:F_Normal=1,F _ Econormy = 2,

ET1 = 0;//关闭调度器T1时,调度器不工作,循环显示停止。

}

key _ scan();//选择& # 34;开始/暂停& # 34;

//=按键扫描+开始洗涤.如果开始清洗,从wash_on()开始

led _ Update();//洗衣状态的LED显示

seg _ Update();//依次显示水位和剩余洗涤时间。

//由于试运行出现错误时无法在调度器中关闭pump-in,所以在此添加了-err进行超时处理。

if((F _ level & lt;W_OVER)||(F_level==W_ERR))

//检测到的水位F_level有问题,W_ERR=0,W_OVER=220=水位过高。

{ W _ progress = 8;T _ all _ reman = 99

秒= 0;分钟= 0;beep 300();

stop _ Motor();pump _ out _ off();Pump_in_off()。

}

}

}

//程序结束。

20220814

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论