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

作者: tjcfeng
上传时间为: 2015-08-18 08:31 AM
2015-08-18
阅读:

   老邓店里有不少树莓派、香蕉派的扩展模块,大大加强了它们的可玩性。

    今天拿到了一个这样的模块,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调用也可以的。

相关经验
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示