Byvac 192x64 Graphic LCD with BV4613 controller.

StigOfTheDump

Senior Member
Hi, I bought this display about 3 years ago but have only just got around to trying it. In serial mode I cannot get past the "waiting for CR" message. In i2c mode I cannot get past the "i2c mode ready" message.

I have tried with serout
Code:
Main:
Pause 500

Serout C.0, N2400, ("CR")
Pause 50
Serout C.0, N2400, (13)
Pause 50
Serout C.0, N2400, (#13)
Pause 50
Serout C.0, N2400, (0x0d)
Pause 50
Serout C.0, N2400, ($0d)
Pause 50
Serout C.0, N2400, (0x1b,0x0d)
Pause 50
hserout
Code:
Main:

	Hsersetup B9600_4,%00
	Hserout 0,(0x1b,0x0d)
	Pause 100
	Hserout 0,($0d)
	Pause 100
	Hserout 0,(13)
	Pause 100
	Hserout 0,(#13)
	Pause 100
	Hserout 0,("CR")
	Pause 100
and i2c
Code:
'Move the cursor position to line 4 column 27

Main:

Hi2csetup i2cmaster,0x64,i2cslow,i2cbyte

#rem
Hi2cout 0,(0)
Hi2cout 0,(0x64)
Hi2cout 0,(0x27)
Hi2cout 0,(0x91)
Hi2cout 0,(0x34)
Hi2cout 0,(0x59)
Hi2cout 0,(0x32)
Hi2cout 0,(0x37)
Hi2cout 0,(0x72)
Hi2cout 0,(0)
#endrem

Hi2cout 0,(0x1b)
Hi2cout 0,(0x64)
Hi2cout 0,("27")
Hi2cout 0,("91")
Hi2cout 0,("34")
Hi2cout 0,("59")
Hi2cout 0,("32")
Hi2cout 0,("37")
Hi2cout 0,("72")
Hi2cout 0,(0x1b)

'SAMPLE CODE FROM DATASHEET

#rem
void i2c_pos()
{
i2c_start(); // send start condition
i2c_send(0x64); // send i2c address with
write set
i2c_send(27); // esc
i2c_send(91); // [
i2c_send(34); // 4
i2c_send(59); // ;
i2c_send(32); // 2
i2c_send(37); // 7
i2c_send(72); // H
i2c_stop(); // stop condition
#endrem
I have asked on the Byvac forum, but they don't have any picaxe code. They did offer to send a new controller, but I think I just need to program it correctly.

Has anyone had any experience with this combination, and have any known good code to get me started? I am sure I am just getting the syntax wrong.

BV4613 http://www.byvac.co.uk/downloads/datasheets/BV4613%20DataSheet.pdf

Display http://www.ebay.co.uk/itm/192x64-LCD-Graphic-Display-Module-/110617585845?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item19c15268b5

I am currently using 20M2 on breadboard and have 4k7 pullups on the SDA and SCL lines

Thanks
 
Last edited:

premelec

Senior Member
I don't know if it will help you any but CR is a reserved word .... but looks like you might know that... :-0
 

AllyCat

Senior Member
Hi,

I've no information on that particular display/controller but most of the "trials" above are unlikley to work. And "bad" characters/commands might lock up the display and then cause valid data to be ignored.

Using " " or # (with ASCII code numbers) or x (for hexadecimal format) probably won't give the desired results with PICaxe Basic. You should simply use the ASCII numbers separated by commas (or letters inside " ") within the brackets of the Serial command(s). $0D, 13 or CR (reserved word, NOT the same as "CR") all represent the same ASCII code ("Carriage Return").

It might be necessary to use both CR and/or LF ("Linefeed" = $0A or 10) in a particular sequence, and then any test characters should be in the form of either "ABC" or 65, 66, 67, etc..

Cheers, Alan.
 

hippy

Ex-Staff (retired)
I would have guessed "Waiting for CR" meant the single byte that represents CR. And in the manual we find ...

By default the Baud rate is determined by the first character received which MUST be a CR (carriage return) byte value 13 or 0x0d.
http://www.byvac.co.uk/downloads/datasheets/BV4613 DataSheet.pdf

So simply start with -

SerOut pin, baud, ( CR )

Or replace CR with 13, 0x0D, $0D or %00001101

Also ...

The idle state is high
So set the pin used for serial output high to start then use a Txxxx baud rate.
 

hippy

Ex-Staff (retired)
Also, for I2C the code would seem to be ...

HI2cSetup I2CMASTER, $64, I2CSLOW, I2CBYTE
HI2cOut (27) ; esc
HI2cOut (91) ; [
HI2cOut (34) ; 4
HI2cOut (59) ; ;
HI2cOut (32) ; 2
HI2cOut (37) ; 7
HI2cOut (72) ; H

Or even ...

Symbol ESC = 27
HI2cSetup I2CMASTER, $64, I2CSLOW, I2CBYTE
HI2cOut ( ESC, "[4;27H" )

However ...

clock stretching is essential and the master must provide this.
Off-hand I do not recall if all/any PICAXE supports clock-stretching.
 

neiltechspec

Senior Member
I played about with one of his (byvac) serial 20X4 LCD displays a while ago.

The only way I could get it to work was with, Serout C.0, T9600,(13). It needed to see a <cr> 1st to recognise the baudrate.

I actually wasn't that impressed with the small incoming buffer size and it getting screwed up easily very regularly.

So ended up removing the driver board & using the LCD with an 18M2 containing axe133 code.

Neil.
 

StigOfTheDump

Senior Member
Thanks chaps

I established communication once (just now) with serial but cannot repeat it. Squeezing my ribbon cable makes the display go dimmer so I am changing that now. Having succeeded once it must be a wiring issue.
 

StigOfTheDump

Senior Member
All sorted now in both serial (hserout only, serout seems to scramble about 25% of characters) and i2c. Partly faulty ribbon cable and partly faulty syntax.

Serial Code
Code:
[color=Black]Main:[/color]
[color=Blue]Pause [/color][color=Navy]1000[/color]

[color=Blue]Hsersetup B9600_4[/color][color=Black],[/color][color=Navy]%00[/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue](CR)                            [/color][color=Green]'establish comms[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$5b[/color][color=Black],[/color][color=Navy]$32[/color][color=Black],[/color][color=Navy]$4a[/color][color=Blue])               [/color][color=Green]'CLS  [/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$28[/color][color=Black],[/color][color=Navy]$33[/color][color=Blue])                   [/color][color=Green]'big font (size 3)[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Red]"Send message"[/color][color=Blue])                [/color][color=Green]'text[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue](CR)                            [/color][color=Green]'carriage return[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      
'can use hex or ascii code[/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]( [/color][color=Navy]27 [/color][color=Black],[/color][color=Navy]91 [/color][color=Black],[/color][color=Navy]50 [/color][color=Black],[/color][color=Navy]59 [/color][color=Black],[/color][color=Navy]50[/color][color=Black], [/color][color=Navy]72[/color][color=Blue])       [/color][color=Green]'move cursor   [/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$5b[/color][color=Black],[/color][color=Navy]$49[/color][color=Blue])                   [/color][color=Green]'invert colours[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Red]"Message delivered!"[/color][color=Blue])          [/color][color=Green]'blue on white text[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$5b[/color][color=Black],[/color][color=Navy]$49[/color][color=Blue])                   [/color][color=Green]'un-invert colours (same code)[/color]
[color=Blue]Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time
      
'Draw rectangle  (esc   {  x1  x1   ,  y1  y1   ,  x2  x2  x2   ,  y2  y2   R)
'at coordinates  (esc   {   0   7   ,   2   2   ,   1   7   0   ,   5   5   R)[/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],       [/color][color=Blue]([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$7b[/color][color=Black],[/color][color=Navy]$30[/color][color=Black],[/color][color=Navy]$37[/color][color=Black],[/color][color=Navy]$2c[/color][color=Black],[/color][color=Navy]$32[/color][color=Black],[/color][color=Navy]$32[/color][color=Black],[/color][color=Navy]$2c[/color][color=Black],[/color][color=Navy]$31[/color][color=Black],[/color][color=Navy]$37[/color][color=Black],[/color][color=Navy]$30[/color][color=Black],[/color][color=Navy]$2c[/color][color=Black],[/color][color=Navy]$35[/color][color=Black],[/color][color=Navy]$35[/color][color=Black],[/color][color=Navy]$52[/color][color=Blue])
Pause [/color][color=Navy]1000                                [/color][color=Green]'viewing time

'Draw filled rectangle slightly smaller            change last character to F
'with ascii code (esc   {   1   0   ,   2   5   ,   1   6   8   ,   5   3   F) [/color]
[color=Blue]Hserout [/color][color=Navy]0[/color][color=Black],       [/color][color=Blue]( [/color][color=Navy]27[/color][color=Black],[/color][color=Navy]123[/color][color=Black], [/color][color=Navy]49[/color][color=Black], [/color][color=Navy]48[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]50[/color][color=Black], [/color][color=Navy]53[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]49[/color][color=Black], [/color][color=Navy]54[/color][color=Black], [/color][color=Navy]55[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]53[/color][color=Black], [/color][color=Navy]51[/color][color=Black], [/color][color=Navy]70[/color][color=Blue])
Pause [/color][color=Navy]500                                 [/color][color=Green]'viewing time[/color]
i2c code next post
 
Last edited:

StigOfTheDump

Senior Member
continued

i2c Code
Code:
[color=Blue]pause [/color][color=Navy]1000[/color]
[color=Black]Main:

  [/color][color=Blue]Hi2csetup i2cmaster[/color][color=Black],[/color][color=Navy]0x64[/color][color=Black],[/color][color=Blue]i2cslow[/color][color=Black],[/color][color=Blue]i2cbyte
pause [/color][color=Navy]1000[/color]

[color=Blue]HI2cOut ([/color][color=Red]"Before CLS"[/color][color=Blue])
pause [/color][color=Navy]1000[/color]

[color=Green]'Clear screen
 [/color][color=Blue]HI2cOut ([/color][color=Navy]$1b[/color][color=Blue]) [/color][color=Green]; esc
 [/color][color=Blue]HI2cOut ([/color][color=Navy]$5b[/color][color=Blue]) [/color][color=Green][PLAIN]; [[/PLAIN]
 [/color][color=Blue]HI2cOut ([/color][color=Navy]$32[/color][color=Blue]) [/color][color=Green]; 2
 [/color][color=Blue]HI2cOut ([/color][color=Navy]$4a[/color][color=Blue]) [/color][color=Green]; J[/color]
[color=Blue]Pause [/color][color=Navy]1000[/color]

[color=Blue]HI2cOut ([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$5b[/color][color=Black],[/color][color=Navy]$3f[/color][color=Black],[/color][color=Navy]$32[/color][color=Black],[/color][color=Navy]$35[/color][color=Black],[/color][color=Navy]$49[/color][color=Blue])   [/color][color=Green]'Hide cursor[/color]
[color=Blue]pause [/color][color=Navy]20[/color]

[color=Blue]HI2cOut ([/color][color=Red]"After CLS"[/color][color=Blue])
pause [/color][color=Navy]1000[/color]

[color=Green]'Move cursor
'HI2cOut ($1b,$5b,$32,$3b,$31,$35,$48) can use hex or ascii code
 [/color][color=Blue]HI2cOut ( [/color][color=Navy]27 [/color][color=Black],[/color][color=Navy]91 [/color][color=Black],[/color][color=Navy]50 [/color][color=Black],[/color][color=Navy]59 [/color][color=Black],[/color][color=Navy]49[/color][color=Black], [/color][color=Navy]53[/color][color=Black],[/color][color=Navy]72[/color][color=Blue])     
pause [/color][color=Navy]1000

 [/color][color=Blue]HI2cOut ([/color][color=Red]"After move 2-15"[/color][color=Blue])
pause [/color][color=Navy]1000

 [/color][color=Blue]HI2cOut (CR)
pause [/color][color=Navy]1000[/color]

[color=Purple]b1[/color][color=DarkCyan]=[/color][color=Navy]$2a
 [/color][color=Blue]HI2cOut ([/color][color=Red]"b1 is an asterisk "[/color][color=Black],[/color][color=Purple]b1[/color][color=Blue])  [/color][color=Green];Write value of variable b1[/color]
[color=Blue]pause [/color][color=Navy]1000[/color]

[color=Green]'Draw rectangle
'Coords  (esc   {   3   2   ,   3   6   ,   1   1   1   ,   4   5   R)
'HI2cOut ($1b,$7b,$33,$32,$2c,$33,$36,$2c,$31,$31,$31,$2c,$34,$35,$46)
 [/color][color=Blue]HI2cOut ( [/color][color=Navy]27[/color][color=Black],[/color][color=Navy]123[/color][color=Black], [/color][color=Navy]51[/color][color=Black], [/color][color=Navy]50[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]51[/color][color=Black], [/color][color=Navy]54[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]49[/color][color=Black], [/color][color=Navy]49[/color][color=Black], [/color][color=Navy]49[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]52[/color][color=Black], [/color][color=Navy]53[/color][color=Black], [/color][color=Navy]82[/color][color=Blue])
Pause [/color][color=Navy]1000[/color]

[color=Green]'Draw filled rectangle
 [/color][color=Blue]HI2cOut ( [/color][color=Navy]27[/color][color=Black],[/color][color=Navy]123[/color][color=Black], [/color][color=Navy]51[/color][color=Black], [/color][color=Navy]53[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]51[/color][color=Black], [/color][color=Navy]57[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]49[/color][color=Black], [/color][color=Navy]48[/color][color=Black], [/color][color=Navy]56[/color][color=Black], [/color][color=Navy]44[/color][color=Black], [/color][color=Navy]52[/color][color=Black], [/color][color=Navy]51[/color][color=Black], [/color][color=Navy]70[/color][color=Blue])
pause [/color][color=Navy]1000

 [/color][color=Blue]HI2cOut (CR)
pause [/color][color=Navy]20

  [/color][color=Blue]HI2cOut ([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$5b[/color][color=Black],[/color][color=Navy]$49[/color][color=Blue])             [/color][color=Green]'invert colours[/color]
[color=Blue]pause [/color][color=Navy]20

 [/color][color=Blue]HI2cOut ([/color][color=Red]" thats all folks!! "[/color][color=Blue])
Pause [/color][color=Navy]20

  [/color][color=Blue]HI2cOut ([/color][color=Navy]$1b[/color][color=Black],[/color][color=Navy]$5b[/color][color=Black],[/color][color=Navy]$49[/color][color=Blue])             [/color][color=Green]'un-invert colours[/color]
[color=Blue]pause [/color][color=Navy]20[/color]
 

Buzby

Senior Member
I played about with one of his (byvac) serial ... LCD displays a while ago.

... It needed to see a <cr> 1st to recognise the baudrate.

I actually wasn't that impressed with the small incoming buffer size and it getting screwed up easily very regularly.
I wasn't impressed with this device either. The '<cr> as 1st byte auto-baud' caused no end of problems at powerup, and it lost comms sync frequently.
I'd much rather it had a default fixed rate, with the option to change and save later.
 

StigOfTheDump

Senior Member
I'd much rather it had a default fixed rate, with the option to change and save later.
Once you have it up and running you can fix the baud rate. I would have preferred it preset, but I suppose he doesn't know what the end users range of baud rates will be.

The Baud rate will be set (fixed) to the current Baud rate so that when the device is next switched on
or reset the new Baud rate will be in effect, by-passing the Auto Baud mechanism.
NOTE: the write EEPROM command must be used after this command in order for it to take effect on
the next reset.
Example:
esc[?29a esc?[27D
This will fix the Baud rate to the current rate.
I have not tried it but think there maybe a typo in the datasheet. It maybe should read
esc[?29b (set rate) NOTE (esc[?29a is the code for auto baud rate)
esc?[27D (write EEPROM)
 
Top