📄 main.c
字号:
#include "STC12C2052AD.H"
#include"2jinzhi.h"
unsigned char code DIS_TABLE[]={b11,b111111,b1001001,b11001,b110101,b10010001,b10000001,b111011,b1,b10001,b11111111};
void rest_drive();
void rest_data();
void display();
void dis_jia();
void key_in();
void shuiwei();
void kongzhi();
void baocun();
void delay(unsigned int k);
unsigned char dis_num2;
unsigned char dis_bit=0;
unsigned char l_time=5;
unsigned char l_timeset=5;
unsigned char l_dis;
unsigned char r_time=5;
unsigned char r_timeset=5;
unsigned char r_dis;
unsigned char r_jishu;
unsigned char l_jishu;
unsigned char baohu_time;
unsigned char baohu_jishu;
unsigned char ll_time1;
unsigned char ll_time2;
unsigned char lh_time1;
unsigned char lh_time2;
unsigned char hl_time1;
unsigned char hl_time2;
unsigned char hh_time1;
unsigned char hh_time2;
unsigned char key_on;
unsigned char time_jishu=10;
unsigned char key_time1;
unsigned char key_time2;
bit key_st;
bit display_enable;
bit l_enable;
bit r_enable;
bit ll_st;
bit lh_st;
bit hl_st;
bit hh_st;
bit key2_enable;
bit key3_enable;
bit key4_enable;
bit key5_enable;
bit key6_enable;
bit key7_enable;
bit kongzhi_enable;
bit led4_enable;
bit baohu_enable;
bit key3_on;
bit key2_on;
bit baocun_enable;
unsigned char led5;
unsigned char led4;
unsigned char led6;
sbit dis_p1=P1^6; //显示输出,电源指示
sbit dis_p2=P1^7; //显示输出,上水箱高水位指示
sbit dis_p3=P3^2; //显示输出,保护水位指示
sbit dis_p4=P3^3; //显示输出,上水泵保护水位
sbit key=P3^7; //按键输入
sbit led_ssm=P1^4; //上水泵
sbit led_m1=P1^5; //1号泵
sbit led_m2=P1^3; //2号泵
sbit led_bsm=P1^2; //补水泵
sbit HH=P1^1; //上水箱高水位
sbit HL=P1^0; //上水箱低水位
sbit LH=P3^5; //下水箱高水位
sbit LL=P3^4; //下水箱低水位
//*****************
//延时函数
void delay(unsigned int k)
{
unsigned int i;
for (i=0;i<k;i++);
}
//*******************
txd(unsigned char x)
{
SBUF=x;
while(TI==0);
{
}
TI=0;
}
//*****************************
//
void IAP_Disable()
{
ISP_CONTR=0;
ISP_CMD=0;
ISP_TRIG=0;
ISP_ADDRH=0;
ISP_ADDRL=0;
}
//**********************************
//EEPROM_read
byte_read(unsigned char DPH,DPL)
{
unsigned char read_temp;
ISP_CONTR=0x84;
ISP_CMD=1;
ISP_ADDRH=DPH;
ISP_ADDRL=DPL;
EA=0;
ISP_TRIG=0X46;
ISP_TRIG=0XB9;
read_temp=ISP_DATA;
IAP_Disable();
EA=1;
return (read_temp);
}
//**********************************
//EEPROM_program
byte_program(unsigned char DPH,DPL,program_temp)
{
ISP_CONTR=0x84;
ISP_CMD=2;
ISP_ADDRH=DPH;
ISP_ADDRL=DPL;
ISP_DATA=program_temp;
EA=0;
ISP_TRIG=0X46;
ISP_TRIG=0XB9;
IAP_Disable();
EA=1;
}
//**********************************
//EEPROM_erase
sector_erase(unsigned char DPH,DPL)
{
ISP_CONTR=0x84;
ISP_CMD=3;
ISP_ADDRH=DPH;
ISP_ADDRL=DPL;
EA=0;
ISP_TRIG=0X46;
ISP_TRIG=0XB9;
IAP_Disable();
EA=1;
}
//****************************
//保存数据
void baocun()
{
if(baocun_enable)
{
baocun_enable=0;
sector_erase(0x10,0x0);
byte_program(0x10,0x0,l_timeset);
byte_program(0x10,0x1,r_timeset);
byte_program(0x10,0x2,key_on);
}
}
//*********************
//主程序
void main()
{
rest_drive();
rest_data();
while(1)
{
WDT_CONTR=B00111010;
display();
shuiwei();
kongzhi();
key_in();
baocun();
}
}
//********************************
//显示
void display()
{
unsigned char l_10;
unsigned char l_1;
unsigned char r_10;
unsigned char r_1;
if(display_enable)
{
if(key3_on)
{
r_dis=r_time;
}
else
{
r_dis=r_timeset;
}
if(key2_on)
{
l_dis=l_time;
}
else
{
l_dis=l_timeset;
}
l_10=l_dis/10;
l_1=l_dis%10;
r_10=r_dis/10;
r_1=r_dis%10;
if(led4_enable)
{
l_10=10;
l_1=10;
r_10=10;
r_1=10;
}
switch (dis_bit)
{
case 0:
{
txd(DIS_TABLE[l_10]&b11111110);
dis_p1=0;
dis_p2=1;
dis_p3=1;
dis_p4=1;
dis_bit=1;
}break;
case 1:
{
txd(DIS_TABLE[l_1]&(b11111110|led4));
dis_p1=1;
dis_p2=0;
dis_p3=1;
dis_p4=1;
dis_bit=2;
}break;
case 2:
{
txd(DIS_TABLE[r_10]&(b11111110|led5));
dis_p1=1;
dis_p2=1;
dis_p3=0;
dis_p4=1;
dis_bit=3;
}break;
case 3:
{
txd(DIS_TABLE[r_1]&(b11111110|led6));
dis_p1=1;
dis_p2=1;
dis_p3=1;
dis_p4=0;
dis_bit=0;
}break;
}
delay(1000);
}
}
//****************************
//初始化设备
void rest_drive()
{
/*P1M0=b00000011;
P1M1=b11111100;
P1=b11000011;
P3M0=b00110000;
P3M1=b00001100;
P3=b11111111;*/
SCON=0;
TMOD=1;
TL0=0X90;
TH0=0X4E;
IE=0X82;
TR0=1;
WDT_CONTR=B00111010;
}
//**********************************
//按键操作
void key_in()
{
dis_p1=1;
dis_p2=1;
dis_p3=1;
dis_p4=1;
//---------------------------------
//-------------------------------------
//按键1被按下
txd(b01111110);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
//delay(100);
// if(key==0)
// {
if(key_on>0)
{
key_on=0;
display_enable=0;
r_enable=0;
l_enable=0;
key2_enable=0;
key3_enable=0;
key4_enable=0;
key5_enable=0;
key6_enable=0;
key7_enable=0;
key3_on=0;
kongzhi_enable=0;
baohu_enable=0;
led4_enable=0;
led_ssm=0;
led_bsm=0;
led_m1=0;
led_m2=0;
}
else
{
key_on=1;
display_enable=1;
r_enable=1;
l_enable=1;
// key2_enable=1;
// key3_enable=1;
key4_enable=1;
key5_enable=1;
key6_enable=1;
key7_enable=1;
kongzhi_enable=1;
}
key_st=1;
baocun_enable=1;
// }
}
// return;
}
else
{
key_time1++;
}
return;
}
//-------------------------------------
//按键3被按下
if(key3_enable)
{
txd(b10111110);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
// delay(100);
// if(key==0)
// {
if(!key3_on)
{
key3_on=1;
r_enable=1;
led_m2=1;
r_jishu=59;
key6_enable=0;
key7_enable=0;
r_time=r_timeset;
}
else
{
key3_on=0;
r_enable=0;
led_m2=0;
key6_enable=1;
key7_enable=1;
}
key_st=1;
// }
}
}
else
{
key_time1++;
}
return;
}
}
/* else
{
r_enable=0;
key6_enable=1;
key7_enable=1;
led_m2=0;
key3_on=0;
}*/
//-------------------------------------
//按键4被按下
if(key4_enable)
{
txd(b11011110);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
// delay(100);
// if(key==0)
// {
if(l_timeset>1)
{
l_timeset--;
key_st=1;
baocun_enable=1;
}
// }
}
// return;
}
else
{
key_time1++;
}
return;
}
}
//-------------------------------------
//按键6被按下
if(key6_enable)
{
txd(b11101110);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
// delay(100);
// if(key==0)
// {
if(r_timeset>1)
{
r_timeset--;
key_st=1;
baocun_enable=1;
}
// }
}
// return;
}
else
{
key_time1++;
}
return;
}
}
//-------------------------------------
//按键7被按下
if(key7_enable)
{
txd(b11111010);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
// delay(100);
// if(key==0)
// {
if(r_timeset<99)
{
r_timeset++;
key_st=1;
baocun_enable=1;
}
// }
}
// return;
}
else
{
key_time1++;
}
return;
}
}
//-------------------------------------
//按键5被按下
if(key5_enable)
{
txd(b11110110);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
//delay(100);
/// if(key==0)
// {
if(l_timeset<99)
{
l_timeset++;
key_st=1;
baocun_enable=1;
}
// }
}
}
else
{
key_time1++;
}
return;
}
}
//-------------------------------------
//按键2被按下
if(key2_enable)
{
txd(b11111100);
if(key==0)
{
if(key_time1>10)
{
key_time2=0;
if(key_st==0)
{
// delay(100);
// if(key==0)
// {
if(!key2_on)
{
key2_on=1;
l_enable=1;
led_m1=1;
l_jishu=59;
key4_enable=0;
key5_enable=0;
l_time=l_timeset;
}
else
{
key2_on=0;
l_enable=0;
led_m1=0;
key4_enable=1;
key5_enable=1;
}
key_st=1;
// }
}
}
else
{
key_time1++;
}
return;
}
}
/* else
{
l_enable=0;
key4_enable=1;
key5_enable=1;
led_m1=0;
key2_on=0;
}*/
//---------------------------------
//没有按键被按下
if(key_time2>10)
{
key_time1=0;
key_st=0;
}
else
{
key_time2++;
}
}
//******************************
//定时0中断
void tmer0()interrupt 1
{
TL0=0X90;
TH0=0X4E;
TR0=1;
if(time_jishu==0)
{
time_jishu=10;
//----------------------
if(r_enable)
{
if(r_jishu==0)
{
r_jishu=59;
if(r_time>1)
{
r_time--;
}
else
{
r_time=0;
led_m2=0;
r_enable=0;
key3_on=0;
key6_enable=1;
key7_enable=1;
}
}
else
{
r_jishu--;
}
}
//---------------------
if(l_enable)
{
if(l_jishu==0)
{
l_jishu=59;
if(l_time>1)
{
l_time--;
}
else
{
l_time=0;
led_m1=0;
l_enable=0;
key2_on=0;
key4_enable=1;
key5_enable=1;
}
}
else
{
l_jishu--;
}
}
//---------------------------
if(baohu_enable)
{
if(baohu_jishu==0)
{
baohu_jishu=59;
if(baohu_time>1)
{
baohu_time--;
}
else
{
led_ssm=0;
led_bsm=0;
led4_enable=1;
// display_enable=0;
r_enable=0;
l_enable=0;
key2_enable=0;
key3_enable=0;
key4_enable=0;
key5_enable=0;
key6_enable=0;
key7_enable=0;
key3_on=0;
// kongzhi_enable=0;
baohu_enable=0;
led_ssm=0;
led_bsm=0;
led_m1=0;
led_m2=0;
}
}
else
{
baohu_jishu--;
}
}
else
{
baohu_jishu=59;
baohu_time=2;
}
//------------------------
if(led4_enable)
{
led4=~led4;
}
}
else
{
time_jishu--;
}
}
//*******************************
//水位检测
void shuiwei()
{
if(!LL) //下水箱低水位
{
if(ll_time1>200) //水泵最大工作时间2分钟
{
ll_time2=0;
ll_st=1;
}
else
{
ll_time1++;
}
}
else
{
if(ll_time2>200)
{
ll_time1=0;
ll_st=0;
}
else
{
ll_time2++;
}
}
//---------------------------
if(!LH)
{
if(lh_time1>200)
{
lh_time2=0;
lh_st=1;
}
else
{
lh_time1++;
}
}
else
{
if(lh_time2>200)
{
lh_time1=0;
lh_st=0;
// led4=1;
}
else
{
lh_time2++;
}
}
//---------------------------
if(!HL)
{
if(hl_time1>200)
{
hl_time2=0;
hl_st=1;
}
else
{
hl_time1++;
}
}
else
{
if(hl_time2>200)
{
hl_time1=0;
hl_st=0;
// led4=1;
}
else
{
hl_time2++;
}
}
if(!HH)
{
// ll_time2=0;
if(hh_time1>200)
{
hh_time2=0;
hh_st=1;
// led4=0;
}
else
{
hh_time1++;
}
}
else
{
if(hh_time2>200)
{
hh_time1=0;
hh_st=0;
// led4=1;
}
else
{
hh_time2++;
}
}
}
//*********************************
//逻辑控制
void kongzhi()
{
if(kongzhi_enable)
{
//-------------------------------
if(ll_st)
{
if(!led4_enable)
{
key2_enable=1;
key3_enable=1;
}
led5=0;
}
else
{
if(!led4_enable)
{
key2_enable=0;
key3_enable=0;
r_enable=0;
key6_enable=1;
key7_enable=1;
led_m2=0;
key3_on=0;
l_enable=0;
key4_enable=1;
key5_enable=1;
led_m1=0;
key2_on=0;
}
led5=1;
}
//-----------------------------
if(lh_st)
{
if(!led4_enable)
{
led_bsm=0;
if(!hh_st)
{
if(!hl_st)
{
if(!led_ssm)
{
led_ssm=1;
baohu_enable=1;
baohu_jishu=59;
baohu_time=2;
}
}
}
else
{
if(!led_ssm)
{
baohu_enable=0;
}
}
}
led6=0;
}
else
{
led6=1;
if(!led4_enable)
{
led_ssm=0;
if(!hh_st)
{
if(!led_bsm)
{
led_bsm=1;
baohu_enable=1;
baohu_jishu=59;
baohu_time=2;
}
}
else
{
baohu_enable=0;
}
}
}
//----------------------------------
if(hh_st)
{
if(!led4_enable)
{
led4=0;
led_bsm=0;
led_ssm=0;
baohu_enable=0;
}
}
else
{
if(!led4_enable)
{
led4=1;
}
}
}
}
//*****************************
//初始化数据
void rest_data()
{
unsigned char x=0;
l_timeset=byte_read(0x10,0x00);
r_timeset=byte_read(0x10,0x01);
key_on=byte_read(0x10,0x02);
if(l_timeset>99|l_timeset==0)
{
l_timeset=5;
x=1;
}
if(r_timeset>99|r_timeset==0)
{
r_timeset=5;
x=1;
}
if(x>0)
{
sector_erase(0x10,0x0);
byte_program(0x10,0x0,l_timeset);
byte_program(0x10,0x1,r_timeset);
byte_program(0x10,0x2,key_on);
}
if(!key_on)
{
// key_on=0;
display_enable=0;
r_enable=0;
l_enable=0;
key2_enable=0;
key3_enable=0;
key4_enable=0;
key5_enable=0;
key6_enable=0;
key7_enable=0;
key3_on=0;
kongzhi_enable=0;
led_ssm=0;
led_bsm=0;
led_m1=0;
led_m2=0;
}
else
{
// key_on=1;
display_enable=1;
r_enable=1;
l_enable=1;
// key2_enable=1;
// key3_enable=1;
key4_enable=1;
key5_enable=1;
key6_enable=1;
key7_enable=1;
kongzhi_enable=1;
}
baohu_jishu=59;
baohu_time=2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -