5″ Touchscreen
Here is the code in Bascom for my 5″ touchscreen. The schematic and code are adapted for the ledsee.com 240×128 touchscreen.
This code is not very well documentated, for a better explanation of the code check my 3″ application note at the Bascom web site.
Download code, schematic and buttons
$regfile = "m128def.DAT"
$crystal = 7372800
$baud = 19200
$eepleave
$loadersize = 512
$hwstack = 100
$swstack = 75
$framesize = 40
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Timer1 = Timer , Prescale = 1024
Const Timer1preload = 58336
Config Pinb.4 = Output
Rxtx Alias Porte.2
Speaker Alias Portf.7
Backlight Alias Portb.4
Const Buttonreturndelay = 20 'Buttonreturndelay in ms
Dim Temp As Byte , X As Word , Y As Word
Dim Hoofdmenutijdrun As Bit
Dim Row As Byte , Keyarray(3) As Byte , Col As Byte , Key As Byte , Keylus As Byte
Dim Keypressed As Byte , Menu As Byte , Holdmenu As Bit
Dim Tijdcount As Byte
Enable Ovf1
Enable Interrupts
On Timer1 1secint
Start Adc
Start Timer1
Reset Hoofdmenutijdrun
' Main
Reset Backlight 'switch backlight on
Cls
Cursor Off
Temp = 0
Gosub Showbasisknoppen
Gosub Showhoofdmenu
Do
'Your main prog here
Gosub Readtouch
Gosub Bepaaltoets
If Menu > 1 Then
Hoofdmenutijdrun = 1
Else
Hoofdmenutijdrun = 0
End If
If Keypressed > 0 Then
Select Case Menu
Case 1 : Select Case Keypressed 'Hoofdmenu
Case 11 : Gosub Foutje 'Key not used, so beep
Case 12 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 13 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 14 : Gosub Showwandmeubelmenu
Case 21 : Gosub Foutje
Case 22 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 23 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 24 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 31 : Gosub Foutje
Case 32 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 33 : Gosub Showjaloezvoormenu
Case 34 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 41 : Gosub Foutje
Case 42 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 43 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu 'Current menu must be reload to refill the buttons
Case 44 : Gosub Showhoofdmenu2
End Select
Case 2 : Select Case Keypressed 'Jaloezieen voor menu
Case 11 : Gosub Foutje
Case 12 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 13 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 14 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 21 : Gosub Foutje
Case 22 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 23 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 24 : Gosub Foutje
Case 31 : Gosub Foutje
Case 32 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 33 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showjaloezvoormenu 'Current menu must be reload to refill the buttons
Case 34 : Gosub Foutje
Case 41 : Gosub Foutje
Case 42 : Gosub Foutje
Case 43 : Gosub Foutje
Case 44 : Gosub Showhoofdmenu
End Select
Case 12 : Select Case Keypressed 'Wandmeubel
Case 11 : Gosub Foutje
Case 12 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 13 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 14 : Gosub Foutje
Case 21 : Gosub Foutje
Case 22 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 23 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 24 : Gosub Foutje
Case 31 : Gosub Foutje
Case 32 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 33 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 34 : Gosub Foutje
Case 41 : Gosub Foutje
Case 42 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 43 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showwandmeubelmenu 'Current menu must be reload to refill the buttons
Case 44 : Gosub Showhoofdmenu ' esc knop
End Select
Case 21 : Select Case Keypressed 'Hoofdmenu 2
Case 11 : Gosub Foutje
Case 12 : Print "you pressed key " ; Keypressed ; " in menu " ; Menu
Gosub Showhoofdmenu2 'Current menu must be reload to refill the buttons
Case 13 : Gosub Foutje
Case 14 : Gosub Showhoofdmenu 'Back to hoofdmenu1
Case 21 : Gosub Foutje
Case 22 : Gosub Foutje
Case 23 : Gosub Foutje
Case 24 : Gosub Foutje
Case 31 : Gosub Foutje
Case 32 : Gosub Foutje
Case 33 : Gosub Foutje
Case 34 : Gosub Foutje
Case 41 : Gosub Foutje
Case 42 : Gosub Foutje
Case 43 : Gosub Foutje
Case 44 : Gosub Foutje
End Select
End Select
Keypressed = 0
End If
Loop
'=== Subroutines===
1secint:
If Hoofdmenutijdrun = 1 Then
Incr Tijdcount
If Tijdcount => 10 Then 'Time delay return to hoofdmenu (mainmenu)
Hoofdmenutijdrun = 0 : Tijdcount = 0
If Holdmenu = 0 Then
Gosub Showhoofdmenu
End If
Else
End If
End If
Timer1 = Timer1preload
Return
Showwandmeubelmenu:
Menu = 12 : Holdmenu = 0
Showpic 0 , 0 , Hwandmeubel 'show a comnpressed picture
Showpic 6 , 36 , Ledsaan
Showpic 6 , 68 , Ledsuit
Showpic 6 , 100 , Leeg
Showpic 66 , 36 , Beidedeurenup
Showpic 66 , 68 , Beidedeurendown
Showpic 66 , 100 , Leeg
Showpic 126 , 36 , Linkerdeurup
Showpic 126 , 68 , Linkerdeurdown
Showpic 126 , 100 , Leeg
Showpic 186 , 36 , Rechterdeurup
Showpic 186 , 68 , Rechterdeurdown
Showpic 186 , 100 , Esc
Return
Showjaloezvoormenu:
Menu = 2 : Holdmenu = 0
Showpic 0 , 0 , Hjalvoor 'show a comnpressed picture
Showpic 6 , 36 , Pijlomhoog
Showpic 6 , 68 , Stopbutton
Showpic 6 , 100 , Pijlomlaag
Showpic 66 , 36 , Jalvf1
Showpic 66 , 68 , Jalvf3
Showpic 66 , 100 , Leeg
Showpic 126 , 36 , Jalvf2
Showpic 126 , 68 , Jalvf4
Showpic 126 , 100 , Leeg
Showpic 186 , 36 , Leeg
Showpic 186 , 68 , Leeg
Showpic 186 , 100 , Esc
Return
Showhoofdmenu:
Menu = 1 : Holdmenu = 0
Showpic 0 , 0 , Headerhoofdmenu 'show a comnpressed picture
Showpic 6 , 36 , Lichteettafel
Showpic 66 , 36 , Lichtsalontafel
Showpic 126 , 36 , Lichtkeuken
Showpic 186 , 36 , Schemerlamp
Showpic 6 , 68 , Lichttuin
Showpic 66 , 68 , Leeg
Showpic 126 , 68 , Jalvoor
Showpic 186 , 68 , Jalachter
Showpic 6 , 100 , Wandmeubel
Showpic 66 , 100 , Versterker
Showpic 126 , 100 , Autoprog
Showpic 186 , 100 , Pijlrechts
Return
Showhoofdmenu2:
Menu = 21 : Holdmenu = 1
'Normaly the screen will go after 10sec back to the main menu. With Holdmenu=1 the screen will stay in this menu.
Showpic 0 , 0 , Hhoofdmenu2 'show a comnpressed picture
Showpic 6 , 36 , Leeg
Showpic 66 , 36 , Leeg
Showpic 126 , 36 , Leeg
Showpic 186 , 36 , Leeg
Showpic 6 , 68 , Leeg
Showpic 66 , 68 , Leeg
Showpic 126 , 68 , Leeg
Showpic 186 , 68 , Leeg
Showpic 6 , 100 , Pijllinks
Showpic 66 , 100 , Leeg
Showpic 126 , 100 , Leeg
Showpic 186 , 100 , Leeg
Return
Bepaaltoets:
Select Case X
Case 160 To 317 : Col = 10
Case 318 To 477 : Col = 20
Case 478 To 633 : Col = 30
Case 634 To 788 : Col = 40
Case Else Col = 0
End Select
Select Case Y
Case 329 To 414 : Row = 1
Case 415 To 497 : Row = 2
Case 498 To 584 : Row = 3
Case 585 To 652 : Row = 4
Case Else Row = 0
End Select
Key = Col + Row
'locate 4 , 2 : Lcd "Je drukte op knop ; " ; key
If Key > 0 Then
Keyarray(keylus) = Key
Incr Keylus
If Keylus > 3 Then Keylus = 1
If Keyarray(1) = Keyarray(2) Then
If Keyarray(2) = Keyarray(3) Then
' If Buzzertoggle = 0 then
Sound Speaker , 1 , 65000
Keypressed = Key
Gosub Showpressedkey
Tijdcount = 0
End If
End If
End If
Return
Showpressedkey: 'Routine for "animated" buttons
Select Case Keypressed
Case 12
Showpic 0 , 33 , Knopin
Waitms Buttonreturndelay
Showpic 0 , 33 , Knop
Case 13
Showpic 0 , 65 , Knopin
Waitms Buttonreturndelay
Showpic 0 , 65 , Knop
Case 14
Showpic 0 , 97 , Knopin
Waitms Buttonreturndelay
Showpic 0 , 97 , Knop
Case 22
Showpic 61 , 33 , Knopin
Waitms Buttonreturndelay
Showpic 61 , 33 , Knop
Case 23
Showpic 61 , 65 , Knopin
Waitms Buttonreturndelay
Showpic 61 , 65 , Knop
Case 24
Showpic 61 , 97 , Knopin
Waitms Buttonreturndelay
Showpic 61 , 97 , Knop
Case 32
Showpic 121 , 33 , Knopin
Waitms Buttonreturndelay
Showpic 121 , 33 , Knop
Case 33
Showpic 121 , 65 , Knopin
Waitms Buttonreturndelay
Showpic 121 , 65 , Knop
Case 34
Showpic 121 , 97 , Knopin
Waitms Buttonreturndelay
Showpic 121 , 97 , Knop
Case 42
Showpic 181 , 33 , Knopin
Waitms Buttonreturndelay
Showpic 181 , 33 , Knop
Case 43
Showpic 181 , 65 , Knopin
Waitms Buttonreturndelay
Showpic 181 , 65 , Knop
Case 44
Showpic 181 , 97 , Knopin
Waitms Buttonreturndelay
Showpic 181 , 97 , Knop
End Select
Return
Showbasisknoppen:
Showpic 0 , 33 , Knop
Showpic 0 , 65 , Knop
Showpic 0 , 97 , Knop
Showpic 61 , 33 , Knop
Showpic 61 , 65 , Knop
Showpic 61 , 97 , Knop
Showpic 121 , 33 , Knop
Showpic 121 , 65 , Knop
Showpic 121 , 97 , Knop
Showpic 181 , 33 , Knop
Showpic 181 , 65 , Knop
Showpic 181 , 97 , Knop
Return
Readtouch:
Config Pinf.0 = Output
Config Pinf.2 = Output
Set Portf.0
Reset Portf.2
Ddrf.1 = 0 : Portf.1 = 1
Ddrf.3 = 0 : Portf.3 = 1
Waitms 20
Y = Getadc(3)
Y = 1024 - Y
'Locate 4 , 2 : Lcd "WAARDE X ; " ; X : Waitms 200
Config Pinf.1 = Output
Config Pinf.3 = Output
Set Portf.1
Reset Portf.3
Ddrf.0 = 0 : Portf.0 = 1
Ddrf.2 = 0 : Portf.2 = 1
Waitms 20
X = Getadc(2)
X = 1024 - X
'locate 4 , 2 : Lcd "WAARDE Y ; " ; Y :waitms 200
Return
Foutje:
Sound Speaker , 2 , 65000
Waitms 50
Return
Headerhoofdmenu:
$bgf "..\TouchbuttonsLarge\HeaderHoofdmenu.bgf"
Hhoofdmenu2:
$bgf "..\TouchbuttonsLarge\HHoofdmenu2.bgf"
Hjalvoor:
$bgf "..\TouchbuttonsLarge\HJalVoor.bgf"
Hwandmeubel:
$bgf "..\TouchbuttonsLarge\HWandmeubel.bgf"
Knop:
$bgf "..\TouchbuttonsLarge\knop.bgf"
Knopin: 'Button pressed in
$bgf "..\TouchbuttonsLarge\knopin.bgf"
Leeg:
$bgf "..\TouchbuttonsLarge\Leeg.bgf"
Autoprog:
$bgf "..\TouchbuttonsLarge\Autoprog.bgf"
Lichtsalontafel:
$bgf "..\TouchbuttonsLarge\Lichtsalontafel.bgf"
Lichteettafel:
$bgf "..\TouchbuttonsLarge\Lichteettafel.bgf"
Lichtkeuken:
$bgf "..\TouchbuttonsLarge\LichtKeuken.bgf"
Lichttuin:
$bgf "..\TouchbuttonsLarge\LichtTuin.bgf"
Schemerlamp:
$bgf "..\TouchbuttonsLarge\Schemerlamp.bgf"
Jalvoor:
$bgf "..\TouchbuttonsLarge\Jalvoor.bgf"
Jalachter:
$bgf "..\TouchbuttonsLarge\JalAchter.bgf"
Wandmeubel:
$bgf "..\TouchbuttonsLarge\Wandmeubel.bgf"
Versterker:
$bgf "..\TouchbuttonsLarge\Versterker.bgf"
Pijlrechts:
$bgf "..\TouchbuttonsLarge\Pijlrechts.bgf"
Pijllinks:
$bgf "..\TouchbuttonsLarge\Pijllinks.bgf"
Pijlomhoog:
$bgf "..\TouchbuttonsLarge\Pijlomhoog.bgf"
Pijlomlaag:
$bgf "..\TouchbuttonsLarge\Pijlomlaag.bgf"
Jalvf1:
$bgf "..\TouchbuttonsLarge\JalvF1.bgf"
Jalvf2:
$bgf "..\TouchbuttonsLarge\JalvF2.bgf"
Jalvf3:
$bgf "..\TouchbuttonsLarge\JalvF3.bgf"
Jalvf4:
$bgf "..\TouchbuttonsLarge\JalvF4.bgf"
Esc:
$bgf "..\TouchbuttonsLarge\Esc.bgf"
Stopbutton:
$bgf "..\TouchbuttonsLarge\Stopbutton.bgf"
F1:
$bgf "..\TouchbuttonsLarge\F1.bgf"
F2:
$bgf "..\TouchbuttonsLarge\F2.bgf"
F3:
$bgf "..\TouchbuttonsLarge\F3.bgf"
F4:
$bgf "..\TouchbuttonsLarge\F4.bgf"
Linkerdeurup:
$bgf "..\TouchbuttonsLarge\Linkerdeurup.bgf"
Linkerdeurdown:
$bgf "..\TouchbuttonsLarge\Linkerdeurdown.bgf"
Rechterdeurup:
$bgf "..\TouchbuttonsLarge\Rechterdeurup.bgf"
Rechterdeurdown:
$bgf "..\TouchbuttonsLarge\Rechterdeurdown.bgf"
Beidedeurenup:
$bgf "..\TouchbuttonsLarge\Beidedeurenup.bgf"
Beidedeurendown:
$bgf "..\TouchbuttonsLarge\Beidedeurendown.bgf"
Ledsaan:
$bgf "..\TouchbuttonsLarge\Ledsaan.bgf"
Ledsuit:
$bgf "..\TouchbuttonsLarge\Ledsuit.bgf"






