I want to hook up a resistive touchscreen to an ADC.

I'm new to electronics and experienced in developing software. My intention is to learn, I would much appreciate it if you could nudge me into the right direction, pointing out the problems, rather than handing a solution.
Also I'm not native to the language, I might not get the words quite right, my apologies.

I got a 4-wire resistive touchscreen glued to the TFT panel "CFAF320240F-035T (320x240)" and a "LPC2138" microprocessor board.

I have a 12V 300mA DC power source.
The source is powering the microprocessor, which is regulated to 3.3V; and the backlight, using an uC output pin, transistor and resistors,
So i got 12V and 3.3V right away.

The ADC is specified with
- 10Bit
- voltage source interface resistance 40kOhm
- analog input voltage 0..VDDA; VDDA being 3.3V here

The documentation has little specification on the touchscreen, by using a meter i got a resistance span of
- 300..600 Ohm.

I do not want to use an Op-Amp or a TS-driver-IC just yet.

In the following I just worked with the horizontal direction on the TS. These are all assumptions, I have absolutely no idea if or where I am wrong!

Voltage divider to ADC (Figure 1)

R8-300 + R-TP1-300 is the touchscreen, I don't know how to present that more adequately yet.
By using a voltage divider, ignoring the ADC's resistance, i get a usable voltage span of maximum 0,5661V;
at R_TS = 300 Ohm ADC_IN becomes 1.4139V,
at R_TS = 600 Ohm ADC_IN becomes 1.98V;
With the ADC that gets me 17%, or a span of 7 bit, about 175 points on the screen. It also draws 3,8mA +- 0,6mA;

Now I would like to have at least 320 points horizontal.

enter image description here (Figure 2)

This is where I got so far. There are no numbers yet, since that is still a bit of a struggle for me, I'd prefer to get the heading right first
- On the left I use the touchscreen plus resistor R6 to get the control current down.
- Next, T1, R1, R2 and R4 build up a current source which will be pulled down by
- R3 and T2.
Using R10, R6 and R5 I can manipulate the offset, using R3 I can scale the output.
C2 I put in since I believe I have to filter the ADC's input.

Is that an applicable approach? Where am I wrong or where do I miss things?

Thank you for your time.

  • \$\begingroup\$ You can probably increase resolution by using a current source instead of R5/R6. \$\endgroup\$
    – jippie
    Dec 13, 2013 at 22:14
  • \$\begingroup\$ You do not need any of that, just two pull up resistors and wire its straight to a PIC with two ADC channels. \$\endgroup\$
    – user54347
    Oct 1, 2014 at 6:27

1 Answer 1


You don't need such a complicated circuit. You need 4 ports and possibly two resistors.

There are 4 pins for the touch Screen (Page 12 of the PDF):

Pin1 = Y-

Pin2 = X+

Pin3 = Y+

Pin4 = X-

To get the “X” touch position, the microprocessor sets Pin3 to +3.3V and Pin1 to GND (0V). Pin4 is made unconnected (high impedance) by setting it to an input or an open collector output set to high. The microprocessor uses Pin2 to read the voltage through the ADC.

To get the “Y” touch position do the opposite. The microprocessor sets Pin2 to +3.3V and Pin4 to GND (0V). Pin1 is made unconnected (high impedance). The microprocessor uses Pin3 to read the voltage.

Pin2 and Pin3 need to go to ADC, through a resistor if you want the control current down. Pin1 and Pin3 go to an open collector output or a regular I/O.

The resistor used on Pin2 and Pin3 will not really affect the ADC if you put a 100pF cap to ground right beside the microprocessor.

To summarize:

“X” touch position:

Pin1 = 0V output

Pin2 = ADC input

Pin3 = 3.3V output (with inline resistor if needed)

Pin4 = High impedance (open collector output or just an input)

“Y” touch position:

Pin1 = High impedance (open collector output or just an input)

Pin2 = 3.3V output (with inline resistor if needed)

Pin3 = ADC input

Pin4 = 0V output

Please see the link below if only for the pictures:



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.