Hirdetés

2024. április 27., szombat

Gyorskeresés

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.

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


#90088192
törölt tag

Kipróbáltam működik :)

Ha a képernyőre iratok ki akkor a kiírás sebességét tudom variálni vele :K

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


#90088192
törölt tag

Hello :)

Koszi az infót, lenne egy kérdésem is mert ezzel ki tudom kerülni ezt az egész marhaságot amit csinálok éppen.

Van egy port definiálás
#include <inttypes.h>
#include <p32xxxx.h>

#ifndef KS0108_H
#define KS0108_H

// Ports
#define LCD_CMD_PORT PORTD // Command Output Register
#define LCD_CMD_DIR DDRD // Data Direction Register for Command Port

#define LCD_DATA_IN PINE // Data Input Register
#define LCD_DATA_OUT PORTE // Data Output Register
#define LCD_DATA_DIR DDRA // Data Direction Register for Data

Ami érdekes
LCD_CMD_PORT PORTD engem az érdekel, meg-e lehet oldani, hogy egyenkénti biteket definiáljak mint egy port.

Egy példa mert maga LCD_CMD_PORT valójában ezeket a funkciókat tartalmazza:

#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

Vagyis a portra adott utasítások ezeket billentik át, csak nálam nem egy PORT-ra van bekötve hanem szétszórva ahogy latod :DDD

[ Szerkesztve ]

(#13) Domonkos válasza #90088192 (#12) üzenetére


Domonkos
Ármester

Bitfieldekkel igen, de nem gondolom, hogy sokkal szebb vagy olvashatobb lesz majd tole a kod.

Gender of electrical connectors is defined by the pins.

(#14) #90088192 válasza Domonkos (#13) üzenetére


#90088192
törölt tag

Koszi :)
Nem azért kellene, hanem van egy komplett könyvtár ami kész minden benne van, csak ugye nem tudom illeszteni a hardveremhez ebben a formában. :O

(#15) bkercso


bkercso
nagyúr

Sok sikert!

Én csak Pascalban meg Delphiben írtam eddig pár tízezer sort (fraktálgenerátor, illetve kaotikus fizikai rendszerek szimulációja). Meg olvastam pár C++ kódot.

Megjelentek! : MFD3 és MFA3 || bkercso HiFi készülékek: https://hardverapro.hu/aprok/hirdeto/bkercso/keres.php?search_exac=0&search_title=0&usrid=341946&buying=0

(#16) #90088192 válasza bkercso (#15) üzenetére


#90088192
törölt tag

Hello :)

Koszi, az első buktatón úgy ahogy de túl vagyok, igaz nem tökéletes de teszteléshez jó lesz :K

Életemben talán ha írtam 100 sort Pascal-ban meg ugyan ez Basic-ben.
Megoldom csak nem egyszerű :DDD

Copyright © 2000-2024 PROHARDVER Informatikai Kft.