Black Board

Code Examples ›› TFT ››
… visits
Parent Previous Next

DEMO BLACK BOARD

(Download)

Device = 18F67K22

Declare Xtal = 64

Declare Auto_Heap_Arrays = On

Declare Auto_Heap_Strings = On

Declare Auto_Variable_Bank_Cross = On

Declare Watchdog = OFF

Declare Warnings = Off

Declare Optimiser_Level = 3

'================ MCU =======================

$define McuType              0

'================ TFT SCREEN ================

$define TFT_IC               ILI9341

$define TftScreenWidth       320

$define TftScreenHeight      240

$define TftWidthOffset       0

$define TftHeightOffset      0

$define TftPixelCheck        0

$define TFT_COM              SPI_1

$define TFT_COM_Slow

$define TFT_COM_Fast

$define TFT_RESET            PORTC.7

$define TFT_CS               PORTF.7

$define TFT_DC               PORTC.2

$define TFT_MOSI             PORTC.5

$define _TFT_MOSI            _PORTC.5

$define TFT_MISO             PORTC.5

$define _TFT_MISO            _PORTC.5

$define TFT_SCLK             PORTC.3

$define _TFT_SCLK            _PORTC.3

Include                      "TftLib\TFT_Graphic_Lib.inc"

Include                      "TftLib\Colors\Colors.inc"

Include                      "TftLib\Drivers\Drivers.inc"

Include                      "TftLib\Drivers\ILI9341.inc"

Include                      "TftLib\System\System.inc"

Include                      "TftLib\System\System_SPI_V4.inc"

Include                      "TftLib\Shapes\Shapes.inc"

Include                      "TftLib\Shapes\Shapes_SPI_V1.inc"

'================ SD CARD ===================

$define SDCardUsed           0

'================ MEMORY ====================

$define MemoryType           0

'================ TFT TOUCH =================

$define TOUCH_IC             XPT2046

$define Z_Threshold          500

$define TouchAveragePoints   3

$define TouchMedianDistance  5

$define TOUCH_COM            SPI_SW

$define T_CS                 PORTG.1

$define T_IRQ                PORTA.5

$define T_MOSI               PORTC.5

$define _T_MOSI              _PORTC.5

$define T_MISO               PORTC.4

$define _T_MISO              _PORTC.4

$define T_SCLK               PORTC.3

$define _T_SCLK              _PORTC.3

Include                      "TftLib\Touch\Touch.inc"

Include                      "TftLib\Touch\XPT2046.inc"

'================ SPRITES ===================

$define SpritesUsed          0

'=============== SND FONT ===================

$define FontSNDUsed          0

'=============== BDF FONT ===================

$define FontBDFUsed          1

Include                      "TftLib\Fonts\BDF\F4_BDF_Ranchers-Regular-23.inc"

Include                      "TftLib\Fonts\BDF.inc"

Include                      "TftLib\Fonts\BDF_SPI_V1.inc"

Dim pButtonMode As Bit

Dim pBufferReset As Bit = 1

Dim wTouchToPointXOld As Word

Dim wTouchToPointYOld As Word

On_Hardware_Interrupt GoTo Isr

GoTo Main

Isr:

Context Save

T1CON.0 = 0

pBufferReset = 1

TMR1H = $83 : TMR1L = $00

PIR1.0 = 0

Context Restore

Main:

Clear

SetCrystal()

SetPins()

SetTimer1()

TftSetUp(0,0)

TftResetScreen(BLACK)

TftTouchCalibration(3)

SetScreen()

DelayMS 1000

While 1 = 1

If T_IRQ = 0 Then

If TftTouchGetCoordinates(1) = 1 Then

'Check if within board area, if not check buttons

If wTouchToPointY > 44 And wTouchToPointY < 235 And wTouchToPointX > 4 And wTouchToPointX < 315 Then

'Print pixel

If pButtonMode = 0 Then

If pBufferReset = 0 Then

If Abs(wTouchToPointX - wTouchToPointXOld) < 2 Then

If Abs(wTouchToPointY - wTouchToPointYOld) < 2 Then

TftPixel(wTouchToPointX, wTouchToPointY, GREEN)

wTouchToPointXOld = wTouchToPointX

wTouchToPointYOld = wTouchToPointY

T1CON.0 = 0 : TMR1H = $83 : TMR1L = $00 : T1CON.0 = 1

EndIf

EndIf

Else

TftPixel(wTouchToPointX, wTouchToPointY, GREEN)

wTouchToPointXOld = wTouchToPointX

wTouchToPointYOld = wTouchToPointY

pBufferReset = 0

T1CON.0 = 1

EndIf

Else

'Erase 4x4 pixel area

TftRectangleSNCP(wTouchToPointX, wTouchToPointY, 4,4, BLACK)

EndIf

Else

CheckButtons()

EndIf

EndIf

EndIf

Wend

End

Proc CheckButtons()

If wTouchToPointY > 6 And wTouchToPointY < 34 Then

Select wTouchToPointX

Case 25 To 95

TftRectangleRC(120,5, 200,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(20,5, 100,35, 10, 0,RED, 2,-1)

pButtonMode = 0

Case 125 To 195

TftRectangleRC(20,5, 100,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(120,5, 200,35, 10, 0,RED, 2,-1)

pButtonMode = 1

Case 225 To 295

TftRectangleRC(20,5, 100,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(120,5, 200,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(220,5, 300,35, 10, 0,RED, 2,-1)

TftRectangleSNTC(3,41, 316,236, BLACK)

DelayMS 200

TftRectangleRC(220,5, 300,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(20,5, 100,35, 10, 0,RED, 2,-1)

pButtonMode = 0

EndSelect

EndIf

EndProc

Proc SetScreen()

TftResetScreen(BLACK)

'Outside frame

TftRectangleTCG(0,0, 319,40, AZURE, WHITE, 1)

TftRectangleETTCI(0,0, 319,40, ANTIQUE_RUBY, 2)

TftRectangleETTCI(0,38, 319,239, ANTIQUE_RUBY, 2)

'Print buttons

TftRectangleRCG(20,5, 100,35, 10, ANTIQUE_BRASS,BRONZE, 1)

TftRectangleRCG(120,5, 200,35, 10, ANTIQUE_BRASS,BRONZE, 1)

TftRectangleRCG(220,5, 300,35, 10, ANTIQUE_BRASS,BRONZE, 1)

TftRectangleRC(20,5, 100,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(120,5, 200,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftRectangleRC(220,5, 300,35, 10, 0,BURNISHED_BROWN, 2,-1)

TftSetBdfFont(4)

TftPrintBdfString("Write", 34, 12, 480, 0, WARM_BLACK, WHITE, 1)

TftPrintBdfString("Erase", 134, 12, 480, 0, WARM_BLACK, WHITE, 1)

TftPrintBdfString("Reset", 234, 12, 480, 0, WARM_BLACK, WHITE, 1)

TftRectangleRC(20,5, 100,35, 10, 0,RED, 2,-1)

EndProc

'Set Fosc

Proc SetCrystal()

Clear

OSCTUNE.6 = 1

DelayMS 100

EndProc

Proc SetPins()

'Set all digital

ANCON0 = 0

ANCON1 = 0

ANCON2 = 0

SSP1STAT.6 = 1

SSP1CON1 = %00100000

EndProc

Proc SetTimer1()

T1CON.7 = 0 : T1CON.6 = 0 'FOSC /4

T1CON.5 = 1 : T1CON.4 = 0 '1:4 Prescaler

T1CON.3 = 0 'Dedicated T1 oscillator disabled

T1CON.2 = 1 'Do not synchronize

T1CON.1 = 0 '8-bit

T1CON.0 = 0 'TMR1 ON / Off

TMR1H = $83 : TMR1L = $00

INTCON.7 = 1 : INTCON.6 = 1 : PIR1.0 = 0 : PIE1.0 = 1

EndProc

Config_Start

RETEN = On        ;Enabled

INTOSCSEL = Low        ;LF-INTOSC in Low-power mode during Sleep

SOSCSEL = Dig        ;digital

XINST = OFF        ;Disabled

FOSC = EC2        ;HS oscillator (High power, 16 MHz - 25 MHz)

PLLCFG = On        ;Enabled

FCMEN = OFF        ;Disabled

IESO = OFF        ;Disabled

PWRTEN = OFF        ;Disabled

BOREN = OFF        ;Disabled in hardware, SBOREN disabled

BORV = 0        ;3.0V

BORPWR = High        ;BORMV set to high power level

WDTEN = OFF        ;WDT disabled in hardware; SWDTEN bit disabled

WDTPS = 1048576        ;1:1048576

RTCOSC = SOSCREF        ;RTCC uses SOSC

CCP2MX = PORTBE        ;RC1

MSSPMSK = MSK7        ;7 Bit address masking mode

MCLRE = On        ;MCLR Enabled, RG5 Disabled

STVREN = On        ;Enabled

BBSIZ = BB2K        ;2K word Boot Block size

Debug = OFF        ;Disabled

Cp0 = OFF        ;Disabled

CP1 = OFF        ;Disabled

CP2 = OFF        ;Disabled

CP3 = OFF        ;Disabled

CP4 = OFF        ;Disabled

CP5 = OFF        ;Disabled

CP6 = OFF        ;Disabled

CP7 = OFF        ;Disabled

CPB = OFF        ;Disabled

CPD = OFF        ;Disabled

WRT0 = OFF        ;Disabled

WRT1 = OFF        ;Disabled

WRT2 = OFF        ;Disabled

WRT3 = OFF        ;Disabled

WRT4 = OFF        ;Disabled

WRT5 = OFF        ;Disabled

WRT6 = OFF        ;Disabled

WRT7 = OFF        ;Disabled

WRTC = OFF        ;Disabled

WRTB = OFF        ;Disabled

WRTD = OFF        ;Disabled

EBRT0 = OFF        ;Disabled

EBRT1 = OFF        ;Disabled

EBRT2 = OFF        ;Disabled

EBRT3 = OFF        ;Disabled

EBRT4 = OFF        ;Disabled

EBRT5 = OFF        ;Disabled

EBRT6 = OFF        ;Disabled

EBRT7 = OFF        ;Disabled

EBRTB = OFF        ;Disabled

Config_End

Created with the Personal Edition of HelpNDoc: Easily Add Encryption and Password Protection to Your PDFs