功能:
0.本项目采用STC89C52作为单片机系统的控制MCU
1.系统支持速洗、标准洗、浸泡洗、脱水和烘干五种模式
2.按下开关键显示“FF”,此时按下启动键可进入水位设置,再次按下开关键,回到“FF”,按下模式按键选择工作模式,然后点击启动开始工作
3.数码管可显示当前剩余时间,时间每减1,对应真实时间5s
4.采用DC002作为电源接口可直接输入5V给整个系统供电
原理图:
PCB :
主程序:
#include "reg52.h" //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "tlc0832.h"
unsigned char waterLevel; // 水位,保存
sbit RELAY_IN = P2^1; // 进水阀控制端口
sbit RELAY_OUT = P2^2; // 排水阀控制端口
sbit RELAY_HEAT = P2^0; // 烘干
sbit MOTOR_A = P1^3; // 电机控制
sbit MOTOR_B = P1^4; // 电机控制
sbit LED1 = P1^7; // 速洗指示灯
sbit LED2 = P1^6; // 标准洗指示灯
sbit LED3 = P1^5; // 浸泡洗指示灯
sbit LED4 = P3^2; // 脱水指示灯
sbit LED5 = P3^3; // 烘干指示灯
sbit SEG_S1 = P2^6; // 数码管显示第一位公共端
sbit SEG_S2 = P2^7; // 数码管第二位显示控制公共端
sbit KEY_SWITCH = P3^4; // 洗衣机电源开关
sbit KEY_MODE = P3^5; // 洗衣机模式选择
sbit KEY_START = P3^6; // 启动按键
sbit BUZZER = P2^3; // 洗涤完报警
unsigned int time50ms, time1s_1, time5s, timeFlag, time1s; // 用于全局时钟定义
bit forwardFlag; // 电机,正反转标志位
unsigned char time[] = {
20, 40, 80, 5, 20}; // 五个模式显示时间
unsigned char dis_seg[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00}; // 共阴数码管码表
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01;
TL0 = 0x00; //设置定时初始值
TH0 = 0x4C; //设置定时初始值 50ms
EA = 1; // 总中断打开
ET0 = 1; // 定时器中断打开
// TR0=1; //定时器开关打开
}
void delay(unsigned int t)
{
while (t--)
;
}
void WaterLevel_Ctrl()
{
switch (waterLevel)
{
case 1:
if (0xbe < ReadADC(AIN0_GND)) // 10*25 =250
{
TR0 = 1;
RELAY_IN = 1;
}
else
{
TR0 = 0;
RELAY_IN = 0;
RELAY_OUT = MOTOR_A = MOTOR_B = RELAY_HEAT = 1;
forwardFlag = 0;
}
break;
case 2:
if (0x9e < ReadADC(AIN0_GND)) // 10*25 =250
{
TR0 = 1;
RELAY_IN = 1;
}
else
{
TR0 = 0;
RELAY_IN = 0;
RELAY_OUT = MOTOR_A = MOTOR_B = RELAY_HEAT = 1;
forwardFlag = 0;
}
break;
case 3:
if (0x91 < ReadADC(AIN0