5 V to 12 V transceiver chip / hardware
The easiest way is to simply put in a resistive divider. Two resistors is all you need (or one resistor and a Zener diode.)
Adding an input step that's 1 kOhm up to signal and a 3.3V Zener from signal to ground would retain useful input capability down to a few volts, while being very resilient to overvoltage. At 12V, you'd see about 9 mA through the Zener, which can typically take up to 100 mA before dieing.

There are two draw-backs:

1) There is some capacitance in the Zener, plus adding the resistor to the input, will lead to some worsening of signal performance. The time constant of a 100 pF Zener with a 1 kOhm resistor is RC == 1000*100e-12 == 1e-7 seconds; meaning that signals faster than approximately a megahertz will run into rise time problems. (Thumb and forefinger here -- signals below will see some problems; signals above will see more. The -3dB point of this filter is at 1.5 MHz)

2) There will be some current drain on the signal bus. 9 mA is actually not insignificant to some weaker output stages -- various microcontrollers may be as weak as 2 mA drive capability. You have to check how much current the 12V signal can source.







simulate this circuit &ndash; Schematic created using CircuitLab

Other options include various level translators. You can build a simple level translator with a single N-channel MOSFET. This doesn't have the current problems above, although it will still require the 12V signal to be able to sink a 3.3V signal at several milliamperes (This is generally not a problem.)







simulate this circuit

This has the benefit (or draw-back) that if the input pin goes low (as an output) then it will try to drive the 12V signal low, too.
Note that CircuitLab uses a weird symbol for N-channel MOSFET -- typically, there are two lines for the source, and the arrow points in in the center.