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

📄 带农历.c

📁 51单片机试验板-sch-pcb-4.0M.zip
💻 C
📖 第 1 页 / 共 3 页
字号:
  }
  if(KEY_4 == 0){
  	item--;//数减 1 
  }
  if(item>max) item=mini;//查看数值有效范围   
  if(item<mini) item=max;           
  Write1302(0x8e,0x00);//允许写操作
  Write1302(address,(item/10)*16+item%10);//转换成16进制写入1302
  Write1302(0x8e,0x80);//写保护,禁止写操作 
  updata ();	//刷新数据
  LCM_w_mm();//刷新 分 
   nl();
}
/*****************************************************************************/
//设置1302的初始时间
void Init_1302(void)  //(2007年1月1日00时00分00秒星期一)
{   uchar  cctt;
    cctt=Read1302(0x80);
   if(cctt&0x80)
	{
    Write1302(0x8e,0x00);//允许写操作
	Write1302(0x8c,0x08);//年
	Write1302(0x8a,0x02);//星期
	Write1302(0x88,0x01);//月
	Write1302(0x86,0x01);//日
	Write1302(0x84,0x00);//小时
	Write1302(0x82,0x00);//分钟
	Write1302(0x80,0x00);//秒
//	Write1302(0x90,0x55);//充电	
	Write1302(0x8e,0x80);//禁止写操作
   }
}
void DS1302InputByte(unsigned char d) 	//实时时钟写入一字节(内部函数)
{ 
    unsigned char i;
    ACC = d;
    for(i=8; i>0; i--)
    {
        DS1302_IO = ACC0;           	//相当于汇编中的 RRC
        DS1302_CLK = 1;
        DS1302_CLK = 0;
        ACC = ACC >> 1; 
    } 
}

unsigned char DS1302OutputByte(void) 	//实时时钟读取一字节(内部函数)
{ 
    unsigned char i;
    for(i=8; i>0; i--)
    {
        ACC = ACC >>1;         			//相当于汇编中的 RRC 
        ACC7 = DS1302_IO;
        DS1302_CLK = 1;
        DS1302_CLK = 0;
    } 
    return(ACC); 
}

void Write1302(unsigned char ucAddr, unsigned char ucDa)	//ucAddr: DS1302地址, ucData: 要写的数据
{
    DS1302_RST = 0;
    DS1302_CLK = 0;
    DS1302_RST = 1;
    DS1302InputByte(ucAddr);       	// 地址,命令 
    DS1302InputByte(ucDa);       	// 写1Byte数据
    DS1302_CLK = 1;
    DS1302_RST = 0;
} 

unsigned char Read1302(unsigned char ucAddr)	//读取DS1302某地址的数据
{
    unsigned char ucData;
    DS1302_RST = 0;
    DS1302_CLK = 0;
    DS1302_RST = 1;
    DS1302InputByte(ucAddr|0x01);        // 地址,命令 
    ucData = DS1302OutputByte();         // 读1Byte数据
    DS1302_CLK = 1;
    DS1302_RST = 0;
    return(ucData);
}
/*****************************************************************************/
//向LCM中填写 年 数据
void LCM_w_yy(void){
	//if(Read1302(0x8d) != yy){
		yy = Read1302(0x8d);
		LCM_WriteDatOrCom(0,0x80);
		LCM_WriteString("20");
		LCM_WriteDatOrCom(0,0x81);
		LCM_WriteDatOrCom(1,(yy/16)+0x30);	
		LCM_WriteDatOrCom(1,yy%16+0x30);
		LCM_WriteDatOrCom(0,0x82);
		LCM_WriteString("年");   
        nl();    
}	//}
/*****************************************************************************/
//向LCM中填写 月 数据
void LCM_w_mo(void){
	//if(Read1302(0x89) != mo){
		mo = Read1302(0x89);
		LCM_WriteDatOrCom(0,0x83);
			if(mo/16 != 0){LCM_WriteDatOrCom(1,(mo/16)+0x30);}	//十位消隐
			else{LCM_WriteDatOrCom(1,0x20);}//同上			
		LCM_WriteDatOrCom(1,mo%16+0x30);
		LCM_WriteDatOrCom(0,0x84);
		LCM_WriteString("月");
        nl();
}	//}
/*****************************************************************************/
//星期处理并送入LCM的指定区域
void LCM_w_xq(void){
	unsigned char sel;

	//if(Read1302(0x8b) != xq){
	xq = Read1302(0x8b);
	sel = (Read1302(0x8b))%16; //字节低4位的BCD码放入sel
	LCM_WriteDatOrCom(0,0x97);//写入指定区域(97H 第二行第8个字)
	if(sel==7)  {LCM_WriteString("日");}    //
  	if(sel==6)  {LCM_WriteString("六");}    //
  	if(sel==5)  {LCM_WriteString("五");}    //
  	if(sel==4)  {LCM_WriteString("四");}    //
  	if(sel==3)  {LCM_WriteDatOrCom(1,0xc8);LCM_WriteDatOrCom(1,0xfd);} //此指令等于LCM_WriteString("三"); 因为"三"的内码失效。
  	if(sel==2)  {LCM_WriteString("二");}    //
  	if(sel==1)  {LCM_WriteString("一");}    //星期一
	LCM_WriteDatOrCom(0,0x95);
	LCM_WriteString("星期");
	//}
}
/*****************************************************************************/
//向LCM中填写 日 数据
void LCM_w_dd(void){
//	if(Read1302(0x87) != dd){
		dd = Read1302(0x87);
		LCM_WriteDatOrCom(0,0x85);
			if(dd/16 != 0){LCM_WriteDatOrCom(1,(dd/16)+0x30);}	//十位消隐
			else{LCM_WriteDatOrCom(1,0x20);}//同上	
		LCM_WriteDatOrCom(1,dd%16+0x30);
		LCM_WriteDatOrCom(0,0x86);
		LCM_WriteString("日  ");
        nl();
				
}	//}
/*****************************************************************************/
//向LCM中填写 小时 数据
void LCM_w_hh(void){
	if(Read1302(0x85) != hh){
		hh = Read1302(0x85);
			if (hh > 0x07 && hh < 0x22 && w == 0){
				beep = 0; 
				DelayM(100);
				beep = 1; 
			}
		}
		LCM_WriteDatOrCom(0,0x88);
		LCM_WriteDatOrCom(1,(hh/16)+0x30);
		LCM_WriteDatOrCom(1,hh%16+0x30);
				
}	//}
/*****************************************************************************/
//向LCM中填写 分钟 数据
void LCM_w_mm(void){
	if(Read1302(0x83) != mm){		
		mm = Read1302(0x83);
		if( w == 0){				
			days();	   //节日显示
			updata ();	//刷新数据
		}				
	}
	LCM_WriteDatOrCom(0,0x89);	
	LCM_WriteDatOrCom(1,0x3a);	  //":"
	LCM_WriteDatOrCom(1,(mm/16)+0x30);
	LCM_WriteDatOrCom(1,mm%16+0x30);
	LCM_WriteDatOrCom(1,0x3a);	 //"."	
}
/*****************************************************************************/
//刷新数据
void updata (void){
		LCM_w_hh();//刷新 小时 
		LCM_w_dd();//刷新 日
		LCM_w_xq();//更新星期值	
		LCM_w_mo();//刷新 月
		LCM_w_yy();//刷新 年
		  nl();
}
/*****************************************************************************/
//向LCM中填写 秒 数据
void LCM_w_ss(void){
	unsigned int i=0;
	unsigned char a=0,b=0,c=0;
	if(Read1302(0x81) != ss){	//判断是否需要更新
		ss = Read1302(0x81);	//更新数据
		LCM_WriteDatOrCom(0,0x8b);		//秒值在LCM上的写入位置
		LCM_WriteDatOrCom(1,(ss/16)+0x30);	//写十位		
		LCM_WriteDatOrCom(1,ss%16+0x30);	//写个位
		LCM_w_mm();//刷新 分
        nl();		
	LCM_WriteDatOrCom(0,0x8d);		//温度在LCM上的写入位置		
	i=ReadTemperature();//读温度并送显
	a=i/100;
	LCM_WriteDatOrCom(1,a+0x30);	//显示温度十位
	b=i/10-a*10;
	LCM_WriteDatOrCom(1,b+0x30);	//个位
	LCM_WriteDatOrCom(1,0x2e);	 //"."
	c=i-a*100-b*10;
	LCM_WriteDatOrCom(1,c+0x30); //小位1位		
	LCM_WriteString("℃");	//度C
}	}




