25

主题

4

好友

98

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
490843
帖子
272
精华
0
经验
98 点
金钱
92 ¥
注册时间
2012-4-21
发表于 2012-7-13 21:09 | 显示全部楼层
#define DS1302_C
#include "HEAD.H"


sbit DSRST=P1^7;//定影DS1302片选信号
sbit DSDIO=P1^6; //定义DS1302数据信号
sbit DSSCLK=P1^5;//定义DS1302时钟信号
sbit ACC_7=ACC^7;

void DS_Write(uchar addr,uchar dat)//DS1302的数据写时序
{
        uchar i,temp;
        DSRST=0;
        DSSCLK=0;
        DSRST=1;//数据传送开始信号
        for(i=0;i<8;i++)
        {
                DSSCLK=0;
                temp=addr;
                DSDIO=(bit)(temp&0x01);
                addr>>=1;
                DSSCLK=1;
        }
        for(i=0;i<8;i++)
        {
                DSSCLK=0;
                temp=dat;
                DSDIO=(bit)(temp&0x01);
                dat>>=1;
                DSSCLK=1;
        }
        DSRST=0;//数据传送终止信号       
}
uchar DS_Read(uchar addr)//DS1302读时序
{
        uchar dat1,dat2;
        uchar i,temp;
        DSRST=0;
        DSSCLK=0;
        DSRST=1;
        for(i=0;i<8;i++) //发送地址
        {
                DSSCLK=0;
                temp=addr;
                DSDIO=(bit)(temp&0x01);
                addr>>=1;
                DSSCLK=1;
        }
        for(i=0;i<8;i++)//读取数据
        {
                ACC_7=DSDIO;
                DSSCLK=1;
                ACC>>=1;
                DSSCLK=0;
        }
        DSRST=0;

    dat1=ACC; //数据进制转换,十六进制转十进制
        dat2=dat1/16;
        dat1=dat1%16;
        dat1=dat1+dat2*10;
        return (dat1);
}
void DS_Init()//DS1302初始化
{
        DS_Write(Write_WP,0x00);//WP=0;允许写
        DS_Write(Write_Second,0x56);//初始化秒
        DS_Write(Write_Minute,0x34);//分
        DS_Write(Write_Hour,0x12);        //时
        DS_Write(Write_WP,0x80);//禁止写       
}
void main()
{
        DS_Init();
        while(1)
        {
                uchar Hour,Minute,Second;
                Hour=DS_Read(Read_Hour);        //读取DS1302中的时钟数据
                Minute=DS_Read(Read_Minute);
                Second=DS_Read(Read_Second);
                display(Hour,Minute,Second); //数码显示时钟
        }
}
程序如上,无法设置时间。我的显示程序我测试过 正常显示...

25

主题

4

好友

98

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
490843
帖子
272
精华
0
经验
98 点
金钱
92 ¥
注册时间
2012-4-21
 楼主| 发表于 2012-7-14 21:44 | 显示全部楼层
没人回答吗???

25

主题

4

好友

98

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
490843
帖子
272
精华
0
经验
98 点
金钱
92 ¥
注册时间
2012-4-21
 楼主| 发表于 2012-7-14 21:50 | 显示全部楼层
查了很多资料,刚刚又试着把程序烧进去,又发现可以运行...狂晕!!!

4

主题

4

好友

205

积分
     

业余侠客 当前离线

Rank: 4

UID
217044
帖子
453
精华
0
经验
205 点
金钱
191 ¥
注册时间
2010-7-4
发表于 2012-7-14 22:03 | 显示全部楼层
不懂。

25

主题

4

好友

98

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
490843
帖子
272
精华
0
经验
98 点
金钱
92 ¥
注册时间
2012-4-21
 楼主| 发表于 2012-7-14 23:03 | 显示全部楼层
我昨天把程序烧进步去,能显示。但是不会走。。。

95

主题

0

好友

175

积分
     

认证会员 当前离线

Rank: 4

UID
506996
帖子
527
精华
0
经验
175 点
金钱
134 ¥
注册时间
2012-6-27

认证会员

发表于 2012-7-15 01:37 | 显示全部楼层
回复 3# 314613767


    核对下数据回复或定时提取编程的程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部