📄 1302.c
字号:
temp = temp | 0x30;
DispOneChar(12,1,temp );
key = 0x00;
//Delay200ms();
key = kbscan();
Delay10ms();
if(key != 0x00) break; // 月份十位仅限于 1/0
}
}
/*------------------------------------------------------------------------------
* 函数名称: ModifyDateTime
* 说 明: 修改日期时间
* 函数功能: 修改VS1302 的日历时钟时间值
* 调 用: v_W1302()
* 输 入: 无
* 返 回 值: 无
------------------------------------------------------------------------------*/
void ModifyDateTime(void)
{
uchar Modifytime[7];
bit monthflag; // 月份 十位的标志
bit dayflagthree; // 日 十位为3的标志
bit dayflagtwo; // 日 十位为2的标志
bit dayflagzero; // 日 十位为0的标志
bit hour12flag;
bit hour12flag1;
bit hour24flag;
LcdClear();
ePutstr(0,0,exampl03); // Modify Date
ePutstr(0,1,exampl04); // Modify Time
while(1)
{
Delay200ms();
key = kbscan();
Delay10ms();
///////////////////////////////////////////////////////////////////////////////////////////////
if(key == 0x21) // 1 Modify Date
{
LcdClear();
ePutstr(0,0,exampl05);
ePutstr(0,1,exampl10);
///////////////////////////////////////////////////////////////////////////////////////
LcdWriteCommand(0x0d,1); //光标开闪
//LcdWriteCommand(0x02,1); //显示光标回原位
Disp_XY(2,1); //光标定位
Delay400ms();
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms();
if(key == 0x48 || key == 0x21 || key == 0x41 || key == 0x81 || key == 0x22 || key == 0x42 || key == 0x82 || key == 0x24 || key == 0x44 || key == 0x84 )
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[6] = (key & 0x0f) << 4; // 年 十位
break;
}
}
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms();
if(key == 0x48 || key == 0x21 || key == 0x41 || key == 0x81 || key == 0x22 || key == 0x42 || key == 0x82 || key == 0x24 || key == 0x44 || key == 0x84 )
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[6] = (key & 0x0f ) | Modifytime[6]; // 年 个位
Disp_XY(5,1); // 光标定位
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
Delay400ms();
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms();
if((key == 0x21) || (key == 0x48)) // 月份十位仅限于 1/0
{
if(key == 0x21)
{
monthflag = 1; // 月份十位为1标志为1
}
else if(key == 0x48)
{
monthflag = 0; // 月份十位不位1标志为0
}
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[4] = (key & 0x0f ) << 4; // 月 十位
break;
}
}
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms(); // 月份十位为1时个位仅为0/1/2
if((key == 0x48 || key == 0x21 || key == 0x41 ) && (monthflag == 1 ))
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[4] = (key & 0x0f ) | Modifytime[4]; // 月 个位
Disp_XY(8,1); // 光标定位
break;
} // 月份十位为0时个位不能为0
else if((key == 0x48 || key == 0x21 || key == 0x41 || key == 0x81 || key == 0x22 || key == 0x42 || key == 0x82 || key == 0x24 || key == 0x44 || key == 0x84 ) && key != 0x48 && monthflag == 0 )
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[4] = (key & 0x0f ) | Modifytime[4]; // 月 个位
Disp_XY(8,1); // 光标定位
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
Delay400ms();
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms(); // 日 十位仅限于 0/1/2/3
if((key == 0x48) || (key == 0x21) || (key == 0x41) || (key == 0x81))
{
if(key == 0x48)
{
dayflagzero = 1; // 日 十位为0标志为1
}
else if(key != 0x48)
{
dayflagzero = 0; // 日 十位不为0标志为0
}
if(key == 0x81)
{
dayflagthree = 1; // 日 十位为3标志为1
}
else if(key != 0x81)
{
dayflagthree = 0; // 日 十位不为3标志为0
}
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[3] = (key & 0x0f ) << 4; // 日 十位
break;
}
}
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms(); // 日 十位为3时个位仅为0/1
if((key == 0x48 || key == 0x21 || key == 0x41 || key == 0x81 || key == 0x22 || key == 0x42 || key == 0x82 || key == 0x24 || key == 0x44 || key == 0x84 ) && (key == 0x48 || key == 0x21 ) && (dayflagthree == 1 ))
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[3] = (key & 0x0f ) | Modifytime[3]; // 日 个位
Disp_XY(11,1); // 光标定位
break;
} // 日 十位为0时个位不能为0
else if((key == 0x48 || key == 0x21 || key == 0x41 || key == 0x81 || key == 0x22 || key == 0x42 || key == 0x82 || key == 0x24 || key == 0x44 || key == 0x84 ) && key != 0x48 && dayflagzero == 1 )
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[3] = (key & 0x0f ) | Modifytime[3]; // 日 个位
Disp_XY(11,1); // 光标定位
break;
}
else if((key == 0x48 || key == 0x21 || key == 0x41 || key == 0x81 || key == 0x22 || key == 0x42 || key == 0x82 || key == 0x24 || key == 0x44 || key == 0x84 ) && dayflagthree == 0 && dayflagzero == 0 )
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[3] = (key & 0x0f ) | Modifytime[3]; // 日 个位
Disp_XY(11,1); // 光标定位
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
Delay400ms();
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms(); //星期仅限于 1-7
if((key == 0x21) || (key == 0x41) || (key == 0x81) || (key == 0x22) || (key == 0x42) || (key == 0x82) || (key == 0x24))
{
key = GetKeyMa(key );
LcdWriteData(key );
Modifytime[5] = key & 0x07; //星期
Disp_XY(15,1); //光标定位
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
ePutstr(13,1,exampl14); //显示 OK?
Disp_XY(15,1); //光标定位
///////////////////////////////////////////////////////////////////////////////////////
Delay400ms();
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms();
if(key == 0x88) // 确认下发修改日期
{
v_W1302(0x8e,0x00); // 控制命令,WP=0,写操作
v_W1302(0x86,Modifytime[3]); // 日
v_W1302(0x88,Modifytime[4]); // 月
v_W1302(0x8a,Modifytime[5]); // 星期
v_W1302(0x8c,Modifytime[6]); // 年
v_W1302(0x8e,0x80); // 控制命令,WP=1,写保护
LcdWriteCommand(0x0c,1); // 光标关闪
LcdClear();
ePutstr(0,0,exampl15); // 修改日期
ePutstr(0,1,exampl17); // 成功修改
Delay400ms();Delay400ms();
Delay400ms();Delay400ms();
Delay400ms();Delay400ms();
// DisplyDateTime();
break;
}
else if(key == 0x28) // 取消下发修改日期
{
LcdWriteCommand(0x0c,1); // 光标关闪
LcdClear();
ePutstr(0,0,exampl15); // 修改日期
ePutstr(0,1,exampl18); // 取消了修改
Delay400ms();Delay400ms();
Delay400ms();Delay400ms();
Delay400ms();Delay400ms();
// DisplyDateTime();
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
LcdWriteCommand(0x0c,1); // 光标关闪
break;
}
///////////////////////////////////////////////////////////////////////////////////////////////
else if(key == 0x41) // 2 Modify Time
{
LcdClear();
ePutstr(0,0,exampl21); // TimeMode 12/24
ePutstr(0,1,exampl22);
///////////////////////////////////////////////////////////////////////////////////////
for(;;)
{
key = 0x00;
Delay400ms();
key = kbscan();
Delay10ms();
if(key == 0x21 ) // 1----12小时
{
key = GetKeyMa(key );
LcdWriteData(key );
//Modifytime[2] = (key & 0x01) << 7;
hour12flag = 1;
break;
}
else if(key == 0x41 ) // 2----24小时
{
key = GetKeyMa(key );
LcdWriteData(key );
//Modifytime[2] = (key & 0x01) << 7;
hour12flag = 0;
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
if(hour12flag == 1) // 12 0-11
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -