查看: 2959|回复: 1

【BananaPI】老邓的模块--74HC5950

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-8-4 07:11:08 | 显示全部楼层 |阅读模式
    分享到:
        老邓店里有不少树莓派、香蕉派的扩展模块,大大加强了它们的可玩性。
        今天拿到了一个这样的模块,74HC5950,使用SPI方式驱动的可无限级联的模块。
        这个模块可适用于香蕉派M1、M1+、M2,也就是说各种香蕉派的版本都可以使用。

    74HC_1.JPG
    插上后是这个样子

    74HC_2.JPG
      近照

        使用三个口就能驱动了。当然还要包括VCC和GND。
        ST24    SPI0_CS0    PI10
        SH23    SPI0_CLK    PI11
        DS19   SPI0_MOSI    PI12
    程序基本就是这样的
    unit SR595;
    {$mode objfpc}{$H+}
    interface
      uses Classes, SysUtils, GPIO;
    type
      TSR595 = class
      private
        FDS: TGPIO; //MOSI
        FSH: TGPIO; //CLK
        FST: TGPIO; //CS
      public
        constructor Create;
        destructor Destroy; override;
        procedure Write(B: Byte); overload;
        procedure Write(B: array of Byte; Len: Byte); overload;
        procedure Send;
    end;
    implementation
    constructor TSR595.Create;
    begin
      inherited Create;
      FDS:= TGPIO.Create(PI, 12);
      with FDS do
      begin
        Fun:= Fun1;
        Data:= True;
      end;
      FSH:= TGPIO.Create(PI, 11);
      with FSH do
      begin
        Fun:= Fun1;
        Pull:= PULL_UP;
        Data:= True;
      end;
      FST:= TGPIO.Create(PI, 10);
      with FST do
      begin
        Fun:= Fun1;
        Pull:= PULL_UP;
        Data:= True;
      end;
    end;
    destructor TSR595.Destroy;
    begin
      FDS.Free;
      FSH.Free;
      FST.Free;
      inherited Destroy;
    end;
    procedure TSR595.Write(B: Byte); overload;
    var I: Byte;
    begin
      //FST.Data:= False;
      for I:= 0 to 7 do
      begin
        FSH.Data:= False;
        FDS.Data:= ((B and $80) > 0);
        B:= B shl 1;
        FSH.Data:= True;
      end;
      //FST.Data:= True;
    end;
    procedure TSR595.Write(B: array of Byte; Len: Byte); overload;
    var I: Byte;
    begin
      for I:= 0 to Len - 1 do Write(B[I]);
    end;
    procedure TSR595.Send;
    begin
      FST.Data:= False;
      FST.Data:= True;
    end;
    end.
    用WiringPI调用也可以的。

    评分

    参与人数 1与非币 +5 收起 理由
    loveeeboard + 5 三周年铜板双倍!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-18 11:38
  • 签到天数: 57 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-9-15 21:21:37 | 显示全部楼层
    貌似树莓派通用!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-6-17 04:22 , Processed in 0.144575 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.