?? 帶農歷.c
字號:
}
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 + -