2024. május 3., péntek

Gyorskeresés

Az elmúlt 2 hét szívása

Írta: |

[ ÚJ BEJEGYZÉS ]

Minden társamnak aki eddig a halhatatlanságot választotta :K

Hirtelen felindulásból elkövetett elgondolásom alapján, belevetettem magam a PIC programozás rejtelmeibe C nyelven.

Van egy próba panelem, de nem szabványos, hanem egy működöd berendezésből lett kihúzva, úgy hogy megvan a kapcsolási rajz hozzá. Első HIBA!

A kijelző vezérlésére, előre megírt verziók NEM jók mert hiába cserélgetem a portokat, vagy hiányzik belőlük valami, vagy nem jöttem rá, hogyan lehetne egy portnak konfigurált kimenetet szétszedni, mert ugye nem szabványos sehol sem. :DDD Második HIBA.

Életemben addig a pontig kb 5 sort írtam eddig C-ben. Harmadik HIBA!

Mindennek a tetejében elkaptam valami nyavalyát, nem sokat aludtam, köhögök mint ahogy kell. :DDD Negyedik Hiba

Most 2 hét után eljutottam addig, hogy rájöttem mit nem csináltam eddig jól, hiába sikerült pár nap után képet csiholni, valahogy mindig félrement(Típus definíciók hiába kezelnek mindent alapból, nem átjárható, így bizonyos ciklusokat binárisban valamelyeket meg hexánban futtatom ;] )

Vagyis most jutottam el ódáig, hogy a tombol kiolvasva, kirakok egy karaktert oda ahova akarok.

Innen mar csak egy köpés a és talán egy string-et is képes leszek kiíratni(Legalább egy hónapra tippelek :DD )

Elvagyok mint a befőtt, igaz 17.-en kezdek ha minden jól megy az új munkahelyemen :))

Hozzászólások

(#1) KISDUCK


KISDUCK
addikt

"Mindennek a tetejében elkaptam valami nyavalyát, nem sokat aludtam, köhögök mint ahogy kell. :DDD Negyedik Hiba"
Nem ám elkaptad te is a korona vírust! ;] Jobbulást amúgy!

(#2) UnA


UnA
Korrektor

Azért ha lehet, akkor próbáld meg mégis a típusos adatokat – mondjuk a részletekről nem sokat mondtál, így nehéz tanácsot adni.

... és a bináris és a hexa az nem adattípus, hanem csak az információ egy megjelenítése. ;)

