LCD's with Shift Registers, and LCDOUT


Closed Thread
Results 1 to 12 of 12
  1. #1
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default LCD's with Shift Registers, and LCDOUT

    Notice: LCDOUT HighJack routines MUST be installed in the PBPPIC??.LIB file before using these interfaces.
    For more information on how to install the HighJack routines, see this thread...

    LCD_AnyPin.pbp
    http://www.picbasic.co.uk/forum/showthread.php?t=7038

    PC064PYL I bought a bunch of these displays via eBay a couple years ago. They just looked so cute I couldn't resist.

    2x8 HD44780 based LCD's with backlight. P/N PC064PYL

    Running the Sample program shown below.

    I should have looked closer at the auction, because it had a 5 pin interface using 74HC164's (shift registers) as a 9-bit input to a normal HD44780 display. ... I was able to get one working using SHIFTOUT, but it was really a pain since you couldn't use LCDOUT, or DEC, or HEX, or ... _____. So they sat in a box on the shelf for a couple years, with me thinking it was a stupid buy. (@ 75 cents apiece, maybe not all that stupid).

    But now that there's "HighJack". (previously shown in the LCD_AnyPin.pbp thread)
    You can do pretty much whatever you want with LCD's.

    In this case, the "Little Cutie" is rejuvenated by being able to use normal LCDOUT statements, even though it's a Synchronous Serial interface.

    I redrew the schematic for the input circuit.
    The only datasheet I could find looks like it was copied a dozen times before being scanned.
    Here's a copy of part of the datasheet.

    And this is the re-draw ...




    The display uses an 8 bit interface, so it makes things pretty easy.
    Shift in the RS bit, followed by the data byte LSB first.
    Once all nine bits are shifted in, pulse the Enable line for at least 1uS.

    But then, you don't need to worry about that stuff because it's handled in the Include file.
    All you have to do is use LCDOUT.

    Assuming that you've properly installed the HighJack routines as mentioned above.
    This sample program should give an idea of how simple it is to use PC064PYL.pbp.
    Code:
    ; Initialize your Hardware first, set CONFIGs, OSC, Turn off A/D etc 
    ;----[ Change these to match your LCD ]--------------------------------------- 
    LCD2x8_CLK  VAR PORTB.0 ; Clock - Pin 1 
    LCD2x8_DAT  VAR PORTB.1 ; Data - Pin 2 
    LCD2x8_E    VAR PORTB.2 ; Enable - Pin 5 
    INCLUDE "PC064PYL.pbp" ; *** Include MUST be AFTER LCD Pin assignments **** 
    
    ;----[ Your Main program starts here ]---------------------------------------- 
    LoopCount VAR WORD 
    Main: 
        LCDOUT $FE,$80,"Hello,",$FE,$C0,"From DT!" 
        PAUSE 3000 
        LCDOUT $FE,1 ; clear screen 
        FOR LoopCount = 0 TO 65535 
            LCDOUT $FE,$80, IDEC LoopCount 
            LCDOUT $FE,$C0, IHEX4 LoopCount 
          ; pause 100 ; Slow it down, if you want 
        NEXT LoopCount 
    GOTO Main
    Just assign the pins used for the LCD.
    Include the PC064PYL.pbp file.

    And away you go, ... using LCDOUT just like you always have.
    Except it's an itty bitty display.

    While this is an easy way to use a PC064PYL, it's also a way that you can hook up ANY HD44780 Display.
    It just happens that the "Little Guy" has them built in.

    However, it seems like a waste to have 2 - 74HC164's, when the second one is only using 1 out of 8 bits. You could use a 4-bit interface and save the extra chip, but it still takes 5 wires going to the LCD. So I wouldn't recommend using this EXACT same way of doing things, unless it's already built-in, like the PC064PYL.
    There's something very close that only requires 1 chip and 4 wires, and that's what I'll tackle in the next post in this thread.

    There are 2 files required to use the PC064PYL driver with PicBasic Pro. They are ...
    PC064PYL.pbp
    VirtualPort.bas   (included from the PC064PYL.pbp file)
    Both files are included in the .ZIP file below. VirtualPort.bas is the same as the file from the LCD_AnyPin thread and doesn't need to be overwritten, but it doesn't matter if you do since they're the same.
    Extract the files to your PBP folder.
    Attached Files Attached Files
    Last edited by Darrel Taylor; - 30th July 2012 at 00:30.
    DT

  2. #2
    Join Date
    Oct 2010
    Posts
    3


    Did you find this post helpful? Yes | No

    Smile 2 wires lcd for bpb

    Using the Darrel Taylor LCD_AnyPin.pbp as a template i adapted the 2 wires idea of M. Predko to be used in PICBASIC. (LCDOUT)
    The new .pbp patch is not so professional as the original (maybe Mr Darrel Taylor can fix it), but is working.
    Only two pins (any) of the uC are neded to drive the LCD display (44780 type).
    The example is for 16F628A uC.
    Some time is very useful to have more pins available.

    Guido

    Hope the attachment PBP_2WSLCD.zip is inserted correctly!
    Attached Files Attached Files

  3. #3
    Join Date
    Aug 2011
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    I too bought some of these little guys from ebay a number of years ago.....have been collecting dust ever since.

    Just curious if this will work with a 12F683?
    I followed all of the above instructions and then just replaced the pin definitions with gpio.0, gpio.1, gpio.2 but I'm not getting any output to the lcd.

  4. #4
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    Yes, it should work on a 12F683.

    Did you add ... ANSEL = 0 ... to your program?
    DT

  5. #5
    Join Date
    Aug 2011
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    I did have ANSEL=0 in the code which is shown below...compiled with PBP 2.60c. Is it possible my lcd is just defective?


    Code:
    define osc 4
    intcon=0
    ansel=0
    
    ;----[ Change these to match your LCD ]---------------------------------------
    LCD2x8_CLK VAR gpio.0 ; Clock - Pin 1
    LCD2x8_DAT VAR gpio.1 ; Data - Pin 2
    LCD2x8_E VAR gpio.2 ; Enable - Pin 5
    INCLUDE "PC064PYL.pbp" ; *** Include MUST be AFTER LCD Pin assignments ****
    ;----[ Your Main program starts here ]----------------------------------------
    LoopCount VAR WORD
    Main:
    LCDOUT $FE,$80,"Hello,",$FE,$C0,"From DT!"
    PAUSE 3000
    LCDOUT $FE,1 ; clear screen
    FOR LoopCount = 0 TO 65535
    LCDOUT $FE,$80, IDEC LoopCount
    LCDOUT $FE,$C0, IHEX4 LoopCount
    PAUSE 100 ; Slow it down, if you want
    NEXT LoopCount
    GOTO Main

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    Quote Originally Posted by picone View Post
    Is it possible my lcd is just defective?
    I suppose it's possible, but I'd look for other problems first, like ...

    Do you have a pull-up resistor on the MCLR pin? Or have you disabled MCLR in the configs.
    DT

  7. #7
    Join Date
    Aug 2011
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    Quote Originally Posted by Darrel Taylor View Post
    I suppose it's possible, but I'd look for other problems first, like ...

    Do you have a pull-up resistor on the MCLR pin? Or have you disabled MCLR in the configs.
    I set MCLR off and am using INTOSC_NOCLKOUT. I double and triple checked my wiring, and I did have a generic led blinking program running on this board to ensure I had a functioning setup. The lcd backlight comes on when I apply power....but no text.

    Is there anything else in the CONFIG that could prevent this from working besides MCLR and oscillator?

  8. #8
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,516


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    Hi,
    I must admit I'm not sure how or if the comparator interfere with the pins when the pins are configured as outputs. However I can't see the comparator pins being set to digital so it might be worth a try to add CMCOM0 = 7.

    I also don't see you setting the pins used to outputs but Darrels original code doesn't do it either so it's probably handles by the LCDOUT statement as normal ir the hijack routine. But again, might be worth a try configuring TRISIO properly.

    /Henrik.

  9. #9
    Join Date
    Aug 2011
    Posts
    8


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    Quote Originally Posted by HenrikOlsson View Post
    Hi,
    I must admit I'm not sure how or if the comparator interfere with the pins when the pins are configured as outputs. However I can't see the comparator pins being set to digital so it might be worth a try to add CMCOM0 = 7.

    I also don't see you setting the pins used to outputs but Darrels original code doesn't do it either so it's probably handles by the LCDOUT statement as normal ir the hijack routine. But again, might be worth a try configuring TRISIO properly.

    /Henrik.
    CMCON0=7 did the trick! Thank you Henrik and Darrell for your help.

    On a separate and unrelated note..........how come Darrell's routines (i.e. Instant Interrupts, Slow PWM, LCDanypin, etc) haven't been incorporated into PBP yet? They must add about 50% more functionality to PBP but I'm surprised they aren't part of the software package.

  10. #10
    Join Date
    Jan 2011
    Posts
    3


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    Is it possible to make naginar's patch to work? I tried the schematic in proteus and I get an error telling me that the "HD44780 controller received command whilst busy".

  11. #11
    Join Date
    Jan 2011
    Posts
    3


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    I've managed to make it work with minor modifications and connecting E separately. Thank you.

  12. #12
    ajoyna1's Avatar
    ajoyna1 Guest


    Did you find this post helpful? Yes | No

    Default Re: LCD's with Shift Registers, and LCDOUT

    I also don't see you setting the pins used to outputs but Darrels original code doesn't do it either so it's probably handles by the LCDOUT statement as normal ir the hijack routine. But again, might be worth a try configuring TRISIO properly.

Similar Threads

  1. LCDOUT custom commands - how to?
    By flotulopex in forum mel PIC BASIC Pro
    Replies: 68
    Last Post: - 18th April 2015, 17:36
  2. Help with Circuit
    By Art in forum General
    Replies: 14
    Last Post: - 23rd December 2009, 14:21
  3. A/d 16f88
    By Steves in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 31st May 2009, 02:19
  4. PIC16F684 + LCD to use the 256bytes of EEPROM - HELP
    By xnihilo in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 7th March 2008, 15:19
  5. LCDout Command causes Interrupt!!??
    By Tom Gonser in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 31st March 2005, 05:18

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts