打印

各位进来看一个关于IIC的问题

[复制链接]
2928|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
651927693|  楼主 | 2012-7-10 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[i=s] 本帖最后由 651927693 于 2012-7-10 15:19 编辑 [/i]

各位帮忙看一个IIC的程序,老师给的电路板,本来是一个用DS1388和12864做的万年历,我想逐步分解理解原理,LCD的部分已经理解并可以写出程序了,但写到用我的89s52模拟IIC接口和DS1388通信的时候就不行了,我本想让LCD的第一行的前两位显示日期(date)的数据,但显示屏上;只能显示出两个问号。;调试了好几天了,就是找不出错误,求解!!;DS1388+IIC+12864LCD;MCU:89S52;MADE BY 651927693;2012/07/08;V1.0;显示屏可以正常显示,但显示两个问号

相关帖子

沙发
NE5532| | 2012-7-10 17:36 | 只看该作者
先给年月日变量硬赋值,看看显示对不对,对了再调I2C,I2C先把应答调通。

使用特权

评论回复
板凳
651927693|  楼主 | 2012-7-10 20:24 | 只看该作者
显示调过了,是正确的。
应答应该怎么调呢?

使用特权

评论回复
地板
NE5532| | 2012-7-10 20:42 | 只看该作者
请参看I2C时序里,第一个应答。

使用特权

评论回复
5
651927693|  楼主 | 2012-7-10 20:56 | 只看该作者
谢谢NE5532,应答我写了,但是你说调?要怎么调啊?
经过调试可以得出,读出的数据为FFH

使用特权

评论回复
6
NE5532| | 2012-7-10 21:09 | 只看该作者
调,就是看应答你收不收得到啊。

使用特权

评论回复
7
651927693|  楼主 | 2012-7-10 23:34 | 只看该作者
应答调过了,没有接收到应答信号,奇怪了,有些人的程序中如果一段时间之内收不到这个信号就直接跳过了,我能不能也那样写

使用特权

评论回复
8
sedatefire| | 2012-7-10 23:54 | 只看该作者
应答调过了,没有接收到应答信号,奇怪了,有些人的程序中如果一段时间之内收不到这个信号就直接跳过了,我能不能也那样写
651927693 发表于 2012-7-10 23:34

必须收到才好

使用特权

评论回复
9
651927693|  楼主 | 2012-7-11 00:00 | 只看该作者
这样啊,那就是说我之前的开始信号和写数据有错喽,有没有别的可能呢

使用特权

评论回复
10
651927693|  楼主 | 2012-7-11 00:16 | 只看该作者
我用的是51单片机,读取外部电平时需将相应的IO口拉高,在这里就是
SETB SDA
SETB SCL
NOP
NOP
JB SDA, FAILURE
........
想问一下第一句将SDA置高对后面的读取没有影响吗?

使用特权

评论回复
11
NE5532| | 2012-7-11 19:18 | 只看该作者
设置没错,是这样弄。你还是得先把应答弄对。人家不检测应答和你没有应答是两回事。

使用特权

评论回复
12
651927693|  楼主 | 2012-7-11 20:27 | 只看该作者
我调试了一遍,所有的写应答都可以检测到,另外由于每次读时只读一个字节,故单片机发送非应答信号,经检测,也是对的。这时读出的数据为00H
,依旧充满疑惑啊。。。

使用特权

评论回复
13
NE5532| | 2012-7-11 22:38 | 只看该作者
找芯片里铁定不为0的地址来读,比如什么版本号啊,状态寄存器啊之类。

使用特权

评论回复
14
sedatefire| | 2012-7-11 23:09 | 只看该作者
你自己可以重新编辑帖子,然后添加附件

使用特权

评论回复
15
sedatefire| | 2012-7-11 23:09 | 只看该作者
我邮箱里面没收到你的代码包

使用特权

评论回复
16
651927693|  楼主 | 2012-7-11 23:12 | 只看该作者
好吧,这个没办法了,我的手机可能不能上传资料,还是要谢谢你啊@sedatefire

使用特权

评论回复
17
651927693|  楼主 | 2012-7-11 23:14 | 只看该作者
我查过芯片资料(DS1388)了,所有的寄存器在初始化后都是00H

使用特权

评论回复
18
651927693|  楼主 | 2012-7-11 23:15 | 只看该作者
所以不管我怎么换地址,读出的都是0

使用特权

评论回复
19
cjseng| | 2012-7-12 13:17 | 只看该作者
如果你的程序没问题,可能是SDA和SCL搞反了;
如果你确认没搞反,而且程序也是对的,那么基本上是延时的问题,注意有几个4.7us的要求的。

使用特权

评论回复
20
651927693|  楼主 | 2012-7-12 20:24 | 只看该作者
确认没有搞反,因为老师写的程序可以运行。就延时的问题,不是很懂诶,因为我都是用的3个NOP,耗时0.3uS

使用特权

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

本版积分规则

26

主题

544

帖子

1

粉丝