|
大家好, 今天給大家共享個(gè)基于51單片機(jī)控制洗衣機(jī)的Proteus電路仿真的資料
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (32.97 KB, 下載次數(shù): 56)
下載附件
2019-8-27 16:34 上傳
單片機(jī)源程序如下:
- #include <REG52.H>
- #define uchar unsigned char
- #define uint unsigned int
- #define qiang_ledon qiang_led=1;
- #define qiang_ledoff qiang_led=0;
- #define biao_ledon biao_led=1;
- #define biao_ledoff biao_led=0;
- #define ruo_ledon ruo_led=1;
- #define ruo_ledoff ruo_led=0;
- #define piao_ledon piao_led=1;
- #define piao_ledoff piao_led=0;
- #define sgan_ledon sgan_led=1;
- #define sgan_ledoff sgan_led=0;
- #define jin_ledon jin_led=1;
- #define jin_ledoff jin_led=0;
- #define pai_ledon pai_led=1;
- #define pai_ledoff pai_led=0;
- unsigned char code Tab[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //數(shù)碼管顯示0~9的段碼表
- unsigned char int_time; //記錄中斷次數(shù)
- unsigned char second; //儲(chǔ)存秒
- uint t=0,tt=0;
- sbit k1=P0^0;
- sbit k2=P0^1;
- sbit k3=P0^2;
- sbit sg=P0^3;
- sbit hk1=P0^4;
- sbit hk2=P0^5;
- sbit ledon=P0^7;
- sbit qiang_led=P2^0;
- sbit biao_led=P2^1;
- sbit ruo_led=P2^2;
- sbit piao_led=P2^3;
- sbit sgan_led=P2^4;
- sbit jin_led=P2^5;
- sbit pai_led=P2^6;
- sbit p30=P3^0;
- sbit p31=P3^1;
- sbit beepon=P2^7;
- sbit sm1=P3^6;
- sbit sm2=P3^7;
- void delay2(void)
- {
- unsigned char m;
- for(m=0;m<200;m++)
- ;
- }
- void delay1(int s)
- {
- int i;
- for(;s>0;s--)
- for(i=0;i<65;i++);
- }
-
- void delay(uint i)
- {
- uchar j;
- for(i;i>0;i--)
- for(j=255;j>0;j--);
- }
- void DisplaySecond(unsigned char k)
- {
-
- sm1=0; //P2.6引腳輸出低電平, DS6點(diǎn)亮
- P1=Tab[k/10]; //顯示十位
- delay2();
- delay2();
- sm1=1;
- sm2=0; //P2.7引腳輸出低電平, DS7點(diǎn)亮
- P1=Tab[k%10]; //顯示個(gè)位
- delay2();
- delay2();
- P3=0xff; //關(guān)閉所有數(shù)碼管
- P1=1; //顯示個(gè)位
- delay2();
- delay2();
- }
-
- void beep()
- {
- p30=0;
- p31=0;
- t=0;
- while(1)
- {
- beepon^=1;
- delay(300);
- if(t>=80) break;
- }
- beepon=0;
- biao_led=0;
- }
-
- void f_qiang()
- {
- qiang_ledon;
- t=0;
- tt=0;
- int_time=0;
- second=00;
- while(1)
- {
- if(tt>=400) break;
- t=0;
- while(t<80&&tt<=400)
- {
- p31=0;
- p30=1; //正轉(zhuǎn) 4s
- DisplaySecond(second);
- }
- t=0; //反轉(zhuǎn) 4s
- while(t<80&&tt<=400)
- {
- p30=0;
- p31=1;
- DisplaySecond(second);
- }
- }
- p30=0;
- p31=0;
- }
- void f_biao()
- {
- qiang_led=0;
- biao_led=1;
- t=0;
- tt=0;
- int_time=0;
- second=00;
- while(1)
- {
- if(tt>=400) break;
- t=0;
- while(t<60&&tt<=400)
- {
- p31=0;
- p30=1; //正轉(zhuǎn)3s
- DisplaySecond(second);
- }
- t=0; //反轉(zhuǎn)3s
- while(t<60&&tt<=400)
- {
- p30=0;
- p31=1;
- DisplaySecond(second);
- }
- }
- p30=0;
- p31=0;
- }
- void f_ruo()
- {
- qiang_led=0;
- biao_led=0;
- ruo_led=1;
- t=0;
- tt=0;
- int_time=0;
- second=00;
- while(1)
- {
- if(tt>=400) break;
- t=0;
- while(t<40&&tt<=400)
- { p31=0;
- p30=1; //正轉(zhuǎn)2s
- DisplaySecond(second);
- }
- t=0; //反轉(zhuǎn) 2s
- while(t<40&&tt<=400)
- { p30=0;
- p31=1;
- DisplaySecond(second);
- }
- }
- p30=0;
- p31=0;
- }
- void f_piao()
- {
- qiang_ledoff;
- biao_ledoff;
- piao_ledon;
- t=0;
- tt=0;
- int_time=0;
- second=00;
- while(1)
- {
- if(tt>=400) break;
- t=0;
- while(t<40&&tt<=400)
- { p31=0;
- p30=1; //正轉(zhuǎn)2s
- DisplaySecond(second);
- }
- t=0; //反轉(zhuǎn)2s
- while(t<40&&tt<=400)
- { p30=0;
- p31=1;
- DisplaySecond(second);
- }
- }
- p30=0;
- p31=0;
- piao_ledoff;
- }
- void pai_leds()
- {
- p30=0;
- p31=0;
- pai_led=1; //排水閥燈亮 等待霍爾開(kāi)關(guān)2
- while(hk2);
- if(hk2==0) //如果閉合
- pai_led=0; //排水燈滅
- }
- void jin()
- {
- p30=0;
- p31=0;
- jin_ledon;
- while(hk1);
- if(hk1==0)
- jin_ledoff;
- }
- void sgan()
- {
- sgan_ledon; //甩干燈亮
- t=0;
- int_time=0;
- second=00;
- while(t<=400)
- {
- p31=0;
- p30=1;
- DisplaySecond(second);
- }
- sgan_ledoff;
- }
- void sgan1()
- {
- sgan_ledon;
- t=0;
- int_time=0;
- second=00;
- while(t<=400)
- {
- p31=0;
- p30=1;
- DisplaySecond(second);
- }
- piao_ledoff;
- sgan_ledoff;
- beep();
- t=401;
- }
- void f_an1()
- {
- qiang_ledon; //方案1燈亮
- jin(); //進(jìn)入強(qiáng)洗
- f_qiang(); //循環(huán)20S
- delay1(4000);//延時(shí)4s
- f_biao(); //循環(huán)20S
- delay1(4000);//延時(shí)4s
- f_ruo(); //循環(huán)20S
- ruo_ledoff;
- pai_leds();
- delay1(1000); //延時(shí)1S 進(jìn)入甩干
- sgan(); //甩干20s
- sgan_ledoff;
- ruo_ledoff;
- piao_ledoff;
- jin();
- delay1(1000); //延時(shí)1S 進(jìn)入漂洗
- f_piao(); //循環(huán)20S
- sgan_ledoff;
- piao_ledoff;
- pai_leds();
- delay1(1000); //延時(shí)1S 進(jìn)入甩干
- sgan1();//最終甩干20S
- delay(500);//延時(shí)
- beep();
- }
- void f_an2()
- {
- biao_ledon; //方案1燈亮
- jin();
- f_biao(); //循環(huán)20S
- delay1(4000); //延時(shí)4S
- f_ruo(); //循環(huán)20S
- ruo_ledoff;
- pai_leds();
- delay1(1000); //延時(shí)1S 進(jìn)入甩干
- sgan(); //甩干20s
- ruo_ledoff;
- piao_ledoff;
- jin();
- delay1(1000); //延時(shí)1S 進(jìn)入漂洗
- f_piao(); //循環(huán)20S
- sgan_led=0;
- pai_leds();
- delay1(1000); //延時(shí)1S 進(jìn)入甩干
- sgan();//最終甩干20s
- delay(500);//延時(shí)5s
- piao_led=0;
- beep();
- }
- void f_an3()
- {
- ruo_led=1; //方案1燈亮
- jin();
- f_ruo(); //循環(huán)20S
- ruo_ledoff;
- pai_leds();
- delay1(1000); //延時(shí)1S 進(jìn)入甩干
- sgan(); //甩干20S
- ruo_ledoff;
- piao_ledoff;
- jin();
- delay1(1000); //延時(shí)1S 進(jìn)入漂洗
- f_piao(); //循環(huán)20S
- sgan_led=0;
- pai_leds();
- delay1(1000); //延時(shí)1S 進(jìn)入甩干
- sgan();//最終甩干20s
- delay(500);//延時(shí)5s
- piao_led=0;
- p30=0;
- beep();
- }
- int main(void)
- {
- TMOD=0x01; //方式1 16位計(jì)數(shù)器
- TH0=-50000/256; //設(shè)定初值
- TL0=-50000%256;
- EA=1; //開(kāi)總中斷
- ET0=1; //開(kāi)定時(shí)器0中斷
- TR0=1; //啟動(dòng)定時(shí)器0
- P2=0;
- int_time=0; //中斷次數(shù)初始化
- second=00; //秒初始化
- while(1)
- {
- if(k1==0)
- {
- delay(10);
- if(k1==0)
- {
- f_an1();
- }
- }
- if(k2==0)
- {
- delay(10);
- if(k2==0)
- {
- f_an2();
- }
- }
- if(k3==0)
- {
- delay(10);
- if(k3==0)
- {
- f_an3();
- }
- }
- if(sg==0)
- {
- delay(10);
- if(sg==0)
- {
- sgan1();
- }
- }
- }
- return 0;
- }
- void time0() interrupt 1 using 1
- {
- int_time ++; //每來(lái)一次中斷,中斷次數(shù)int_time自加1
- if(int_time==20) //夠20次中斷,即1秒鐘進(jìn)行一次檢測(cè)結(jié)果采樣
- {
- int_time=0; //中斷次數(shù)清0
- second++; //秒加1
- }
- TH0=-50000/256; //50000 =50ms中斷一次
- TL0=-50000%256;
- t++;
- tt++;
- }
復(fù)制代碼
0.png (10.49 KB, 下載次數(shù): 58)
下載附件
2019-8-27 16:36 上傳
所有資料51hei提供下載:
洗衣機(jī)仿真.rar
(360.92 KB, 下載次數(shù): 162)
2019-8-27 14:23 上傳
點(diǎn)擊文件名下載附件
洗衣機(jī)仿真 下載積分: 黑幣 -5
|
|