Character LCD (mp) Multi-Port

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
MarkH_61
Employee
Employee
25 likes received 50 replies posted 25 replies posted

Ever wish you could use one of the standard 2x16 character displays across multiple ports or not have to use sequential pins?  Well now you can spread the connections to your character LCD across multiple ports in any order.  This new component is 100% compatible with the original Character LCD, except you can connect it any way you want.  One other little feature is that you only need 6 GPIOs instead of 7.  So check out the CharLCDmp.  You can also use it with the standard port 2 connector, but make sure you drive the R/W pin to Vss.

   

The attachment contains a workspace with a demo project and a library with both the CharLCDmp component and a LCD annotation component to help you remember how to connect the two together.

   

Enjoy,

   

Mark

44 Replies
Anonymous
Not applicable
        Hi, I do this, My test board has many unused pin anyway. great work. thanks for your effort. Happy LCD   
0 Likes
MaR_264466
Level 3
Level 3

I am using PSoC Creator 2.1 Van you tell me how to include this component/ update the LCD component so that i can use it in my existing design? 

0 Likes
MaR_264466
Level 3
Level 3

Can i use this component for a PSoC5 design? If so how? when i am compiling, i am getting error that 'LCD_Cntl_Port_Sync_ctrl_reg__CONTROL_REG' undeclared 

0 Likes
Anonymous
Not applicable

I think it will only work with PSoC 5 LP, try recompiling with LP selected as the target device.  My bet is that Mark was using the synchronized output mode of the control registers, and that is only available in PSoC 3 / 5 LP, not PSoC 5.

0 Likes
MaR_264466
Level 3
Level 3

I compiled with PSoC 3 and it did compile without errors. Does this mean that this new components cannot be used with any PSoC 5 designs? Is a similar component for PSoC 5 planned? Its too late into my design now to change the device as my Final PCB is fabricated and populated. If i have to tweak it and make it work for PSoC 5, is it sufficient if i change control register setting to async or something like that? or will the method from link below work reliably?

   

http://www.cypress.com/?app=forum&rID=72265 

0 Likes
MaR_264466
Level 3
Level 3

And one more doubt... When i open and see the .cysch file in PSoC Creator, the control register does not have clock pin which made me doubt whether it is sync mode or async mode. I really need help with this one please...

0 Likes
Anonymous
Not applicable

Easy Chief : ) we all make these components as a labor of love, these are not officially supported components and are likely to contain bugs, or simple snafus.  We make these because we love PSoC, not because they are on some roadmap or plan.  If you are using them in a product, you do so at your own risk.

   

 

   

That said, the fix should be relatively simple.  Creator uses seperate defines for PSoC 5 and PSoC 5 LP for control registers.  The old version of the silicon did not have the synchronous capability, and to prevent possible problems, a new define was created in cyfitter.h for control registers.

   

 

   

Mark used the PSoC 3 / 5 LP define:

   

 

   

LCD_Cntl_Port_Sync_ctrl_reg__CONTROL_REG

   

i.e.

   

#define LCD_CNTL_REG        (* (reg8 *) LCD_Cntl_Port_Sync_ctrl_reg__CONTROL_REG )

   

 

   

in the LCD.h file, but he should have included a conditional compile option for PsoC 5 that used: 

   

 

   

LCD_Cntl_Port_Async_ctrl_reg__CONTROL_REG

   

i.e.

   

#define LCD_CNTL_REG        (* (reg8 *) LCD_Cntl_Port_Async_ctrl_reg__CONTROL_REG)

   

 

   

you can make the one time edit to his original component in the included library to use:

   

   

#define `$INSTANCE_NAME`_CNTL_REG        (* (reg8 *) `$INSTANCE_NAME`_Cntl_Port_Async_ctrl_reg__CONTROL_REG )

   

#define `$INSTANCE_NAME`_CNTL_PTR        (  (reg8 *) `$INSTANCE_NAME`_Cntl_Port_Async_ctrl_reg__CONTROL_REG )

   

and that *should* fix your problem.

Anonymous
Not applicable

I don't understand.How it can be done?

0 Likes
MaR_264466
Level 3
Level 3

Thank You very much for the suggestion. Figured out how to import a component from another projeect to my project, and with your suggestion i am able to use the component for PSoC5 .Thanks a lot Kees & Mark 🙂 

0 Likes
lock attach
Attachments are accessible only for community members.
MarkH_61
Employee
Employee
25 likes received 50 replies posted 25 replies posted

Sorry I didn't see the posts earlier.  Chris just told me lastnight of the posts.  I must admit that I didn't test the old PSoC 5, just the PSoC 5LP.  Well this time I made the fix and tested the LCD with PSoC 3, PSoC 5, and PSoC 5LP.  Attached is the workspace, demo project, and updated library with both the old 1.0 and the new 1.1 component.  Sorry for causing so much pain.

   

 

   

Mark

HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

Thanks for your work! I hope it will make it into the next version of Creator...

0 Likes
MaR_264466
Level 3
Level 3

Thanks a lot Mark... Seriously... PSoC forum ROCKS! And such fast response... Thanks Everyone

0 Likes
lock attach
Attachments are accessible only for community members.
MarkH_61
Employee
Employee
25 likes received 50 replies posted 25 replies posted

Well I found one other little gotcha.  Although I tested with PSoC3/5/5LP, I only tested with 3.3 volt displays.  It looks like the 5 volt displays are just a little slower.  I had to increase the command delay from 1.5 mSec to 2.5 mSec.  Anyway here is the fix, hope this is the last one.

   

Mark

lock attach
Attachments are accessible only for community members.
MarkH_61
Employee
Employee
25 likes received 50 replies posted 25 replies posted

I added a couple macros that combine the position command with some of the print commands.  Other than that, no changes.

   

Mark

0 Likes
KeYp_290406
Level 4
Level 4
        I just got the CY8CKIT-042 Demo Shield recently. This is the recommended component to run the LCD module that goes with it. Has anyone got it to work yet? The kit instructions give the port pins to use and I used the sample project here as a reference on how to run the component. I'm just getting solid blocks on line 1 as if the display module isn't initialized. Adjusted the contrast just to make sure that's not the issue. Any suggestions?   
0 Likes
KeYp_290406
Level 4
Level 4
        It needs V1.2 to work.   
0 Likes
Anonymous
Not applicable

 Will this component also work with the Pioneer 4 board?

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Since Char-LCD is a pure software solution it is most probable that it will run on the Pioneer kit. Only the connection to an LCD-module will be different to other kits.

   

 

   

Bob

0 Likes
MarkH_61
Employee
Employee
25 likes received 50 replies posted 25 replies posted
        Yes the CharLCD will work on the Pioneer board. Just make sure you select all the right ports in the design wide resource section. Also make sure you tie the LCD's R/W line to Vss. Mark   
0 Likes
EdUc_284901
Level 4
Level 4
50 replies posted 25 replies posted 10 replies posted

Hey! Great work!

   

I'm still new on PSoC and this I think will simplify my work!

   

Hope there were be upgrades in future

   

 

   

Regards

   

Edgard

0 Likes
Anonymous
Not applicable

This is a nice custom component.  I want to use this custom component in my design, and I could use a little help.  I have a completed PSoC3 design (it's a hobby project) using the Eval board CY8CKIT-030.   Since I only have buttons and USB, I don't need all the extra stuff in the CY8CKIT-030, so I'm trying to port my design to this PSoC3 PowerfulBoard:

   

http://www.powerfulboard.com/

   

 
Before I port my design, I would like to have a working LED and LCD for debug purposes on the PowerfulBoard.  So I took the example Project posted here (CharLCDmp_Demo3).  Starting form there, I have an LED blinking, and I'm trying to use thisthe custom component(Character LCDmp) to get the LCD from my CY8CKIT-030 working on the the PowerfulBoard.   Your project shows several external components, so I'm assuming those are required.  Can I route the external LCD pins (Gnd, Vcc, Vee, RW) to Digital pins in PSoC creator ?

   

Thanks in advance for your help.

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Can I route the external LCD pins (Gnd, Vcc, Vee, RW) to Digital pins in PSoC creator ?

   

No, the pins cannot source so much power, you'll have to use the signals. But there are LCDs with I2C interface on the market, that would cost you only 2 pins to have it connected.

   

 

   

Bob

0 Likes
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

Yes you can if the B/L is not high current, like an LED B/L. But not Vee.

   

You are constrained to interface DC specs CM range for I/O, PSOC, but

   

thats 44780 basic compatibility. If Vee on display is negative, then that must

   

come to display from an external source.

   

 

   

The controller, Hitachi/Renesas 44780 equivalent, is typically

   

< 1 mA at 5V. And then small amout of power, typically uW, for muxed

   

C dissapation of LCD.

   

 

   

You need to observe power supply sequencing.

   

 

   

Not sure why you need to switch LCD ground ? But you can.

   

 

   

Regards, Dana.

0 Likes
MarkH_61
Employee
Employee
25 likes received 50 replies posted 25 replies posted

Tarawa,

   

Can you drive the Gnd, Vcc, Vee, and R/W LCD pins with the PSoC.  Well there is no problem in driving the R/W pin.  The Gnd and Vcc pins depend on the LCD you are using.  The PSoC3/5 sink/supply specs for the GPIOs are 8 and 4 mA respectively.  I know that there are some LCDs that use 3 or less mA, so you will need to look at your LCD specs of make some measurements.  The Vee pin all depends again on the LCD.  A simple logic 1 or 0 will not work on most LCDs.  You could use a PWM output, but you would have to filter it most likely.  An iDAC may work, but I'm not sure if we can guarentee that the compliance voltage is low enough if this voltage needs to be close to the rail.

   

 

   

Mark

0 Likes
lock attach
Attachments are accessible only for community members.
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

If you need to generate negative voltages some simple methods, attached.

   

 

   

Regards, Dana.

0 Likes
Anonymous
Not applicable

Hi there, I have some experiences with PSoC1 and PSoC Designer and I have now changed to PSoC4. First I wanted to operate an arduino lcd shield on CY8CKit-042 board, but the pin configuration divers. So I have searched and finally found this posts and I guess this is the right library. So I have made a new project and imported the library "CharLCDmpLib.cyprj" with a right click in the components register. In the posts I have read that I have to use V1.2 but if I imported the library I will only find the code of CharLCDmp_V1_00. 

   

Could you please give me a hint, what I am doing wrong?

   

Best regards,

   

Werner

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Hi Werner, welcome in the forum!

   

Chris posted a library file in the thread's post number 13. You may download Chris's library project which contains both versions.

   

 

   

Happy coding

   

Bob

   

PS: Where are you located? I'm living between HH and HB

0 Likes
rola_264706
Level 8
Level 8
50 likes received 25 likes received 10 likes received

I have used a Nokia 5100 display for months and used the PSOC 4 to drive all the pins VCC ,GND ,BL with no issues at all. 

0 Likes
lock attach
Attachments are accessible only for community members.
JoCa_263971
Level 1
Level 1

Hi everyone

   

I used this user component  on several projects, using PSoC3 and PSoC5LP and a Pioneer kit (CY8CKIT-042) with PSoC (CY8C4245). Now that I've tried using the CY8CKIT-044 with the PSoC4 CY8C4247, I find that I can't assign pin of port 5 because they are not  available (this for the DB6 and DB7 pins). I'm using the DF-Robot LCD shield.

   

Please help me with any solutions or ideas to solve this problem.

   

Thanks

   

JJ

0 Likes
Anonymous
Not applicable

Thank you very much, your attached files helped me so much, i get the LCD Keypad Shield functionality (NOTE: Only i used the 6 Pins of LCD [D4,D5,D6,D7,E & RS]) wich were connected to pins 2.0 , 2.1 , 2.2 , 2.3 , 2.4 & 2.5 (in respectiv order) of my PSoC Device CY8CKIT-044 4200M.

   

Regards

   

FranQ

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

You need to assign the pins to a different port and change the connections to the LCD. You might use port 0.

   

 

   

Bob

0 Likes
JoCa_263971
Level 1
Level 1

Hi Bob. Thank you for the answer.

   

My LCD shield uses the J3 and J4 header Arduino compatible. I have the problem with the D6 and D7 pins on J4 header specifically  (these pins are DB6 and DB7 respectively). Then, is not possible to change the LCD connections because these are routed on the shield.

   

any other idea?. Tkx

   

JJ

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Use wires.

   

 

   

Bob

0 Likes
lock attach
Attachments are accessible only for community members.
rola_264706
Level 8
Level 8
50 likes received 25 likes received 10 likes received

Jjcabrera: here is a program that works with the DF-Robot LCD shield.

0 Likes
YoDe_1666546
Level 1
Level 1
First question asked First reply posted First like received

hello, i cant use this library psoc creator 4.1 show me this error The instance 'Cntl_Port', of component CyControlReg_v1_70, contains an error. Unable to locate and customize component 'CyControlReg_v1_70' used in schematic 'G:\Descargas\CharLCDmp_Demo31\CharLCDmp_Demo3\CharLCDmpLib.cylib\CharLCDmp_v1_1\CharLCDmp_v1_1.cysch'. can some one help me to fix this i try updating the components but i cant fix it

Anonymous
Not applicable

did you solve this problem?

0 Likes
Anonymous
Not applicable

Hello.

had same problem, use Creator 4.0 and it will working.

0 Likes
lock attach
Attachments are accessible only for community members.

I updated the component so that it should work fine with PSoC Creator 4.1 or 4.2.  The older version of the Control register was removed in Creator 4.1 so that is why it broke.  Let me know if the attached library works OK for you.

Mark

0 Likes
lock attach
Attachments are accessible only for community members.
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

Hi,

In the following topic, a problem was reported with the CharLCDmp_v1.4 and PSoC Creator v4.2

Re: #define 'variable' grayed out in c code

And I found this topic and I assumed that this topic is the source of "CharLCDmp".

I replaced v1.4 with v1.5 and got 33 errors as in the v1.5 the names were still CharLCDmp_v1_4.

So I replaced all "CharLCDmp_v1_4" with "CharLCDmp_v1_5" and the querist's project could be built.

Attached is my modification to the v1.5.

moto