Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Hejka mam mały problem chciałbym żeby na moim LCD wyświetlała się wartość np.
Pin1 - X wartości
Pin2 - X wartośći
Pin3 - X wartości
Pin4 - X wartości
Tutaj wrzucam mój kod mógłby mi ktoś napisać JAK i CO należy wpisać aby zadziałało? Jestem w tym kompletnie zielony :X

#include "SmartGLCD_Hello_objects.h"
#include "SmartGLCD_Hello_resources.h"
#include "built_in.h"


// T6963C module connections
char T6963C_dataPort at PORTH;
sbit T6963C_ctrlwr at LATJ2_bit;
sbit T6963C_ctrlrd at LATJ1_bit;
sbit T6963C_ctrlcd at LATJ0_bit;
sbit T6963C_ctrlrst at LATJ4_bit;
sbit T6963C_ctrlce at LATJ3_bit;
sbit T6963C_ctrlfs at LATJ6_bit;
sbit T6963C_ctrlmd at LATJ5_bit;
sbit T6963C_ctrlwr_Direction at TRISJ2_bit;
sbit T6963C_ctrlrd_Direction at TRISJ1_bit;
sbit T6963C_ctrlcd_Direction at TRISJ0_bit;
sbit T6963C_ctrlrst_Direction at TRISJ4_bit;
sbit T6963C_ctrlce_Direction at TRISJ3_bit;
sbit T6963C_ctrlfs_Direction at TRISJ6_bit;
sbit T6963C_ctrlmd_Direction at TRISJ5_bit;

sbit BacklightRed_Direction at TRISC2_bit;
sbit BacklightGreen_Direction at TRISC1_bit;
sbit BacklightBlue_Direction at TRISG0_bit;
sbit BacklightRed at LATC2_bit;
sbit BacklightGreen at LATC1_bit;
sbit BacklightBlue at LATG0_bit;
// End T6963C module connections

// Touch Panel module connections
sbit DriveA at LATG3_bit;
sbit DriveB at LATG4_bit;
sbit DriveA_Direction at TRISG3_bit;
sbit DriveB_Direction at TRISG4_bit;
// End Touch Panel module connections

// Global variables
unsigned int Xcoord, Ycoord;
const ADC_THRESHOLD = 500;
char PenDown;
void *PressedObject;
int PressedObjectType;
unsigned int T6963C_caption_length, T6963C_caption_height;
unsigned int display_width, display_height;

int _object_count;
unsigned short object_pressed;
TLabel *local_label;
TLabel *exec_label;
int label_order;



void Init_ADC() {
ANCON0 = 0x03;
ANCON1 = 0;
ANCON2 = 0;
ADC_Init();
}
static void InitializeTouchPanel() {
Init_ADC();
T6963C_ctrlce_Direction = 0;
T6963C_ctrlce = 0; // Enable T6963C
T6963C_ctrlmd_Direction = 0;
T6963C_ctrlmd = 0; // Column number select
T6963C_ctrlfs_Direction = 0;
T6963C_ctrlfs = 0; // Wide Font

BacklightRed_Direction = 0; // Set backlight signals as outputs
BacklightGreen_Direction = 0;
BacklightBlue_Direction = 0;
BacklightRed = 0; // Turn on Red component of back light
BacklightGreen = 0; // Turn on Green component of back light
BacklightBlue = 0; // Turn on Blue component of back light

// Initialize T6963C
T6963C_init(240, 128, 8);
T6963C_graphics(1);
T6963C_text(1);
T6963C_cursor(0);

TP_Init(240, 128, 0, 1); // Initialize touch panel
TP_Set_ADC_Threshold(ADC_THRESHOLD); // Set touch panel ADC threshold

PenDown = 0;
PressedObject = 0;
PressedObjectType = -1;
}


/////////////////////////
TScreen* CurrentScreen;

TScreen Screen1;
TLabel Label1;
char Label1_Caption[7] = "Value1";

TLabel Label2;
char Label2_Caption[7] = "Value2";

TLabel Label3;
char Label3_Caption[7] = "Value3";

TLabel Label4;
char Label4_Caption[7] = "Value4";

TLabel * const code Screen1_Labels[4]=
{
&Label1,
&Label2,
&Label3,
&Label4
};




static void InitializeObjects() {
Screen1.LabelsCount = 4;
Screen1.Labels = Screen1_Labels;
Screen1.ObjectsCount = 4;


Label1.OwnerScreen = &Screen1;
Label1.Order = 0;
Label1.Left = 68;
Label1.Top = 48;
Label1.Width = 28;
Label1.Height = 12;
Label1.Visible = 1;
Label1.Active = 1;
Label1.Caption = Label1_Caption;
Label1.FontName = T6963C_defaultFont;
Label1.Font_Color = T6963C_WHITE;
Label1.OnUpPtr = 0;
Label1.OnDownPtr = 0;
Label1.OnClickPtr = Label1OnClick;
Label1.OnPressPtr = 0;

Label2.OwnerScreen = &Screen1;
Label2.Order = 1;
Label2.Left = 105;
Label2.Top = 48;
Label2.Width = 28;
Label2.Height = 12;
Label2.Visible = 1;
Label2.Active = 1;
Label2.Caption = Label2_Caption;
Label2.FontName = T6963C_defaultFont;
Label2.Font_Color = T6963C_WHITE;
Label2.OnUpPtr = 0;
Label2.OnDownPtr = 0;
Label2.OnClickPtr = 0;
Label2.OnPressPtr = 0;

Label3.OwnerScreen = &Screen1;
Label3.Order = 2;
Label3.Left = 68;
Label3.Top = 66;
Label3.Width = 28;
Label3.Height = 12;
Label3.Visible = 1;
Label3.Active = 1;
Label3.Caption = Label3_Caption;
Label3.FontName = T6963C_defaultFont;
Label3.Font_Color = T6963C_WHITE;
Label3.OnUpPtr = 0;
Label3.OnDownPtr = 0;
Label3.OnClickPtr = 0;
Label3.OnPressPtr = 0;

Label4.OwnerScreen = &Screen1;
Label4.Order = 3;
Label4.Left = 106;
Label4.Top = 65;
Label4.Width = 28;
Label4.Height = 12;
Label4.Visible = 1;
Label4.Active = 1;
Label4.Caption = Label4_Caption;
Label4.FontName = T6963C_defaultFont;
Label4.Font_Color = T6963C_WHITE;
Label4.OnUpPtr = 0;
Label4.OnDownPtr = 0;
Label4.OnClickPtr = 0;
Label4.OnPressPtr = 0;
}

static char IsInsideObject (unsigned int X, unsigned int Y, unsigned int Left, unsigned int Top, unsigned int Width, unsigned int Height) { // static
if ( (Left<= X) && (Left+ Width - 1 >= X) &&
(Top <= Y) && (Top + Height - 1 >= Y) )
return 1;
else
return 0;
}


#define GetLabel(index) CurrentScreen->Labels[index]


void DrawLabel(TLabel *ALabel) {
if (ALabel->Visible == 1) {
T6963C_Set_Font_Adv(ALabel->FontName, ALabel->Font_Color, _T6963C_HORIZONTAL);
T6963C_Write_Text_Adv(ALabel->Caption, ALabel->Left, ALabel->Top);
}
}

void DrawScreen(TScreen *aScreen) {
int order;
unsigned short label_idx;
TLabel *local_label;

object_pressed = 0;
order = 0;
label_idx = 0;
CurrentScreen = aScreen;

T6963C_grFill(0);
T6963C_txtFill(0);

while (order < CurrentScreen->ObjectsCount) {
if (label_idx < CurrentScreen->LabelsCount) {
local_label = GetLabel(label_idx);
if (order == local_label->Order) {
label_idx++;
order++;
DrawLabel(local_label);
}
}

}
}

void Get_Object(unsigned int X, unsigned int Y) {
label_order = -1;
// Labels
for ( _object_count = 0 ; _object_count < CurrentScreen->LabelsCount ; _object_count++ ) {
local_label = GetLabel(_object_count);
if (local_label->Active == 1) {
if (IsInsideObject(X, Y, local_label->Left, local_label->Top,
local_label->Width, local_label->Height) == 1) {
label_order = local_label->Order;
exec_label = local_label;
}
}
}

_object_count = -1;
if (label_order > _object_count )
_object_count = label_order;
}


static void Process_TP_Press(unsigned int X, unsigned int Y) {
exec_label = 0;

Get_Object(X, Y);


if (_object_count != -1) {
if (_object_count == label_order) {
if (exec_label->Active == 1) {
if (exec_label->OnPressPtr != 0) {
exec_label->OnPressPtr();
return;
}
}
}

}
}

static void Process_TP_Up(unsigned int X, unsigned int Y) {

exec_label = 0;

Get_Object(X, Y);


if (_object_count != -1) {
// Labels
if (_object_count == label_order) {
if (exec_label->Active == 1) {
if (exec_label->OnUpPtr != 0)
exec_label->OnUpPtr();
if (PressedObject == (void *)exec_label)
if (exec_label->OnClickPtr != 0)
exec_label->OnClickPtr();
PressedObject = 0;
PressedObjectType = -1;
return;
}
}

}
PressedObject = 0;
PressedObjectType = -1;
}

static void Process_TP_Down(unsigned int X, unsigned int Y) {

object_pressed = 0;
exec_label = 0;

Get_Object(X, Y);

if (_object_count != -1) {
if (_object_count == label_order) {
if (exec_label->Active == 1) {
PressedObject = (void *)exec_label;
PressedObjectType = 2;
if (exec_label->OnDownPtr != 0) {
exec_label->OnDownPtr();
return;
}
}
}

}
}

void Check_TP() {
if (TP_Press_Detect()) {
// After a PRESS is detected read X-Y and convert it to Display dimensions space
if (TP_Get_Coordinates(&Xcoord, &Ycoord) == 0) {
Process_TP_Press(Xcoord, Ycoord);
if (PenDown == 0) {
PenDown = 1;
Process_TP_Down(Xcoord, Ycoord);
}
}
}
else if (PenDown == 1) {
PenDown = 0;
Process_TP_Up(Xcoord, Ycoord);
}
}

void Init_MCU() {
// Place your code here
}

void Start_TP() {
Init_MCU();

InitializeTouchPanel();

// You can get calibration constants using touch panel calibration example
TP_Set_Calibration_Consts(204, 3830, 387, 3657); // Set calibration constants

InitializeObjects();
DrawScreen(&Screen1);
}

 

 

image.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...