/*-------------------------------
作者:小新
qq:405228062
email:xuxing1261207@126.com
淘宝:http://xx-mcu.taobao.com
--------------------------------*/
#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}; //数码管显示0~9的段码表
unsigned char int_time; //记录中断次数
unsigned char second; //储存秒
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点亮
P1=Tab[k/10]; //显示十位
delay2();
delay2();
sm1=1;
sm2=0; //P2.7引脚输出低电平, DS7点亮
P1=Tab[k%10]; //显示个位
delay2();
delay2();
P3=0xff; //关闭所有数码管
P1=1; //显示个位
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; //正转 4s
DisplaySecond(second);
}
t=0; //反转 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; //正转3s
DisplaySecond(second);
}
t=0; //反转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; //正转2s
DisplaySecond(second);
}
t=0; //反转 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; //正转2s
DisplaySecond(second);
}
t=0; //反转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; //排水阀灯亮 等待霍尔开关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(); //进入强洗
f_qiang(); //循环20S
delay1(4000);//延时4s
f_biao(); //循环20S
delay1(4000);//延时4s
f_ruo(); //循环20S
ruo_ledoff;
pai_leds();
delay1(1000); //延时1S 进入甩干
sgan(); //甩干20s
sgan_ledoff;
ruo_ledoff;
piao_ledoff;
jin();
delay1(1000); //延时1S 进入漂洗
f_piao(); //循环20S
sgan_ledoff;
piao_ledoff;
pai_leds();
delay1(1000); //延时1S 进入甩干
sgan1();//最终甩干20S
delay(500);//延时
beep();
}
void f_an2()
{
biao_ledon; //方案1灯亮
jin();
f_biao(); //循环20S
delay1(4000); //延时4S
f_ruo(); //循环20S
ruo_ledoff;
pai_leds();
delay1(1000); //延时1S 进入甩干
sgan(); //甩干20s
ruo_ledoff;
piao_ledoff;
jin();
delay1(1000); //延时1S 进入漂洗
f_piao(); //循环20S
sgan_led=0;
pai_leds();
delay1(1000); //延时1S 进入甩干
sgan();//最终甩干20s
delay(500);//延时5s
piao_led=0;
beep();
}
void f_an3()
{
ruo_led=1; //方案1灯亮
jin();
f_ruo(); //循环20S
ruo_ledoff;
pai_leds();
delay1(1000); //延时1S 进入甩干
sgan(); //甩干20S
ruo_ledoff;
piao_ledoff;
jin();
delay1(1000); //延时1S 进入漂洗
f_piao(); //循环20S
sgan_led=0;
pai_leds();
delay1(1000); //延时1S 进入甩干
sgan();//最终甩干20s
delay(500);//延时5s
piao_led=0;
p30=0;
beep();
}
int main(void)
{
TMOD=0x01; //方式1 16位计数器
TH0=-50000/256; //设定初值
TL0=-50000%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
P2=0;
int_time=0; //中断次数初始化
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 ++; //每来一次中断,中断次数int_time自加1
if(int_time==20) //够20次中断,即1秒钟进行一次检测结果采样
{
int_time=0; //中断次数清0
second++; //秒加1
}
TH0=-50000/256; //50000 =50ms中断一次
TL0=-50000%256;
t++;
tt++;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
洗衣机protues仿真程序 51单片机洗衣机设计 洗衣机程序仿真代码.zip (18个子文件)
洗衣机protues仿真程序 51单片机洗衣机设计 洗衣机程序仿真代码
Last Loaded 洗衣机修改版5.DBK 190KB
mmmmmmmmmmm.lnp 45B
mmmmmmmmmmm 16KB
Last Loaded 洗衣机修改版4.DBK 168KB
mmmmmmmmmmm.plg 264B
洗衣机修改版6.PWI 768B
mmmmmmmmmmm_Opt.Bak 1KB
mmmmmmmmmmm.hex 3KB
mmmmmmmmmmm.Opt 1KB
mmmmmmmmmmm_Uv2.Bak 2KB
Last Loaded 洗衣机修改版6.DBK 197KB
mmmmmmmmmmm.M51 23KB
mmmmmmmmmmmmmmmmm.LST 16KB
mmmmmmmmmmm.Uv2 2KB
Last Loaded 数码管.DBK 80KB
mmmmmmmmmmmmmmmmm.c 7KB
mmmmmmmmmmmmmmmmm.OBJ 18KB
洗衣机修改版6.DSN 205KB
共 18 条
- 1
资源评论
GJZGRB
- 粉丝: 1013
- 资源: 5730
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功