Black Board

Code Examples ››
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          600

$define TouchAveragePoints   2

$define TouchMedianDistance  4

$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(0) = 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