标题:
自动洗衣机程序
[打印本页]
作者:
qaz789456123
时间:
2018-5-22 20:43
标题:
自动洗衣机程序
//数码显示倒计时,四位数码管共阳显示
#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;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1