LCD12864单片机电子万年历程序Word下载.docx
《LCD12864单片机电子万年历程序Word下载.docx》由会员分享,可在线阅读,更多相关《LCD12864单片机电子万年历程序Word下载.docx(45页珍藏版)》请在冰豆网上搜索。
while(--a)
for(i=0;
i<
125;
i++);
}
voiddelayb(unsignedintcount)
while(count--);
voiddelays()
{;
;
voidstart()
sda=1;
scl=1;
delays();
sda=0;
voidstop()
voidresponse()
uchari;
while((sda==1)&
&
255)i++;
//
给应答信号sda=0;
错误(while((sda==0)
|i<
255)i++;
)程序进入while死循环
scl=0;
//没有这一步出错,如果
没有sda将保持0状态,一直处于应答中。
程序停止。
voidwrite24c02(uchardate)
uchartemp,i;
temp=date;
8;
i++)
sda=temp&
0x80;
temp=temp<
<
1;
ucharread24c02()
uchark,i;
//仅仅是释放数据线,可有
可无
k=k<
if(sda)
k++;
returnk;
voidwrite_24c02add(uchar
address,uchardate)
start();
write24c02(0xa0);
response();
write24c02(address);
write24c02(date);
stop();
ucharread_24c02add(ucharaddress)
uchara;
write24c02(0xa1);
a=read24c02();
returna;
unsignedcharDS18B20Init()
{unsignedcharx;
DS18B20=1;
delayb
(2);
DS18B20=0;
delayb(80);
delayb(5);
x=DS18B20;
delayb(20);
returnx;
unsignedcharTempRead(void)
unsignedchari,dat;
delayb
(1);
dat=dat>
if(DS18B20)
dat=dat|0x80;
delayb(4);
returndat;
voidTempWriteByte(unsignedchar
dat)
unsignedinti;
DS18B20=dat&
0x01;
delayb(8);
intGetTemp()
{floattt;
unsignedchara,b;
DS18B20Init();
TempWriteByte(0xcc);
TempWriteByte(0x44);
delayb(100);
TempWriteByte(0xbe);
delayb(200);
a=TempRead();
b=TempRead();
temp=b;
temp<
=8;
temp=temp|a;
tt=temp*;
temp=tt*10+;
returntemp;
voidWriteDs1302Byte(unsigned
chartemp)
for(i=8;
i>
0;
i--)
DS1302_IO=temp&
DS1302_CLK=0;
DS1302_CLK=1;
temp>
=1;
voidWriteDs1302(unsignedchar
address,unsignedchardat)
DS1302_RST=0;
DS1302_RST=1;
delay
(1);
WriteDs1302Byte(address);
WriteDs1302Byte(dat);
unsignedcharread_byte(){unsignedchari;
for(i=8;
if(DS1302_IO)
temp0=temp0|0x80;
temp0=temp0>
returntemp0;
unsignedcharReadDs1302(unsigned
charaddress)
unsignedchartemp;
temp=read_byte();
voidInitDS1302()
//unsignedchar
Second=ReadDs1302(0x80);
//if(Second&
0x80)
WriteDs1302(0x8e,0x00);
delay(5);
WriteDs1302(0x8c,0x10);
//写入年份10年
WriteDs1302(0x8a,0x06);
//写入星期6
WriteDs1302(0x88,0x11);
//定入月分11月
WriteDs1302(0x86,0x6);
//写入日期6日
WriteDs1302(0x84,0x17);
//写入小时17点
WriteDs1302(0x82,0x43);
WriteDs1302(0x80,0x00);
//写入秒30秒
WriteDs1302(0x8e,0x80);
//控制命令,WP为1,禁止写操作
/*阳历对应的阴历数据,每年三字节,
格式第一字节BIT7-4位表示闰月月份,
为0,则无闰月,BIT3-0对应阴历第1-4月
的大小,
第二字节BIT7-0对应阴历第5-12月大
小,第三字节BIT7表示阴历第13月大小
月分对应的位为1,表示农历月大(30
天)为0表示小(29天)
第三字节BIT6-5表示春节的公历月份,
BIT4-0表示春节公历日期
*/
codeunsignedcharYearCode[597]=
0x04,0xAe,0x53,//19010
0x0A,0x57,0x48,//19023
0x55,0x26,0xBd,//19036
0x0d,0x26,0x50,//19049
0x0d,0x95,0x44,//190512
0x46,0xAA,0xB9,//190615
0x05,0x6A,0x4d,//190718
0x09,0xAd,0x42,//190821
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,//19150x0d,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,//19590x7A,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,//1999294
0x0C,0x96,0x45,//2000297
0x4d,0x4A,0xB8,//2001300
0x0d,0x4A,0x4C,//2002303
0x0d,0xA5,0x41,//20033060x25,0xAA,0xB6,//2004309
0x05,0x6A,0x49,//2005312
0x7A,0xAd,0xBd,//2006315
0x02,0x5d,0x52,//2007318
0x09,0x2d,0x47,//2008321
0x5C,0x95,0xBA,//2009324
0x0A,0x95,0x4e,//2010327
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,//20470x06,0xd2,0x4e,//2048
0x0A,0xdA,0x42,//2049
0x35,0x5B,0x37,//2050
0x09,0x37,0x4B,//2051
0x84,0x97,0xC1,//2052
0x04,0x97,0x53,//2053
0x06,0x4B,0x48,//2054
0x66,0xA5,0x3C,//2055
0x0e,0xA5,0x4f,//2056
0x06,0xB2,0x44,//2057
0x4A,0xB6,0x38,//2058
0x0A,0xAe,0x4C,//2059
0x09,0x2e,0x42,//2060
0x3C,0x97,0x35,//2061
0x0C,0x96,0x49,//2062
0x7d,0x4A,0xBd,//2063
0x0d,0x4A,0x51,//2064
0x0d,0xA5,0x45,//2065
0x55,0xAA,0xBA,//2066
0x05,0x6A,0x4e,//2067
0x0A,0x6d,0x43,//2068
0x45,0x2e,0xB7,//2069
0x05,0x2d,0x4B,//2070
0x8A,0x95,0xBf,//2071
0x0A,0x95,0x53,//2072
0x0B,0x4A,0x47,//2073
0x6B,0x55,0x3B,//2074
0x0A,0xd5,0x4f,//2075
0x05,0x5A,0x45,//2076
0x4A,0x5d,0x38,//2077
0x0A,0x5B,0x4C,//2078
0x05,0x2B,0x42,//2079
0x3A,0x93,0xB6,//2080
0x06,0x93,0x49,//2081
0x77,0x29,0xBd,//2082
0x06,0xAA,0x51,//2083
0x0A,0xd5,0x46,//2084
0x54,0xdA,0xBA,//2085
0x04,0xB6,0x4e,//2086
0x0A,0x57,0x43,//2087
0x45,0x27,0x38,//2088
0x0d,0x26,0x4A,//2089
0x8e,0x93,0x3e,//2090
0x0d,0x52,0x52,//20910x0d,0xAA,0x47,//2092
0x66,0xB5,0x3B,//2093
0x05,0x6d,0x4f,//2094
0x04,0xAe,0x45,//2095
0x4A,0x4e,0xB9,//2096
0x0A,0x4d,0x4C,//2097
0x0d,0x15,0x41,//2098
0x2d,0x92,0xB5,//2099
};
voidWriteDataLCD(unsignedchar
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
delay
(2);
LCD_Data=dat;
LCD_E=1;
voidWriteCommandLCD(unsignedchar
udat)
LCD_RS=0;
LCD_Data=udat;
voidLCDInit(void)
WriteCommandLCD(0x30);
WriteCommandLCD(0x01);
WriteCommandLCD(0x06);
WriteCommandLCD(0x0C);
voidLCDClear(void)
WriteCommandLCD(0x34);
voidLCDSendWord(unsignedchar*p
while(*p>
0)
WriteDataLCD(*p);
p++;
voidLCDTestWord(biti,unsigned
charword)
if(i==0)
WriteCommandLCD(word);
else
WriteDataLCD(word);
voidDisplayYear(void)
year=ReadDs1302(0x8d);
LCDTestWord(0,0x81);
LCD