(#3) #90088192 válasza UnA (#2) üzenetére


#90088192
törölt tag

Ha mar egyszer érdeklődik az úr :DDD

// KS0108 Graphic LCD "C" Driver V0.0
// Laz

#include "ks0108.h"
#include "font5x8.h"


void delay(int j)
{
unsigned int i;
for(i=0; i<j; i++);
}


void strobe_E(void) //Turn screen On and Off
{
KS0108_EN = 1;
delay(20);
KS0108_EN = 0;
delay(20);
}

void lcd_sel(int s) //Screen Side Select
{ if(s==0)
{
KS0108_CS1 = 1; // Left 64 Vertical bit selected
KS0108_CS2 = 0;

} else if(s==1){

KS0108_CS1 = 0;
KS0108_CS2 = 1; // Right 64 Vertical bit selected

}else{

KS0108_CS1 = 1; // Left 64 Vertical bit selected
KS0108_CS2 = 1; // Right 64 Vertical bit selected
}
}
void line_select(int s)
{
// X Page : Select Horizontal group of 8bits
KS0108_RS = 0;
DATA_OUT = s;
strobe_E();
}

void set_y(int y)
{
//Y address
KS0108_RS = 0; //Instruction mode
DATA_OUT = (0b01000000+y);
strobe_E();
}

void start_line(int y)
{
KS0108_RS = 0; //Instruction mode
DATA_OUT = (0b11000000+y);
strobe_E();
}

void clr_scr (int t)
{
int x; int y;
start_line(0b00000000); //Horizontal offset address
for(y=0b10111000;y<0b11000000;y++)
{line_select(y);
delay(20);

for(x=0; x<64; x++)
{
//set_y(x);
KS0108_RS = 1;
DATA_OUT = t;
strobe_E();
};
};

};

void main(void)
{
unsigned int x;

InitalizePorts(); //Set Ports to default

//Wait for Vcc to settle
delay(20);

//Instruction Mode
KS0108_RS = 0;

// Turn on display
KS0108_RS = 0;
DATA_OUT = 0b00111111;
strobe_E();


lcd_sel(3); //Select both sides of the display
delay(100),
set_y(0); ///Vertical offset address
clr_scr(0x00); //Wipes the screen with the given data



//*************************************************************************
// Write Test
//*************************************************************************

lcd_sel(3);
start_line(0b00111000); //Horizontal Offset address
int u;
for(u=0b10111000;u<=0b10111111;u++) //Loop for horizontal line selection
{
line_select(u); //Horizontal line selection
set_y(0b00000001);
for(x=6; x<66; x++) //Data Readout from array
{
KS0108_RS = 1; //Data out mode
DATA_OUT = font5x8[x]; //Put data on the port
strobe_E();
};
};

while(1);
}

(#4) #90088192 válasza #90088192 (#3) üzenetére


#90088192
törölt tag

Es a hiányzó "ks0108.h" Header

// KS0108 LCD Driver Config Header
#pragma config POSCMOD = XT, FNOSC = PRIPLL
#pragma config FPLLMUL = MUL_20
#pragma config FPLLIDIV = DIV_2
#pragma config FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config FPBDIV = DIV_8
#pragma config OSCIOFNC = OFF

#include <stdio.h>
#include <string.h>
#include <math.h>

//#define __PIC32MX__
#if defined(__PIC24F__)
#include <p24fxxxx.h> ;

#elif defined(__PIC24H__)
#include <p24hxxxx.h> ;

#elif defined(__dsPIC30F__)
#include <p30fxxxx.h>;

#elif defined(__dsPIC33F__)
#include <p33fxxxx.h>;

#elif defined(__PIC32MX__)
#include <p32xxxx.h>

#else
#error Processor type not defined!!
#endif

//Physical port assignment
#define KS0108_Dir TRISE
#define DATA_OUT LATE
#define DATA_IN PORTE
//Physical pin assignment
#define KS0108_CS1 LATGbits.LATG6
#define KS0108_CS2 LATDbits.LATD8
#define KS0108_RS LATGbits.LATG9
#define KS0108_RW LATDbits.LATD7
#define KS0108_EN LATDbits.LATD11
#define KS0108_CL1 LATBbits.LATB13
#define KS0108_CL2 LATBbits.LATB14
#define KS0108_CL3 LATBbits.LATB15

// direction flags for the pins hardwware layer
#define KS0108_CL1_Direction TRISBbits.TRISB13
#define KS0108_CL2_Direction TRISBbits.TRISB14
#define KS0108_CL3_Direction TRISBbits.TRISB15
#define KS0108_CS1_Direction TRISGbits.TRISG6
#define KS0108_CS2_Direction TRISDbits.TRISD8
#define KS0108_RS_Direction TRISGbits.TRISG9
#define KS0108_RW_Direction TRISDbits.TRISD7
#define KS0108_EN_Direction TRISDbits.TRISD11


void InitalizePorts()
{DATA_OUT=0;
DATA_IN=0;
KS0108_Dir=0;
KS0108_CS1=1;
KS0108_CS2=1;
KS0108_RS=1;
KS0108_RW=0;
KS0108_EN=1;

/* Command port direction settings */
KS0108_CS1_Direction =0 ;
KS0108_CS2_Direction =0 ;
KS0108_RS_Direction =0 ;
KS0108_RW_Direction =0 ;
KS0108_EN_Direction =0 ;
KS0108_CL1_Direction =0 ;
KS0108_CL2_Direction =0 ;
KS0108_CL3_Direction =0 ;
}

[ Szerkesztve ]

(#5) Domonkos válasza #90088192 (#3) üzenetére


Domonkos
Ármester

Idaig olvastam:
void delay(int j)
{
unsigned int i;
for(i=0; i<j; i++);
}

Gender of electrical connectors is defined by the pins.

(#6) Attix70


Attix70
aktív tag

Miért PIC és miért nem Atmega (Arduino) ?
Arduino (ESP, STM, Atmega...).

Próbáljuk meg a mondatokat NAGYbetűvel kezdeni

(#7) #90088192 válasza Domonkos (#5) üzenetére


#90088192
törölt tag

:R

Mi a baj vele? Utoljára kb 14 éves lehettem amikor Pascalban ökörködtem egy kicsit, ez most éppen a tanulási szakasz :K

Csaltam egy picit, találtam egy kódot ami legalább ki tud írni valamit, de aki írta bevallotta, ugyan úgy nem tud programozni mint EN :R

Ebből reszelem most amit éppen láttok. A nagyja az enyém mar, de ezen átsiklottam :O

[ Szerkesztve ]

(#8) #90088192 válasza Attix70 (#6) üzenetére


#90088192
törölt tag

Egyszerű, a próba panelem ingyen volt, és van egy komplett berendezésem amivel tesztelni tudom, kisebb módosítások csak a a végrehajtó oldalon szükségesek. Minden dokumentálva van mert elhoztam a cégtől a komplett PCB alkönyvtárat.

Egy akkumulátor tolton dolgozok ami eredetileg egy hibrid analog/digitalis szabályzó körrel volt ellátva, én egy teljesen digitális verziót akarok csinálni :R

(#9) #90088192 válasza Domonkos (#5) üzenetére


#90088192
törölt tag

Ez így jobb, most gondoltam ki amíg a WC-n voltam ;]

void delay(int j)
{
for(0; j=0; j--);
}

(#10) Domonkos válasza #90088192 (#7) üzenetére


Domonkos
Ármester

Az, hogy ennek a fugvenynek nincs igazi mellekhatasa. Ebben a formaban csak nagyon keves feltetelezheto a forditott gepi kodrol. Jobb/ujabb forditok szerintem csak egy sima ret-re fogjak az egeszet cserelni. Ami egyebkent jo es amugy optimalis megoldas is, de delay-kent nem sok ertelme lenne.

[ Szerkesztve ]

Gender of electrical connectors is defined by the pins.

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.