/********阳历转换阴历********************************************************************/

code uchar year_code[597]={
                    0x04,0xAe,0x53,    //1901 0
                    0x0A,0x57,0x48,    //1902 3
                    0x55,0x26,0xBd,    //1903 6
                    0x0d,0x26,0x50,    //1904 9
                    0x0d,0x95,0x44,    //1905 12
                    0x46,0xAA,0xB9,    //1906 15
                    0x05,0x6A,0x4d,    //1907 18
                    0x09,0xAd,0x42,    //1908 21
                    0x24,0xAe,0xB6,    //1909
                    0x04,0xAe,0x4A,    //1910
                    0x6A,0x4d,0xBe,    //1911
                    0x0A,0x4d,0x52,    //1912
                    0x0d,0x25,0x46,    //1913
                    0x5d,0x52,0xBA,    //1914
                    0x0B,0x54,0x4e,    //1915
                    0x0d,0x6A,0x43,    //1916
                    0x29,0x6d,0x37,    //1917
                    0x09,0x5B,0x4B,    //1918
                    0x74,0x9B,0xC1,    //1919
                    0x04,0x97,0x54,    //1920
                    0x0A,0x4B,0x48,    //1921
                    0x5B,0x25,0xBC,    //1922
                    0x06,0xA5,0x50,    //1923
                    0x06,0xd4,0x45,    //1924
                    0x4A,0xdA,0xB8,    //1925
                    0x02,0xB6,0x4d,    //1926
                    0x09,0x57,0x42,    //1927
                    0x24,0x97,0xB7,    //1928
                    0x04,0x97,0x4A,    //1929
                    0x66,0x4B,0x3e,    //1930
                    0x0d,0x4A,0x51,    //1931
                    0x0e,0xA5,0x46,    //1932
                    0x56,0xd4,0xBA,    //1933
                    0x05,0xAd,0x4e,    //1934
                    0x02,0xB6,0x44,    //1935
                    0x39,0x37,0x38,    //1936
                    0x09,0x2e,0x4B,    //1937
                    0x7C,0x96,0xBf,    //1938
                    0x0C,0x95,0x53,    //1939
                    0x0d,0x4A,0x48,    //1940
                    0x6d,0xA5,0x3B,    //1941
                    0x0B,0x55,0x4f,    //1942
                    0x05,0x6A,0x45,    //1943
                    0x4A,0xAd,0xB9,    //1944
                    0x02,0x5d,0x4d,    //1945
                    0x09,0x2d,0x42,    //1946
                    0x2C,0x95,0xB6,    //1947
                    0x0A,0x95,0x4A,    //1948
                    0x7B,0x4A,0xBd,    //1949
                    0x06,0xCA,0x51,    //1950
                    0x0B,0x55,0x46,    //1951
                    0x55,0x5A,0xBB,    //1952
                    0x04,0xdA,0x4e,    //1953
                    0x0A,0x5B,0x43,    //1954
                    0x35,0x2B,0xB8,    //1955
                    0x05,0x2B,0x4C,    //1956
                    0x8A,0x95,0x3f,    //1957
                    0x0e,0x95,0x52,    //1958
                    0x06,0xAA,0x48,    //1959
                    0x7A,0xd5,0x3C,    //1960
                    0x0A,0xB5,0x4f,    //1961
                    0x04,0xB6,0x45,    //1962
                    0x4A,0x57,0x39,    //1963
                    0x0A,0x57,0x4d,    //1964
                    0x05,0x26,0x42,    //1965
                    0x3e,0x93,0x35,    //1966
                    0x0d,0x95,0x49,    //1967
                    0x75,0xAA,0xBe,    //1968
                    0x05,0x6A,0x51,    //1969
                    0x09,0x6d,0x46,    //1970
                    0x54,0xAe,0xBB,    //1971
                    0x04,0xAd,0x4f,    //1972
                    0x0A,0x4d,0x43,    //1973
                    0x4d,0x26,0xB7,    //1974
                    0x0d,0x25,0x4B,    //1975
                    0x8d,0x52,0xBf,    //1976
                    0x0B,0x54,0x52,    //1977
                    0x0B,0x6A,0x47,    //1978
                    0x69,0x6d,0x3C,    //1979
                    0x09,0x5B,0x50,    //1980
                    0x04,0x9B,0x45,    //1981
                    0x4A,0x4B,0xB9,    //1982
                    0x0A,0x4B,0x4d,    //1983
                    0xAB,0x25,0xC2,    //1984
                    0x06,0xA5,0x54,    //1985
                    0x06,0xd4,0x49,    //1986
                    0x6A,0xdA,0x3d,    //1987
                    0x0A,0xB6,0x51,    //1988
                    0x09,0x37,0x46,    //1989
                    0x54,0x97,0xBB,    //1990
                    0x04,0x97,0x4f,    //1991
                    0x06,0x4B,0x44,    //1992
                    0x36,0xA5,0x37,    //1993
                    0x0e,0xA5,0x4A,    //1994
                    0x86,0xB2,0xBf,    //1995
                    0x05,0xAC,0x53,    //1996
                    0x0A,0xB6,0x47,    //1997
                    0x59,0x36,0xBC,    //1998
                    0x09,0x2e,0x50,    //1999 294
                    0x0C,0x96,0x45,    //2000 297
                    0x4d,0x4A,0xB8,    //2001
                    0x0d,0x4A,0x4C,    //2002
                    0x0d,0xA5,0x41,    //2003
                    0x25,0xAA,0xB6,    //2004
                    0x05,0x6A,0x49,    //2005
                    0x7A,0xAd,0xBd,    //2006
                    0x02,0x5d,0x52,    //2007
                    0x09,0x2d,0x47,    //2008
                    0x5C,0x95,0xBA,    //2009
                    0x0A,0x95,0x4e,    //2010
                    0x0B,0x4A,0x43,    //2011
                    0x4B,0x55,0x37,    //2012
                    0x0A,0xd5,0x4A,    //2013
                    0x95,0x5A,0xBf,    //2014
                    0x04,0xBA,0x53,    //2015
                    0x0A,0x5B,0x48,    //2016
                    0x65,0x2B,0xBC,    //2017
                    0x05,0x2B,0x50,    //2018
                    0x0A,0x93,0x45,    //2019
                    0x47,0x4A,0xB9,    //2020
                    0x06,0xAA,0x4C,    //2021
                    0x0A,0xd5,0x41,    //2022
                    0x24,0xdA,0xB6,    //2023
                    0x04,0xB6,0x4A,    //2024
                    0x69,0x57,0x3d,    //2025
                    0x0A,0x4e,0x51,    //2026
                    0x0d,0x26,0x46,    //2027
                    0x5e,0x93,0x3A,    //2028
                    0x0d,0x53,0x4d,    //2029
                    0x05,0xAA,0x43,    //2030
                    0x36,0xB5,0x37,    //2031
                    0x09,0x6d,0x4B,    //2032
                    0xB4,0xAe,0xBf,    //2033
                    0x04,0xAd,0x53,    //2034
                    0x0A,0x4d,0x48,    //2035
                    0x6d,0x25,0xBC,    //2036
                    0x0d,0x25,0x4f,    //2037
                    0x0d,0x52,0x44,    //2038
                    0x5d,0xAA,0x38,    //2039
                    0x0B,0x5A,0x4C,    //2040
                    0x05,0x6d,0x41,    //2041
                    0x24,0xAd,0xB6,    //2042
                    0x04,0x9B,0x4A,    //2043
                    0x7A,0x4B,0xBe,    //2044
                    0x0A,0x4B,0x51,    //2045
                    0x0A,0xA5,0x46,    //2046
                    0x5B,0x52,0xBA,    //2047
                    0x06,0xd2,0x4e,    //2048
                    0x0A,0xdA,0x42,    //2049
                    0x35,0x5B,0x37,    //2050
                    0x09,0x37,0x4B,    //2051
                    0x84,0x97,0xC1,    //2052

⌨️ 快捷键说明

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