LPC Demo Board Lessons
© 2005 Microchip Technology Inc. DS51556A-page 19
3.2.4 Lesson 4: Analog-to-Digital
This lesson shows how to configure the ADC, run a conversion, read the analog voltage
controlled by the potentiometer (RP1) on the board, and display the high order 4 bits
on the display.
The PIC16F690 has an on board Analog-to-Digital Converter (ADC) with 10 bits of
resolution on any of 11 channels. The converter can be referenced to the device’s V
DD
or an external voltage reference. The LPC Demo Board references it to V
DD as
provided by the USB cable. The answer from the ADC is represented by a ratio of the
voltage to the reference.
ADC = V/V
REF * 1023
Converting the answer from the ADC back to voltage requires solving for V.
V = ADC/1023 * V
REF
Two of the three factors on the right side of the equation are constants and may be
calculated in advance. This eliminates the need to actually divide, but still requires fixed
or floating point multiply to solve the equation on the fly.
However, sometimes, such as when reading a sensor, calculating the voltage is only
the first step. There may be additional math to calculate the meaningful data from the
sensor. For example, when reading a thermistor, calculating the voltage is only the first
step on the way to getting the temperature.
There are other means to convert ADC values, including a straight table look-up or a
piece-wise linear interpolation. Each of these represents different speed/memory
trade-offs.
The schematic (Appendix A. “Hardware Schematics”) shows the wiper on the
potentiometer is connected to pin RA0 on the PIC16F690.
Here’s the checklist for this lesson:
• Configure PORTA as an analog input, TRISA<0> = 1, ANSEL<0> = 1
• Select clock scaling in ADCON1.
• Select channel, justification and V
REF source in ADCON0.