标题: 单片机洗衣机程序设计,帮忙修改一哈程序啊,挑挑错。 [打印本页]
作者: 624624624 时间: 2019-4-19 09:36
标题: 单片机洗衣机程序设计,帮忙修改一哈程序啊,挑挑错。
洗衣机,求大家帮帮忙了,写的真不好,球球各位大佬相助啊
单片机源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//****************************//
sbit key_mianzhi=P1^4; // 棉质按键
sbit key_on=P1^5; // 开始按键
sbit key_off=P1^6; // 结束按键
sbit key_sizhi=P1^7; // 丝质按键
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; // 中断计数
uchar flag0=0; // 洗衣机工作状态标志
uchar flag1=0; // piaoxi标志
uchar flag2=0; // qiangxi标志
uchar flag3=0; // ruoxi标志
uchar err=0; // 报警标志
//**********************************//
void delay(); // 延时函数
void over(); // 结束子程序
void piaoxi(); // 票子程序
void ruoxi(); // 弱子程序
void qiangxi(); // 强子程序
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();
}
//********结束子程序*********//
void over()
{ other=0;
anther=0;
P0=0xff;
mo_r=0;
mo_l=0;
led_over=0;
EA=0;
}
//**********进水子程序**********//
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;
}
//
//********强洗程序********//
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);
}
//*********主函数**********//
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)) //洗衣结束
{
flag0=4;
out();
}
//**********************************//
if((sec<0)&&(min==0)&&(flag0==2)) //泡衣结束
{
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)) //出水结束
{
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();
}
}
}
谢谢大家帮忙,帮忙修改程序 。
-
-
实验台资源 (1).doc
14.27 MB, 下载次数: 8
-
-
直流调压调速测速电机原理.doc
1.36 MB, 下载次数: 5
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |