/// <summary> /// Constructor /// </summary> /// <param name="interfaceDataMode">Interface data mode</param> /// <param name="rs">Pin Register Select</param> /// <param name="rw">Pin Select Read/Write</param> /// <param name="enable">Pin Enable</param> /// <param name="db0">Pin Data Bus Line 0</param> /// <param name="db1">Pin Data Bus Line 1</param> /// <param name="db2">Pin Data Bus Line 2</param> /// <param name="db3">Pin Data Bus Line 3</param> /// <param name="db4">Pin Data Bus Line 4</param> /// <param name="db5">Pin Data Bus Line 5</param> /// <param name="db6">Pin Data Bus Line 6</param> /// <param name="db7">Pin Data Bus Line 7</param> public GpioLcdTransferProvider(InterfaceDataMode interfaceDataMode, Cpu.Pin rs, Cpu.Pin rw, Cpu.Pin enable, Cpu.Pin db0, Cpu.Pin db1, Cpu.Pin db2, Cpu.Pin db3, Cpu.Pin db4, Cpu.Pin db5, Cpu.Pin db6, Cpu.Pin db7) { // set interface data mode (4 or 8 bits) this.interfaceDataMode = interfaceDataMode; // Register Select (rs) pin is necessary if (rs == Cpu.Pin.GPIO_NONE) throw new ArgumentException("Register Select (RS) pin is necessary"); this.rsPort = new OutputPort(rs, false); // you can save 1 pin setting from your board, wiring RW pin to GND for write only operation if (rw != Cpu.Pin.GPIO_NONE) this.rwPort = new OutputPort(rw, false); // Enable (enable) pin is necessary if (enable == Cpu.Pin.GPIO_NONE) throw new ArgumentException("Enable (EN) signal pin is necessary"); this.enablePort = new OutputPort(enable, false); // create ports for data bus lines Cpu.Pin[] dbPins = { db0, db1, db2, db3, db4, db5, db6, db7 }; this.dbPorts = new OutputPort[DATA_LINE]; for (int i = 0; i < DATA_LINE; i++) { if (dbPins[i] != Cpu.Pin.GPIO_NONE) this.dbPorts[i] = new OutputPort(dbPins[i], false); } }
/// <summary> /// Constructor using bit banging /// </summary> /// <param name="interfaceDataMode">Interface data mode</param> /// <param name="rs">Pin Register Select</param> /// <param name="rw">Pin Select Read/Write</param> /// <param name="enable">Pin Enable</param> /// <param name="ds">Pin Serial Data</param> /// <param name="shcp">Pin Shift Register Clock</param> /// <param name="stcp">Pin Storage Register Clock</param> /// <param name="mr">Pin Master Reset</param> /// <param name="oe">Pin Output Enable</param> /// <param name="bitOrder">Bit order during transferring</param> public Shift74HC595LcdTransferProvider(InterfaceDataMode interfaceDataMode, Cpu.Pin rs, Cpu.Pin rw, Cpu.Pin enable, Cpu.Pin ds, Cpu.Pin shcp, Cpu.Pin stcp, Cpu.Pin mr, Cpu.Pin oe, BitOrder bitOrder) { // set interface data mode (4 or 8 bits) this.interfaceDataMode = interfaceDataMode; // Register Select (rs) pin is necessary if (rs == Cpu.Pin.GPIO_NONE) { throw new ArgumentException("Register Select (RS) pin is necessary"); } this.rsPort = new OutputPort(rs, false); // you can save 1 pin setting from your board, wiring RW pin to GND for write only operation if (rw != Cpu.Pin.GPIO_NONE) { this.rwPort = new OutputPort(rw, false); } // Enable (enable) pin is necessary if (enable == Cpu.Pin.GPIO_NONE) { throw new ArgumentException("Enable (EN) signal pin is necessary"); } this.enablePort = new OutputPort(enable, false); this.shift = new ShiftRegister74HC595(ds, shcp, stcp, mr, oe, bitOrder); }
/// <summary> /// Constructor using bit banging /// </summary> /// <param name="interfaceDataMode">Interface data mode</param> /// <param name="rs">Pin Register Select</param> /// <param name="rw">Pin Select Read/Write</param> /// <param name="enable">Pin Enable</param> /// <param name="ds">Pin Serial Data</param> /// <param name="shcp">Pin Shift Register Clock</param> /// <param name="stcp">Pin Storage Register Clock</param> /// <param name="mr">Pin Master Reset</param> /// <param name="oe">Pin Output Enable</param> /// <param name="bitOrder">Bit order during transferring</param> public Shift74HC595LcdTransferProvider(InterfaceDataMode interfaceDataMode, Cpu.Pin rs, Cpu.Pin rw, Cpu.Pin enable, Cpu.Pin ds, Cpu.Pin shcp, Cpu.Pin stcp, Cpu.Pin mr, Cpu.Pin oe, BitOrder bitOrder) { // set interface data mode (4 or 8 bits) this.interfaceDataMode = interfaceDataMode; // Register Select (rs) pin is necessary if (rs == Cpu.Pin.GPIO_NONE) throw new ArgumentException("Register Select (RS) pin is necessary"); this.rsPort = new OutputPort(rs, false); // you can save 1 pin setting from your board, wiring RW pin to GND for write only operation if (rw != Cpu.Pin.GPIO_NONE) this.rwPort = new OutputPort(rw, false); // Enable (enable) pin is necessary if (enable == Cpu.Pin.GPIO_NONE) throw new ArgumentException("Enable (EN) signal pin is necessary"); this.enablePort = new OutputPort(enable, false); this.shift = new ShiftRegister74HC595(ds, shcp, stcp, mr, oe, bitOrder); }
/// <summary> /// Constructor /// </summary> /// <param name="interfaceDataMode">Interface data mode</param> /// <param name="rs">Pin Register Select</param> /// <param name="rw">Pin Select Read/Write</param> /// <param name="enable">Pin Enable</param> /// <param name="db0">Pin Data Bus Line 0</param> /// <param name="db1">Pin Data Bus Line 1</param> /// <param name="db2">Pin Data Bus Line 2</param> /// <param name="db3">Pin Data Bus Line 3</param> /// <param name="db4">Pin Data Bus Line 4</param> /// <param name="db5">Pin Data Bus Line 5</param> /// <param name="db6">Pin Data Bus Line 6</param> /// <param name="db7">Pin Data Bus Line 7</param> public GpioLcdTransferProvider(InterfaceDataMode interfaceDataMode, Cpu.Pin rs, Cpu.Pin rw, Cpu.Pin enable, Cpu.Pin db0, Cpu.Pin db1, Cpu.Pin db2, Cpu.Pin db3, Cpu.Pin db4, Cpu.Pin db5, Cpu.Pin db6, Cpu.Pin db7) { // set interface data mode (4 or 8 bits) this.interfaceDataMode = interfaceDataMode; // Register Select (rs) pin is necessary if (rs == Cpu.Pin.GPIO_NONE) { throw new ArgumentException("Register Select (RS) pin is necessary"); } this.rsPort = new OutputPort(rs, false); // you can save 1 pin setting from your board, wiring RW pin to GND for write only operation if (rw != Cpu.Pin.GPIO_NONE) { this.rwPort = new OutputPort(rw, false); } // Enable (enable) pin is necessary if (enable == Cpu.Pin.GPIO_NONE) { throw new ArgumentException("Enable (EN) signal pin is necessary"); } this.enablePort = new OutputPort(enable, false); // create ports for data bus lines Cpu.Pin[] dbPins = { db0, db1, db2, db3, db4, db5, db6, db7 }; this.dbPorts = new OutputPort[DATA_LINE]; for (int i = 0; i < DATA_LINE; i++) { if (dbPins[i] != Cpu.Pin.GPIO_NONE) { this.dbPorts[i] = new OutputPort(dbPins[i], false); } } }
/// <summary> /// Constructor without using MR and OE /// BitOrder LSB first /// </summary> public Shift74HC595LcdTransferProvider(InterfaceDataMode interfaceDataMode, Cpu.Pin rs, Cpu.Pin rw, Cpu.Pin enable, Cpu.Pin ds, Cpu.Pin shcp, Cpu.Pin stcp) : this(interfaceDataMode, rs, rw, enable, ds, shcp, stcp, Cpu.Pin.GPIO_NONE, Cpu.Pin.GPIO_NONE, BitOrder.LSBtoMSB) { }
/// <summary> /// Constructor without using MR and OE /// </summary> public Shift74HC595LcdTransferProvider(InterfaceDataMode interfaceDataMode, Cpu.Pin rs, Cpu.Pin rw, Cpu.Pin enable, SPI.SPI_module spiModule, Cpu.Pin stcp, BitOrder bitOrder) : this(interfaceDataMode, rs, rw, enable, spiModule, stcp, Cpu.Pin.GPIO_NONE, Cpu.Pin.GPIO_NONE, bitOrder) { }