搜索
bottom↓
回复: 5

新手求帮助!DS12887数据读出不正确!

[复制链接]

出0入0汤圆

发表于 2011-8-1 00:45:25 | 显示全部楼层 |阅读模式
前段时间学习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[shi_gao ];    // 高位段码数据
                   h_gao=1;          //位选
                   delay(2);
                   h_gao=0;                       // 显示小时
                P0=table[shi_di];   // 低位段码数据
            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[fen_gao ];     // 高位段码数据
                   m_gao=1;           //位选
                   delay(2);
                   m_gao=0;                         //  显示分钟
                P0=table[fen_di];   // 低位段码数据
            m_di=1;
                   delay(2);
                   m_di=0;
}

很简单的程序,没什么调时功能,我只是想把它正确的读出来,有过的朋友麻烦帮帮忙!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-8-1 20:27:32 | 显示全部楼层
那位前辈能帮帮我啊,我研究好几天了实在找不出问题来!

出0入0汤圆

发表于 2011-8-1 20:29:03 | 显示全部楼层
maxim的官网,那里有例程,你看下就明白了

PS:在这个坛子里,就拿个程序出来问,什么电路也没有,
这个是很难找到有人耐心的看完你程序来给你解答的,
关于这个的例程网上有很多。

出0入0汤圆

发表于 2011-8-1 20:30:22 | 显示全部楼层
找找别人的代码研究一下吧,

刚开始学的时候都想什么程序都自己写

这个能理解

不过,学习一下别人的代码,没什么坏处的。当然,要找编程习惯好的代码,看起来舒服一些

在坛子里搜一下吧

出0入0汤圆

发表于 2011-8-1 21:59:32 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4922059&bbs_page_no=1&search_mode=4&search_text=q2616444&bbs_id=9999

出0入0汤圆

发表于 2013-3-28 12:06:00 | 显示全部楼层
   
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 11:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表