日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]51單片機(jī)洗衣機(jī)控制板及C語言程序,該控制板單片機(jī)采用AT89C51單片機(jī),所設(shè)計(jì)全自動(dòng)洗衣機(jī)功能有:標(biāo)準(zhǔn)洗衣、經(jīng)濟(jì)洗衣、單獨(dú)洗衣以及排水四種洗衣等四種方式,有強(qiáng)洗、弱洗及運(yùn)行/暫停、顯示及報(bào)警功能,程序利用利用Protues仿真軟件觀察洗衣機(jī)的運(yùn)行狀態(tài)和過程。整個(gè)設(shè)計(jì)能達(dá)到預(yù)想的設(shè)計(jì)效果。 51單片機(jī)洗衣機(jī)控制板及C語言程序

51單片機(jī)洗衣機(jī)控制板及C語言程序,該控制板單片機(jī)采用AT89C51單片機(jī),所設(shè)計(jì)全自動(dòng)洗衣機(jī)功能有:標(biāo)準(zhǔn)洗衣、經(jīng)濟(jì)洗衣、單獨(dú)洗衣以及排水四種洗衣等四種方式,有強(qiáng)洗、弱洗及運(yùn)行/暫停、顯示及報(bào)警功能,程序利用利用Protues仿真軟件觀察洗衣機(jī)的運(yùn)行狀態(tài)和過程。整個(gè)設(shè)計(jì)能達(dá)到預(yù)想的設(shè)計(jì)效果。

 

#include 'reg51.h'

#define uchar unsigned char

#define uint unsigned int

#define Enable(); EA=1;

#define Disable(); EA=0;

#define BIAOZHUN 0

#define JINGJI 1

#define DANDU 2

#define PAISHUI 3

#define QIANGXI 0

#define RUOXI 1

#define T_JinShui 240 //4min*60s

#define T_PaiShui 60 //1min*60s

#define T_XiDi 360 //6min*60s

#define T_PiaoXi_1 240 //4min*60s

#define T_PiaoXi_2 120 //2min*60s

#define T_TuoShui 120 //2min*60s

#define ZHENGZHUAN 0

#define STOP 1

#define FANZHUAN 2

#define ZhengZhuan(); PIN_Motor_A = 0; PIN_Motor_B = 1;

#define Stop(); PIN_Motor_A = 1; PIN_Motor_B = 1;

#define FanZhuan(); PIN_Motor_A = 1; PIN_Motor_B = 0;

#define ZanTing(); ET0 = 0; ET1 = 0; Stop();

#define JiXu(); ET0 = 1; ET1 = 1;

#define flag_Ok (flag_JinShui||flag_PaiShui||flag_XiDi||flag_PiaoXi||flag_TuoShui)

sbit LED_BiaoZhun = P1^0; //標(biāo)準(zhǔn)程序顯示燈

sbit LED_JingJi = P1^1; //經(jīng)濟(jì)程序顯示燈

sbit LED_DanDu = P1^2; //單獨(dú)程序顯示燈

sbit LED_PaiShui = P1^3; //排水程序顯示燈

sbit LED_QiangXi = P1^4; //強(qiáng)洗狀態(tài)燈

sbit LED_RuoXi = P1^5; //弱洗狀態(tài)燈

sbit LED_XiDi = P1^6; //洗滌狀態(tài)燈

sbit LED_PiaoXi = P1^7; //漂洗狀態(tài)燈

sbit LED_TuoShui = P2^0; //脫水狀態(tài)燈

sbit PIN_BaoJing = P2^1; //報(bào)警喇叭

sbit PIN_JinShui = P2^2; //進(jìn)水控制

sbit PIN_PaiShui = P2^3; //排誰控制

sbit PIN_Motor_A = P2^4; //電機(jī)腳A

sbit PIN_Motor_B = P2^5; //電機(jī)腳B

sbit K_SEL_ChengXu = P3^0; //選擇程序鍵

sbit K_SEL_QiangRuo = P3^1; //選擇強(qiáng)弱鍵

sbit p32 = P3^2; //

sbit p33 = P3^3; //

sbit SW_ShuiWei = P3^6; //水位開關(guān)

sbit SW_AnQuan = P3^7; //安全開關(guān)

void Programme_PaiShui(void);

uchar flag_SEL_ChengXu; //默認(rèn)為標(biāo)準(zhǔn)程序,

bit flag_SEl_QiangRuo; //默認(rèn)為強(qiáng)洗,1為弱洗

