LCD12864单片机电子万年历程序文件.docx
- 文档编号:7508155
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:44
- 大小:23.23KB
LCD12864单片机电子万年历程序文件.docx
《LCD12864单片机电子万年历程序文件.docx》由会员分享,可在线阅读,更多相关《LCD12864单片机电子万年历程序文件.docx(44页珍藏版)》请在冰豆网上搜索。
LCD12864单片机电子万年历程序文件
*********************************
#include
#include
#defineLCD_DataP0
#defineucharunsignedchar
unsignedchar
sec,min,hour,day,month,year,cen,week,
next,aa,bb,cc,dd,mm,temp0,LunarMonth,
LunarDay,LunarYear;
inttemp;
uchartt=1;
bitc_moon;
bitcenbit=1;
bitw;
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_E=P2^2;
sbitPSB=P2^3;
sbitDS1302_CLK=P3^7;
sbitDS1302_IO=P3^6;
sbitDS1302_RST=P3^5;
sbitDS18B20=P2^5;
sbitspeak=P2^7;
sbitSetKey=P1^4;//按键功
能:
设置
sbitSureKey=P1^5;//按键功
能:
确认
sbitPlusKey=P1^6;//按键功
能:
加
sbitReduceKey=P1^7;//按键功
能:
减
sbitscl=P1^1;
sbitsda=P1^0;
voidDisplayShengXiao(void);
voiddelay(unsignedinta)
//延时1MS/次
{
unsignedchari;
while(--a)
{
for(i=0;i<125;i++);
}
}
voiddelayb(unsignedintcount)
{
while(count--);
}
voiddelays()
{;;}
voidstart()
{
sda=1;
scl=1;
delays();
sda=0;
delays();
}
voidstop()
{
sda=0;
scl=1;
delays();
sda=1;
delays();
}
voidresponse()
{
uchari;
while((sda==1)&&i<255)i++;//
给应答信号sda=0;错误(while((sda==0)
|i<255)i++;)程序进入while死循环
scl=1;
delays();
scl=0;//没有这一步出错,如果
没有sda将保持0状态,一直处于应答中。
程序停止。
delays();
}
voidwrite24c02(uchardate)
{
uchartemp,i;
temp=date;
for(i=0;i<8;i++)
{
scl=0;
sda=temp&0x80;
delays();
scl=1;
delays();
temp=temp<<1;
}
scl=0;
delays();
sda=1;
delays();
}
ucharread24c02()
{
uchark,i;
scl=0;
delays();
sda=1;//仅仅是释放数据线,可有
可无
for(i=0;i<8;i++)
{
scl=1;delays();
k=k<<1;
if(sda)
k++;
scl=0;
delays();
}
returnk;
}
voidwrite_24c02add(uchar
address,uchardate)
{
start();
write24c02(0xa0);
response();
write24c02(address);
response();
write24c02(date);
response();
stop();
}
ucharread_24c02add(ucharaddress)
{
uchara;
start();
write24c02(0xa0);
response();
write24c02(address);
response();
start();
write24c02(0xa1);
response();
a=read24c02();
stop();
returna;
}
unsignedcharDS18B20Init()
{unsignedcharx;
DS18B20=1;
delayb
(2);
DS18B20=0;
delayb(80);
DS18B20=1;delayb(5);
x=DS18B20;
delayb(20);
returnx;
}
unsignedcharTempRead(void)
{
unsignedchari,dat;
DS18B20=1;
delayb
(1);
for(i=0;i<8;i++)
{
DS18B20=0;
dat=dat>>1;
DS18B20=1;
if(DS18B20)
dat=dat|0x80;
delayb(4);
}
returndat;
}
voidTempWriteByte(unsignedchar
dat)
{
unsignedinti;
DS18B20=1;
delayb
(2);
for(i=0;i<8;i++)
{
DS18B20=0;
DS18B20=dat&0x01;
delayb(8);
DS18B20=1;
dat=dat>>1;
delayb
(2);
}
}
intGetTemp()
{floattt;
unsignedchara,b;
DS18B20Init();
TempWriteByte(0xcc);
TempWriteByte(0x44);
delayb(100);
DS18B20Init();
TempWriteByte(0xcc);
TempWriteByte(0xbe);
delayb(200);
a=TempRead();
b=TempRead();
temp=b;
temp<<=8;
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
returntemp;
}
voidWriteDs1302Byte(unsigned
chartemp)
{
unsignedchari;
for(i=8;i>0;i--)
{
DS1302_IO=temp&0x01;
DS1302_CLK=0;
DS1302_CLK=1;
temp>>=1;
}
}
voidWriteDs1302(unsignedchar
address,unsignedchardat)
{
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
delay
(1);
WriteDs1302Byte(address);
WriteDs1302Byte(dat);
DS1302_RST=0;
}
unsignedcharread_byte(){unsignedchari;
for(i=8;i>0;i--)
{
if(DS1302_IO)
temp0=temp0|0x80;
DS1302_CLK=1;
DS1302_CLK=0;
temp0=temp0>>1;
}
returntemp0;
}
unsignedcharReadDs1302(unsigned
charaddress)
{
unsignedchartemp;
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
WriteDs1302Byte(address);
temp=read_byte();
DS1302_RST=0;
DS1302_CLK=1;
returntemp;
}
voidInitDS1302()
{
//unsignedchar
Second=ReadDs1302(0x80);
//if(Second&0x80)
{
WriteDs1302(0x8e,0x00);
delay(5);
WriteDs1302(0x8c,0x10);
//写入年份10年
delay(5);
WriteDs1302(0x8a,0x06);
//写入星期6
delay(5);
WriteDs1302(0x88,0x11);
//定入月分11月
delay(5);
WriteDs1302(0x86,0x6);//写入日期6日
delay(5);
WriteDs1302(0x84,0x17);
//写入小时17点
delay(5);
WriteDs1302(0x82,0x43);
delay(5);
WriteDs1302(0x80,0x00);
//写入秒30秒
delay(5);
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
dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
delay
(2);
LCD_Data=dat;
delay
(2);
LCD_E=1;
delay(5);
LCD_E=0;
delay(5);
}
voidWriteCommandLCD(unsignedchar
udat)
{
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
delay
(2);
LCD_Data=udat;
delay
(2);
LCD_E=1;
delay(5);
LCD_E=0;
delay(5);}
voidLCDInit(void)
{
WriteCommandLCD(0x30);WriteCommandLCD(0x01);
WriteCommandLCD(0x06);
WriteCommandLCD(0x0C);
}
voidLCDClear(void)
{
WriteCommandLCD(0x01);
WriteCommandLCD(0x34);
WriteCommandLCD(0x30);
}
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);
LCDTest
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD12864 单片机 电子 万年历 程序 文件