DOGM 16x3 teckens display

Berätta om dina pågående projekt.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

DOGM 16x3 teckens display

Inlägg av jesse »

Tänkte lägga upp ett litet miniprojekt här - jag har byggt en liten minidisplay av en DOGM 16x3 teckens display, (elfa 75-407-57 ) med orange bakgrundsbelysning. Denna display som då är av typen COG (chip on glass) behöver monteras på ett kretskort , och då valde jag att montera två lysdioder och tre tryckknappar på samma gång.

Nu ville jag ha en smal och smidig kabel och tänkte därför använda displayens SPI interface. Men när jag väl hade köpt displayen förstod jag att den behövde mer än SPI - trådarna R/W, #CSB, RS och #RESET skulle ha signal in också. ( # = invert-tecken). Tyckte detta var korkat att de inte kunnat implementera dessa i SPI interfacet. Nu behövdes det ändå en massa trådar! Men så kom jag på att om jag gör första byten i meddelandet till en "specialbyte" som sätter trådarna #CSB, RS och #RESET så kunde jag även använda den byten till att styra lysdioder och även läsa av knapparna...

Så jag använde shiftregistret 74HC164, (utan latch):

Bild
Bild



Funktion:

Schema.

Från processorn har jag linjerna SCK, MISO, MOSI och SS.
Första byte är en "startbyte" som alltså inte läses in av DOMG-displayen. Denna byte har följande funktioner:
Bit.nr funktion
b0 - RS till display ( instruktion eller data växel)
b1 - CSB till display (etta = select, nolla = not select)
b2 - RESET till display ( etta = RESET, 0 = ingen verkan)
b3 - BGLIGHT BIT0 (low power)
b4 - BGLIGHT BIT1 (high power)
b5 - RÖD LED , 1 = on
b6 - GRÖN LED, 1 = on
b7 - STARTBIT - ska alltid vara etta


CSB och RESET aktiveras när första byten är klar och motsvarande databitar är etta.
LED och BGLIGHT aktiveras först när SS går hög, dvs efter avslutad sändning.
Knapparnas tillstånd läses in och skickas till processorn i första byten. resten ger 0xFF.

Detaljer om hur jag löst det hela i hårdvara:

Då SS (chip select) är hög ( = inaktiv) så är shiftregistret resettat, dvs alla utgångar = 0 . (dessa inverteras till linjerna #RESET och #CSB så att dessa går höga. #CSB är alltså displayens egen "chip select").

När CS går låg och klockan börja gå så shiftas alltså första byten data in i shiftregistret samtidigt som #CSB är hög, dvs. displayen ignorerar denna byte. Men databit7 (den först sända biten) i första byten är alltid en etta - när den åttonde klockpulsen går hög shiftas denna bit ner till utgång Q7 på 74HC164. Q7 går via en OR-grind tillbaks till klockingången på shiftregistret och låser således klockan - shiftregistrets innehåll fryses.

När Q7 går hög släpps signalerna fram från Q1 och Q2 till #SCB och #RESET via var sin NAND-grind. Q0 går direkt till RS - detta fungerar eftersom RS bara läses av displayen då sista biten shiftats in från en byte, RS kan därför anta vilket värde som helst innan shiftregistret fryses, men sedan är det fixerat.

Nu om #CSB är nolla, så kommer de följande byten att läsas in av displayen. När SS går hög igen sker två saker: dels resettas 74HC164 så att alla datautgångar blir noll igen, dels får D-vipporna i 74HC174 en klockpuls. Då resetten till HC174 är fördröjd med ett par hundra nanosekunder så läses data från Q3-Q6 in i D-vipporna. Utgångarna från dessa styr sedan bakgrundsbelysning och LED.

Sen har jag ytterligare ett shiftregister med parallell load dit jag således kan koppla upp till 7 knappar (D0-D6) . D7 kommer inte med. Jag har anslutit knappar till D0,D1 och D2. Knapparnas tillstånd avläses då SS går låg och shiftas ut till MISO under första byten.

Stöter på problem....

på vägen har det hänt en massa saker som bara varit onödiga och so tagit onödig tid:

Jag beställde kretsar från DigiKey , men just 74HC164 råkade jag beställa fel sort av så jag fick DIP-kapslar :x

Som tur räddades jag av DeVille som hjälpsamt skickade mig några st i SOIC-kapsel.

Bild

När allt väl var monterat upptäckte jag att några av viorna inte var tillräckligt genompläterade. Mönsterkorten från Cogra var försenade pga produktionsproblem, och ett problem var just badet där det pläterades... Mina kort var inte elektriskt testade och dom blev kassa. Kunde dock åtgärda genom att trä i trådar i viorna och löda. (men då kunde jag ju likaväl ha etsat hemma!)

Och nu har jag stött på nästa problem: Mitt shiftregistersystem fungerar bra, både för lysdioderna, bakgrundsbelysningen och knapparna. Men displayen är svart!

Började leta fel och upptäckte något som jag tror är ett fel i DOGM:S datablad: Kolla nere till höger på sidan 4. Där har det visat hur jag kopplar diplayen i SPI-mode för 5 volt VCC. Jag kopierade den utan eftertanke. Men nu ser jag att R/W är ju kopplad till +5V. I databladet står det att READ = 1 och WRITE = 0. Jag har alltså hårdvarulåst R/W till +5V, dvs READ! Jag antar att det är felet , så nästa steg blir att skära i kretskortet och lägga den pinnen till GND istället.

Så än har jag inte fått fram "HEJSAN" på displayen. Nästa inlägg kommer förmodligen att innehålla koden till processorn (en AVR ATmega644P) och om det hjälpte med att ändra R/W till GND.
B1n4ry
EF Sponsor
Inlägg: 1327
Blev medlem: 30 november 2005, 20:02:50
Ort: Borås
Kontakt:

Re: DOGM 16x3 teckens display

Inlägg av B1n4ry »

Jag sitter faktiskt oxå med en DOGM display i detta nu, men en 8x1... =)

Läser man i databladet till kontrollern ST7036 som finns länkat till i DOGM-databladet så ser det ut som att R/W bara används i parallellt läge. Vidare skippade jag #reset då den inte verkar behövas om man nöjer sig med "power on reset"...

Däremot verkar det som att initialiseringssekvensen i DOGM databladet inte stämmer med den som finns i kontrollerns datablad! Jag fick det inte att funka förrän jag körde med sekvensen från ST7036 databladet, med bla första kommandot två ggr och dessutom la in 200ms(?) delay innan de sista två kommandon ("Clear Display" och "Cursor Home")...

//B1N4RY
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Jo, min är stendöd än så länge, har trixat i flera timmar nu :evil:

Kör du med 5V matning?
Har du satt R/W till +5V eller GND?
Jag flyttade min till GND efter att ha läst databladet för st7036 (read = 1, write =0), men i DOGM-databladet står det att den ska kopplas till +5V.

Så här ser min init-sekvens ut för tillfället:

Kod: Markera allt

/* DEFAULT INITSEKVENS: 
 { 0x38,0x39,0x1d,0x50,0x6c,0x7c,0x0f,0x01,0x06 };
 0x38, function set
 0x39, 8-bit data, 2 rader, instruktion
 0x1d, set BIAS, BS 1/5, 3-radig display
 0x50, booster off, kontrast C5,C4
 0x6c, spänningsföljare, gain set
 0x7c, kontrast C3,C2,C1
 0x0f, display on, cursor on, cursor blink
 0x01, clear display, cursor home (>1 ms)
 0x06  cursor auto increment

*/
Jag ska testa med den som föreslås i st7036 databladet, förutsatt att den sekvensen inte är för 3.3V drift.

Det är tydligen "follower control" som vill ha 200mS på sig, samt "clear display" som vill ha drygt 1 mS.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: DOGM 16x3 teckens display

Inlägg av sodjan »

Beteckningen "R/W" brukar tolkas så att R = 1 och W = 0.
Annars hade det stått W/R... :-)
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Jo, och de förtydligar noga att read=1 och write = 0 så det borde väl innebära ganska klart att den pinnen ska vara nolla (GND) om jag ska skriva till displayen. Read-funktionen finns inte i SPI-mode då den inte har någon utgång för det. Varför jag ändå frågade var att i DOGM-displayens datablad finns det flera exempel på uppkopplingar där alla har R/W kopplat till VCC, så jag blev osäker, eftersom min display är stendöd. Men jag har alltså satt R/W till GND nu.

EDIT 01/02 : Fortfarande stendöd. :cry: hinner inte pilla mer med den på ett tag, har annat att göra.
BiNaRy: Kör du din på 5 volt?
Thallion
Inlägg: 112
Blev medlem: 2 juli 2008, 19:40:31
Ort: Danderyd

Re: DOGM 16x3 teckens display

Inlägg av Thallion »

Jag har kört den här koden för att driva en DOGM 16x3 i SPI mode - fungerar bra vad jag sett: http://www.mculabs.com/drivers/eadogm.html

Har kopplat enligt databladet med D0-D5, E och RW till VCC, och använder 4 pinnar - CLK SI RS CSB.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Jaha... jag upptäckte nu felet.

Jag har lyckats numrera benen fel på displayen så att pinne 21 - 40 har blivit 40 - 21 istället... inte konstigt den var stendöd... tyvärr är väl risken stor att jag förstört den. Om jag nu ska lyckas få igång den måste jag vända på den, får väl sätta den på baksidan av kretskortet i så fall. Himla tråkigt att jag klantade till det så :cry:
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Satte helt enkelt in den uppochner i stiftlisten - kunde givetvis inte få ljus i backlighten då, men såg direkt att den fungerade! yes! :happy: så den var inte bränd! Så nu blir det att löda dit trådar till LED:en sen funkar den. Blev bara lite dum design nu... får nog göra ett nytt kretskort :vissla:

Bild

Allt annat fungerar också på kretskortet - läsning av knapparna, styrning av LED och bakgrunds-LED (även om den inte är inkopplad just nu då!)
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Eftersom min display är inverterad (ljus text mot mörk bakgrund) så behövdes kontrasten ändras. Jag behövde inte heller någon delay efter 0x6c i initsekvensen. Min sekvens ser ut så här nu:

{ 0x39,0x39,0x1d,0x78,0x50,0x6c,0x0c,0x01,0x06 };

Dubbel höjd på tecknen var inte jättesnyggt eftersom det blev en rand mitt i tecknen:

Bild Bild
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: DOGM 16x3 teckens display

Inlägg av v-g »

Har också vänt på displayer, mer än en gång också faktist :humm: Har märkt det när jag brände mig på de svarta plupparna på baksidan :shock:

Tjusig display annars men jag är enig med dig om 2 raders det ser inte helt bra ut.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Kanske skulle lägga till lite bilder och schema...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
ToPNoTCH
Inlägg: 5140
Blev medlem: 21 december 2009, 17:59:48

Re: DOGM 16x3 teckens display

Inlägg av ToPNoTCH »

Hur blev den rättvänd igen på sista bilderna :?:
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: DOGM 16x3 teckens display

Inlägg av jesse »

Nya mönsterkort.
Jag fick de nya gratis av Cogra, eftersom de hade misslyckats med viorna på det gamla.

(Den som är observant ser också att jag har olika bakgrundsfärger - grön / orange)
Skriv svar