bit flag_Run; //運(yùn)行標(biāo)志,1為運(yùn)行

bit flag_JinShui; //進(jìn)水標(biāo)志,1為進(jìn)水

bit flag_PaiShui; //排水標(biāo)志,1為排水

bit flag_XiDi; //置洗滌標(biāo)志

bit flag_PiaoXi; //置漂洗標(biāo)志

bit flag_TuoShui; //脫水標(biāo)志

bit flag_BaoJing; //報(bào)警標(biāo)志

uchar _50ms; //每50ms加一次的變量

uint s; //秒

uint T_S; //定時(shí)總時(shí)間

uchar T_Motor; //電機(jī)控制時(shí)間

void Delay_10ms(uint T1)

{ uint t1,t2;

for(t1=0;t1

for(t2=0;t2<1250;t2++);//10ms

}

void Pin_Init(void)

{ LED_BiaoZhun = 0; //默認(rèn)為標(biāo)準(zhǔn)程序,燈亮

LED_JingJi = 1; //經(jīng)濟(jì)程序顯示燈,滅

LED_DanDu = 1; //單獨(dú)程序顯示燈,滅

LED_PaiShui = 1; //排水程序顯示燈,滅

LED_QiangXi = 0; //默認(rèn)為強(qiáng)洗狀態(tài),燈亮

LED_RuoXi = 1; //弱洗狀態(tài)燈,滅

LED_XiDi = 1; //洗滌狀態(tài)燈,運(yùn)行后燈亮

LED_PiaoXi = 1; //漂洗狀態(tài)燈,運(yùn)行后燈亮

LED_TuoShui = 1; //脫水狀態(tài)燈,運(yùn)行后燈亮

PIN_BaoJing = 1; //報(bào)警喇叭,不叫

PIN_JinShui = 1; //進(jìn)水控制,關(guān)

PIN_PaiShui = 1; //排誰控制,關(guān)

PIN_Motor_A = 1; //電機(jī)腳A,不走

PIN_Motor_B = 1; //電機(jī)腳B,不走

}

void ExInt_Init(void)

{ IT0 = 1;

EX0 = 1;

IT1 = 1;

EX1 = 1;

}

void Timer0_Init(void) //其中沒ET0是為以后控制暫停用的

{ TMOD = TMOD | 0X01; //定時(shí)方式1

TH0 = 0X3C; //50ms

TL0 = 0XB0;

TR0 = 1;

_50ms = 0;

s = 0;

}

void Timer1_Init(void) //其中沒ET1是為以后控制暫停用的

{ TMOD = TMOD | 0X10; //定時(shí)方式1

TH1 = 0X3C; //50ms

TL1 = 0XB0;

}

void T_Motor_Ctl(uchar t1,uchar t2,uchar t3)

{ if(!flag_SEl_QiangRuo)//強(qiáng)洗

T_Motor = t1;

if(flag_SEl_QiangRuo)//弱洗

T_Motor = t2;

if(flag_TuoShui) //脫水

T_Motor = t3;

}

void Motor_Init(void)

{ ZhengZhuan();

T_Motor_Ctl(4,3,5);

}

void No_BaoJing(void)

{ flag_BaoJing= 0; //置報(bào)警標(biāo)志

PIN_BaoJing = 1; //報(bào)警喇叭

TR1 = 0;

//而進(jìn)水、排水已沒時(shí)間限制了

}

void int0(void) interrupt 0

{

if(!p32)

{ Delay_10ms(1); //延時(shí)10ms左右,去抖動(dòng)

if(!p32)

{ if(!flag_Run)

flag_Run = 1; //置運(yùn)行標(biāo)志

else if(flag_BaoJing)

No_BaoJing(); //解除報(bào)警

else if(flag_Ok)

{ static bit flag_ZanTing;

flag_ZanTing = ~flag_ZanTing;

if(flag_ZanTing)

{ZanTing();}//必須加{}

else

{JiXu();} //必須加{}

}//end else

}//end if(!p32) 2

}//end if(!p32) 1

}

void BaoJing(void)

{ flag_BaoJing= 1; //置報(bào)警標(biāo)志

TR0 = 0;

TR1 = 1;

}

void Ok_Timer(void)

{ s = 0;

if(flag_JinShui || flag_PaiShui) //進(jìn)水中~、排水中~

{ BaoJing(); //報(bào)警程序

}//end if(flag_JinShui || flag_PaiShui)

else

{ flag_XiDi = 0; //清洗滌標(biāo)志

flag_PiaoXi = 0; //清漂洗標(biāo)志

flag_TuoShui= 0; //清脫水標(biāo)志

Stop();

}//end else

}

void Motor(void)

{ static uchar s_Motor;

s_Motor++;

if(s_Motor==T_Motor)

{ static uchar Motors;

s_Motor = 0;

Motors++;

if(Motors==3)

Motors = 0;

switch(Motors)

{ case ZHENGZHUAN : ZhengZhuan();

T_Motor_Ctl(4,3,5);

break;

case STOP : Stop();

T_Motor_Ctl(1,2,2);

break;

case FANZHUAN : FanZhuan();

T_Motor_Ctl(4,3,5);

break;

default : break;

}//end switch

}//end if

}

void Timer0(void) interrupt 1

{

TR0 = 0; //停止計(jì)數(shù)

TH0 = 0X3C; //重裝定時(shí)器值

TL0 = 0XB0;

TR0 = 1;

_50ms++;

if(_50ms == 20) //1s到

{ _50ms = 0;

s++;

if(s == T_S) //定時(shí)到

Ok_Timer();

if(flag_XiDi || flag_PiaoXi || flag_TuoShui)

Motor(); //電機(jī)控制程序

}//end if(_50ms == 20)

}//end Timer0()

void int1(void) interrupt 2

{ if(!p33)

{ Delay_10ms(1); //延時(shí)10ms左右,去抖動(dòng)

if(!p33)

{

}//end if(!p33) 2

}//end if(!p33) 1

}

void Timer1(void) interrupt 3

{ static uchar _50ms; //每50ms加一次的變量

TR1 = 0; //停止計(jì)數(shù)

TH1 = 0X3C; //重裝定時(shí)器值

TL1 = 0XB0;

TR1 = 1;

_50ms++;

if(_50ms == 14) //0.7s到

{ _50ms = 0;

if(flag_XiDi) //洗滌中~

LED_XiDi = ~LED_XiDi; //洗滌狀態(tài)燈閃爍

if(flag_PiaoXi) //漂洗中~

LED_PiaoXi = ~LED_PiaoXi; //漂洗狀態(tài)燈閃爍

if(flag_TuoShui) //脫水中~

LED_TuoShui = ~LED_TuoShui; //脫水狀態(tài)燈閃爍

if(flag_BaoJing)

PIN_BaoJing = ~PIN_BaoJing; //報(bào)警

}//end if(_50ms == 14)

}

void SEL_ChengXU(void)

{ if(!K_SEL_ChengXu) //程序選擇鍵

{ Delay_10ms(1); //延時(shí)10ms左右,去抖動(dòng)

if(!K_SEL_ChengXu)

{ while(!K_SEL_ChengXu);

flag_SEL_ChengXu++;

if(flag_SEL_ChengXu==4)

flag_SEL_ChengXu = 0;

switch(flag_SEL_ChengXu)

{ case BIAOZHUN : LED_BiaoZhun= 0; //亮

LED_JingJi = 1; //滅

LED_DanDu = 1; //滅

LED_PaiShui = 1; //滅

break;

case JINGJI : LED_BiaoZhun= 1;

LED_JingJi = 0;

LED_DanDu = 1;

LED_PaiShui = 1;

break;

case DANDU : LED_BiaoZhun= 1;

LED_JingJi = 1;

LED_DanDu = 0;

LED_PaiShui = 1;

break;

case PAISHUI : LED_BiaoZhun= 1;

LED_JingJi = 1;

LED_DanDu = 1;

LED_PaiShui = 0;

break;

default : break;

}//end switch

}//end if(!K_Sel_ChengXu) 2

}//end if(!K_Sel_ChengXu) 1

}//END

void SEL_QiangRuo(void)

{ if(!K_SEL_QiangRuo) //強(qiáng)弱選擇鍵

{ Delay_10ms(1); //延時(shí)10ms左右,去抖動(dòng)

if(!K_SEL_QiangRuo)

{ while(!K_SEL_QiangRuo);

flag_SEl_QiangRuo = ~flag_SEl_QiangRuo;

if(!flag_SEl_QiangRuo)

{ LED_QiangXi = 0; //強(qiáng)洗狀態(tài),燈亮

LED_RuoXi = 1; //弱洗狀態(tài)燈,滅

}//end if(!flag_SEl_QiangRuo)

else

{ LED_QiangXi = 1; //強(qiáng)洗狀態(tài),燈亮

LED_RuoXi = 0; //弱洗狀態(tài)燈,滅

}//end else

}//end if(!K_SEL_QiangRuo) 2

}//end if(!K_SEL_QiangRuo) 1

}

void JinShui(void)

{ PIN_JinShui = 0;

flag_JinShui = 1;

TR1 = 0;

Timer0_Init();

T_S = T_JinShui;

while(SW_ShuiWei);

PIN_JinShui = 1;

flag_JinShui = 0;

TR0 = 0;

TF0 = 0;

}

void PaiShui(void)

{ PIN_PaiShui = 0;

flag_PaiShui = 1;

TR1 = 0;

Timer0_Init();

T_S = T_PaiShui;

while(!SW_ShuiWei);

TR0 = 0;

TF0 = 0;

Delay_10ms(500);//延時(shí)50s,經(jīng)驗(yàn)值5000

PIN_PaiShui = 1;

flag_PaiShui = 0;

}

void XiDi(void)

{ flag_XiDi = 1;

TR1 = 1;

Timer0_Init();

T_S = T_XiDi;

Motor_Init();

while(flag_XiDi);

TR1 = 0;

LED_XiDi = 1;

}

void PiaoXi(uchar t)

{ flag_PiaoXi = 1;

TR1 = 1;

Timer0_Init();

T_S = t;

Motor_Init();

while(flag_PiaoXi);

}

void BaoHu_GaiKai(void)

{ if(SW_AnQuan) //蓋開

{ ZanTing();

LED_TuoShui = 0;

}//end if

else

{ JiXu(); //電機(jī)不用管,最多5s不轉(zhuǎn)

}//end else

}

void TuoShui(void)

{ flag_TuoShui = 1;

PIN_PaiShui = 0;

TR1 = 1;

Timer0_Init();

T_S = T_TuoShui;

Motor_Init();

while(flag_TuoShui)

{ BaoHu_GaiKai();

}//end while

TR1 = 0;

LED_TuoShui = 1; //而出水閥一直開著

}

void Programme_BiaoZhun(void)

{ LED_XiDi = 0; //洗滌狀態(tài)燈

LED_PiaoXi = 0; //漂洗狀態(tài)燈

LED_TuoShui = 0; //脫水狀態(tài)燈

JinShui();

XiDi();

PaiShui();

JinShui();

PiaoXi(T_PiaoXi_1);//4min*60s//4*60

PaiShui();

JinShui();

PiaoXi(T_PiaoXi_2);//2min*60s//2*60

Programme_PaiShui();

}

void Programme_JingJi(void)

{ TR1 = 0;

LED_XiDi = 0; //洗滌狀態(tài)燈

LED_PiaoXi = 0; //漂洗狀態(tài)燈

LED_TuoShui = 0; //脫水狀態(tài)燈

JinShui();

XiDi();

PaiShui();

JinShui();

PiaoXi(T_PiaoXi_1);//4min*60s

Programme_PaiShui();

}

void Programme_DanDu(void)

{ LED_XiDi = 0; //洗滌狀態(tài)燈

LED_PiaoXi = 1; //漂洗狀態(tài)燈

LED_TuoShui = 1; //脫水狀態(tài)燈

JinShui();

XiDi();

}

void Programme_PaiShui(void)

{ LED_XiDi = 1; //洗滌狀態(tài)燈

LED_PiaoXi = 1; //漂洗狀態(tài)燈

LED_TuoShui = 0; //脫水狀態(tài)燈

PaiShui();

TuoShui();

}

void main()

{

Pin_Init(); //管腳初始化

ExInt_Init(); //外中斷初始化

Timer1_Init();

ET0 = 1;

ET1 = 1;

Enable(); //開總中斷

while(1)

{ if(!flag_Run) //運(yùn)行前按鍵才有效

{ SEL_ChengXU(); //程序選擇程序

SEL_QiangRuo(); //強(qiáng)弱選擇程序

}//end if(!flag_Run)

if(flag_Run)//用else不,按啟動(dòng)鍵后,有時(shí)沒反映????//

{ PIN_PaiShui = 1; //關(guān)排水閥

switch(flag_SEL_ChengXu)

{ case BIAOZHUN : Programme_BiaoZhun(); //標(biāo)準(zhǔn)洗衣程序

break;

case JINGJI : Programme_JingJi(); //經(jīng)濟(jì)洗衣程序

break;

case DANDU : Programme_DanDu(); //單獨(dú)洗衣程序

break;

case PAISHUI : Programme_PaiShui(); //排水洗衣程序

break;

default : break;

}//end switch

}//end esle

flag_Run = 0;

}//end while

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