新手求帮助!DS12887数据读出不正确!
前段时间学习12887后来有事耽搁了,现在重新学习,程序和电路都焊好了,可是一开机分钟就一直在2和4之间跳,秒就没变化,硬件接线我都跟网上的对了没什么问题,程序看了好久也找不出问题。希望搞过个这个的前辈指点一下兄弟谢谢了!/*
DS12887时钟
*/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint shi_jian;
sbit CS=P2^3;// 片选
sbit DS=P2^6;// 读允许
sbit AS=P2^4;// 地址锁存
sbit RW=P2^5;// 写允许
sbit h_gao=P3^1;// 数码管小时位-1
sbit h_di=P3^2; // 数码管小时位-2
sbit m_gao=P3^4;// 数码分钟位-1
sbit m_di=P3^5; // 数码分钟位-2
/* 子函数 */
void init(); //初始化函数
void write_887(uchar add,uchar date);//写12887函数
uchar read_887(uchar add);// 读12887函数
void delay(uchar k); //延时函数
void display(); //数码管显示函数
unsigned char table[]= //数组
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90}; //0~~9段码 共阳极
void main()
{
init();//开机初始化
while(1)
{
display();//数码管循环显示时间
}
}
/*写入函数 */
void write_887(uchar add,uchar date)
{
CS=0;
DS=1;
RW=1;
AS=1;
P1=add;
AS=0;
RW=0;
P1=date;
RW=1;
AS=1;
CS=1;
}
/*读取函数 */
uchar read_887(uchar add)
{
CS=0;
DS=1;
RW=1;
AS=1;
P1=add;
AS=0;
DS=0;
shi_jian=P1;
DS=1;
AS=1;
CS=1;
return shi_jian;
}
/*延时函数*/
void delay(uchar k)
{
uchar x,y;
for(x=k;x>0;--x)
{
for(y=110;y>0;--y)
{}
}
}
void init()
{
write_887(0x0A,0x20); //开启震荡器
write_887(0x0B,0x86); //10000110 禁止更新数据,二进制,24小时制,
write_887(0x02,0x0c); //初始时间 分=12
write_887(0x04,0x0c); //初始时间 时=12
write_887(0x0B,0x06); // 00000110 二进制数据;24小时格式;无中断输出;
}
//*********** 显示函数 ************
void display()
{
uchar shi_gao,shi_di,fen_gao,fen_di;
uint time_date;
time_date=read_887(0x02); //读取12887的时间
shi_gao=time_date/10; //分离高位
shi_di=time_date%10; //分离低位
P0=table; // 高位段码数据
h_gao=1; //位选
delay(2);
h_gao=0; // 显示小时
P0=table; // 低位段码数据
h_di=1; //位选
delay(2);
h_di=0;
/********************/
time_date=read_887(0x00); //读取12887的时间
fen_gao=time_date/10; //分离高位
fen_di=time_date%10; //分离低位
P0=table; // 高位段码数据
m_gao=1; //位选
delay(2);
m_gao=0; //显示分钟
P0=table; // 低位段码数据
m_di=1;
delay(2);
m_di=0;
}
很简单的程序,没什么调时功能,我只是想把它正确的读出来,有过的朋友麻烦帮帮忙! 那位前辈能帮帮我啊,我研究好几天了实在找不出问题来! maxim的官网,那里有例程,你看下就明白了
PS:在这个坛子里,就拿个程序出来问,什么电路也没有,
这个是很难找到有人耐心的看完你程序来给你解答的,
关于这个的例程网上有很多。 找找别人的代码研究一下吧,
刚开始学的时候都想什么程序都自己写
这个能理解
不过,学习一下别人的代码,没什么坏处的。当然,要找编程习惯好的代码,看起来舒服一些
在坛子里搜一下吧 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4922059&bbs_page_no=1&search_mode=4&search_text=q2616444&bbs_id=9999 {:smile:}
页:
[1]