#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/************************12864端口定义*******************************************/
#define dataport P0 //12864数据口
sbit rs=P2^6; //指令/数据端口
sbit rw=P2^5; //读/写端口
sbit en=P2^7; //使能端口
sbit psb=P3^2; //并口/串口端口(本万年历采用并口)
sbit rst=P3^4; //复位端口
/********************************************************************************/
/***********************DS1302端口定义*******************************************/
sbit clock_rst=P3^0; //1302复位管脚定义
sbit clock_dat=P3^1; //1302I/O管脚定义
sbit clock_clk=P3^3; //1302时钟管脚定义
/***************寄存器定义(用于记录1302IO的输入和输出)*************************/
sbit a0=ACC^0;
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;
/********************DS18B20端口定义*********************************************/
/********************************************************************************/
sbit DQ=P3^7; //DS18B20数据端口
/********************************************************************************/
/******************18B20全局变量定义*********************************************/
uchar temp; //温度全局变量(整数部分)
uint xs; //温度全局变量(小数部分)
/********************************************************************************/
/**********************1302全局变量定义******************************************/
uchar sec,min,hour,day,month,week,year1,year2=20;//秒,分,时,日,月,星期,年
/************************蜂鸣器端口定义******************************************/
sbit beep=P3^5;
uchar num;
/***********************按键定义*************************************************/
sbit key1_4 =P1^4;
sbit key1_5 =P1^5;
sbit key1_6 =P1^6;
sbit key1_7 =P1^7;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
uchar set=0; //set=0时显示首页,1时显示次页
uchar status=0;//按键功能选择定义(年0,月1,日2,时3,分4 )
/********************************************************************************/
uchar code month_week[12]={6,2,3,6,1,4,6,2,5,7,3,5}; //2000年各月头天星期表
uchar code year_code[300]={0x0C,0x96,0x45, /*2000*/ 0x4d,0x4A,0xB8, /*2001*/ //2002~2099年农历表
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*/
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, /*2091*/
0x0d,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*/
};
uint code month_day1[12]={0,31,59,90,120,151,181,212,243,273,304,334};//平年月份累计天数表
uint code month_day2[12]={0,31,60,91,121,152,182,213,244,274,305,335};//闰年月份累计天数表
uint table_addr; //查农历表的地址全局变量
uchar year1_n,month_n,day_n; //农历年月日全局变量
uchar month_r; //农历闰月全局变量,无时为0
/**********************延时函数*************************************************/
void delay(uint t)
{
uint b;
for(;t;t--)
for(b=0;b<121;b++);
}
/*******************************************************************************/
/**************************12864子函数******************************************/
/**********************检查忙信号子函数*****************************************/
void busy()
{
rs=0; //指令操作
rw=1; //读操作
dataport=0xff; //数据端口置位
en=1; //使能
while(dataport&0x80); //等待数据端口位7为0
en=0; //取消使能
}
/************************写指令函数*********************************************/
void write_code(uchar c)
{
busy(); //检查忙标志
rs=0; //指令操作
rw=0; //写操作
dataport=c; //送指令到端口
en=1; //使能
delay(1); //稍微延时
en=0; //取消使能
}
/************************写数据函数*********************************************/
void write_data(uchar d)
{
busy(); //检查忙标志
rs=1; //数据操作
rw=0; //写操作
dataport=d; //送数据到端口
en=1; //使能
delay(1); //稍微延时
en=0; //取消延时
}
/***********************写汉字**************************************************/
void write_hz(uchar *hz)
{
while(*hz>0)
{
write_data(*hz); //写入汉字
hz++;
}
}
/***************************初始化12864*****************************************/
void init_12864()
{
psb=1; //并口方式
rst=1; //复位端置高
write_code(0x30); //8位数据传送,基本指令操作
delay(10);
write_code(0x0c); //无光标,不反白
delay(10);
write_code(0x01); //清除显示
delay(10);
write_code(0x40); //光标左移,字符不动
delay(10);
}
/*******************************************************************************/
/*************************DS1302子函数******************************************/
/************************1302写驱动函数*****************************************/
void write_clock(uchar dat)
{
ACC=dat;
clock_dat=a0; clock_clk=1; clock_clk=0; //数据在上升沿变化
clock_dat=a1; clock_clk=1; clock_clk=0; //下降沿写入1302
clock_dat=a2; clock_clk=1; clock_clk=0;
clock_dat=a3; clock_clk=1; clock_clk=0;
clock_dat=a4; clock_clk=1; clock_clk=0;
clock_dat=a5; clock_clk=1; clock_clk=0;
clock_dat=a6; clock_clk=1; clock_clk=0;
clock_dat=a7; clock_clk=1; clock_clk=0;
}
/************************1302读驱动函数*****************************************/
uchar read_clock()
{
clock_dat=1; //输出赋1
a0=clock_dat;clock_clk=1; clock_clk=0; //位0为1,读1302
a1=clock_dat;clock_clk=1; clock_clk=0; //下降沿读出有效
a2=clock_dat;clock_clk=1; clock_clk=0;
a3=clock_dat;clock_clk=1; clock_clk=0;
a4=clock_dat;clock_clk=1; clock_clk=0;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于STC12C5A60S2单片机+ds1302+LCD12864屏实现万年历源程序软件源码KEIL C51工程文件: void ci() { // init_12864(); write_code(0x81); write_hz("农历"); write_code(0x84); tgdz(); write_hz("年"); convert_yinyan(year1,month,day); write_code(0x90); nongli_m(); write_code(0x93); write_hz("月"); nongli_d(); write_code(0x8a); write_data(hour/10+0x30);write_data(hour%10+0x30); write_data(0x3a); write_data(min/10+0x30);write_data(min%10+0x30); write_data(0x3a); write_data(sec/10+0x30);write_data(sec%10+0x30); write_c
资源推荐
资源详情
资源评论
收起资源包目录
基于STC12C5A60S2单片机+ds1302+LCD12864屏实现万年历源程序软件源码KEIL C51工程文件.zip (23个子文件)
万年历.uvopt 54KB
万年历.hex 19KB
万年历.lnp 29B
万年历.M51 47KB
万年历 43KB
ds1302.h 535B
STARTUP.LST 14KB
ds1302.LST 7KB
万年历.uvgui_MAO.bak 70KB
ds1302.OBJ 6KB
ds1302.c 3KB
万年历.plg 208B
万年历.build_log.htm 214B
STARTUP.A51 6KB
万年历.uvgui.bg 69KB
万年历_uvopt.bak 54KB
万年历.c 27KB
万年历.uvgui.MAO 70KB
万年历.LST 42KB
万年历.OBJ 54KB
STARTUP.OBJ 749B
万年历.uvproj 13KB
万年历_uvproj.bak 13KB
共 23 条
- 1
资源评论
GJZGRB
- 粉丝: 2943
- 资源: 7737
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Android、Java 和 Kotlin Multiplatform 的现代 I,O 库 .zip
- 高通TWS蓝牙规格书,做HIFI级别的耳机用
- Qt读写Usb设备的数据
- 这个存储库适合初学者从 Scratch 开始学习 JavaScript.zip
- AUTOSAR 4.4.0版本Rte模块标准文档
- 25考研冲刺快速复习经验.pptx
- MATLAB使用教程-初步入门大全
- 该存储库旨在为 Web 上的语言提供新信息 .zip
- 考研冲刺的实用经验与技巧.pptx
- Nvidia GeForce GT 1030-GeForce Studio For Win10&Win11(Win10&Win11 GeForce GT 1030显卡驱动)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功