vfd driver+avr

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00
Tartózkodási hely: Perbál
Kapcsolat:

vfd driver+avr

HozzászólásSzerző: tetye » 2008. május 10. szombat, 9:40

Holló!
szeretnék segitséget kérni.
van egy kijelzöm a dvd-m előlapjából rajta van a vezérjö ic is,tettem fel róla képeket és az ic adatlapját.
ide:
Link
légszi aki ért ahoz hogy hogy lehet ezekkel kommunikálni az segitsen nekem:)
GND:....
5V:....
STB: erre kell neki 5V amikor bekapcsol a cucc
CLK: gondolom az orajel
DATA: nah ez az érdekes... milyen protokolon komunikálhat? AVR el hogy lehetne össze hozni?
REM: ir vevő kimeneti láb..
azt szeretném csak megtudni hogy lehet vele komunikálni?
köszi

Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

HozzászólásSzerző: herc1234 » 2008. május 10. szombat, 10:36

ez ugyanaz mint az én 74xx595 icm
ott a dokuban:
Pin desc.
no 6
Din : soros adat felfutó élre alacsony bit az első

aztán a function desc-ben ott van a leírás mit vár a dolog

bascomban nézd át a shiftout részt
ezzel a parancsal meg lehet oldani a dolgot
(egy cipőben járunk csak én 74hc595 re akarok most irni egy
multipexer programot)
csak a te icd még kapcsoló mátrixot is kezel(het)

Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00
Tartózkodási hely: Perbál
Kapcsolat:

HozzászólásSzerző: tetye » 2008. május 10. szombat, 10:45

igen igen a kapcsolok is rajta vannak 4-5 asszem
én annyira még nem értek a dolgokhoz sajna, nem vágom mit értesz hogy leffuto bitek meg stb..:S
nincs valami minta progid magyarázattal?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10032
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. május 10. szombat, 16:41

Elso korben probaltam mintaprogit keresni C ASM vagy Bascomul.
Reménytelen....
A DataIn/Data Out az nem más, mint a SPI busz kisse lebutitva. A
Clockjellel szinkroban kuldod/fogadod a biteket.
A CLK/STB/DataIn/Out labakra 10 k felhuzo kell a 5Vra!

kimenet eseten:
STB, CLK, DATA as output
set STB
set CLK
reset DATA
waitms 100
reset STB
waitms 10

for i = 0 to 7
reset clk
waitms 1
if dataout.i=0 then reset DATA else set DATA
waitms 1
set clk
waitms 1
next i
waitms 1


itt jon a kovetkezo parancs:)
az utasitassorrend sorrendje a 10. oldal alja.
Utasitasok az 5. oldaon vannak.

Eloszor sztem csak kuldjel, hogy a szegmenseket ki tudd gyujtogatni.
Visszaolvasni pl. gombokat raersz tana...


Ez a 8. oldal alapjan a orajeles leiras.
Az idozitessel (1msec) lehet jatszani kell.
Itt kimeneti adatok vannak, a dataout valtozo tartalmazza a kiirando
adatot.


Meg lehet vele kuzdeni, de az adatlap alapjan nem olyan veszes....

Avatar
joco10
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. október 25. vasárnap, 6:00
Tartózkodási hely: vác

HozzászólásSzerző: joco10 » 2010. szeptember 7. kedd, 15:26

Egy 7szegmentes 6 digites VFD kijelzőt szeretnék meghajtani a MAX6921 ic-vel. Bascomos példát sehol nem találtam. Van valakinek valami ötlete, hogyan kezdjek a dologhoz? A MAX7221 ic meghatására irt Robert egy programot ezt lehet használni?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10032
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2010. szeptember 7. kedd, 16:22

Lesd meg a 2 chipet...
Közel azonos.... Az önteszt az jó kiindulásinak, ekkor minden szegmens világít....

Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00
Tartózkodási hely: Tápiószőlős

Re: vfd driver+avr

HozzászólásSzerző: GPeti » 2013. december 10. kedd, 21:17

Építettem egy VFD kijelző áramkört, nincs benne speciális meghajtó IC mindössze egy mega8515, és TD62783 tápoldali meghajtó, a kijelző 14+2 szegmenses 12 rácsos.
A 40 lábból nem is maradt csak 4 szabadon. :)
Soros kijelzőként használom majdnem működik is csak a karakterek között több mint 20ms idő kell hogy ne tévesszen az "&" jelet választottam a sor elejére lépésnek. A soros jelet megszakítással kapom el a megszakításban is keveset tartózkodom, szerintem viszont azért ilyen lassú mert a karakter helyének kiszámolásakor mikor bejött egy byte, le kell futni a két select case résznek és csak akkor jöhet a következő adat, itt a kód nem tudom hogy lehetne úgy megoldani hogy a karakterek között ne vagy minimális max.1ms késleltetés legyen, egy internet rádiót készítek (mellesleg sd kártyáról meg később USB-ről is játszik MP3 fájlt) amiben nem megengedhető ekkora késleltetés. Először LCD kijelzőt használtam azzal jó is volt de a "retrósítás" miatt tértem át a VFD kijelzőre.

Kód: Egész kijelölése

$regfile = "m8515.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 38400
On Urxc Rx

'G1  D7
'G2  D6
'G3  D5
'G4  D4

'G5  B7
'G6  B6
'G7  B5
'G8  B4
'G9  B3
'G10 B2
'G11 B1
'G12 B0

'a           A0
'b           A1
'c           A2
'd           A3
'e           A4
'f           A5
'g           A6
'h           A7
'i           C7
'j           C6
'k           C5
'l           C4
'm           C3
'n           C2
'o           C1
'p           CO

Config Portb = Output
Config Porta = Output
Config Portc = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Dim T As Byte
Dim Gxa As Byte , Gxb As Byte
Dim G1a As Byte , G1b As Byte
Dim G2a As Byte , G2b As Byte
Dim G3a As Byte , G3b As Byte
Dim G4a As Byte , G4b As Byte
Dim G5a As Byte , G5b As Byte
Dim G6a As Byte , G6b As Byte
Dim G7a As Byte , G7b As Byte
Dim G8a As Byte , G8b As Byte
Dim G9a As Byte , G9b As Byte
Dim G10a As Byte , G10b As Byte
Dim G11a As Byte , G11b As Byte
Dim G12a As Byte , G12b As Byte
Dim R As Byte , C As Byte
Dim Rec As Bit
Dim I As Byte

Rec = 0

G1a = 0 : G1b = 0
G2a = 0 : G2b = 0

G3a = 0 : G3b = 0                                           '0
G4a = 0 : G4b = 0                                           '1
G5a = 0 : G5b = 0                                           '2
G6a = 0 : G6b = 0                                           '3
G7a = 0 : G7b = 0                                           '4
G8a = 0 : G8b = 0                                           '5
G9a = 0 : G9b = 0                                           '6
G10a = 0 : G10b = 0                                         '7
G11a = 0 : G11b = 0                                         '8
G12a = 0 : G12b = 0                                         '9

Waitms 500
Print "OK"
Enable Urxc
Enable Interrupts

Do

Set Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = 0

Porta = G1a
Portc = G1b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

'*******************************************************************************
Reset Portd.7
Set Portd.6
Reset Portd.5
Reset Portd.4
Portb = 0

Porta = G2a
Portc = G2b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Set Portd.5
Reset Portd.4
Portb = 0

Porta = G3a
Portc = G3b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Set Portd.4
Portb = 0

Porta = G4a
Portc = G4b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B10000000

Porta = G5a
Portc = G5b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B01000000

Porta = G6a
Portc = G6b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00100000

Porta = G7a
Portc = G7b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00010000

Porta = G8a
Portc = G8b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00001000

Porta = G9a
Portc = G9b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000100

Porta = G10a
Portc = G10b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000010

Porta = G11a
Portc = G11b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000001

Porta = G12a
Portc = G12b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000000

For I = 0 To 100
Waitus 10
Next


If Rec = 1 Then
Rec = 0

Select Case R

Case "0":
Gxa = 39 : Gxb = 141                                        '0
Case "1":
Gxa = 06 : Gxb = 128                                        '1
Case "2":
Gxa = 195 : Gxb = 5                                         '2
Case "3":
Gxa = 67 : Gxb = 129                                        '3
Case "4":
Gxa = 226 : Gxb = 128                                       '4
Case "5":
Gxa = 225 : Gxb = 129                                       '5
Case "6":
Gxa = 225 : Gxb = 133                                       '6
Case "7":
Gxa = 3 : Gxb = 128                                         '7
Case "8":
Gxa = 227 : Gxb = 133                                       '8
Case "9":
Gxa = 227 : Gxb = 129                                       '9


Case "A":
Gxa = 227 : Gxb = 134                                       'A
Case "B":
Gxa = 75 : Gxb = 145                                        'B
Case "C":
Gxa = 33 : Gxb = 5                                          'C
Case "D":
Gxa = 11 : Gxb = 145                                        'D
Case "E":
Gxa = 161 : Gxb = 5                                         'E
Case "F":
Gxa = 161 : Gxb = 4                                         'F
Case "G":
Gxa = 97 : Gxb = 133                                        'G
Case "H":
Gxa = 224 : Gxb = 132                                       'H
Case "I":
Gxa = 9 : Gxb = 17                                          'I
Case "J":
Gxa = 2 : Gxb = 133                                         'J

Case "K":
Gxa = 228 : Gxb = 36                                        'K
Case "L":
Gxa = 32 : Gxb = 5                                          'L
Case "M":
Gxa = 54 : Gxb = 132                                        'M
Case "N":
Gxa = 50 : Gxb = 164                                        'N
Case "O":
Gxa = 35 : Gxb = 133                                        'O
Case "P":
Gxa = 227 : Gxb = 4                                         'P
Case "Q":
Gxa = 35 : Gxb = 165                                        'Q
Case "R":
Gxa = 227 : Gxb = 36                                        'R
Case "S":
Gxa = 225 : Gxb = 129                                       'S
Case "T":
Gxa = 9 : Gxb = 16                                          'T


Case "U":
Gxa = 34 : Gxb = 133                                        'U
Case "V":
Gxa = 36 : Gxb = 12                                         'V
Case "W":
Gxa = 34 : Gxb = 172                                        'W
Case "X":
Gxa = 20 : Gxb = 40                                         'X
Case "Y":
Gxa = 226 : Gxb = 16                                        'Y
Case "Z":
Gxa = 5 : Gxb = 9                                           'Z
Case "-":
Gxa = 192 : Gxb = 0                                         '-
Case " ":
Gxa = 0 : Gxb = 0                                           '
Case ":":
Gxa = 0 : Gxb = 66                                          ':
Case ".":
Gxa = 0 : Gxb = 2                                           '.

'bargraph:
Case "a":
Gxa = &B00000000 : Gxb = &B00000001
Case "b":
Gxa = &B00000100 : Gxb = &B00000001
Case "c":
Gxa = &B00001100 : Gxb = &B00000001
Case "d":
Gxa = &B00011100 : Gxb = &B00000001
Case "e":
Gxa = &B00111100 : Gxb = &B00000001
Case "f":
Gxa = &B01111100 : Gxb = &B00000001
Case "g":
Gxa = &B11111100 : Gxb = &B00000001
Case "h":
Gxa = &B11111100 : Gxb = &B10000001
Case "i":
Gxa = &B11111100 : Gxb = &B11000001
Case "j":
Gxa = &B11111100 : Gxb = &B11100001
Case "k":
Gxa = &B11111100 : Gxb = &B11110001
Case "l":
Gxa = &B11111100 : Gxb = &B11111001
Case "m":
Gxa = &B11111100 : Gxb = &B11111101
Case "n":
Gxa = &B11111100 : Gxb = &B11111111

Case "o":
Gxa = &B00000001 : Gxb = &B00000001
Case "p":
Gxa = &B00000010 : Gxb = &B00000001
Case "q":
Gxa = &B00000011 : Gxb = &B00000001

Case "r":
Gxa = &B00010000 : Gxb = &B00000000                         'pause

Case "s":
Gxa = &B00100000 : Gxb = &B00000000                         'play

Case "t":
Gxa = &B00000010 : Gxb = &B00000000                         'usb

Case "u":
Gxa = &B00010010 : Gxb = &B00000000

Case "v":
Gxa = &B00100010 : Gxb = &B00000000


End Select

Select Case C

Case 1:
G1a = Gxa : G1b = Gxb                                       ':

Case 2:
G2a = Gxa : G2b = Gxb

Case 3:
G3a = Gxa : G3b = Gxb

Case 4:
G4a = Gxa : G4b = Gxb

Case 5:
G5a = Gxa : G5b = Gxb

Case 6:
G6a = Gxa : G6b = Gxb

Case 7:
G7a = Gxa : G7b = Gxb

Case 8:
G8a = Gxa : G8b = Gxb

Case 9:
G9a = Gxa : G9b = Gxb

Case 10:
G10a = Gxa : G10b = Gxb

Case 11:
G11a = Gxa : G11b = Gxb

Case 12:
G12a = Gxa : G12b = Gxb

End Select


End If

Loop

End


Rx:
R = Inkey()
Rec = 1
Incr C
If R = "&" Then C = 0
'If C > 12 Then C = 0
Return

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3348
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: vfd driver+avr

HozzászólásSzerző: kapu48 » 2013. december 11. szerda, 20:39

Mi lenne, ha Beraknád 1 tőmbe a Gxa, Gxb-be kerülő értékeket.
Mivel „Select Case R” –nél R-ben ASCII érték van?
Rt = (R – 32) * 2 a tömbmutató értéke.

Innentől már csak Gxa = Gxtomb(Rt), Gxb = Gxtomb(Rt+1)
:idea:

Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00
Tartózkodási hely: Tápiószőlős

Re: vfd driver+avr

HozzászólásSzerző: GPeti » 2013. december 12. csütörtök, 17:55

Sikerült, pont mikor írtad akkor jutott nekem is eszembe hogy így kell, még kell késleltetés a bájtok között, most 1ms de lehet kevesebb is.
Felteszem ide hátha valaki akar vfd kijelzőt használni, bár ezen is van még mit tökéletesíteni. Mind a 12 karaktert felül kell írni meg +1 a startjel.

Kód: Egész kijelölése

$regfile = "m8515.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 38400
On Urxc Rxint

'G1  D7
'G2  D6
'G3  D5
'G4  D4

'G5  B7
'G6  B6
'G7  B5
'G8  B4
'G9  B3
'G10 B2
'G11 B1
'G12 B0

'a           A0
'b           A1
'c           A2
'd           A3
'e           A4
'f           A5
'g           A6
'h           A7
'i           C7
'j           C6
'k           C5
'l           C4
'm           C3
'n           C2
'o           C1
'p           CO

Config Portb = Output
Config Porta = Output
Config Portc = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output

Dim T As Byte
Dim Gxa As Byte , Gxb As Byte
Dim G1a As Byte , G1b As Byte
Dim G2a As Byte , G2b As Byte
Dim G3a As Byte , G3b As Byte
Dim G4a As Byte , G4b As Byte
Dim G5a As Byte , G5b As Byte
Dim G6a As Byte , G6b As Byte
Dim G7a As Byte , G7b As Byte
Dim G8a As Byte , G8b As Byte
Dim G9a As Byte , G9b As Byte
Dim G10a As Byte , G10b As Byte
Dim G11a As Byte , G11b As Byte
Dim G12a As Byte , G12b As Byte
'Dim R As Byte
Dim C As Byte
Dim Rx(15) As Byte
Dim Rec As Bit
Dim I As Byte
Dim J As Byte

Rec = 0

G1a = 0 : G1b = 0
G2a = 0 : G2b = 0

G3a = 192 : G3b = 0                                         '0
G4a = 192 : G4b = 0                                         '1
G5a = 192 : G5b = 0                                         '2
G6a = 192 : G6b = 0                                         '3
G7a = 192 : G7b = 0                                         '4
G8a = 192 : G8b = 0                                         '5
G9a = 192 : G9b = 0                                         '6
G10a = 192 : G10b = 0                                       '7
G11a = 192 : G11b = 0                                       '8
G12a = 192 : G12b = 0                                       '9

Waitms 500
Print "OK"
Enable Urxc
Enable Interrupts

Do

Set Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = 0

Porta = G1a
Portc = G1b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

'*******************************************************************************
Reset Portd.7
Set Portd.6
Reset Portd.5
Reset Portd.4
Portb = 0

Porta = G2a
Portc = G2b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Set Portd.5
Reset Portd.4
Portb = 0

Porta = G3a
Portc = G3b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Set Portd.4
Portb = 0

Porta = G4a
Portc = G4b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B10000000

Porta = G5a
Portc = G5b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B01000000

Porta = G6a
Portc = G6b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00100000

Porta = G7a
Portc = G7b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00010000

Porta = G8a
Portc = G8b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00001000

Porta = G9a
Portc = G9b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000100

Porta = G10a
Portc = G10b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000010

Porta = G11a
Portc = G11b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

For I = 0 To 10
Waitus 10
Next

'*******************************************************************************
Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000001

Porta = G12a
Portc = G12b

For I = 0 To 100
Waitus 10
Next

Porta = 0
Portc = 0

Reset Portd.7
Reset Portd.6
Reset Portd.5
Reset Portd.4
Portb = &B00000000

For I = 0 To 100
Waitus 10
Next


If C = 12 Then
'Rec = 0

For J = 1 To 12

Select Case Rx(j)

Case "0":
Gxa = 39 : Gxb = 141                                        '0
Case "1":
Gxa = 06 : Gxb = 128                                        '1
Case "2":
Gxa = 195 : Gxb = 5                                         '2
Case "3":
Gxa = 67 : Gxb = 129                                        '3
Case "4":
Gxa = 226 : Gxb = 128                                       '4
Case "5":
Gxa = 225 : Gxb = 129                                       '5
Case "6":
Gxa = 225 : Gxb = 133                                       '6
Case "7":
Gxa = 3 : Gxb = 128                                         '7
Case "8":
Gxa = 227 : Gxb = 133                                       '8
Case "9":
Gxa = 227 : Gxb = 129                                       '9


Case "A":
Gxa = 227 : Gxb = 134                                       'A
Case "B":
Gxa = 75 : Gxb = 145                                        'B
Case "C":
Gxa = 33 : Gxb = 5                                          'C
Case "D":
Gxa = 11 : Gxb = 145                                        'D
Case "E":
Gxa = 161 : Gxb = 5                                         'E
Case "F":
Gxa = 161 : Gxb = 4                                         'F
Case "G":
Gxa = 97 : Gxb = 133                                        'G
Case "H":
Gxa = 224 : Gxb = 132                                       'H
Case "I":
Gxa = 9 : Gxb = 17                                          'I
Case "J":
Gxa = 2 : Gxb = 133                                         'J

Case "K":
Gxa = 228 : Gxb = 36                                        'K
Case "L":
Gxa = 32 : Gxb = 5                                          'L
Case "M":
Gxa = 54 : Gxb = 132                                        'M
Case "N":
Gxa = 50 : Gxb = 164                                        'N
Case "O":
Gxa = 35 : Gxb = 133                                        'O
Case "P":
Gxa = 227 : Gxb = 4                                         'P
Case "Q":
Gxa = 35 : Gxb = 165                                        'Q
Case "R":
Gxa = 227 : Gxb = 36                                        'R
Case "S":
Gxa = 225 : Gxb = 129                                       'S
Case "T":
Gxa = 9 : Gxb = 16                                          'T


Case "U":
Gxa = 34 : Gxb = 133                                        'U
Case "V":
Gxa = 36 : Gxb = 12                                         'V
Case "W":
Gxa = 34 : Gxb = 172                                        'W
Case "X":
Gxa = 20 : Gxb = 40                                         'X
Case "Y":
Gxa = 226 : Gxb = 16                                        'Y
Case "Z":
Gxa = 5 : Gxb = 9                                           'Z
Case "-":
Gxa = 192 : Gxb = 0                                         '-
Case " ":
Gxa = 0 : Gxb = 0                                           '
Case ":":
Gxa = 0 : Gxb = 66                                          ':
Case ".":
Gxa = 0 : Gxb = 2                                           '.

'bargraph:
Case "a":
Gxa = &B00000000 : Gxb = &B00000001
Case "b":
Gxa = &B00000100 : Gxb = &B00000001
Case "c":
Gxa = &B00001100 : Gxb = &B00000001
Case "d":
Gxa = &B00011100 : Gxb = &B00000001
Case "e":
Gxa = &B00111100 : Gxb = &B00000001
Case "f":
Gxa = &B01111100 : Gxb = &B00000001
Case "g":
Gxa = &B11111100 : Gxb = &B00000001
Case "h":
Gxa = &B11111100 : Gxb = &B10000001
Case "i":
Gxa = &B11111100 : Gxb = &B11000001
Case "j":
Gxa = &B11111100 : Gxb = &B11100001
Case "k":
Gxa = &B11111100 : Gxb = &B11110001
Case "l":
Gxa = &B11111100 : Gxb = &B11111001
Case "m":
Gxa = &B11111100 : Gxb = &B11111101
Case "n":
Gxa = &B11111100 : Gxb = &B11111111

Case "o":
Gxa = &B00000001 : Gxb = &B00000001
Case "p":
Gxa = &B00000010 : Gxb = &B00000001
Case "q":
Gxa = &B00000011 : Gxb = &B00000001

Case "r":
Gxa = &B00010000 : Gxb = &B00000000                         'pause

Case "s":
Gxa = &B00100000 : Gxb = &B00000000                         'play

Case "t":
Gxa = &B00000010 : Gxb = &B00000000                         'usb

Case "u":
Gxa = &B00010010 : Gxb = &B00000000

Case "v":
Gxa = &B00100010 : Gxb = &B00000000


End Select

Select Case J

Case 1:
G1a = Gxa : G1b = Gxb                                       ':

Case 2:
G2a = Gxa : G2b = Gxb

Case 3:
G3a = Gxa : G3b = Gxb

Case 4:
G4a = Gxa : G4b = Gxb

Case 5:
G5a = Gxa : G5b = Gxb

Case 6:
G6a = Gxa : G6b = Gxb

Case 7:
G7a = Gxa : G7b = Gxb

Case 8:
G8a = Gxa : G8b = Gxb

Case 9:
G9a = Gxa : G9b = Gxb

Case 10:
G10a = Gxa : G10b = Gxb

Case 11:
G11a = Gxa : G11b = Gxb

Case 12:
G12a = Gxa : G12b = Gxb
'If C > 12 Then C = 0
End Select

Next J

End If

Loop

End


Rxint:

'Rec = 1
Incr C
Rx(c) = Inkey()
If Rx(c) = "&" Then C = 0

Return

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3348
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: vfd driver+avr

HozzászólásSzerző: kapu48 » 2013. december 14. szombat, 9:21

Nem így gondolta!

A Select Case Rx(j) szerkezet helyet tömb címszámítást alkalmaznék.

Mivel ezek ASCII értékek. http://ascii.atw.hu/
Érvényes írásjelek a 32 -125 értékeken vannak.

’Karakter tömbök létrehozása
Dim TGxA(125-32) As Byte 'byte range from 0-255
Dim TGxB(125-32) As Byte 'byte range from 0-255

’Tömbök feltöltése ASCII tábla sorrendben. (az első -32 értéket elhagyjuk)
TGxA(48-32)= 39 , TGxB(48-32) = 141 ’0 (ASCII = 48)
TGxA(49-32)= 6 , TGxB(49-32) = 128 ’1 (ASCII = 49)



’Értékadás (Számok ASCII 48-tól):
For J = 48-32 To 48-32+10
Gxa = TGxA(j) : Gxb = TGxB(j)
...
next

’Értékadás (Betük ASCII A 65-tól):
For J = 65-32 To 65-32+26
Gxa = TGxA(j) : Gxb = TGxB(j)
...
next

Még ehhez vannak függvények a Bascomban:
var = ASC(string)
s = CHR(var)

Egyszerűbb és jóval gyorsabb, mint a Case szerkezet.
8)


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég