Shift1 System is a cheap and simple way to get lots of digital output pins and only needs 1 PIC pin to drive it.

Step 1: How It Works - the Simple System

Normally, serial-in parallel-out shift register ICs can be set up for 2 pin operation;

DAT - data, is the next bit to be shifted in
CLK - clock pulse, on / edge the next bit is shifted in

This can be "cheated" to just use one pin and timed-length pulse. An RC network is used to provide a time delay for the DAT line to change. Very short pulses mean that a 1 bit is shifted in. With a long enough pulse the DAT voltage drops low enough so that a 0 bit is shifted in when the CLK line goes / again.

Step 2: Shift1 LATCHED System for Driving LCDs

Step 3: Circuit Diagram

1,  74hc595    - 1
2,  1.5 k  resistor -1
3,  33 k resistor - 1
4,   0.1uf  polyster capacitor -1
5,  2.2nf non capacitor   - 2
6, 220 ohm resistor -1
7, 2n7000 mosfet -1
8 ,5K preset -   1    ,for lcd contrast adjust
9, button switch - lcd back light ON/OFF [optional ]
10, pic12f675

Step 4: Vero Board Assembling

Step 5: Test Board - Pic12F675 Micro Development Board [3.0 Cm X 2.5 Cm Size]

Step 6: Finished Circuit Board

Step 7: Working Video

 source code : 

special thanks to roman black.
and now for arduino
<p>If you look at the c files it shouldnt be too hard to port that to Arduino, after all, that is C too. Sure there are some specific PIC registers that need sorting out for the arduino but that should be possible too. Should find a solution for the couple of assembler code instructions if you want to keep it purely Arduine IDE. Ofcourse one can also start from scratch, knowing the timings one needs for a HIGH and a LOW.<br>Currently I have a 2 wire system with a SN164 that works well so I am not in a hurry to do an LCD on 1 pin, but I may give it a try for use with an attiny85</p>
<p>this might be what u are looking for: </p><p>https://code.google.com/p/shiftreglcd123/downloads/detail?name=ShiftRegLCD123_2012.02.12.tar.gz&amp;can=2&amp;q=</p>
source code : <a href="http://www.romanblack.com/shift1/SH1_Clock.zip" rel="nofollow">http://www.romanblack.com/shift1/SH1_Clock.zip</a>
Hi, thanks. it's very useful. do you have any library for controlling lcd in this way? the code must be difficult, could you give us a sample of code?

About This Instructable




Bio: embedded system enthusiast ...
More by Jestin_Cubetech:Wireless Robo-car  using  360°  servo motor Raspberry Pi - Revision 2  DIY Add-On Board water tank automation - prototype 
Add instructable to: