134069659.jpg (105.4 KB, 下載次數(shù): 25)
下載附件
2019-4-19 09:33 上傳
洗衣機(jī),求大家?guī)蛶兔α耍瑢懙恼娌缓茫蚯蚋魑淮罄邢嘀?br />
單片機(jī)源程序如下:
#include<reg51.h> #define uchar unsigned char #define uint unsigned int //****************************// sbit key_mianzhi=P1^4; // 棉質(zhì)按鍵 sbit key_on=P1^5; // 開始按鍵 sbit key_off=P1^6; // 結(jié)束按鍵 sbit key_sizhi=P1^7; // 絲質(zhì)按鍵 sbit key_huaxian=P1^1; // 化纖按鍵 //***************************// sbit led_wring=P0^7; // 報警指示燈 //******************************// uchar codenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //*****************************// char sec=0; // 時間秒 char min=0; // 時間分 uchar count=0; // 中斷計數(shù) uchar flag0=0; // 洗衣機(jī)工作狀態(tài)標(biāo)志 uchar flag1=0; // piaoxi標(biāo)志 uchar flag2=0; // qiangxi標(biāo)志 uchar flag3=0; // ruoxi標(biāo)志 uchar err=0; // 報警標(biāo)志 //**********************************// void delay(); // 延時函數(shù) void over(); // 結(jié)束子程序 void piaoxi(); // 票子程序 void ruoxi(); // 弱子程序 void qiangxi(); // 強(qiáng)子程序 void on(); // 工作on處理子程序 void se(); // 顯示菜單選擇 void SEG_display(); // 顯示時間子程序 void key_scan(); // 按鍵掃描子程序 ************************************** void delay(uint i) { uintx,y; for(x=i;x>0;x--) for(y=120;y>0;y--); } //*********工作on處理子程序**********// void on() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; P0 = 0xff; if(flag0==0) in(); if(flag0==1) qiangxi(); if(flag0==2) piaoxi(); if(flag0==3) ruoxi(); if(flag0==4) out(); } //********結(jié)束子程序*********// void over() { other=0; anther=0; P0=0xff; mo_r=0; mo_l=0; led_over=0; EA=0; } //**********進(jìn)水子程序**********// voidin() { anther=0; other=0; P0=0xff; led_in=0; flag1++; mo_r=0; mo_l=0; min=0; sec=8; } //**********漂洗子程序**********// void piaoxi() { anther=1; other=0; P0=0xff; mo_r=1; mo_l=1; min=0; sec=10; quan=0; } // //********強(qiáng)洗程序********// void piaoxi() { anther=1; other=0; P0=0xff; mo_r=1; mo_l=0; min=1; sec=10; } //*********弱洗子程序********// void ruoxi() { other=1; anther=0; P0=0xff; mo_r=1; mo_l=0; sec=5; } //*********漂洗子程序********// void piaoxi() { other=1; anther=0; P0=0xff; mo_r=1; sec=5; mo_l=1; sec=5; } //*********按鍵掃描子程序*********// void key_scan() { if(key_menu==0) { delay(5); if(key_menu==0) { while(!key_menu); menu(); } } //********************************// if(key_on==0) { delay(5); if(key_on==0) { while(!key_on); on(); } } //*********************************// if(key_off==0) { delay(5); if(key_off==0) { while(!key_off); over(); } } } //*********顯示子程序**********// void SEG_display() { P1=0x01; P2=num[min/10]; delay(10); P1=0x02; P2=num[min%10]; delay(10); P1=0x04; P2=num[sec/10]; delay(10); P1=0x08; P2=num[sec%10]; delay(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; case10:mo_r=0;mo_l=0;break; case15:mo_r=0;mo_l=1;break; case25: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==1)) //洗衣結(jié)束 { flag0=4; out(); } //**********************************// if((sec<0)&&(min==0)&&(flag0==2)) //泡衣結(jié)束 { switch(flag3) { case1:flag0=4;out();break; case2:flag0=4;out();break; case3:flag0=4;out();break; default:err=1;led_wring = 0; } } //**********************************// if((sec<0)&&(min==0)&&(flag0==4)) //出水結(jié)束 { switch(flag2) { case1:flag0=0;in();break; case2:flag0=0;in();break; case3:flag0=0;in();break; case4:flag0=3;xx();break; default:err=1;led_wring=0; } } //***********************************// if((sec<0)&&(min==0)&&(flag0==3)) { sec=0; over(); } } } 謝謝大家?guī)兔Γ瑤兔π薷某绦?。
|