Sida 1 av 9

Konsten att tämja en grafisk VFD...

Postat: 22 september 2007, 20:55:57
av Illuwatar
Har nu lekt lite med den grafiska VFD'n jag köpte av sodjan. Resultatet kan beskådas nedan (kameran har lite svårt för VFN'n - den är grönare i verkligheten):

Bild

För tillfället är det inte mycket egenbyggd elektronik inblandad då det hittills har handlat om programmering. Riggen jag använder består av en STK500, en kabeladapter samt en 5V-regulator av switchad typ (som blev över från u-Machine):

Bild

Processorn är för tillfället en ATmega16 som körs i 8 MHz. Det slutliga målet är att skapa en kontroller för denna VFD baserad på ATmega128. Denna skall kombineras med ett USB-interface så displayen kan anslutat på en enkelt sätt till en PC.

Koden är helt skriven i C (WinAVR), vilket gör den relativt enkel att porta till andra kontrollers (även PIC om man så vill). Det jag har fått till är rutiner för linjeritning, cirklar samt text i valfri storlek (bygger på fontdatatabeller i flash, därav en av orsakerna till att välja ATmega128).

En sak som jag undrar över lite är det horisontella ljusläckage som uppstår i displayen. Jag har aldrig använt grafiska VFD'er förut, men jag hade för mig att en tänd pixel innebär just detta. Bilden nedan visar detta fenomen hyfast bra (speglingen är i glaset, det är inget fel):

Bild

PS. Hur många skulle vara intresserade av en ATmega128-baserad kontroller/exeprimentmodul (den kommer kunna användas till annat om man så vill)? Den kommer ha en USB->RS232, separat klockkristall för 8-bitstimern (för klockändamål), anslutning till 64k expansions-RAM (SRAM) samt nästan alla portar tillgängliga.

Postat: 22 september 2007, 21:02:50
av thepirateboy
Allt beror förstås på priset men visst är det intressant med ett sådant kort. Dock rekommenderar jag att du går över till 1281 som är pinkompatibel med 128.

Postat: 22 september 2007, 21:12:59
av Illuwatar
Lawicel har inte ATmega1281, så därför valde jag 128'an. Men är den pinkompatibel borde samma PCB fungera till båda. Min tanke framförallt är att ta fram ett PCB som köparen får skaffa komponenter till och montera själv. Fler som köper kort gör det billigare. Prisuppskattning kommer när jag har caddat klart.

Postat: 22 september 2007, 21:33:11
av JimmyAndersson
Snyggt! :) :)

Om någon portar till PIC, så javisst. :D

Postat: 22 september 2007, 21:36:06
av gurgalof
Nice! Självklart vi vill ha!!

Postat: 22 september 2007, 22:38:32
av sodjan
En controller *enbart* för just denna modell ?
Jag vet inte hur lätt eller svår den är att få tag i.
Själv har jag bara 5 st kvar just nu...

Postat: 22 september 2007, 22:44:05
av oJsan
>"text i valfri storlek"
Förklara gärna det där med fonttabellerna lite mer, använder du någon skalnings-algoritm eller har du en för varje fontstorlek?

Postat: 22 september 2007, 22:50:24
av speakman
Jag är nyfiken hur du löst cirklar. Har du lite kod? :)

Postat: 22 september 2007, 23:14:51
av strombom
speakman: jag vet såklart inte hur Illuwatar har gjort men här finns en välkänd algoritm: http://en.wikipedia.org/wiki/Bresenham% ... _algorithm

Postat: 22 september 2007, 23:30:18
av Rohan
Jag skulle helt klart vara intresserad. Vem skulle inte vara det? :wink:

Postat: 22 september 2007, 23:36:06
av Tekko
vfd = fina saker!!

Postat: 23 september 2007, 00:07:10
av Illuwatar
Strombom gissade rätt - det är Bresenham som ligger bakom linjer och cirklar. Exempelkoden på Wikipedia-länken var till stor hjälp.

Fonterna använder fasta tabeller där 8 pixlar vertikalt bildar en byte. Displayen är ordnad så att en byte motsvarar 8 pixlar i y-led. Så för att täcka upp en verikal linje på 128 pixlar går det åt 16 bytes. I x-led finns det 256 pixlar, vilket ger motsvarande antal 16-bytes linjer. Totalt för en hel skärm går det åt 4096 bytes, därav intresset att kunna ansluta lite RAM till kontrollern. Då skulle man kunna lagra multipla "screens" off-display (VFD'n har två minnesareor internt som gör page-flipping möjligt) och sedan ladda över till displayen vid behov.

Tillbaks till fonterna - de lagras som sagt som bitmaps i tabeller, en byte per 8 pixlar vertikalt. Är fonthöjden inte jämt upp med delningen av 8 så rundar man upp och fyller ut med 0-bitar för de pixlar som inte behövs. För att få plats med dessa (storleken på tabellerna beror på antal tecken och deras storlek) tvingar jag in dem i flash. RAM i själva MCU'n är ganska snålt tilltaget (ATmega16 har bara 512 bytes), så där får man inte in mycket data. Fontdatat är dessutom statiskt, så flash är ett bättre sätt att lagra dem på. Innan jag hittade ett sätt att göra det på i C-kod (med assembler är det enklare) hände det en del skumma saker i programmet.

För er PIC-fantaster så kommer jag lägga ut koden när det är bra nog. Det kommer att finnas tillräckligt att använda och sedan bygga ut. När detta sker är ovisst då detta projekt utförs i mån av tid. Minimig har högre prioritet. Själva kontrollerkortet/experimentkortet däremot skall bli klart så snart som möjligt. En grundritning finns redan.

sojdan - jag vet att displayen är lite ovanlig, därför gör jag den någorlunda generell. Det skall helt enkelt bli en universalmodul som kan anpassas till lite av varje. En anlutning kommer dock att vara direkt pin-anpassad för denna VFD. Ansluter man en annan display får man ändra ordningen i kabeln. För displayen kommer 8 + 5 portar att reserveras, så de lär räcka för de flesta displaytyper jag känner till.

Postat: 23 september 2007, 03:19:59
av Micke_s
Var finns alternativet: "Jag har redan ett egenutvecklat atmega128 experimentsystem".

//Skrivet efter en nolleqasque(inte min egen förvisso, men lite C2H5OH finns i kroppen).

Postat: 23 september 2007, 09:00:31
av BJ
"det horisontella ljusläckaget..."

Är det därför som det finns så lite tydliga bilder på grafiska vfd-skärmar på internet? Nästan alla bilder som jag har sett är lite suddiga.
Jag trodde att alla hade rört på kameran, eller har dåliga kameror, men då kanske det inte är så.

Postat: 23 september 2007, 09:27:53
av maha
Kontrastglas borde ju miska problemet lite grand. Ungefär som om man kisar och tittar på den inzoomade bilden.