打印

如何用键盘调整DS1302的时间?

[复制链接]
6748|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
razu_521|  楼主 | 2008-5-25 06:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是DS1302、S52单片机、12864LCD,时间已显示正确,我想用键盘来调整时间,确无从下手!请大家帮帮忙了!
S1--时间切换
S2--加1
S3--减1
沙发
zhaoyu2005| | 2008-5-25 09:18 | 只看该作者

你已经有定义按键了

接下来先实现按键的加减,然后使用时间切换能让光标在小时、分、秒之间移动或者能让小时、分、秒数据闪烁,做到这些以后,你再把想要调整的时间值写到1302里

使用特权

评论回复
板凳
computer00| | 2008-5-25 09:30 | 只看该作者

可以直接用我的源代码,哈哈~~~

我的有时间、日期调整功能,还有闹钟设置功能等等~~~~
相关链接:http://blog.21ic.com/user1/2198/archives/2008/48326.html

使用特权

评论回复
地板
razu_521|  楼主 | 2008-5-25 11:04 | 只看该作者

2楼: 你已经有定义按键了

接下来先实现按键的加减,然后使用时间切换能让光标在小时、分、秒之间移动或者能让小时、分、秒数据闪烁,做到这些以后,你再把想要调整的时间值写到1302里




这些我都知道呀,可就是不知道如何来改下面两段程序啦!
void SetTime(unsigned char *pSecDa)
{
unsigned char i;
unsigned char Addr = 0x80;
WriteTo1302(0x8e,0x00); // 控制命令,WP=0,写操作 //
for(i =7;i>0;i--)
{
WriteTo1302(Addr,*pSecDa); // 秒 分 时 日 月 星期 年 //
pSecDa++;
Addr +=2;
}
WriteTo1302(0x8e,0x80); // 控制命令,WP=1,写保护 //
}
/**************************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////
///// 名称: GetTime /////
///// 说明: /////
///// 功能: 读取DS1302当前时间 /////
///// 调用: uc_R1302() /////
///// 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 /////
///// 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B /////
///// 返回值: 无 /////
//////////////////////////////////////////////////////////////////////////////////////
void GetTime(void)
{
unsigned char i;
unsigned char Addr = 0x81;
for (i=0;i<7;i++)
{
 Curtime= ReadFrom1302(Addr);                     // 格式为: 秒 分 时 日 月 星期 年 //
Addr += 2;
}
sec = Curtime[0];
min = Curtime[1];
hour = Curtime[2];
date = Curtime[3];
month = Curtime[4];
day = Curtime[5];
year = Curtime[6];
}

使用特权

评论回复
5
razu_521|  楼主 | 2008-5-25 11:06 | 只看该作者

3楼: 可以直接用我的源代码,哈哈~~~

谢谢你啦,我已把它下下来了

使用特权

评论回复
6
wdyang| | 2010-7-14 15:15 | 只看该作者

3楼 : 我下载了你的源代码

但是 是加密文件,看不到内部资料啊.......想学习学习......
求 密码.......谢谢你啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

29

帖子

0

粉丝