⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 使用51单片机作为控制器
💻 C
📖 第 1 页 / 共 3 页
字号:
			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 + -