OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6381|回复: 6

为什么51单片机读取DS12C887数据读不出来!

[复制链接]

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
发表于 2012-10-28 16:47:02 | 显示全部楼层 |阅读模式

51单片机DS12C887驱动问题?为什么读出的数据是零,而且显示的字乱跳呢,代码如下,不知道是不是代码问题

2012-10-27 11:25
#include<reg52.h>
#define uchar unsigned char 
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit lcdrw=P3^6;
sbit rd=P3^7;


sbit dscs=P1^4;
sbit dsas=P1^5;
sbit dsrw=P1^6;
sbit dsds=P1^7;
sbit dsirq=P3^3;


//uchar count,s1num,flag,flag1;
char miao,shi,fen;
uchar code table[]="  2007-7-30 MON";
uchar code table1[]="      :  :  ";
void write_ds(uchar,uchar);
void set_alarm(uchar,uchar,uchar);
uchar read_ds(uchar);void set_time();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}




void write_com(uchar com)
{
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}


void write_date(uchar date)
{
rs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}


void init()
{
uchar num;




lcden=0;
lcdrw=0;
write_ds(0x0a,0x20);
set_time();
//set_alarm(14,13,10);
write_ds(0x0B,0x26);
//read_ds(0x0c);


write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(5);
}


}


void write_sfm(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
}


void write_ds(uchar add,uchar date)
{
dscs=0;
dsas=1;
dsds=1;
dsrw=1;
P0=add;
dsas=0;
dsrw=0;
P0=date;
dsrw=1;
dsas=1;
dscs=1;
}


uchar read_ds(uchar add)
{   
  uchar ds_date;
 dscs=0;
dsas=1;
dsds=1;
dsrw=1;
//    dscs=0;
P0=add;
dsas=0;
dsds=0;
P0=0xff;
ds_date=P0;
dsds=1;
dsas=1;
dscs=1;
return ds_date;
}


void set_time()
{
write_ds(4,10);
write_ds(2,32);
}


void set_alarm(uchar ashi,uchar afen,uchar amiao)
{
write_ds(1,amiao);
write_ds(3,afen);
write_ds(5,ashi);
}
void main()
{
init();
while(1)
{


miao=read_ds(0);
fen=read_ds(2);
shi=read_ds(4);
write_sfm(10,miao);
delay(2);
write_sfm(7,fen);
delay(2);
write_sfm(4,shi);
delay(2);

}
}
启动项也设置了????[/mw_shl_code]
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-10-28 22:04:19 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
 楼主| 发表于 2012-10-28 22:20:48 | 显示全部楼层
妈的终于调出来了,原来电压要求这么苛刻!!!4.9V都不行啊!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-10-29 00:10:51 | 显示全部楼层
回复【3楼】象牙塔:
---------------------------------
不是吧,标称多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
 楼主| 发表于 2012-11-6 12:10:40 | 显示全部楼层
用7805电压时5.03,读出来数,但是乱跳,最后就用原子的板子,出来了,现在那个项目已经结了,没做过这个,程序不难,一点小问题,耽搁了几天!3.3V和5.0V不是3.3~5.5V
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2011-6-30
在线时间
0 小时
发表于 2012-11-22 10:53:19 | 显示全部楼层
这东西我用够了,51上用太占资,而且是假的居多,断电就不走了。
回复 支持 反对

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
 楼主| 发表于 2012-11-22 18:54:34 | 显示全部楼层
回复【6楼】亚龙电子:
---------------------------------
同意,练练手,即可!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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