- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ds1302的51單片机简易实时时钟1602显示源程序
==================主程序=================
#include reg51.h
#include ds1302.h
#include LCD1602.h
void change();
uchar times[9];
uchar date[9];
main()
{LCD_init();//LCD初始化
init_1302(time_1302);
gotoxy(1,1);
LCD_display(Time:);
gotoxy(1,2);
LCD_display(Date:);
times[8]=\0;//
date[8]=\0;
while(1)
{get_1302(time_1302);
change();
gotoxy(7,1);
LCD_display(times);
gotoxy(7,2);
LCD_display(date);
}
}
/*===========================
转 换 子 程 序
===========================*/
void change()
{
// 时 间 的 转 换
times[0]=time_1302[2]/10+0;
times[1]=time_1302[2]%10+0;
times[2]=:;
times[3]=time_1302[1]/10+0;
times[4]=time_1302[1]%10+0;
times[5]=:;
times[6]=time_1302[0]/10+0;
times[7]=time_1302[0]%10+0;
// 日 期 的 转 换
date[0]=time_1302[6]/10+0;
date[1]=time_1302[6]%10+0;
date[2]=-;
date[3]=time_1302[4]/10+0;
date[4]=time_1302[4]%10+0;
date[5]=-;
date[6]=time_1302[3]/10+0;
date[7]=time_1302[3]%10+0;
}
========================================
==============DS1302驱动程序=============
#define uchar unsigned char
uchar time_1302[7]={0x00,0x00,0x00,0x03,0x07,0x03,0x08};//设置时间初始值数组
// 秒 分 时 号 月份 星期 年
sbit T_IO=P1^0; //与硬件相关的连线 clk为DS1302的时钟信号线
sbit T_CLK=P1^1; //DAT为DS1302的I/O数据线
sbit T_RST=P1^2; //RST为DS1302的RST信号线
uchar bdata datbyte;
sbit datbyte0=datbyte^0;
sbit datbyte7=datbyte^7;
void get_1302(uchar time[]);
void write_ds1302(uchar dat);
uchar r_1302(uchar add);
void w_1302(uchar add,uchar dat);
uchar read_ds1302(void);
void init_1302(uchar *time);
/*==========================================
D S 1 3 0 2 初 始 化
===========================================*/
void init_1302(uchar *time)
{uchar i, add;
//uchar time_bcd[7];
add=0x80;//0写入,1读出
w_1302(0x8e,0x00);
for(i=0;i7;i++)
{w_1302(add,*time);
add+=2;
time++;
}
w_1302(0x8e,0x80);
}
//===========================
// 读取当前时间
//===========================
void get_1302(uchar time[])
{uchar i;
uchar add=0x81;
w_1302(0x8e,0x00);
for(i=0;i7;i++)
{
time[i]=r_1302(add);
add+=2;
文档评论(0)