极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11876|回复: 1

74HC595 和74HC165的使用

[复制链接]
发表于 2015-5-14 10:53:36 | 显示全部楼层 |阅读模式
595串入并出有很多的例子,这里只简单写了一下代码。
  1. int st = 5;
  2. int sh = 6;
  3. int ce = 4;
  4. int ds = 3;

  5. byte data1,data2 ;
  6. byte dd;
  7. void setup()
  8. {
  9.   pinMode(ds,OUTPUT);
  10.   pinMode(st,OUTPUT);
  11.   pinMode(sh,OUTPUT);
  12.   pinMode(ce,OUTPUT);

  13.   
  14. }
  15. void loop()
  16. {
  17.         digitalWrite(ce,LOW);
  18.         write_595_1(st,sh,ds,data1);
  19.         write_595_2(st,sh,ds,data2);
  20.        
  21. }

  22. void write_595_1(int stcp,int shcp, int dspin, byte data)
  23. {
  24.     digitalWrite(stcp,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
  25.     shiftOut(dspin,shcp,MSBFIRST,data);//
  26.     digitalWrite(stcp,HIGH); //将ST_CP这个针脚恢复到高电平
  27. }

  28. void write_595_2(int stcp,int shcp, int dspin, byte data1,byte data2)
  29. {
  30.     digitalWrite(stcp,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
  31.     shiftOut(dspin,shcp,MSBFIRST,data1);//
  32.     shiftOut(dspin,shcp,MSBFIRST,data2);//
  33.     digitalWrite(stcp,HIGH); //将ST_CP这个针脚恢复到高电平
  34. }
复制代码

data1,data2,需要在实际运行时带入数据。
现在来看一下165的使用,其实很早就算是成功了,只是一只以为165和595一样,把ds作为数据接口,后来看了一些资料才发现,165读取数据是Q7,也就是第9脚,当然第7脚也可以,不过是互补的数据。
  1. int ds = 8; // Q7
  2. int ce = 9;
  3. int cp =10;
  4. int pl =11;
  5. int ms =5;
  6. void setup()
  7. {
  8.         pinMode(ce,OUTPUT);
  9.         pinMode(cp,OUTPUT);
  10.         pinMode(pl,OUTPUT);
  11.         pinMode(ds,INPUT);
  12.          Serial.begin(9600);
  13. }
  14. void loop()
  15. {
  16.         digitalWrite(ce, 0);
  17.         digitalWrite(pl, 0);
  18.         Serial.println(Read_165(),BIN);
  19.         delay(100);
  20. }
  21. int Read_165(int ds,int cp,int pl,int num)
  22. {
  23.         int data;
  24.         int temp;
  25.        
  26.         digitalWrite(pl, 0);
  27.         delayMicroseconds(ms);
  28.         digitalWrite(pl, 1);
  29.         delayMicroseconds(ms);

  30.         data = 0 ;

  31.         for(int i = 0 ; i < 8 * num; i++)
  32.         {
  33.                 data = data << 1;
  34.                 digitalWrite(cp, 0);
  35.                 delayMicroseconds(ms);
  36.                 temp = digitalRead(ds);
  37.                 data |= temp;
  38.                 digitalWrite(cp, 1);
  39.                 delayMicroseconds(ms);

  40.         }

  41.         return data ;
  42. }
复制代码


除了CE接口可以省略外,如果两个同时使用就要6个接口,不知道能否进行功用,CP,PL,ST,SH,DS,Q7复用,用CE来片选,这样需要5个接口,如果公用一个CE,用非门连接595和165的CE这样就需要4个接口了,下一步验证一下。
回复

使用道具 举报

发表于 2016-6-8 13:14:02 | 显示全部楼层
請問程式裡num是什麼?
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 15:04 , Processed in 0.048227 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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