全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序
#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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 沙棘油的功效与作用、禁忌和食用方法
- 下一篇: C语言用循环结构算平均值,C语言循环结构