|
51单片机做的自动洗衣机控制器的proteus仿真,下面是原理图:
洗衣机控制器的所有资料下载:
洗衣机半自动控制器模拟.rar
(31.78 KB, 下载次数: 86)
源程序:
- //数码显示倒计时,四位数码管共阳显示
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar minute,second=0;
- sbit led1=P1^0;
- sbit led2=P1^1;
- sbit button1=P1^2;
- sbit button2=P1^3;
- sbit button3=P1^4;
- sbit m1=P3^0;
- sbit m2=P3^1;
- void show(void) ;
- void delay(uchar t); //US延时程序
- void scankey() ;//
- void init_timer(void);//定时器初始化
- void clockwise(void);
- void unclockwise(void) ;
- void stop(void);
- main()
- {P3=0x00;
- minute=20;
- init_timer();
- while(1)
- {scankey();
- show();
- }
- }
- void init_timer(void) //定时器初始化程序
- { TH0=0x0f8;
- TL0=0x30;
- TMOD|=0x01; //使用模式一,16位定时器
- EA=1; // 总中断打开
- ET0=1; // 定时器中断打开
- TR0=0; // 定时器开关打开
- }
- void show(void)//显示程序
- { uchar a=10;
- P2=0x01;
- P0=dis[minute/10];
- delay(a);
- P2=0x02;
- P0=dis[minute%10] ;
- delay(a);
- P2=0x04;
- P0=dis[second/10];
- delay(a);
- P2=0x08;
- P0=dis[second%10] ;
- delay(a);
- }
- void timer0_isr(void) interrupt 1 //定时器
- { static uint num1, num2,num0,i,num;
- TL0=0x30;
- TMOD|=0x01;
- TH0=0x0f8;
- TL0=0x30;
- num++; num1++;num2++;
- if(num2==1000)
- {i++;
- num2=0;
- switch(i)
- {case 1:clockwise();break;//正转
- case 4:stop();break;//停转
- case 6:unclockwise();break;//反转
- case 9:stop();break;//停止
- case 11:i=0;break;}}
- if(num1==250)
- {led2=~led2;
- num1=0;}
- if(num==500)
- {num=0;
-
-
- if((minute==0)&&(second==0))
- { TR0=0;
- led1=~led1;}
- else if(second==0)
- {second=59;
- minute--;
- }
- else second--;
- }
- }
- void delay(uchar t)
- { uchar i;
- while(t--)for(i=0;i<120;i++);
-
- }
- void scankey()
- { if(button1==0)
- { delay(100);
- if(button1==0)
- minute++;
- }
- if(button2==0)
- {delay(100);
- if(button2==0)
- minute--;
- }
- if(button3==0)
- {delay(100);
- if(button3==0)
- TR0=~TR0;
- if(TR0==0)
- stop();
- }}
- void clockwise(void)
- { m1=1;
- m2=0;
- }
- void unclockwise(void)
- { m1=0;
- m2=1;
- }
- void stop(void)
- {m1=0;
- m2=0;
- }
复制代码
|
|