Grafikus LCD
Szereztem egy másik kijelző ennek 4 vezetékes analógtouch fóliája van ami már nem okoz problémát de !
Itt nem tudom hogyan definiááljam a kijelzőt!
hogyan vezéreljem a bascomba!
Viszont ezt kedvezményes 15.000 ft-érttudom beszerezni és 320*240 -es
Ami azért nagyon előnyös!
a kijelző adatlapja:
Itt nem tudom hogyan definiááljam a kijelzőt!
hogyan vezéreljem a bascomba!
Viszont ezt kedvezményes 15.000 ft-érttudom beszerezni és 320*240 -es
Ami azért nagyon előnyös!
a kijelző adatlapja:
Kód: Egész kijelölése
http://www.datasheetarchive.com/crossreference/EW32F62NMW.html
Az eredeti kijelzőhöz (kontaktellenállás) alapú 3*5-s gombra kód:
Kijelző adatlap:
http://www.lcd-module.de/deu/pdf/grafik/dip128-6.pdf
Fontos: A kontakt 1-be húzza a kijelzőt! ha netán invertálni kell, akkor a kód átírását jelenti... a bemeneti láb nem lebeghet bizonytalan potenciálon!
A kontektellenállás 300R...10k lehet!
max. 10mA folyhat a csatlakozókon.
A prellt meg kell oldani. azza ha 2x ugynaz az eredmény, akkor fogadd el a gombot megnyomottnak. 2 beolvasás közt 10ms prell esetén 20-30 msec-t várj!
Kód: Egész kijelölése
$sim
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 19200
Config Pina.1 = Input ' X1
Config Pina.2 = Input ' X2
Config Pina.3 = Input ' X3
Config Pina.4 = Input ' X4
Config Pina.5 = Input ' X5
X1 Alias Pina.1
X2 Alias Pina.2
X3 Alias Pina.3
X4 Alias Pina.4
X5 Alias Pina.5
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Y1 Alias Portb.1
Y2 Alias Portb.2
Y3 Alias Portb.3
Y1 = 0
Y2 = 0
Y3 = 0
Dim Y As Byte
Dim Eredmeny As Byte
'matrix
' X1 X2 X3 X4 X5
'Y1 5 6 7 8 9
'Y2 10 11 12 13 14
'Y3 15 16 17 18 19
Do
Eredmeny = 0
For Y = 1 To 3 'Y vonal magasra
If Y = 1 Then
Y1 = 1
Y2 = 0
Y3 = 0
End If
If Y = 2 Then
Y1 = 0
Y2 = 1
Y3 = 0
End If
If Y = 3 Then
Y1 = 0
Y2 = 0
Y3 = 1
End If
'Melyik X -t Nyomtam Meg?
If X1 = 1 Then
Eredmeny = Y * 5
Eredmeny = Eredmeny + 0
Exit For
End If
If X2 = 1 Then
Eredmeny = Y * 5
Eredmeny = Eredmeny + 1
Exit For
End If
If X3 = 1 Then
Eredmeny = Y * 5
Eredmeny = Eredmeny + 2
Exit For
End If
If X4 = 1 Then
Eredmeny = Y * 5
Eredmeny = Eredmeny + 3
Exit For
End If
If X4 = 1 Then
Eredmeny = Y * 5
Eredmeny = Eredmeny + 4
Exit For
End If
Next Y
If Eredmeny > 0 Then Print "gombkod:" ; Eredmeny
Wait 1
Loop
http://www.lcd-module.de/deu/pdf/grafik/dip128-6.pdf
Fontos: A kontakt 1-be húzza a kijelzőt! ha netán invertálni kell, akkor a kód átírását jelenti... a bemeneti láb nem lebeghet bizonytalan potenciálon!
A kontektellenállás 300R...10k lehet!
max. 10mA folyhat a csatlakozókon.
A prellt meg kell oldani. azza ha 2x ugynaz az eredmény, akkor fogadd el a gombot megnyomottnak. 2 beolvasás közt 10ms prell esetén 20-30 msec-t várj!
emlekeim szerint a bascom helybol nem tamogatja ezt a felbontast.szovhoz írta:Végre mag van a grafikus kijelzőnk!!!
320*240 sed1335 chip van rajta Kék fehér.
Csak a sajna sehogy se akaja az igazságot! próbáltama gyári sed-es mintaprogit ami a bascomba van de nem jó!
Valami mintaprogit nem tudnátok adni elég ha egy betűt ki írna már utánna nem lenne vele több gondom!
meglesni: help
TyuTyu
nekem egy próba progi kellen csak! a neten láttam párat de nem működtek!
ezt találtam már az én procimra írtam de nem látokakijelsőn semmit se!!!!
A kijelző adatlapja
http://www.bolymin.com.tw/Doc/BG320240F ... VER01.zip
ezt találtam már az én procimra írtam de nem látokakijelsőn semmit se!!!!
A kijelző adatlapja
http://www.bolymin.com.tw/Doc/BG320240F ... VER01.zip
Kód: Egész kijelölése
$regfile = "m16def.DAT"
$crystal = 8000000
$baud = 19200
Ddrd = $ff
Portb = 255
Ddrc = $ff
Portc = 255
Lcd_io_a0 Alias Portc.4 ' SED A0 (C/D)
Lcd_io_cs Alias Portc.2 ' SED /CS
Lcd_io_wr Alias Portc.5 ' SED /WR
Lcd_io_rd Alias Portc.6 ' SED /RD
Lcd_io_out Alias Portb ' SED 8 bit data
Lcd_io_dir Alias Ddrb
Lcd_io_in Alias Pinb
Reset Lcd_io_cs
Declare Sub Lcd_send_cmd(byval Value As Byte)
Declare Sub Lcd_send_data(byval Value As Byte)
Declare Sub Lcd_init()
Declare Sub Busyflag()
Declare Sub Lcd_clear_graphics()
Declare Sub Lcd_write_char(byval Char As Byte)
Const Lcd_graph_addr = $04b0
Dim Lcd_pixel_value As Bit
Dim Lcd_x As Word
Dim Lcd_y As Word
Dim Pix_x As Word
Dim Pix_y As Word
Dim Lcd_bit As Byte
Dim Pix_addr As Word
Dim Lcd_addr_lo As Byte
Dim Lcd_addr_hi As Byte
Dim Lcd_data As Byte
Dim Save_a0 As Bit
Dim Save_rd As Bit
Dim Save_wr As Bit
Dim Save_cs As Bit
Dim Save_dir As Byte
Dim Test_x As Integer
Dim Test_y As Integer
Dim Limit As Byte
Call Lcd_init() 'SED Initialisieren...
Call Lcd_clear_graphics() '... und Display löschen
Lcd_x = 1 'Koordinaten
Lcd_y = 1
Lcd_pixel_value = 1 '1=Pixel setzen / 0=Pixel löschen
'****************[Hauptschleife]*********************
'*** erzeugt "wilde" linien zur Demonstration ;-) ***
'****************************************************
Mainloop:
Limit = Rnd(100)
Limit = Limit + 5
Null:
Do
Test_x = Rnd(limit)
Lcd_x = Lcd_x + 1
If Lcd_x > 318 Then Goto Zwei
Gosub Lcd_write_pixel
Waitms 100
Loop
Zwei:
Goto Mainloop
'*********************************************************
'*** Unterprogramm zum Senden von Kommandos an den SED ***
'*********************************************************
Sub Lcd_send_cmd(byval Value As Byte)
Call Busyflag 'abfrage status-bit
Set Lcd_io_a0
Lcd_io_out = Value
Reset Lcd_io_wr
! nop
Set Lcd_io_wr
Reset Lcd_io_a0
End Sub
'*****************************************************
'*** Unterprogramm zum Senden von Daten an den SED ***
'*****************************************************
Sub Lcd_send_data(byval Value As Byte)
Call Busyflag 'abfrage status-bit
Reset Lcd_io_a0
Lcd_io_out = Value
Reset Lcd_io_wr
! nop
Set Lcd_io_wr
Reset Lcd_io_a0
End Sub
'*******************************
'*** Initialisierung des SED ***
'*******************************
Sub Lcd_init()
Waitms 10
Call Lcd_send_cmd($40) 'initialize device and display
Call Lcd_send_data($30)
Call Lcd_send_data($87)
Call Lcd_send_data($07)
Call Lcd_send_data($27)
Call Lcd_send_data($55)
Call Lcd_send_data($ef)
Call Lcd_send_data($28)
Call Lcd_send_data($00)
Call Lcd_send_cmd($44) 'set display start address and display regions
Call Lcd_send_data($00)
Call Lcd_send_data($00)
Call Lcd_send_data($f0)
Call Lcd_send_data($b0)
Call Lcd_send_data($04)
Call Lcd_send_data($f0)
Call Lcd_send_cmd($4c) 'set direction of cursor movement
Call Lcd_send_cmd($5a) 'set horizontal scroll position
Call Lcd_send_data($00)
Call Lcd_send_cmd($5b) 'set display overlay format
Call Lcd_send_data($01)
Call Lcd_send_cmd($59) 'disable display flashing
Call Lcd_send_data($10)
Call Lcd_send_cmd($5d) 'set cursor type
Call Lcd_send_data($07)
Call Lcd_send_data($87)
Call Lcd_send_data($4c)
Call Lcd_send_cmd($46) 'set cursor address
Call Lcd_send_data($00)
Call Lcd_send_data($00)
End Sub
'***********************
'*** Display löschen ***
'***********************
Sub Lcd_clear_graphics()
Lcd_addr_lo = Low(lcd_graph_addr)
Lcd_addr_hi = High(lcd_graph_addr)
Call Lcd_send_cmd($46) 'set cursor address
Call Lcd_send_data(lcd_addr_lo)
Call Lcd_send_data(lcd_addr_hi)
Call Lcd_send_cmd($4c) 'set direction of cursor movement
Call Lcd_send_cmd($42) 'write to display memory
For Lcd_y = 1 To 240
For Lcd_x = 1 To 40
Call Lcd_send_data($00) 'speicher mit nullen überschreiben
Next
Next
End Sub
'**********************************************************
'*** Abfrage des Busy-Flags ***
'*** !! MUSS NOCH VERBESSERT UND BESCHLEUNIGT WERDEN !! ***
'**********************************************************
Sub Busyflag()
Save_cs = Lcd_io_cs 'sicherung der steuerleitungen
Save_a0 = Lcd_io_a0
Save_rd = Lcd_io_rd
Save_wr = Lcd_io_wr
Save_dir = Lcd_io_dir
Lcd_io_dir = $00
Reset Lcd_io_a0
Reset Lcd_io_rd
Reset Lcd_io_cs
Set Lcd_io_wr
Do 'warten bis der controller nicht mehr auf das RAM zugreift
Loop Until Pinb.6 = 1
Do
Loop Until Pinb.6 = 0 'VERBESSERN !!
Lcd_io_cs = Save_cs 'steuerleitungen wieder so setzen wie vorher
Lcd_io_a0 = Save_a0
Lcd_io_rd = Save_rd
Lcd_io_wr = Save_wr
Lcd_io_dir = Save_dir
End Sub
'****************************
'*** Pixel setzen/löschen ***
'****************************
Lcd_write_pixel:
Pix_x = Lcd_x / 8
Pix_y = Lcd_y * 40
Pix_addr = Pix_y + Pix_x
Pix_addr = Pix_addr + Lcd_graph_addr
Lcd_addr_lo = Low(pix_addr)
Lcd_addr_hi = High(pix_addr)
Call Lcd_send_cmd($46) 'set cursor adress
Call Lcd_send_data(lcd_addr_lo)
Call Lcd_send_data(lcd_addr_hi)
Call Lcd_send_cmd($43) 'read from display memory (da ja immer ein ganzes Byte
Lcd_io_dir = $00 'gesendet werden muss, muss es vorher gelesen und verändert werden)
Set Lcd_io_a0
Reset Lcd_io_rd
! nop
Lcd_data = Lcd_io_in
Set Lcd_io_rd
Reset Lcd_io_a0
Lcd_io_dir = $ff
Lcd_bit = Lcd_x Mod 8 'das zu setzende Bit in das Byte reinrechnen
Lcd_bit = 7 - Lcd_bit
Lcd_data.lcd_bit = Lcd_pixel_value
Call Lcd_send_cmd($46) 'set cursor adress
Call Lcd_send_data(lcd_addr_lo)
Call Lcd_send_data(lcd_addr_hi)
Call Lcd_send_cmd($42) 'write to display memory
Call Lcd_send_data(lcd_data)
Return
már egy pár kijelzőt kipróbáltam egyiknél sem volt ilyen önteszt!
mikor kellene ennek lemenni-e gondolom indulásnál!?
Nem lehet hogy olyan gyors hogy nem is látom?
De a kontraszt potival lehet teljesen kifehéríteni és full kékké tenni olyan közép állásba van!
Eddig nem volt ilyesmivel gondom!
de akkor ez a progi jó volna!?
mikor kellene ennek lemenni-e gondolom indulásnál!?
Nem lehet hogy olyan gyors hogy nem is látom?
De a kontraszt potival lehet teljesen kifehéríteni és full kékké tenni olyan közép állásba van!
Eddig nem volt ilyesmivel gondom!
de akkor ez a progi jó volna!?