SEROUT not LCDOUT ?
Hi!
I have a OLED display from another microcontroller and all is working fine, but is there a way to clear the screen with SEROUT? It is connecting to my BS2 with 1 wire (on pin 0) and the ground and 5V. Also, why wouldn't I be able to use LCDOUT on the BS2, it says it needs at least a BS2p?
Thanks!
Michael
I have a OLED display from another microcontroller and all is working fine, but is there a way to clear the screen with SEROUT? It is connecting to my BS2 with 1 wire (on pin 0) and the ground and 5V. Also, why wouldn't I be able to use LCDOUT on the BS2, it says it needs at least a BS2p?
Thanks!
Michael

Comments
If so, that is a serial device not a standard Hitachi 44780 parallel LCD. The BASIC Stamp LCDOUT command is for use with parallel displays.
You need to use serout with a serial LCD and various serial LCD displays have different command sets.
The AXE133 uses an ascii 254 followed by a an ascii 1 and a 30 millisecond pause - see page 3 http://www.picaxe.com/docs/axe133.pdf
Yes! It is the PICAXE AXE133Y OLED! How did you know?! Anyways, I type this code into my editor and upload it to the BS2, but, no success: any idea why?
Thanks!
Michael
Because I am a member of the PICAXE forum also.
The test code in the AXE133Y manual is
The N2400 in the PICAXE code means inverted 2400 baud and the16780 in the BS2 code also is correct for inverted 2400 baud.
Maybe you need to insert a PAUSE 500 like the example. I that doesn't try 396 for True serial rather than inverted...
I've tried with both baud rates...
If you program the 18M2 you are overlaying the program code used to drive the LCD!! Did they provide you with the code orginally loaded to the 18M2?
Do you have the original code which was loaded onto the PICAXE when you received it?
; AXE133 Serial LCD/OLED using PICAXE-18M2; Emulates basic serial operation of the popular AXE033 module ; CPS, May 2011 ; Supported Commands ; 0-252 normal ASCII characters ; 253, X display 16 character pre-saved message from EEPROM memory, X can be 0-15 ; 254, X LCD command, X can be 0 to 255 ; 255, X control outputs C.2, C.1, C.0 (via lower 3 bits of X) ; So, if using a backlit LCD with the active low transistor driver ; on output C.2, then 255,%000 switches backlight on and 255,%100 switches off #picaxe 18M2 #define use_welcome ; display the welcome message upon power up #define use_OLED ; enable this line for Winstar OLED modules symbol line_length = 16 ; change to 20 for displays with 20 character lines symbol baud = N2400_16 ; Serial baud rate 2400,N,8,1. Note main program runs at 16MHz symbol spare0 = C.0 ; spare output 0 symbol spare1 = C.1 ; spare output 1 symbol spare2 = C.2 ; spare output 2 (or optional backlight) symbol backlight = C.2 ; optional backlight control for backlit LCDs, active low symbol RX = C.5 ; serial receive pin symbol enable = C.6 ; LCD enable symbol rs = C.7 ; LCD RS ; LCD data pins are on B.0 to B.7 ; Store the 16 character user defined messages in EEPROM data memory ; First two messages are optionally used as welcome message ; If using a display with 20 characters you will need to edit ; the start addresses to be multiples of 20 (currently at 16) ; and add 4 characters to each message. ; Please remember 4 line displays always use the strange 1-3-2-4 layout. #ifdef use_OLED EEPROM $00, (" Serial OLED ") ; store msg in the EEPROM memory #else EEPROM $00, (" Serial LCD ") ; store msg in the EEPROM memory #endif EEPROM $10, (" www.picaxe.com ") ; store msg in the EEPROM memory EEPROM $20, ("This is msg 2 ") ; store msg in the EEPROM memory EEPROM $30, ("This is msg 3 ") ; store msg in the EEPROM memory EEPROM $40, ("This is msg 4 ") ; store msg in the EEPROM memory EEPROM $50, ("This is msg 5 ") ; store msg in the EEPROM memory EEPROM $60, ("This is msg 6 ") ; store msg in the EEPROM memory EEPROM $70, ("This is msg 7 ") ; store msg in the EEPROM memory EEPROM $80, ("This is msg 8 ") ; store msg in the EEPROM memory EEPROM $90, ("This is msg 9 ") ; store msg in the EEPROM memory EEPROM $A0, ("This is msg 10 ") ; store msg in the EEPROM memory EEPROM $B0, ("This is msg 11 ") ; store msg in the EEPROM memory EEPROM $C0, ("This is msg 12 ") ; store msg in the EEPROM memory EEPROM $D0, ("This is msg 13 ") ; store msg in the EEPROM memory EEPROM $E0, ("This is msg 14 ") ; store msg in the EEPROM memory EEPROM $F0, ("This is msg 15 ") ; store msg in the EEPROM memory ;initialise LCD init: gosub LCD_init ; initialise LCD ; display welcome message if desired #ifdef use_welcome let b1 = 0 ; message 0 on top line gosub msg ; do it low rs ; command mode let pinsB = 192 ; move to line 2, instruction 192 pulsout enable,1 ; pulse the enable pin to send data. high rs ; character mode again let b1 = 1 ; message 1 on bottom line gosub msg ; do it #endif ; main program loop, runs at 16MHz main: serin RX,baud,b1 ; wait for the next byte ; NB keep character mode test as first item in this list to optimise speed if b1 < 253 then let pinsB = b1 ; output the data pulsout enable,1 ; pulse the enable pin to send data. goto main ; quickly loop back to top else if b1 = 254 then low rs ; change to command mode for next character serin RX,baud,b1 ; wait for the command byte let pinsB = b1 ; output the data pulsout enable,1 ; pulse the enable pin to send data. high rs ; back to character mode goto main ; quickly loop back to top else if b1 = 253 then serin RX,baud,b1 ; wait for the next byte gosub msg ; do the 16 character message goto main ; back to top else ; must be 255 serin RX,baud,b1 ; wait for the next byte let pinsC = b1 & %00000111 | %10000000 ; output the data on C.0 to C.1, keep RS high goto main ; back to top end if ; power on LCD initialisation sub routine LCD_init: let dirsC = %11000111 ; PortC 0,1,2,6,7 all outputs let dirsB = %11111111 ; PortB all outputs #ifdef use_OLED ; Winstar OLED Module Initialisation ; according to WS0010 datasheet (8 bit mode) pause 500 ; Power stabilistation = 500ms ; Function set - select only one of these character table modes ;let pinsB = %00111000 ; 8 bit, 2 line, 5x8 , English_Japanese table let pinsB = %00111001 ; 8 bit, 2 line, 5x8 , Western_European table1 ;let pinsB = %00111010 ; 8 bit, 2 line, 5x8 , English_Russian table ;let pinsB = %00111001 ; 8 bit, 2 line, 5x8 , Western_European table2 pulsout enable,1 ; let pinsB = %00001100 ; Display on, no cursor, no blink pulsout enable,1 let pinsB = %00000001 ; Display Clear pulsout enable,1 pause 7 ; Allow 6.2ms to clear display setfreq m16 ; now change to 16Mhz let pinsB = %00000010 ; Return Home pulsout enable,1 let pinsB = %00000110 ; Entry Mode, ID=1, SH=0 pulsout enable, 1 #else ; Standard LCD Module Initialisation pause 15 ; Wait 15ms for LCD to reset. let pinsB = %00110000 ; 8 bit, 2 line pulsout enable,1 ; Send data by pulsing enable pause 5 ; Wait 5 ms pulsout enable,1 ; Send data 48 again pulsout enable,1 ; Send data 48 again setfreq m16 ; now change to 16Mhz let pinsB = %00111000 ; LCD - 8 bit, 2 line, 5x8 pulsout enable,1 let pinsB = %00000001 ; Clear Display pulsout enable,1 pause 8 ; 8 = 2ms at 16MHz let pinsB = %00000010 ; return home pulsout enable,1 let pinsB = %00000011 ; Entry mode pulsout enable,1 let pinsB = %00001100 ; Display on, no cursor, no blink pulsout enable,1 #endif high rs ; Leave in character mode return ; display message from EEPROM sub routine ; message number 0-15 must be in b1 when called ; uses (alters) b1, b2, b3, b4 msg: let b2 = b1 & %00001111 * line_length ; EEPROM start address is 0 to 15 multiplied by 16 let b3 = b2 + line_length - 1 ; end address is start address + (line_length - 1) for b4 = b2 to b3 ; for 16 times read b4,b1 ; read next character into b1 let pinsB = b1 ; output the data pulsout enable,1 ; pulse the enable pin to send data. next b4 ; next loop returnWhat BS2 board are you using? (e.g Board of Education, Carrier Board, HomeWork Board, Professional Development board. etc).
It doesn't even work wehen I connect it to direst power, not through the Board of Education...
So you have the display V+ and ground connected to the Board of Education 5V+ and ground and the display "IN" wire connected to pin 0 on the BS2 - right?
If so, I don't know what else to try. Did you ever test the display with a serial connection to second PICAXE chip (not the 18M2 on the display board)?
What did you mean you connected it to direct power - batteries (nothing greater that 5 volts I hope)
If you hooked it up to the Board of Education VIN connection instead of the 5V, you might have burned it out (the display and/or 18M2).
I have several serial LCD modules - they all use control codes to clear the screen, control and place the cursor, etc, etc.
I like NewHaven displays but be careful - some "serial" displays are SPI not RS232.
Not sure where you bought your AXE133Y but PHANDERSON http://www.phanderson.com/picaxe/ sells them.
Do you know if this screen comes with some sort of backpack like on the 133Y? http://www.parallax.com/StoreSearchResults/tabid/768/List/0/SortField/4/ProductID/52/Default.aspx
Just go to that link and scroll down to find the docs link...
Looks like I will be ordering a couple of those! Especilly since they have a backpack, with a peizo!!!