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

📄 clocktime.c

📁 以C8051F020单片机做的多功能计数器
💻 C
字号:
#include "clocktime.h"

xdata float tempdata,temph,templ;
char dh,dl;
unsigned char tempvalue;


void ShowDateTime()
{
	xdata char  str[14];
	xdata char  readout[7];
	unsigned char  i=0;

	//读时钟
	v_Get1302(readout);

	for(i=0;i<7;i++)
		readout[i]=BCD_TO_HEX(readout[i]);
	strcpy(str,"20");
	strcat(str,IntToStr(readout[6],0,2));
	strcat(str,"年");
	strcat(str,IntToStr(readout[4],0,2));
	strcat(str,"月");
	strcat(str,IntToStr(readout[3],0,2));
	strcat(str,"日");
	LcdShow(0,1,str);

		//显示星期
		str[0]=0xd0;
		str[1]=0xc7;
		str[2]=0xc6;
		str[3]=0xda;
		switch(readout[5])
		{
		case 0x01:
			str[4]=0xd2;
			str[5]=0xbb;
			break;
		case 0x02:
			str[4]=0xb6;
			str[5]=0xfe;
			break;
		case 0x03:
			str[4]=0xc8;
			str[5]=0xfd;
			break;
		case 0x04:
			str[4]=0xcb;
			str[5]=0xc4;
			break;
		case 0x05:
			str[4]=0xce;
			str[5]=0xe5;
			break;
		case 0x06:
			str[4]=0xc1;
			str[5]=0xf9;
			break;
		case 0x07:
			str[4]=0xcc;
			str[5]=0xec;
			break;
		}
	str[6]=0;
	LcdShow(1,1,str);	
	//显示温度
	ShowTemp();
	//显示时间
	strcpy(str,"");
	strcat(str,IntToStr(readout[2],1,2));
	strcat(str,":");
	strcat(str,IntToStr(readout[1],0,2));
	strcat(str,":");
	strcat(str,IntToStr(readout[0],0,2));
	LcdShow(2,2,str);
	LcdShow(3,1,"请选择测试功能");
}

void ShowTime() 
{
	xdata char  str[14];
	xdata char  readout[7];
	unsigned char  i=0;

//	start1302();
	//读时钟
	v_Get1302(readout);

	for(i=0;i<7;i++)
		readout[i]=BCD_TO_HEX(readout[i]);
	strcpy(str,"");
	strcat(str,IntToStr(readout[2],1,2));
	strcat(str,":");
	strcat(str,IntToStr(readout[1],0,2));
	strcat(str,":");
	strcat(str,IntToStr(readout[0],0,2));
	LcdShow(2,2,str);
}



//called when reading time,if the data read from DS1302 is 49(0x31),the time should be BCD_TO_HEX(49)=31(0x1f)
unsigned char BCD_TO_HEX(unsigned char bcd_data)    //hex转为bcd子程序 
{
	return (bcd_data/16*10+bcd_data%16);
}

/*
//called when seting time,if you want to set the time as 31 seconds,just write  HEX_TO_BCD(31) to DS1302
unsigned char HEX_TO_BCD(unsigned char hex_data)    //BCD转为HEX子程序  
{
	return (hex_data/10*16+hex_data%10);
}
*/

void ShowTemp()
{
//	LcdShow(1,5,"28℃");	

  char str[4];
  tempint=0;
  tempbusy=1;
  while(tempint==0){}
  tempbusy=0;
  if(tempint==1)
  {
	   templ=ADC0L;
	   temph=ADC0H&0x0f;
	   tempdata=temph*256+templ;
	   tempvalue=(unsigned char)(((tempdata/4095)*2.4-0.776)/0.00286);
	   strcpy(str,"");
	   strcat(str,IntToStr(tempvalue,1,2));
	   strcat(str,"℃");
	   LcdShow(1,5,str);
   }
   
}
/*
void ShowDateTime()
{
	LcdShow(0,0,"2008年09月12日");
	LcdShow(1,0,"星期五11:20:32");
	LcdShow(2,2,"28摄氏度");
	LcdShow(3,0,"请选择测试功能");
}
*/



void setDateTime()
{
	xdata char pSecDa[7];	
	pSecDa[0]=0x00;
	pSecDa[1]=0x14;
	pSecDa[2]=0x15;
	pSecDa[3]=0x20;
	pSecDa[4]=0x09;
	pSecDa[5]=6;
	pSecDa[6]=8;
	v_Set1302(pSecDa);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -