查看: 842|回复: 0

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

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

    连续签到: 1 天

    [LV.10]以坛为家III

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

        插上后是这个样子

        近照
       
        使用三个口就能驱动了。当然还要包括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调用也可以的。
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 20:07 , Processed in 0.112984 second(s), 17 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.