AXE132 - Predefined messages problem

smeagol

Member
I'm trying to use an AXE132 with predefined messages. The Display is a standard 4x20 LCD off the bay.

I've changed the AXE134 program downloaded from rev-ed'

revision:
Code:
[color=Green]; AXE134 Serial 20x4 OLED using PICAXE-18M2
; Emulates basic serial operation of the popular AXE033 module
; CPS, May 2011
; JB,  Jan 2012[/color]
All I've changed are the predefined messages:
Code:
[color=Blue]EEPROM  [/color][color=Navy]00[/color][color=Black], [/color][color=Blue]([/color][color=Red]"Message 0 1234567890"[/color][color=Blue])      [/color][color=Green]; store msg 0 in the EEPROM memory[/color]
[color=Blue]EEPROM  [/color][color=Navy]20[/color][color=Black], [/color][color=Blue]([/color][color=Red]"Message 1 1234567890"[/color][color=Blue])      [/color][color=Green]; store msg 1 in the EEPROM memory[/color]
[color=Blue]EEPROM  [/color][color=Navy]40[/color][color=Black], [/color][color=Blue]([/color][color=Red]"Message 2 1234567890"[/color][color=Blue])      [/color][color=Green]; store msg 2 in the EEPROM memory[/color]
[color=Blue]EEPROM  [/color][color=Navy]60[/color][color=Black], [/color][color=Blue]([/color][color=Red]"Message 3 1234567890"[/color][color=Blue])      [/color][color=Green]; store msg 3 in the EEPROM memory[/color]
My code:
Code:
[color=Navy]#picaxe [/color][color=Black]20x2[/color]

[color=Blue]setfreq m8

pause [/color][color=Navy]1000              [/color][color=Green];Wait for LCD to initialise[/color]

[color=Blue]symbol LCDSerial [/color][color=DarkCyan]= [/color][color=Blue]c.7
symbol LCDBacklight [/color][color=DarkCyan]= [/color][color=Blue]c.5

SYMBOL lcdcommand [/color][color=DarkCyan]= [/color][color=Navy]$FE             [/color][color=Green]; = 254 - send this before following commands[/color]
[color=Blue]symbol lcdmessage [/color][color=DarkCyan]= [/color][color=Navy]253             [/color][color=Green]; Display message stored on AXE133[/color]
[color=Blue]SYMBOL lcdclear [/color][color=DarkCyan]= [/color][color=Navy]$01               [/color][color=Green]; clear screen and cursor to home position[/color]
[color=Blue]SYMBOL lcdline1 [/color][color=DarkCyan]= [/color][color=Navy]128               [/color][color=Green]; move to 1st line 1st character[/color]
[color=Blue]SYMBOL lcdline2 [/color][color=DarkCyan]= [/color][color=Navy]192               [/color][color=Green]; move to 2nd line 1st character[/color]
[color=Blue]SYMBOL lcdline3 [/color][color=DarkCyan]= [/color][color=Navy]148               [/color][color=Green]; move to start of 3rd line[/color]
[color=Blue]SYMBOL lcdline4 [/color][color=DarkCyan]= [/color][color=Navy]212               [/color][color=Green]; move to start of 4th line[/color]

[color=Blue]symbol baudmode [/color][color=DarkCyan]= [/color][color=Blue]n2400             [/color][color=Green]; Serial speed for LCD[/color]

[color=Blue]symbol [/color][color=Purple]Brightness [/color][color=DarkCyan]= [/color][color=Purple]w4              [/color][color=Green];Define symbol to control PWM Duty

;Setup input and Outpit pins[/color]
[color=Blue]let [/color][color=Purple]dirsb [/color][color=DarkCyan]= [/color][color=Navy]%11111111               [/color][color=Green];Set Input or Output on B (All Outputs)[/color]
[color=Blue]let [/color][color=Purple]dirsc [/color][color=DarkCyan]= [/color][color=Navy]%10100001               [/color][color=Green];Set Input or Output on C (All I/P except)
                                    ;C.5 O/P (Backlight PWM)
                                    ;C.7 O/P (Serial to LCD)[/color]

[color=Purple]Brightness [/color][color=DarkCyan]= [/color][color=Navy]500                    [/color][color=Green];Set PWM Duty initial value (500 = 50%
                                    ;1000 = 100%)

;PWM Backlight[/color]
[color=Blue]pwmout LCDBacklight[/color][color=Black],[/color][color=Navy]249[/color][color=Black],[/color][color=Purple]brightness                    [/color][color=Green];Turn on LCD Backlight
;Amend this to allow saving to EEPROM

      [/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdcommand[/color][color=Black],[/color][color=Blue]lcdclear)           [/color][color=Green];Clear display[/color]

[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdcommand[/color][color=Black],[/color][color=Blue]lcdline1)           [/color][color=Green];Position set to LCD Line 1[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdmessage[/color][color=Black],[/color][color=Navy]0[/color][color=Blue])                  [/color][color=Green];Displayed saved message 0[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdcommand[/color][color=Black],[/color][color=Blue]lcdline2)           [/color][color=Green];Position set to LCD Line 2[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdmessage[/color][color=Black],[/color][color=Navy]1[/color][color=Blue])                  [/color][color=Green];Displayed saved message 1[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdcommand[/color][color=Black],[/color][color=Blue]lcdline3)           [/color][color=Green];Position set to LCD Line 3[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdmessage[/color][color=Black],[/color][color=Navy]2[/color][color=Blue])                  [/color][color=Green];Displayed saved message 2[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdcommand[/color][color=Black],[/color][color=Blue]lcdline4)           [/color][color=Green];Position set to LCD Line 4[/color]
[color=Blue]serout LCDSerial[/color][color=Black], [/color][color=Blue]baudmode[/color][color=Black], [/color][color=Blue](lcdmessage[/color][color=Black],[/color][color=Navy]3[/color][color=Blue])                  [/color][color=Green];Displayed saved message 3[/color]

[color=Black]main:
      [/color][color=Blue]goto [/color][color=Black]main[/color]
When I run this I get Line 1 displaying correctly but then the display is corrupted:
IMG_20150526_130431922.jpg

If I only display 1 line, i.e. comment out the other 3 display lines each line displays correctly on it's own.

If I send text lines to the LCD, not using predefined messages, everything displays correctly. So I'm sure it's not an incompatible LCD.

Any ideas?

Cheers
 

hippy

Technical Support
Staff member
It takes some time to copy the messages from the AXE132 EEPROM to the display so you will need to add PAUSE commands after the SEROUT commands which initiate the display of an EEPROM message.
 
Top