STC89C52单片机模拟洗衣机源代码程序 C语言程序 按键设置洗衣模式和洗衣时间 洗衣完成后语音报警提示
洗衣机控制系统程序如下:
***必要的变量定义及声明***
#include <reg52.h>
#define LCD P0 //定义单片机P0口为LCD数据输入专用口
sbit E = P2^7; //定义P2.7为LCD使能信号输入端
sbit RW = P2^5; //定义P2.6为LCD读/写命令输入引脚
sbit RS = P2^6; //定义P2.5为LCD数据/命令输入引脚
sbit psk0 = P2^0; //开始键
sbit psk1 = P2^1; //暂停键
sbit psk2 = P2^2; //结束键
sbit psk3 = P2^3; //蜂鸣器启停控制引脚
unsigned char i = 0,j = 0;
unsigned int count = 0,counter = 0; //T0计数值count,T1计数值counter
unsigned int res_time = 0,wash_mode = 0;
unsigned char show_time[] = "00:00:00"; //定义LCD初始化显示值
unsigned char show_mode[] = "0";
unsigned char mode[] = //11个按键分别按下时所对应的P3口数值
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char array[8] = {1,2,3,15,30,45,60,90}; //为wash_mode、res_time赋值
***洗衣机定时,T0中断子程序***
TTT() interrupt 1 //T0每秒请求中断,显示时间-1s
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count == 150)
{
res_time--;
Display(1);
count=0;
if(res_time ==0) //洗涤完成,关闭T0,开启T1,蜂鸣器响起
{
TR0 = 0;
psk3 = 1;
counter = 0;
TH1 = (65536-50000) / 256;
TL1 = (65536-50000) % 256;
TR1 = 1;
}
}
}
***蜂鸣器报警定时,T1中断子程序***
SSS() interrupt 3 //蜂鸣器报警结束,关闭T1,关闭蜂鸣器
{
TH1 = (65536-50000) / 256;
TL1 = (65536-50000) % 256;
counter++;
if(counter == 1500)
{