Simpele VFD met rs232, Pic18F2550

Hallo

Ik heb laatst uit mijn oude Medion PC een VFD gehaald (M18ST05A).
Een DataSheet heb ik hiervoor niet gevonden, wel dit.
http://www.hit-karlsruhe.de/aol2mime/medion_md_8800_vfd.htm

Hieruit lijd ik af, dat hij op een TTL niveau moet worden gevoed.
Maar als ik deze aansluit op mijn (soort van) Open source bordje
(18F2550) en ik programmeer dit met de PicKit2, dan komen er hier wel random karakters op.

is dit dan echt op een TTL niveau gevoed (MAX232 nodig).
of zou ik het normaal wel van de Pic kunnen sturen?

ook heb ik geprobeerd om met MikroC een simpel "Software UART"
Programma te schrijven, om dit VFD te sturen, maar dit werkt dus niet.

c code:

/* Declair variable */
char i, error, byte_read, Data;

/*Start Program*/
void main() {
TRISB = TRISB & 0b11111111;                       //set: B as Output
TRISC = 0b10000001;                               //Set: RX as Input, TX as Output, PB1 = PORTC_BIT0

PORTB = 0b11110000;                               //Show on port B "Start up Software"
delay_ms (1000);

error = Soft_UART_Init(PORTC, 7, 6, 9600, 0);     //Initialize UART
Delay_ms (100);
if (error = 0)                                    //Baud Rate OK, Show on port B
{PORTB = 0b0001000;}
else if (error = 1)                               //Baud Rate to high, Show on port B
{PORTB = 0b0010000;}
else if (error = 2)                               //Baud Rate To low, Show on port B
{PORTB = 0b0100000;}
Delay_ms(1000);

PORTB = 0b11110000;                               //Show on port B "Going to next step"
Delay_ms (1000);

while (1)
{
 if (PORTC & 0b00000001)                          //Is PB1 Active?
 {
  while (PORTC & 0b00000001)                      //PB1 is NOT active, Show on port B "PB1 not active"
  {
  PORTB = 0b10000000;
  Delay_ms (200);
  PORTB = 0b01000000;
  Delay_ms (200);
  }
 }
 else                                             //PB1 is Active, Show on port B "PB1 is Active", Send DataRow to VFD
 {
  do
  {
   PORTB = 0b01000000;
   Soft_UART_Write(0x1B);
   Soft_UART_Write(0x30);
   Soft_UART_Write(10);
   Soft_UART_Write(3);
   Delay_ms (2000);
  }
  while (PORTC & 0b00000001 != 1);

 }
 }
}

De DataRow wijst op de verschillende stappen die ik moest doen, van bovenstaande site, om iets op het display te laten verschijnen.

Arco

Special Member

Er staat dat het display op de COM2 connector van de PC zat, dus RS232 levels. Was 9600 baud.

"9600,N,8,1": 9600 baud, keine Parität (None), 8 Datenbits, 1 Stopbit

Op TTL level heb je juist geen MAX232 nodig... (En in dit geval dus wel, om het signaal weer terug te zetten van RS232 naar TTL)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Oh Bedankt, ik heb me inderdaad zwaar vergist.
is het mogelijk om de µc zo te programmeren/Configureren dat hij wel op TTL niveau stuurt. of misschien andere pinnen gebruiken?
of is het best gewoon een MAX232 te gebruiken?

Zou dan daarmee dit programma moeten werken, of zitten er hier op het eerste zicht al fouten in?

Arco

Special Member

Zonder een MAX232 gaat dat niet, want bij TTL is "1"(5V) en "0"(0V). RS232 werkt met 'negative logic', daarbij is "1"(-12V) en "0"(+12V)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Oke dan zal ik er gewoon zo eentje tussen plaatsen :)

Ik heb dit aangesloten, maar er gebeurd niets met het scherm.
als ik de TX/RX van het scherm even uit en in steek, komt er wel altijd een random teken op.

Henry S.

Moderator

Heb je converters op de VFD print, zoniet, dan kan de communicatie wel eens op TTL nivo werken... Waar lopen de TX en RX lijnen naar toe?

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.
Arco

Special Member

In de link boven staat: "Das Display an der Frontseite des MD8800 ist an den internen COM2 des MS-7204 angeschlossen"
Dus als het op de MB connector van COM2 zit, is het RS232...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Henry S.

Moderator

Maar ook:

vermutlich TTL-Pegel statt RS232-Pegel, da kein Pegelwandler auf der Platine sitzt (für den Anschluss an einem Standard-COM-Port muss also ein MAX232 zwischengeschaltet werden bzw. für USB z.B. ein FT232)

Volgens de auteur zit er geen RS232 converter op.

Maar ik zou het liever zeker willen weten dan blijven gokken. Bij VFD's kan je van alles verwachten, RS232, TTL, zelfs een parallele poort.

[Bericht gewijzigd door Henry S. op donderdag 6 maart 2014 19:33:43 (10%)

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.
Arco

Special Member

Schema van het moederboard staat op Elektrotanya...
VFD zit niet aan COM2, maar aan een 4 pins connector eigenlijk bedoeld voor IrDA. Zit direct aan W83627 super i/o chip, dus geen RS232 maar gewoon TTL.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Jha ik denk het ook, ook heb ik nog dit gevonden.
http://translate.google.be/translate?hl=nl&sl=pl&u=http://en.elektroda…
ik ga het zo eens proberen aansluiten.

Jha met mijn programma werkt dit ook niet.
wel als ik mijn µC programmeer, komen er weer random karakters op het display. Dan zal het wel aan mijn programma of configuratie van de µC liggen.

Jha, Succes, Ik moest blijkbaar niet de Software_UART gebruiken.
Maar in plaats daar van, de gewone UART.

Ik kan "Hello world" op het scherm laten verschijnen.
Maar heeft iemand enig idee hoe ik die een van die functies moet uitvoeren?bvb "0x1B 0x30 8 3 - VCR: REC"

wat ik er uit versta is:
UART1_Write(0xb1);
Delay_ms(10);
UART1_Write(0x30);
Delay_ms(10);
UART1_Write(8);
Delay_ms(10);
UART1_Write(3);

Maar dit schijnt niet te werken.

Heeft iemand een idee of suggestie?

Arco

Special Member

Waarom heb je "0x1B' omgekeerd? ( Uart1_Write(0xb1) )

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Jha dat was dus domweg het probleem, wat is de "aangeraden" delay nodig tussen deze vier stappen, of tussen 2 verschillen Complete instructies, moet ik dit berekenen aan de hand van de baudrate?

Arco

Special Member

Tussen 2 writes kun je de functie ' Uart1_Tx_Idle() ' in een loop aanroepen, dan heb je geen delays nodig.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com