📄 menu.c
字号:
printf_reverse=0;
printf("%4d",(uint)(TimeBuf[6]+2000));
break;
}
}
void Time_AmendUp(uchar i)
{
switch(i)
{
case 0:
TimeBuf[0]++;
if(TimeBuf[0]>59)
TimeBuf[0]=0;
break;
case 1:
TimeBuf[1]++;
if(TimeBuf[1]>59)
TimeBuf[1]=0;
break;
case 2:
TimeBuf[2]++;
if(TimeBuf[2]>23)
TimeBuf[2]=0;
break;
case 3:
TimeBuf[5]++;
if(TimeBuf[5]>7)
TimeBuf[5]=1;
break;
case 4:
TimeBuf[3]++;
if(TimeBuf[3]>31)
TimeBuf[3]=1;
break;
case 5:
TimeBuf[4]++;
if(TimeBuf[4]>12)
TimeBuf[4]=1;
break;
case 6:
TimeBuf[6]++;
if(TimeBuf[6]>60)
TimeBuf[6]=0;
break;
}
}
void Time_AmendDown(uchar i)
{
switch(i)
{
case 0:
TimeBuf[0]--;
if(TimeBuf[0]==255)
TimeBuf[0]=59;
break;
case 1:
TimeBuf[1]--;
if(TimeBuf[1]==255)
TimeBuf[1]=59;
break;
case 2:
TimeBuf[2]--;
if(TimeBuf[2]==255)
TimeBuf[2]=23;
break;
case 3:
TimeBuf[5]--;
if(TimeBuf[5]==0)
TimeBuf[5]=7;
break;
case 4:
TimeBuf[3]--;
if(TimeBuf[3]==0)
TimeBuf[3]=31;
break;
case 5:
TimeBuf[4]--;
if(TimeBuf[4]==0)
TimeBuf[4]=12;
break;
case 6:
TimeBuf[6]--;
if(TimeBuf[6]==255)
TimeBuf[6]=60;
break;
}
}
void Time_Amend(void)
{
uchar Sel=6;
uchar Temp;
//LCD_clr();
LCD_set_RC(3,5);
LCD_putc(45,0);LCD_putc(46,0);//显示 -返回
LCD_set_RC(3,0);
LCD_putc(84,0);LCD_putc(85,0);//显示 -确定
ReadTime();//读取时间
LCD_set_RC(1,2);
LCD_putc(39,0);//显示"星"
LCD_putc(23,0);//显示"期"
LCD_putc(TimeBuf[5],0);
LCD_set_XY(12,3);
printf("%2d:%02d:%02d",(uint)TimeBuf[2],(uint)TimeBuf[1],(uint)TimeBuf[0]);//显示时分
LCD_set_XY(0,0);
printf_reverse=1;
printf("%4d",(uint)(TimeBuf[6]+2000));
printf_reverse=0;
printf("-%2d-%2d",(uint)TimeBuf[4],(uint)TimeBuf[3]);//显示日期
while(1)
{
if(key_up)
{
key_up_elim();
Time_AmendUp(Sel);
Time_AmendReve(Sel);//新反显
}
if(key_down)
{
key_down_elim();
Time_AmendDown(Sel);
Time_AmendReve(Sel);//新反显
}
if(key_right)
{
key_right_elim();
Time_AmendReco(Sel);//取消原来反显
Sel--;
if(Sel==255)
Sel=6;
Time_AmendReve(Sel);//新反显
}
if(key_left)
{
key_left_elim();
Time_AmendReco(Sel);//取消原来反显
Sel++;
if(Sel==7)
Sel=0;
Time_AmendReve(Sel);//新反显
}
if(key_enter)
{
key_enter_elim();
for(Sel=0;Sel<7;Sel++) //时间缓冲区中数据传到改写缓冲区,改写缓冲区要求BCD码,现将SetTimeBuf[]变为BCD码
{
Temp=TimeBuf[Sel]/10<<4;
SetTimeBuf[Sel]=Temp+TimeBuf[Sel]%10;
}
SetTime();
Func_Out();
break;
}
if(key_esc)
{
key_esc_elim();
Func_Out();
break;
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
void File_TimeModi(void)
{
UINT8 i;
mCmdParam.Modify.mFileAttr = 0xff; /* 输入参数: 新的文件属性,为0FFH则不修改 */
mCmdParam.Modify.mFileTime = MAKE_FILE_TIME( TimeBuf[2],TimeBuf[1], TimeBuf[0] ); /* 输入参数: 新的文件时间,为0FFFFH则不修改,使用新建文件产生的默认时间 */
mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2000+TimeBuf[6],TimeBuf[4],TimeBuf[3] ); /* 输入参数: 新的文件日期: 2004.05.18 */
mCmdParam.Modify.mFileSize =0xffffffff; //输入参数: 新的文件长度,以字节为单位写文件应该由程序库关闭文件时自动更新长度,所以此处不修改
i = CH375FileModify( ); /* 修改当前文件的信息,修改日期和长度 */
mStopIfError( i );
}
//-----------------------------------------------温度记录-----------------------------------------------------
UINT16 TempChIndex=0;
void Temp_Ch(void)
{ UINT8 i;
LCD_set_RC(3,5);
LCD_putc(45,0);LCD_putc(46,0);//显示 -返回
while(1)
{
TempDetect();//读取温度
ReadTime();//读取时间
LCD_set_XY(24,2);
printf("%2d.%dC ",(uint)TempInt,(uint)TempDec);//显示温度
LCD_set_XY(0,1);
printf("%2d:%02d:%02d",(uint)TimeBuf[2],(uint)TimeBuf[1],(uint)TimeBuf[0]);//显示时分
LCD_set_XY(0,0);
printf("%4d-%2d-%2d",(uint)(TimeBuf[6]+2000),(uint)TimeBuf[4],(uint)TimeBuf[3]);//显示日期
if(!USB_Connet)//如果优盘未连接,则不显示提示词;记录
{
LCD_set_RC(3,0);
LCD_putc(42,0);LCD_putc(42,0);//显示 -空白
LCD_set_XY(0,3);
printf("No USB Disc ");//没有U盘插入时候显示
}
else
{
LCD_set_RC(3,0);
LCD_putc(29,0);LCD_putc(30,0);//显示 -记录
LCD_set_XY(0,3);
printf(" ");//清除部分显示
}
if(key_enter&&USB_Connet)
{
LCD_set_XY(0,3);
printf("TO:\\TM1.TXT ");
key_enter_elim();
// CH375LibConfig |= 0x10; //如果需要每次写完数据后会自动修改/更新文件长度,那么可以使全局变量CH375LibConfig的位4为1,
mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "\\TM1.TXT"); /* 文件名,该文件在根目录下 */
i = CH375FileOpen(); /* 打开文件 */
if ( i == ERR_SUCCESS ) { /* 文件存在并且已经被打开,移动文件指针到尾部以便添加数据 */
mCmdParam.ByteLocate.mByteOffset = 0xffffffff; /* 移到文件的尾部 */
i = CH375ByteLocate( );
mStopIfError( i );
}
else if ( i == ERR_MISS_FILE )
{ /* 没有找到文件,必须新建文件 */
// mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/MY_ADC.TXT" ); /* 文件名,该文件在根目录下,刚才已经提供给CH375FileOpen */
i = CH375FileCreate( ); /* 新建文件并打开,如果文件已经存在则先删除后再新建 */
mStopIfError( i );
TempChIndex=0;
}
else mStopIfError( i ); /* 打开文件时出错 */
TempChIndex++;
i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "<%d>\xd\xa%d.%dC |%d/%d/%d %d:%02d:%02d;\xd\xa",TempChIndex,(UINT16)TempInt,(UINT16)TempDec,(UINT16)(2000+TimeBuf[6]),(UINT16)TimeBuf[4],(UINT16)TimeBuf[3],(UINT16)TimeBuf[2],(UINT16)TimeBuf[1],(UINT16)TimeBuf[0]);
mCmdParam.ByteWrite.mByteCount = i; /* 指定本次写入的字节数,单次读写的长度不能超过MAX_BYTE_IO */
i = CH375ByteWrite( ); /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */
File_TimeModi();
mCmdParam.Close.mUpdateLen =1; //自动计算文件长度
i = CH375FileClose( );
// CH375LibConfig&= 0xEF;
}
if(key_esc)
{
key_esc_elim();
Func_Out();
break;
}
}
}
//----------------------------AD通道数据记录------------------------------------------------------------------
UINT16 Sig1ChIndex=0;
void Sign_Ch(void)
{ UINT8 i;
UINT16 ADTemp=0,CmpTemp,CmpTemp2;
//LCD_clr();
LCD_set_RC(3,5);
LCD_putc(45,0);LCD_putc(46,0);//显示 -返回
AD_Init1();
while(1)
{
TempDetect();//读取温度
ReadTime();//读取时间
ADTemp=AD_Take();//读取电压值
CmpTemp2=CmpTemp;
CmpTemp=ADTemp;
if(CmpTemp!=CmpTemp2)//加入此处为了消除抖动
ADTemp=0;
LCD_set_XY(53,1);
printf("%2d.%dC ",(uint)TempInt,(uint)TempDec);//显示温度
LCD_set_XY(0,1);
printf("%2d:%02d:%02d",(uint)TimeBuf[2],(uint)TimeBuf[1],(uint)TimeBuf[0]);//显示时分
LCD_set_XY(0,0);
printf("%4d-%2d-%2d",(uint)(TimeBuf[6]+2000),(uint)TimeBuf[4],(uint)TimeBuf[3]);//显示日期
LCD_set_XY(12,2);
printf("Vol:%d.%d%dV",ADTemp/100,ADTemp%100/10,ADTemp%100%10);
if(!USB_Connet)//如果优盘未连接,则不显示提示词;记录
{
LCD_set_RC(3,0);
LCD_putc(42,0);LCD_putc(42,0);//显示 -空白
LCD_set_XY(0,3);
printf("No USB Disc ");//没有U盘插入时候显示
}
else
{
LCD_set_RC(3,0);
LCD_putc(29,0);LCD_putc(30,0);//显示 -记录
LCD_set_XY(0,3);
printf(" ");//清除部分显示
}
if(key_enter&&USB_Connet)
{
LCD_set_XY(0,3);
printf("TO:\\SIGCH1.TXT");
key_enter_elim();
// CH375LibConfig |= 0x10; //如果需要每次写完数据后会自动修改/更新文件长度,那么可以使全局变量CH375LibConfig的位4为1,
mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "\\SIGCH1.TXT"); /* 文件名,该文件在根目录下 */
i = CH375FileOpen(); /* 打开文件 */
if ( i == ERR_SUCCESS ) { /* 文件存在并且已经被打开,移动文件指针到尾部以便添加数据 */
mCmdParam.ByteLocate.mByteOffset = 0xffffffff; /* 移到文件的尾部 */
i = CH375ByteLocate( );
mStopIfError( i );
}
else if ( i == ERR_MISS_FILE )
{ /* 没有找到文件,必须新建文件 */
// mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/MY_ADC.TXT" ); /* 文件名,该文件在根目录下,刚才已经提供给CH375FileOpen */
i = CH375FileCreate( ); /* 新建文件并打开,如果文件已经存在则先删除后再新建 */
mStopIfError( i );
Sig1ChIndex=0;
}
else mStopIfError( i ); /* 打开文件时出错 */
Sig1ChIndex++;
i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "<%d>Vol:%d.%d%dV\xd\xa%d.%dC |%d/%d/%d %d:%02d:%02d;\xd\xa",Sig1ChIndex,ADTemp/100,ADTemp%100/10,ADTemp%100%10,(UINT16)TempInt,(UINT16)TempDec,(UINT16)(2000+TimeBuf[6]),(UINT16)TimeBuf[4],(UINT16)TimeBuf[3],(UINT16)TimeBuf[2],(UINT16)TimeBuf[1],(UINT16)TimeBuf[0]);
mCmdParam.ByteWrite.mByteCount = i; /* 指定本次写入的字节数,单次读写的长度不能超过MAX_BYTE_IO */
i = CH375ByteWrite( ); /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */
File_TimeModi();
mCmdParam.Close.mUpdateLen =1; //自动计算文件长度
i = CH375FileClose( );
// CH375LibConfig&= 0xEF;
}
if(key_esc)
{
key_esc_elim();
Func_Out();
EX1=0;//退出后恢复ET1
break;
}
}
}
/////////////////////////////////////////数据采集///////////////////////////////////////////////////
//-------------------------------------数据整理-----------------------------------------------------
UINT16 total=0; /* 记录当前缓冲在FILE_DATA_BUF中的数据长度 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -