EA DOGL128-6 grafikus kijelző...

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

EA DOGL128-6 grafikus kijelző...

Hozzászólás Szerző: Robert »

A címben nevezett kijelző szívat. Bascom 1.11.9.3Reg illetve Bascom 2.0.4.0 alatt is azonos a hibajelenség:

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

$regfile = "m168def.dat"                                    ' ATmega168
$crystal = 16000000
$baud = 9600

Config Portb = Output
$lib "glcdeadogm128x6.lib"                                  ' specify the used lib

 'the display was connected with these pins
Config Graphlcd = 128 * 64eadogm , Cs1 = Portb.2 , A0 = Portb.1 , Si = Portb.3 , Sclk = Portb.5 , Rst = Portb.0
'the best option is to control the reset line of the LCD with the micro so you can reset it controlled at startup
'Reset külön van, nem a kontroller reseteli...

Print "start"
Initlcd
Cls
Waitms 10

Showpic 0 , 0 , Plaatje
Waitms 3000
'Lcdat 1 , 1 , "11111111"

End

Plaatje:
'include the picture data
$bgf "ks108.bgf"
'$include "font8x8.font"
Hiba: amint az LCDAT sor vagy a FONT (csak mint adat), megjelenik, a program valahol az elején lefagy. A PRINT-ig sem jut el. A képet gyönyörűen kirakja.
Amint valami betűkezeléses programra fut rá, meghal. Valaki találkozott már ilyennel?
Arduino alatt tökéletes, képpel is, betűvel is...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A Bascomban kell a RESET hozzárendelése. Érdemes lenne az Arduino-ból puskázni, ott van benne softreset is :).

Most úgy néz ki, hogy működik.
16 MHz @ M328.

A működő minta:

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

$regfile = "m328pdef.dat"
$crystal = 16000000
$baud = 19200
$lib "glcdeadogm128x6.lbx"                                  ' specify the used lib


'the display was connected with these pins
'Config Graphlcd = 128 * 64eadogm , Cs1 = Portd.4 , A0 = Portd.7 , Si = Portb.3 , Sclk = Portb.5 , Rst = Portd.5
'the best option is to control the reset line of the LCD with the micro so you can reset it controlled at startup

Config Graphlcd = 128 * 64eadogm , Cs1 = Portb.2 , A0 = Portb.1 , Si = Portb.3 , Sclk = Portb.5 , Rst = Portb.0
'the best option is to control the reset line of the LCD with the micro so you can reset it controlled at startup

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim B As Byte , J As Byte
Dim K As Byte , X As Word , Y As Word

Print "cls"
Initlcd                                                     'uj!
Cls
Waitms 10

'specify the font we want to use
Setfont Font8x8tt


'You can use locate but the columns have a range from 1-128
'When you want to show somthing on the LCD, use the LDAT command
'LCDAT Y , COL, value
Lcdat 1 , 1 , "11111111"
Lcdat 2 , 1 , "88888888"
Lcdat 3 , 1 , "MCS Electronics" , 1
Waitms 3000

Dim I As Word
For I = 110 To 120
  Lcdat 1 , 1 , I
  Waitms 500
  Cls 1 , 1 , 24 , 255                                      'clear inverse
  Waitms 500
Next

Waitms 3000


Setfont My12_16
Cls
Lcdat 1 , 1 , "112345678"                                   'a bigger font
Waitms 3000

Setfont Font8x8tt

Showpic 0 , 0 , Plaatje
Waitms 3000
Do
  Gosub Touch                                               'optional touch screen
Loop

End

'portc.0-portc.3 pin 1-4
Touch:
   Start Adc
   Waitms 200
   Config Portc.0 = Output                                  'Bottom
   Config Portc.2 = Output                                  'Top
   Set Portc.0                                              'High
   Reset Portc.2                                            'Low
   Config Pinc.1 = Input                                    'left as input
   Config Pinc.3 = Input                                    'right as input
   Waitms 80
   Y = Getadc(3)
   Y = Y - 365
   If Y > 640 Then Y = 0
   Config Portc.1 = Output                                  'Left
   Config Portc.3 = Output                                  'Right
   Set Portc.3
   Reset Portc.1
   Config Pinc.0 = Input
   Config Pinc.2 = Input
   Waitms 80
   X = Getadc(0)
   X = X - 196
   If X > 800 Then X = 0
   Lcdat 1 , 1 , "X : " ; X
   Lcdat 1 , 74 , "Y : " ; Y
Return

Plaatje:
'include the picture data
$bgf "ks108.bgf"

'include used fonts
$include "font8x8TT.font"
$include "my12_16.font"
PSET, LINE és CIRCLE utasítások nem támogatottak!
Így csak kép beemelés illetve karakteres kiírás (tetszőleges betűmérettel) lehetséges ezzel a kijelzővel.
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Szia!
Nem az a gond, hogy a programodból hiányzik a SetFont?
JAni
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

De, az lett a vége. Amint az init megtörténik, azonnal ki kell adni a SetFont utasítást.

Csak a gyári mintában is ez el van rontva...

Viszont a bekötés is érdekes. A EA DOGL32 és a 128L közt a bekötés nem csereszabatos, mivel csal a LowVoltage módban lehet csereberélni őket.

Arduino alatt van pár minta - azzal lett ellenőrizve a bekötése. A Kijelző RESET Arduino alatt SWből történik, bascomban HWből. Bascom alatt így a resetről gondoskodni kell!
Az arduino minták a különböző betűk, ill grafikák mellett 3 játék is van:
- falromboló
- touchpaddal valami irányítós (nem tudtam életrekelteni)
- sétáló emberke animáció.
Avatar
pakibec
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2006. március 20. hétfő, 7:00

Hozzászólás Szerző: pakibec »

Sziasztok,

a cimben nevezett kijelzővel szívok...

A Bascom le sem hajlandó forditani a kódot:

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

$regfile = "m8def.dat"
   $crystal = 4000000
   $hwstack = 32
   $swstack = 10
   $framesize = 40
   $lib "glcdEADOGM128x6.lib"

   '$external _glicd,_glocate,cls_line,_getbytefromrom_eprom,_showpicture
   Wait 1
   Config Portc = Output



   Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.4 , A0 = Portc.2 , Si = Portc.0 , Sclk = Portc.1 ,  Reset = Portc.3


   Do
      nop
   Loop
End          
Nem használtam még graph lcd-t, gondoltam, hogy lesz vele szivás, de azt nem hogy már a config sornál....
A hiba: 222 Illegal character expected(

de mire gondol, hogy találhat hibát egy gyárilag irt könyvtárban?

Vagy nem jól csinálok valamit?

Előre is köszönöm a segítséget.
Üdv
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Sajnos ilyenem még nincs itthon, de én kipróbálnám a következőt, a szokásos hozzáállásommal (ha valami hibás, ne törődjünk vele) :)
A glcdeadogm128x6.lib ből a RESETre vonatkozó sorokat kiREMelném.
(úgy is tudod, hova kötötted, LCD inic előtt adj oda basic-ből egy 100msec-es 0-t.
Ha kiveszed a:
;* cbi _GLCD_PORT_RESET,_glcd_rst ; reset low
; Ldi r24,50 ; reset 100 mS
; Clr R25
;* Call _Waitms
;* sbi _GLCD_PORT_RESET,_glcd_rst ; reset high

sorokat, újrafordítod és nem kiabál.

Próba, hátha...
JAni
21:38
Avatar
pakibec
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2006. március 20. hétfő, 7:00

Hozzászólás Szerző: pakibec »

Köszönöm a segitséget, meglett a hiba, reset rst-nek van röviditve. Igy leforditható a program.

A kijelző egyelőre nem megy. Az avr-nek kevés a 3.3V, többet meg nem merek ráadni, nem tudom a kijelző mennyit bir. Még godolkozom a szintillesztésen.

Csak német leirasom van rola, nincs angol valakinek? A háttérvilágitást hol aktiváljátok?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

??

A 3V3 miért kevés?
Avatar
pakibec
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2006. március 20. hétfő, 7:00

Hozzászólás Szerző: pakibec »

Sajnos nem L típusú a mega8 és 4.5V -ig megy az adatlap szerint 4V alatt már tényleg nem müködik,prgramozni sem tudod.

A kijelző háttérvilágitását hogy vezérled? Próbáltam VDD-t rakni az 1/2/3-as lábra, de nem világitanak a ledek.

Üdv
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A sima AVR is megy aacsonyabb feszultsegen (2.7V-ig). Az L 1.8Vot tud.
NINCS a BOD bekacsolva? es 4.0 V-ra allitva?

Az orajel alacsonyabb fesz-n a max fele (8MHz).
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Angolnyelvű leírás:

http://www.lcd-module.com/eng/pdf/grafik/dogl128-6e.pdf
[/url]

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

$regfile = "m168def.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 100
$swstack = 80
$framesize = 80
'$sim

'$loadersize = 2048

$lib "glcdeadogm128x6.lbx"
$lib "mcsbyteint.lbx"
$lib "mcsbyte.lbx"
$lib "single.lbx"

Config Com1 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Graphlcd = 128 * 64eadogm , Cs1 = Portb.0 , A0 = Portd.6 , Si = Portb.3 , Sclk = Portb.5 , Rst = Portd.7
Initlcd
Cls
Ez egy meglévő alkalmazásomból van! Működik rendesen!
Én csak a kontrasztot vettem vissza, a lib-ben!

Amúgy nálad az INITLCD hiányzik!! Ez kell!!!!

Amit Robert írt pedig igaz. SETFONT mindíg kell a kiírás előtt.

Érdemes így megcsinálni:

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

Lcd_out:

   If Font = 8 Then Setfont Font8x8tt
   If Font = 16 Then Setfont My_16x16

   Lcdat Row , Column , Text2 , Inv

   Waitms 50

Return
És így meghívni:

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

Row = 1
   Column = 0
   Font = 8
   Text2 = "Main brd ver:1.0"
   Inv = 0
   Gosub Lcd_out
Még korábban írtam, hogy a 16x16 font és a FUSING parancs nem szereti egymást! Mivel a mostani Bascommal nem próbáltam, lehet hogy már működik rendesen. A lényeg az, hogy ha egy Float-ot a Fusing parancsal formáztam és azt 16x16 betűvel szerettem volna kiírni, akkor összetört a kijelzett kép!
Amúgy meg a FUSING elég sok helyet használ, nem is érdemes nagyon használni! Rövidebb a kód, ha fapadosan szétszedi az ember a FLOAT-ot.

A tápot meg egy feszstabbal csináld meg a kijelzőnek! LF33CV-vel.


Üdv

Kn[/url]
A hozzászólást 2 alkalommal szerkesztették, utoljára kovacsna 2011. szeptember 7. szerda, 8:33-kor.
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

OLED BL12864G

Hozzászólás Szerző: winnerbt »

Sziasztok!
Valaki meg tudta már hajtani ezt a cuccot?
Valami alap INIT sequenciát találtam a neten, de gyanús...
JAni
09:20
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Mire gondolsz?
A lib, tartalmazza az INIT szekvenciát!

_lcd_init_data:
.db &HE2,&H40 , &HA1 , &HC0 , &HA6 , &HA2 , &H2F , &HF8 , &H00 , &H27 , &H81 , &H16 , &HAC , &H00 , &HAF

KN
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

na, neba...
Csak nem kezeli a Bascom egyből ezt az OLED-et?
SSD1303 lib van?

JAni
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

A hozzászólás témáját nem néztem, ezért, bocsi. Legközelebb , hozz létre újat légyszives, mert itt az EA-DOGL-ről szól az eszmecsere!

Init:

http://www.crystalfontz.com/controllers/SSD1303.pdf

vagy:

http://www.crystalfontz.com/product/CFAL12864SYB1
Ez a kijelző is ezt a vezérlőt használja!

Nem az a fontos, hogy OLED, vagy nem. Az a vezérlő dolga, hogy meghajtsa a szegmenseket!

Üdv

KN
Válasz küldése