📄 2402test.c
字号:
LCM2402_Init(); //LCM2402初始化
Init_1302(); //检测时钟芯片是否未被初始化
CgramWrite();
print(0x81,"Sun-2402C eClock V0.01");
print(0xc3,"MSN: 5isun@live.cn");
DelayS(5000);
LCM2402_Init(); //LCM2402初始化
beep_y();
while(1) //主线程
{
//------------------0 主显示-----------------------------------------------------------
if(menu==0)
{
RealTime_Display(); //在第一行显示时间部分
print(0xc7," !AL");
print2(0xcb,AT24C02_Read1Byte(0x03)+0x30);
print(0xcc," Used:");
print2(0xd2,alarm_con/16+0x30);
print2(0xd3,alarm_con%16+0x30);
print(0xd4,"/25 ");
printTemperature(); //显示温度
search_time(); //定时值校对&处理函数
if (DT!=0xff)
{
if(DT>=0x00&&DT<0x0a)
{
uint16 i;
uint8 n=0,x=0xff,y=0xff;
LCM2402_Init(); //LCM2402初始化
for(i=0;i<500;i++)
{
print(0x83,"{ Controller NO. }");
print(0xc3,"{------ ");
print(0xcd," ------}");
if(DT>=0x00&&DT<0x0a)
{
switch(n)
{
case 0: x=DT;
n++;
i=0;
break;
case 1: y=DT;
n--;
i=0;
break;
}
print2(0xcb,x%16+0x30);
print2(0xcc,y%16+0x30);
beep_k();
DelayS250();
DT=0xff;
}
if(DT==0x4C)
{
print(0xca,"OK");
//ALARMing(i); //** 闹钟和无线遥控的键值处理 **
DelayS250();
beep_y();
DT=0xff;
}
}
}
if(DT>0x12&&DT<0x17) //当按定时加减查看的几个键时会进入定时查看菜单
{
beep_y();
menu=2;
}
switch(DT) //定时动作选择:0 全关 1 只开闹钟 2 只开控制动作 3 全开
{
uint8 alarm_bit;
case 0x1c: beep_y();
menu=1;
break;
case 0x2F: beep_y();
menu=99;
break;
case 0x19: {
alarm_bit++;
if(alarm_bit>3)
{
alarm_bit=0;
};
AT24C02_Write1Byte(0x03,alarm_bit);
DelayS(500);
beep_y();
break;
}
default:DT=0xff;
break;
}
LCM2402_Init(); //LCM2402初始化
DT=0xff;
}
}
//------------------1 是否调时?-----------------------------------------------------------
if(menu==1)
{
print(0x82,"Set The Real Time");
print(0xc2,"PP: Set AV: Exit");
if(DT!=0xff)
{
switch(DT)
{
case 0x1D: beep_n();
menu = 0;
break;
case 0x1B: beep_y();
menu=11;
break;
default:DT=0xff;
break;
}
LCM2402_Init(); //LCM2402初始化
DT=0xff;
}
}
//------------------2 定时查看-----------------------------------------------------------
if(menu == 2)
{
alarm_Display(); //在第一行显示定时部分
print(0xc3,"Alarm NO.");
print2(0xcc,0x30+rom/10);
print2(0xcd,0x30+rom%10);
print(0xcf,"STORE:Set");
if(DT!=0xff)
{
switch(DT)
{
case 0x18: beep_y();
menu=12;
break;
case 0x13: beep_k();
rom++;
break;
case 0x14: beep_k();
rom--;
break;
case 0x15: beep_k();
rom=rom+5;
break;
case 0x16: beep_k();
rom=rom-5;
break;
case 0x1D: beep_n();
menu=0;
break;
default:DT=0xff;
break;
}
if(rom>24&&rom<100)
{
rom=0;
}
if(rom>200)
{
rom=24;
}
LCM2402_Init(); //LCM2402初始化
DT=0xff;
}
}
//------------------99 帮助菜单-----------------------------------------------------------
if(menu==99)
{
uint8 i;
if (DT!=0xff)
{
if(DT==0x2F)
{
i++;
if(i>9)
{
i=0;
}
DelayS(500);
beep_k();
}
if(DT==0x1D)
{
i=0;
beep_n();
menu=0;
}
LCM2402_Init(); //LCM2402初始化
DT=0xff;
}
switch(i)
{
case 0: print(0x80,"MUTE: Help & Next Page");
print(0xc0," AV : Exit Help");
break;
case 1: print(0x80,"SLEEP: Set The Real Time");
print(0xc0," PP : Set Time");
break;
case 2: print(0x80,"F.T.+/-: Set The Alarm");
print(0xc0," STORE : Set Alarm");
break;
case 3: print(0x80," PR.+/-: Alarm No. +/-1");
print(0xc0,"F.T.+/-: Alarm No. +/-5");
break;
case 4: print(0x80,"VOL+/-: Right/Left Move");
print(0xc0," -/-- : Right Jumping");
break;
case 5: print(0x80,"SEARCH: Alarm Set to ??");
print(0xc0," 00~99: Controller NO.");
break;
case 6: print(0x80," AV : Exit & Confirm");
print(0xc0,"RECALL: !AL0 ~ !AL3");
break;
case 7: print(0x80,"!AL0: Beep & Alarm OFF");
print(0xc0,"!AL1: Only Beep ON");
break;
case 8: print(0x80,"!AL2: Only Alarm ON");
print(0xc0,"!AL3: Beep & Alarm ON");
break;
case 9: print(0x81,"Sun-2402C eClock V0.01");
print(0xc0,"5isun@live.cn 2008-06-08");
break;
default:break;
}
}
//------------------11 调时输入-----------------------------------------------------------
if(menu==11)
{
static unsigned char i=0;
bit k; //定义静态
RealTime_Display(); //在第一行显示时间部分
for(i=1;i<8;) //8个时钟数据的循环加位
{
switch(i) //显示设置项的说明
{
case 7:print(0xc0,"AV:Exit Second 00~59 ^^");
break;
case 6:print(0xc5,"Minute 00~59 ^^");
break;
case 5:print(0xc4,"Hour 00~23 ^^");
break;
case 4:print(0xc3,"AV:Exit ^ Week 1~7");
break;
case 3:print(0xc8,"^^ Date 01~31");
break;
case 2:print(0xc5,"^^ Month 01~12");
break;
case 1:print(0xc2,"^^ Year 00~99 AV:Exit");
break;
}
print(0x80,"20");
if(DT>=0x00&&DT<0x0a) //DT办数据键码时动作
{
if(i==4) //如果是星期设置则不必输入“十位”数据
{
k=1;
}
Set_time(i,k); //在这里调用写时间的程序项
if(k==0) //第一次按键输入到“十位”
{
k=1;
}
else //否则是第二次按键,输入到“个位”
{
k=0;
i++;
}
LRDD(); //清屏+刷新显示+延时+清空DT 一体函数
beep_k();
}
if(DT==0x11||DT==0x17)
{
i++;
LRDD();
beep_y();
}
if(DT==0x1A)
{
i--;
if(i<1)
{
i=7;
};
LRDD();
beep_y();
}
if(DT==0x1D) //按 AV 键退回到主界面
{
LRDD();
beep_n();
menu=0;
i=9; //用于退出上一级的for循环
}
}
}
//------------------12 定时值输入-----------------------------------------------------------
if(menu==12)
{
static unsigned char i=0;
bit k; //定义静态
alarm_Display(); //在第一行显示时间部分
for(i=1;i<9;) //8个时钟数据的循环加位
{
switch (i) //显示设置项的说明
{
case 8:print(0xc3,"<< Controller 00~99");
break;
case 7:print(0xc8,"Second 00~59 ^^");
break;
case 6:print(0xc5,"Minute 00~59 ^^");
break;
case 5:print(0xc4,"Hour 00~23 ^^");
break;
case 4:print(0xc4,"AV:Exit ^ Week 1~7");
break;
case 3:print(0xc8,"^^ Date 01~31");
break;
case 2:print(0xc5,"^^ Month 01~12");
break;
case 1:print(0xc2,"^^ Year 00~99 AV:Exit");
break;
}
print(0x97,"!");
if(DT>=0x00&&DT<0x0a||DT==0x12) //DT办数据键码时动作
{
if(i==4||DT==0x12) //如果是星期设置则不必输入“十位”数据
{
k=1;
}
Set_alarm(rom,i,k); //在这里调用写时间的程序项
if(k==0) //第一次按键输入到“十位”
{
k=1;
}
else //否则是第二次按键,输入到“个位”
{
k=0;
i++;
}
LADD(); //清屏+刷新显示+延时+清空DT 一体函数
beep_k();
}
switch (DT) //显示设置项的说明
{
case 0x11: //i++;LADD();break; // -/-- VOL+ SEARCH 则跳到下一项
case 0x12: //i++;LADD();break; // -/-- VOL+ SEARCH 则跳到下一项
case 0x17: beep_y(); // -/-- VOL+ SEARCH 则跳到下一项
i++;
LADD();
break;
case 0x1A: beep_y(); //VOL- 跳回上一项 循环设备
i--;
if(i<1)
{
i=8;
};
LADD();
break;
case 0x1D: beep_n(); //按 AV 键退回到主界面 i = 9;用于退出上一级的for循环
LADD();
menu=0;
i=19;
break;
}
}
}
LED1=1; //关LED1
}
}
/********************************************************************************************
日志
2007-5-8 这时已经基本完成了除24C02的IC驱动,完成主时间的显示和调整。
2007-5-10 加入菜单帮助项目
2007-5-11 加入了25路定时器设置(全部项目),红外遥控器上的所有按键定义完成。
2007-5-13 V1.0版本完成,整理并存档。
/********************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -