Reading an Analog Voltage Through the PC Printer Port Part 2
Here we simply altered the electrical connections for two of the pins in the TLC548 ADC to free up pins to connect a serial LCD display. This also demonstrates how to manipulate individual bits on the 8-bit data port.
Connect the ADC as follows:
# Connect to TLC548 CS-NOT pin 5 to Db25 pin 3 D1
# Connect to TLC548 CLK pin 7 to Db25 pin 2 D0
# Connect TLC548 Pin 6 DATA OUT to Db25 pin 15
The program is written in Python and runs under Linux. To use this one must setup a module pyparallel. How to set this up is on my webpage Programming the PC Printer Port in Python
#!/usr/bin/env python # File pporttlc548bits.py # http://www.bristolwatch.com/pport/index.htm # By Lewis Loflin - email@example.com # Read serial ADC TLC548 and send value to terminal. # Connecting the TLC548 to the data port pins D0 and D1. # Program halts when Sw1 is pressed. # Sw1 is connected from ground to Db25 pin 10 and pulled high # by a 10k resistor. # Because two individual port bites used to control ADC # they can't be used to display binary. # This frees up pins 1 and 16 for use with LCD circuit # with pportlcdADC.py import parallel import time p = parallel.Parallel() ''' ; Pins on the TLC548 8-bit ADC: ; 1 -> Ref + -> connect to Vcc ; 2 -> analog in ; 3 -> Ref - -> connect to GND ; 4 -> GND ; 5 -> CS-NOT -> chip select active LOW ; 6 -> DATA OUT ; 7 -> CLK ; 8 -> Vcc ''' # init i/o pins p.setDataStrobe(0) # Pin 1 output NC p.setAutoFeed(0) # Pin 14 output NC p.getInError() # Pin 15 input to DATA OUT TLC548 p.setInitOut(1) # Pin 16 output NC p.setSelect(0) # Pin 17 output NC # Connect to TLC548 CLK pin 7 to Db25 pin 2 D0 def writeD0(bit_val): if bit_val == 1: p.setData(p.data() | 1) # set bit 0 else: # clear bit 0 p.setData(p.data() & (255 - 1)) return writeD0(0) # set TLC548 CLK pin 7 LOW # Connect to TLC548 CS-NOT pin 5 to Db25 pin 3 D1 def writeD1(bit_val): if bit_val == 1: p.setData(p.data() | 2) #set bit 1 else: # clear bit 1 p.setData(p.data() & (255 - 2)) return writeD1(1) # set TLC548 CS-NOT pin 5 HIGH # data LSB first # enable TLC548 CS-NOT LOW # set CLK HIGH # read data bit shift left # set CLK LOW def readADC(): temp = 0 writeD1(0) # enable CS-NOT LOW # time.sleep(.01) for i in range(0,7): # loop here 7 times writeD0(1) # CLK HIGH temp = temp + p.getInError() # get bit temp = temp << 1 # shift 1 bit left writeD0(0) # CLK LOW writeD0(1) # CLK HIGH temp = temp + p.getInError() # get bit 8 writeD0(0) # CLK LOW writeD1(1) # CS-NOT HIGH return temp # convert a 8-bit number (integer) to a binary. # Returns string. # unlike python bin() this doesn't drop leading zeros def convBinary(value): binaryValue = 'b' for x in range(0, 8): temp = value & 0x80 if temp == 0x80: binaryValue += '1' else: binaryValue += '0' value = value << 1 return binaryValue def Sw1(): return p.getInAcknowledge() # check pin 10 Db25 when pressed returns 0 # Sw1 is connected from ground to Db25 pin 10 and pulled high # by a 10k resistor. # When Sw1 pressed program exits. while Sw1(): val = readADC() time.sleep(.1) print "Reading =", convBinary(val), " ", hex(val) p.setData(0) # LEDs off print print "Exit now." exit
Download pport-1.0.iso from Sourceforge.com then burn to DVD (file size 920 meg.), insert into DVD drive and reboot. Make sure PC is set to boot from DVD ROM.
This is pre-configured by myself to use Python to control the printer port. Python can be run from IDLE or Geany.
All of my PPORT electronics projects will work without installation to a PC.
Programs can be saved to thumb drive in LIVE mode.
Below are listed a series of projects using pyparallel and electronics. Starting with routines I wrote to aid students I'd advise walking through this in sequence. Have fun and send comments and/or corrections to firstname.lastname@example.org.
- Introduction to Python Bitwise Operations
- Python Bitwise Operations by Example
- Using the PC Printer Port series:
- Programming the PC Printer Port in Python
- Additional Commands for Py-Parallel
- Controlling Data Bits on the PC Parallel Port
- Connecting Switches to the PC Printer Port with Python
- Reading an Analog Voltage Through the PC Printer Port Part 1
- Reading an Analog Voltage Through the PC Printer Port Part 2
- Controlling a Serial LCD Display on a PC Printer Port with Python
- Serial ADC and LCD Display with PC Printer Port with Python
- Controlling MAX7219 LED Display with PC Printer Port with Python
- MAX7219 8-Digit LED Display and Serial ADC in Python
- Project pages:
- Part 1: Read Arduino with PC Printer Port
- Part 2: Better way to Read Arduino Through the PC Printer Port
- Part 3: Read-Write an Arduino Through a PC Printer Port
- Part 4: Control LCD Display and Arduino from the PC Printer Port
- Arduino sketches needed by programs:
- pportArduino1.ino read only after reset.
- pportArduino2.ino reset once and multiple reads.
- pportArduino3.ino reset once read write Arduino infinite times - multiple commands.
- Related Raspberry Pi projects:
- Connect Serial LCD to Raspberry Pi
- Serial Read from Arduino to Raspberry Pi
- Arduino Raspberry Pi Interface with LCD Display
- Live Linux Distro for Using Printer Port with Electronics
- Using the powerful Rox-Filer system in Linux
- Use FEH under Linux for a Wallpaper Setter
- How to create Symbolic links in Linux
- Printer Port Interfacing Videos:
- Connect Electronics to PC printer Port with Python
- Setup PC Printer Port with Python-Linux
- Use PC Printer Port to Read Analog Voltage
- Read-Write Arduino ADC PWN with Printer Port
- Printer Port to Serial LCD Display
- Connect Arduino to PC Printer Port for advanced control
Printer Port in C
- Exploring Digital Computer Electronics
- Hardware Review Connecting PC Parallel Ports
- Operation TB6600 Stepper Controller with PC Parallel Port
- Build or Buy Parallel Port Breakout Board?
- Build Serial HD44780 LCD Display Connect to Parallel Port
- Presario 1999 CM1001 Gaming Computer Salvage
- Live Test 2002 VIA EPIA-800 Mini ITX Motherboard
- Salvage, Test 2012 AAEON EMB-B75A Industrial Motherboard
- Web Master
- Gen. Electronics
- YouTube Channel
- Arduino Projects
- Raspberry Pi & Linux
- PIC18F2550 in C
- PIC16F628A Assembly
- PICAXE Projects
Web site Copyright Lewis Loflin, All rights reserved.
If using this material on another site, please provide a link back to my site.