极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20322|回复: 10

【求助】如何读取图片中的数据

[复制链接]
发表于 2013-12-15 16:21:40 | 显示全部楼层 |阅读模式
手头上有一块数显百分表,想用Ardunio将其数据读取出来,但研究了半天,不知道该怎么去写读取程序,也试下了,发现读取不了,现将数据格式和时顺图发出来给各位看看。这是我的程序,个人觉得不对,但不知道如何修改。

int data = 0;
int ck = 3;
int req = 4;
void setup() {
  pinMode (2,INPUT);
  pinMode (ck,OUTPUT);
  pinMode (req,OUTPUT);
  Serial.begin(9600);
  digitalWrite(ck,HIGH);
}

void loop() {
  digitalWrite(req,LOW);
  delay(10);
  for(int x = 0;x<52;x++){
    digitalWrite(req,HIGH);
    digitalWrite(ck,LOW);
     data = +digitalRead(2);
      digitalWrite(ck,HIGH);
      }      
   Serial.print("DATA=");
   Serial.println (data,BIN);
  delay(1000);
}

个人理解:是否需要用SPI或I2C总线方式读取?另外就是一个位一个位地读取并转换,如先读取d1并转换存入data,再读取d2并转换,存入data+,依次类推,是否可行,该如何做?
回复

使用道具 举报

 楼主| 发表于 2013-12-15 16:26:51 | 显示全部楼层
这是图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-12-15 17:32:10 | 显示全部楼层
他CK是output的,你要在他时钟信号上升沿的时候读data,然后移位进自己的变量里,而不是你给他时钟信号。
回复 支持 反对

使用道具 举报

发表于 2013-12-15 17:33:55 | 显示全部楼层
用spi的话,你的spi要作为slave模式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-16 08:40:41 | 显示全部楼层
pathletboy 发表于 2013-12-15 17:33
用spi的话,你的spi要作为slave模式。

哦,这样啊,我还以为是需要我给时钟信号,我再试试,非常感谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-16 10:06:44 | 显示全部楼层
pathletboy 发表于 2013-12-15 17:33
用spi的话,你的spi要作为slave模式。

经您这一提,我发现其输入输出口还不能直接连接Arduino板子,需要用CMOS和中间电路转换,唉,看来很麻烦,手头上也没这样的东西,看来得找到东西才能再试了。
回复 支持 反对

使用道具 举报

发表于 2013-12-16 14:27:28 | 显示全部楼层
coms无关,只要两边工作电压一致就可以了。从图上看这个设备是数据输出,单片可以做被动输入,也即在收到req后每次时钟变化一次读一位数,连续4个字节全1为数据包开始,第五字节为符号位,6-11字节为数值,第12字节为小数数值,13字节显示单位
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-16 15:31:33 | 显示全部楼层
林定祥 发表于 2013-12-16 14:27
coms无关,只要两边工作电压一致就可以了。从图上看这个设备是数据输出,单片可以做被动输入,也即在收到re ...

在接口定义边上有INPUT和OUTPUT的输入输出电路方式,INPUT为一个跟随器加1.55V和55K-22K的电阻,OUTPUT端为-0.3-+7V外加一个CMOS管组成的,其中DATA和CK为OUTPUT,REQ非为INPUT,从这情况来看,电压基本上还在Ardunio板之内,但我试着接了线和修改程序后还是无法读出。另数据格式这里:D1为四位二进制即0000-1111,其他也一样,即为一个十六进制数,而我们能读取出来的数应该是二进制一个一个地读取的,直接读取一个十六进制数应该是不行的,除非用串口或SPI和I2C总线方式。试过用串口RX和TX读取,也无法读出。而SPI和I2C现在我还不知道怎么用,没试过,正在研究中……
回复 支持 反对

使用道具 举报

发表于 2013-12-16 17:50:16 | 显示全部楼层
建议clk接中断脚,req给出低电平后,开启终端,clk下降触发中断,然后读数,再次中断再读数,以此循环。
回复 支持 反对

使用道具 举报

发表于 2013-12-16 20:57:56 | 显示全部楼层
这是iic通信
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-17 20:45:39 | 显示全部楼层
准备哪天去找个逻辑分析仪来测下波形再来弄了。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 14:46 , Processed in 0.038750 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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