#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0 //数据口
sbit LCD_RS=P1^7; //寄存器选择输入
sbit LCD_RW=P1^6; //液晶读/写控制
sbit LCD_EN=P2^3; //液晶使能控制
sbit wela=P3^6;
sbit dula=P3^6;
sbit clock_clk=P2^0;//ds1302_clk(时钟线)
sbit clock_dat=P2^1;//ds1302_dat(数据线IO)
sbit clock_Rst=P2^2;//ds1302_Rst(复位线)
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
sbit key5=P3^4;
sbit a0 = ACC^0; //定义累加器A中的各位
sbit a1 = ACC^1;
sbit a2 = ACC^2;
sbit a3 = ACC^3;
sbit a4 = ACC^4;
sbit a5 = ACC^5;
sbit a6 = ACC^6;
sbit a7 = ACC^7;
sbit led=P2^7;
sbit DQ = P2 ^ 6;//ds1820data(单总线) DS18B20引脚定义
unsigned int TT,tt1=415,tt2=100; //1820温度变量
uchar code dis1[] = {"20年月日"};
uchar code dis2[] = {"星期::" };
uchar code dis3[] = {"当前温度:℃"};
uchar code dis4[] = {"农历:月"};
uchar code xingqi[]={"0一二叁四五六日"};
uchar code yue[]="初十廿三";
uchar code ri[]="一二叁四五六七八九";
uchar code dshi[]=" 十";
uchar code shu[]="0123456789";
uchar code nz[]="闹钟调整";
uchar code wd[]="温度上限温度下限";
uchar yy,mo,dd,xq,hh,mm,ss,hm,nm,h=5,m=0,s=0,s1num;//定义时间映射全局变量(专用寄存器)
uchar code YearCode[597]=
{
0x04,0xAe,0x53, 0x0A,0x57,0x48, 0x55,0x26,0xBd,//1901 1902 1903
0x0d,0x26,0x50, 0x0d,0x95,0x44, 0x46,0xAA,0xB9,//1904 1905 1906
0x05,0x6A,0x4d, 0x09,0xAd,0x42, 0x24,0xAe,0xB6,//1907 1908 1909
0x04,0xAe,0x4A, 0x6A,0x4d,0xBe, 0x0A,0x4d,0x52,//1910 1911 1912
0x0d,0x25,0x46, 0x5d,0x52,0xBA, 0x0B,0x54,0x4e,//1913 1914 1915
0x0d,0x6A,0x43, 0x29,0x6d,0x37, 0x09,0x5B,0x4B,//1916 1917 1918
0x74,0x9B,0xC1, 0x04,0x97,0x54, 0x0A,0x4B,0x48,//1919 1920 1921
0x5B,0x25,0xBC, 0x06,0xA5,0x50, 0x06,0xd4,0x45,//1922 1923 1924
0x4A,0xdA,0xB8, 0x02,0xB6,0x4d, 0x09,0x57,0x42,//1925 1926 1927
0x24,0x97,0xB7, 0x04,0x97,0x4A, 0x66,0x4B,0x3e,//1928 1929 1930
0x0d,0x4A,0x51, 0x0e,0xA5,0x46, 0x56,0xd4,0xBA,//1931 1932 1933
0x05,0xAd,0x4e, 0x02,0xB6,0x44, 0x39,0x37,0x38,//1934 1935 1936
0x09,0x2e,0x4B, 0x7C,0x96,0xBf, 0x0C,0x95,0x53,//1937 1938 1939
0x0d,0x4A,0x48, 0x6d,0xA5,0x3B, 0x0B,0x55,0x4f,//1940 1941 1942
0x05,0x6A,0x45, 0x4A,0xAd,0xB9, 0x02,0x5d,0x4d,//1943 1944 1945
0x09,0x2d,0x42, 0x2C,0x95,0xB6, 0x0A,0x95,0x4A,//1946 1947 1948
0x7B,0x4A,0xBd, 0x06,0xCA,0x51, 0x0B,0x55,0x46,//1949 1950 1951
0x55,0x5A,0xBB, 0x04,0xdA,0x4e, 0x0A,0x5B,0x43,//1952 1953 1954
0x35,0x2B,0xB8, 0x05,0x2B,0x4C, 0x8A,0x95,0x3f,//1955 1956 1957
0x0e,0x95,0x52, 0x06,0xAA,0x48, 0x7A,0xd5,0x3C,//1958 1959 1960
0x0A,0xB5,0x4f, 0x04,0xB6,0x45, 0x4A,0x57,0x39,//1961 1962 1963
0x0A,0x57,0x4d, 0x05,0x26,0x42, 0x3e,0x93,0x35,//1964 1965 1966
0x0d,0x95,0x49, 0x75,0xAA,0xBe, 0x05,0x6A,0x51,//1967 1968 1969
0x09,0x6d,0x46, 0x54,0xAe,0xBB, 0x04,0xAd,0x4f,//1970 1971 1972
0x0A,0x4d,0x43, 0x4d,0x26,0xB7, 0x0d,0x25,0x4B,//1973 1974 1975
0x8d,0x52,0xBf, 0x0B,0x54,0x52, 0x0B,0x6A,0x47,//1976 1977 1978
0x69,0x6d,0x3C, 0x09,0x5B,0x50, 0x04,0x9B,0x45,//1979 1980 1981
0x4A,0x4B,0xB9, 0x0A,0x4B,0x4d, 0xAB,0x25,0xC2,//1982 1983 1984
0x06,0xA5,0x54, 0x06,0xd4,0x49, 0x6A,0xdA,0x3d,//1985 1986 1987
0x0A,0xB6,0x51, 0x09,0x37,0x46, 0x54,0x97,0xBB,//1988 1989 1990
0x04,0x97,0x4f, 0x06,0x4B,0x44, 0x36,0xA5,0x37,//1991 1992 1993
0x0e,0xA5,0x4A, 0x86,0xB2,0xBf, 0x05,0xAC,0x53,//1994 1995 1996
0x0A,0xB6,0x47, 0x59,0x36,0xBC, 0x09,0x2e,0x50,//1997 1998 1999
0x0C,0x96,0x45, 0x4d,0x4A,0xB8, 0x0d,0x4A,0x4C,//2000 2001 2002
0x0d,0xA5,0x41, 0x25,0xAA,0xB6, 0x05,0x6A,0x49,//2003 2004 2005
0x7A,0xAd,0xBd, 0x02,0x5d,0x52, 0x09,0x2d,0x47,//2006 2007 2008
0x5C,0x95,0xBA, 0x0A,0x95,0x4e, 0x0B,0x4A,0x43,//2009 2010 2011
0x4B,0x55,0x37, 0x0A,0xd5,0x4A, 0x95,0x5A,0xBf,//2012 2013 2014
0x04,0xBA,0x53, 0x0A,0x5B,0x48, 0x65,0x2B,0xBC,//2015 2016 2017
0x05,0x2B,0x50, 0x0A,0x93,0x45, 0x47,0x4A,0xB9,//2018 2019 2020
0x06,0xAA,0x4C, 0x0A,0xd5,0x41, 0x24,0xdA,0xB6,//2021 2022 2023
0x04,0xB6,0x4A, 0x69,0x57,0x3d, 0x0A,0x4e,0x51,//2024 2025 2026
0x0d,0x26,0x46, 0x5e,0x93,0x3A, 0x0d,0x53,0x4d,//2027 2028 2029
0x05,0xAA,0x43, 0x36,0xB5,0x37, 0x09,0x6d,0x4B,//2030 2031 2032
0xB4,0xAe,0xBf, 0x04,0xAd,0x53, 0x0A,0x4d,0x48,//2033 2034 2035
0x6d,0x25,0xBC, 0x0d,0x25,0x4f, 0x0d,0x52,0x44,//2036 2037 2038
0x5d,0xAA,0x38, 0x0B,0x5A,0x4C, 0x05,0x6d,0x41,//2039 2040 2041
0x24,0xAd,0xB6, 0x04,0x9B,0x4A, 0x7A,0x4B,0xBe,//2042 2043 2044
0x0A,0x4B,0x51, 0x0A,0xA5,0x46, 0x5B,0x52,0xBA,//2045 2046 2047
0x06,0xd2,0x4e, 0x0A,0xdA,0x42, 0x35,0x5B,0x37,//2048 2049 2050
0x09,0x37,0x4B, 0x84,0x97,0xC1, 0x04,0x97,0x53,//2051 2052 2053
0x06,0x4B,0x48, 0x66,0xA5,0x3C, 0x0e,0xA5,0x4f,//2054 2055 2056
0x06,0xB2,0x44, 0x4A,0xB6,0x38, 0x0A,0xAe,0x4C,//2057 2058 2059
0x09,0x2e,0x42, 0x3C,0x97,0x35, 0x0C,0x96,0x49,//2060 2061 2062
0x7d,0x4A,0xBd, 0x0d,0x4A,0x51, 0x0d,0xA5,0x45,//2063 2064 2065
0x55,0xAA,0xBA, 0x05,0x6A,0x4e, 0x0A,0x6d,0x43,//2066 2067 2068
0x45,0x2e,0xB7, 0x05,0x2d,0x4B, 0x8A,0x95,0xBf,//2069 2070 2071
0x0A,0x95,0x53, 0x0B,0x4A,0x47, 0x6B,0x55,0x3B,//2072 2073 2074
0x0A,0xd5,0x4f, 0x05,0x5A,0x45, 0x4A,0x5d,0x38,//2075 2076 2077
0x0A,0x5B,0x4C, 0x05,0x2B,0x42, 0x3A,0x93,0xB6,//2078 2079 2080
0x06,0x93,0x49, 0x77,0x29,0xBd, 0x06,0xAA,0x51,//2081 2082 2083
0x0A,0xd5,0x46, 0x54,0xdA,0xBA, 0x04,0xB6,0x4e,//2084 2085 2086
0x0A,0x57,0x43, 0x45,0x27,0x38, 0x0d,0x26,0x4A,//2087 2088 2089
0x8e,0x93,0x3e, 0x0d,0x52,0x52, 0x0d,0xAA,0x47,//2090 2091 2092
0x66,0xB5,0x3B, 0x05,0x6d,0x4f, 0x04,0xAe,0x45,//2093 2094 2095
0x4A,0x4e,0xB9, 0x0A,0x4d,0x4C, 0x0d,0x15,0x41,//2096 2097 2098
0x2d,0x92,0xB5, //2099
};
uchar code DayCode1[9]={0x00,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};
uint code DayCode2[3]={0x111,0x130,0x14e};
uchar LunarMonth,LunarDay,LunarYear,cen; //阴历日期,月份,年份
bit c_moon; //大小月标志位
bit cenbit=0; //世纪标志,为1,则表示20世纪,为0,则表示21世纪
void Delay1(uint z)//延时函数
{
while(z--) ;
}
void delay(uint z)
{
uint i,j;
for(i=z;i>-0;i--)
for(j=110;j>0;j--);
}
/********************************
***** *****
***** LCD液晶驱动 *****
***** *****
********************************/
void lcd_wcmd(uchar cmd) //写指令
{
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delay(1);
LCD_EN = 1;
delay(1);
LCD_EN = 0;
}
void lcd_wdat(uchar dat) //写数据
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delay(1);
LCD_EN = 1;
delay(1);
LCD_EN = 0;
}
void lcd_init() //LCD初始化
{
lcd_wcmd(0x34); //扩充指令操作
delay(5);
lcd_wcmd(0x30); //基本指令操作
delay(5);
lcd_wcmd(0x0C); //显示开,关光标
delay(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(5);
}
void lcd_pos(uchar X,uchar Y) //设置显示位置
{
- 1
- 2
前往页