日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序

發(fā)布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#include

#define uchar unsigned char

#define uint unsigned int

sbit mo_r = P3^2;? ???//電機右控制線

sbit mo_l = P3^3;? ???//電機左控制線

sbit key_menu = P3^4; // 菜單按鍵

sbit key_on = P3^5;? ?// 開始按鍵

sbit key_off = P3^6;??//? ?結束按鍵

sbit key_se = P3^7;? ?//??菜單選擇按鍵

sbit led_in = P2^0;? ?// 進水指示燈

sbit led_xi = P2^1;? ?//??洗衣指示燈

sbit led_pao = P2^2;??// 泡洗指示燈

sbit led_xx = P2^3;? ?//??脫水指示燈

sbit led_out = P2^4;??//? ?出水指示燈

sbit led_over = P2^5; // 洗衣結束指示燈

sbit led_work = P2^6; // 電機工作指示燈

sbit led_wring = P2^7;// 報警指示燈

sbit other = P3^1;? ? //??脫水電源控制開關

sbit anther = P3^0;??// 洗衣電源控制開關

uchar??code??num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

char sec = 0;? ? //??時間秒

char min = 0;? ???// 時間分

uchar count=0;? ???//??中斷計數(shù)

uchar flag0=0;? ? //??洗衣機工作狀態(tài)標志

uchar flag1=0;? ? //??進水次數(shù)標志

uchar flag2=0;? ? //??出水次數(shù)標志

uchar flag3=0;? ? //? ?泡洗次數(shù)標志

uchar err =0;? ? // 報警標志

uchar quan = 0;//正反轉計數(shù)

//??函數(shù)聲明 //

void in(); //? ?進水子程序

void out();??//? ?出水子程序

void over();??//??結束子程序

void xi();??//? ?洗衣子程序

void pao(); //??泡衣子程序

void xx(); // 脫水子程序

void on(); //??工作on處理子程序

void se(); //??顯示菜單選擇

void SEG_display();??//顯示時間子程序

void key_scan();? ?//??按鍵掃描子程序

//? ???延時函數(shù)??//

void mDelay(unsigned int Delay) //延時程序

{

unsigned int i;

for(;Delay>0;Delay--)

{? ?? ? for(i=0; i<54; i++)??;

}

}

//? ? 工作on處理子程序 //

void on()

{? ?TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;??ET0=1;??TR0=1;

P2 = 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;??anther=0;??P2 = 0xff;

mo_r=0;??mo_l=0;??led_over = 0;??EA=0;? ?}

//? ? 進水子程序??//*********************************//

void in()

{ anther=0;??other=0;??P2 = 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()

{

anther=1;??other=0;??P2 = 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;??P2 = 0xff;??led_xx = 0;??mo_r = 0;??mo_l = 1;??min = 0;??sec = 50;??}

//? ? 出水子程序 //*********************************//

void out()

{ anther=0;??other=0;??P2 = 0xff;? ?led_out = 0;

flag2++;??mo_r = 0;??mo_l = 0;??min = 0;??sec = 5;??}

//? ? 顯示菜單選擇 //

void se()

{??P2 = 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)

{ mDelay(5);

if(key_on == 0)

{??while(!key_on);

on(); break;

}

}

if(key_off == 0)

{ mDelay(5);

if(key_off == 0)

{??while(!key_off);

over(); break;

}

}

if(key_se == 0)

{ mDelay(5);

if(key_se == 0)

{ while(!key_se);

flag0++;??se();

}

}

}

}

//? ?? ?按鍵掃描子程序//

void key_scan()

{? ? if(key_menu == 0)

{??mDelay(5);

if(key_menu == 0)

{ while(!key_menu); menu();

}

}

if(key_on == 0)

{??mDelay(5);

if(key_on == 0)

{ while(!key_on); on();

}

}

if(key_off == 0)

{??mDelay(5);

if(key_off == 0)

{ while(!key_off); over();

}

}

}

// 顯示子程序 //

void SEG_display()

{??P1=0x01;??P0 = num[min/10]; mDelay(10);

P1=0x02;??P0 = num[min%10]; mDelay(10);

P1=0x04;??P0 = num[sec/10]; mDelay(10);

P1=0x08;??P0 = num[sec%10]; mDelay(10);

}??//*********************************//

//? ?? ? 主函數(shù) //

void main()

{??led_in=0;??anther=0;??other=0;

while(1)

{ SEG_display(); key_scan(); }

}

//? ???定時器0中斷處理程序//

void timer0() interrupt 1

{??TH0=(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(quan==30)

{ quan=0; }

}

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

{??min--; sec = 59; }

if((sec<0)&&(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((sec<0)&&(min==0)&&(flag0==1))? ?//洗衣結束

{??flag0 = 4; out();??}

if((sec<0)&&(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((sec<0)&&(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((sec<0)&&(min==0)&&(flag0==3))

{??sec = 0;? ???over(); }

}

}

總結

以上是生活随笔為你收集整理的全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。