/// <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);
            }
        }
Example #2
0
        /// <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);
                }
            }
        }
Example #5
0
 /// <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)
 {
 }
Example #6
0
 /// <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)
 {
 }
 /// <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)
 {
 }