I'm new to all this stuff and for the past two days, I have been trying to interface a 16x2 LCD to an Arduino Uno using an Intel 8255A component without any luck. The problem is, how can I attach or set the LCD's pins <> to the unknown pins of the 8255A.

Is it even possible?

Thanks for any kind of help.enter image description here

  • 1
    8255!!!! Where did you find it?!?!
    – JayEye
    Apr 22, 2016 at 16:05
  • haha from this google.com/…
    – Hamza TST
    Apr 22, 2016 at 17:09
  • What are unknowing pins?
    – Gerben
    Apr 22, 2016 at 17:26
  • i'm talking about the i/o of 8255 component, they are unknowing for Arduino IDE, how can i make them as inputs for LiquidCrystal lcd(12, 11, 5, 4, 3, 2), this is my problem :/
    – Hamza TST
    Apr 22, 2016 at 17:39
  • 1
    yes this is why, because i have much less pins to connect such LCD and some others component, you have an idea @JayEye ;)
    – Hamza TST
    Apr 22, 2016 at 17:57

1 Answer 1


You will not be able to use 8255 pins as parameters to the the LiquidCrystal library without making substantial changes to either the library or the Arduino core.

The reason is that to configure or change a pin on the 8255, you will need to go through a series of operations manipulating the ATmega pins to which the 8255's microprocessor bus interface is connected. You can learn about the necessary operations by reading the 8255 data sheet. Also keep in mind that the 8255 does not have per-pin configuration - rather, the first two ports must each be either entirely inputs or entirely outputs, while there third port can be split in half.

Once you know how to set a pin, you will need to have the liquid crystal functionality trigger these operations.

One approach would be to create a heavily modified version of the library which knows how to work through the 8255.

Another would be to create a modified version of the Arduino core which has additional pin numbers corresponding to the 8255's pins, and generates code which does the necessary intermediate bus operations to access them. However this will be quite challenging - you have to make sure the intermediate code gets in there in all paths, and figure out how it will handle cases where code tries to set pins that must have the same mode to conflicting modes.

As others have said, you would practically be better off using a different MCU with more I/Os - either an Arduino Mega, or one of the ARM-based boards.

  • Thanks @Chris Stratton for your advice, this is what im gonna do :)
    – Hamza TST
    Apr 23, 2016 at 13:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.