GLCD initialization

D

Deepak350

Guest
Hej, jeg har problemer med at forsøge at få GLCD at begynde at arbejde.Please hjælp mig med initialisering sekvensen for GLCD.Jeg bruger en PIC18F8520 MCU og mikroC compiler.Hvis det er muligt i det mindste en kildekode.
Tak.

 
som GLCD du bruger?

Generelt GLCDs behøver ikke initialisering sekvens som tekst LCD.Nogle GLCDs har en nulstilling pin, der skal aktiveres på magten op og andre har intern strøm på reset.

Du kan finde en kode eksempel her

http://www.digisoft.com.pk/graphic-lcd-controller

 
Tak for svaret FVM.Den GLCD Jeg bruger er LGM12864B og controlleren er S6B0108.Den GLCD er Woking fint med den indbyggede bibliotek funktioner.Jeg vil gerne skrive min egen kode for nummerportabilitet årsager.Det link, du har givet, er oplysende, men igen bibliotek brugt functons!Her er min kode, som stadig ikke fungerer:

Citat:# define GLCD_DI PORTJ.F2

# define GLCD_RW PORTJ.F3

# define GLCD_EN PORTJ.F4

# define GLCD_CS1 PORTJ.F0

# define GLCD_CS2 PORTJ.F1

# define GLCD_RST PORTJ.F5

# define GLCD_DATA PORTD# define X_ADRESS 0xB8 / / Adresse base for Page 0

# define Y_ADRESS 0x40 / / Adresse base for Y0

# define START_LINE 0xC0 / / Adresse base for line 0

# define DISPLAY_ON 0x3F / / Slå visning på

# define DISPLAY_OFF 0x3E / / Slå skærmen ned# define HØJRE 0

# define VENSTRE 1

# define BUSY 0x80typedef unsigned int U16;void GLCDWaitBusy ()

(GLCD_DATA = 0xFF; / / Set LCD_DATA havn i input mode

TRISD = 0xFF;

GLCD_DI = 0; / / Instruction mode

GLCD_RW = 1; / / Read mode

GLCD_EN = 0; / / Strobe

Delay_ms (10);

GLCD_EN = 1;/ / while (GLCD_DATA & 0x7F == optaget); / / maske den anden status bits og teste den travle smule

while (GLCD_DATA & 0x80);)void GLCDInstructionWrite (U16 Instruction)

(GLCDWaitBusy (); / / Vent til LCD ikke har travlt

GLCD_DI = 0; / / Instruction mode

GLCD_RW = 0; / / Skriv mode

GLCD_DATA = Instruction; / / Outbyte

GLCD_EN = 1; / / Strobe

Delay_ms (10);

GLCD_EN = 0;)void GLCDSelectSide (U16 Side)

(if (side == HØJRE)

(

/ / Skift til højre

GLCD_EN = 0;

GLCD_DI = 0;

GLCD_RW = 1;

GLCD_CS1 = 0;

GLCD_CS2 = 1;GLCDInstructionWrite (Y_ADRESS); / / Sæt kolonnen til 0)

anden

(

/ / Skift til venstre

GLCD_EN = 0;

GLCD_DI = 0;

GLCD_RW = 1;

GLCD_CS1 = 1;

GLCD_CS2 = 0;GLCDInstructionWrite (Y_ADRESS); / / Sæt kolonnen til 0))void GLCDDataWrite (U16 Data)

(GLCDWaitBusy (); / / Vent til LCD ikke har travlt

GLCD_DI = 1; / / Data mode

GLCD_RW = 0; / / Skriv mode

GLCD_DATA = Data; / / Outbyte

GLCD_EN = 1; / / Strobe

Delay_ms (10);

GLCD_EN = 0;)void GLCD_ClearScreen ()

(U16 Page = 0;

U16 kolonne = 0;

/ / Process de 8 sider i GLCD

for (Page = 0; Page <8; Page )

(GLCDSelectSide (venstre); / / Select venstre side

GLCDInstructionWrite (X_ADRESS | Side); / / Sæt sidetal

GLCDInstructionWrite (Y_ADRESS); / / Sæt kolonnen til 0/ / Process en side på begge sider

for (kolonne = 0; kolonne <128; kolonne )

(if (kolonne == 64)

(GLCDSelectSide (HØJRE); / / Select højre side

GLCDInstructionWrite (X_ADRESS | Side); / / Sæt sidetal

GLCDInstructionWrite (Y_ADRESS); / / Sæt kolonnen til 0)GLCDDataWrite (0x00); / / Slet en kolonne)))void GLCDInt ()

(GLCD_DATA = 0;

GLCD_DI = 0;

GLCD_RW = 0;

GLCD_EN = 0;

GLCD_CS1 = 0;

GLCD_CS2 = 0;GLCD_RST = 1;

Delay_ms (10);

GLCD_RST = 0;

Delay_ms (10);

GLCD_RST = 1;GLCDSelectSide (venstre);

GLCDInstructionWrite (DISPLAY_OFF); / / Display OFF

GLCDInstructionWrite (START_LINE);

GLCDInstructionWrite (X_ADRESS);

GLCDInstructionWrite (Y_ADRESS);

GLCDInstructionWrite (DISPLAY_ON); / / Display ONGLCDSelectSide (HØJRE);

GLCDInstructionWrite (DISPLAY_OFF); / / Display OFF

GLCDInstructionWrite (START_LINE);

GLCDInstructionWrite (X_ADRESS);

GLCDInstructionWrite (Y_ADRESS);

GLCDInstructionWrite (DISPLAY_ON); / / Display ONGLCD_ClearScreen ();)U16 GLCDDataRead ()

(GLCD_DATA = 0xFF; / / Set LCD_DATA havn i input modeGLCD_RW = 1; / / Read mode

GLCD_DI = 1; / / Data modeGLCD_EN = 0; / / Strobe

Delay_ms (10);

GLCD_EN = 1;

Delay_ms (10);return GLCD_DATA; / / Return de læste data)

/ *

void GLCDSetDot (U16 Xaxis, U16 Yaxis)

(U16 DataRead = 0;GLCDInstructionWrite (START_LINE); / / Set adresse line 0/ / Venstre side

if (Xaxis <64)

(GLCDSelectSide (venstre); / / Select venstre side

GLCDInstructionWrite (X_ADRESS (Yaxis / 8)); / / Vælg sidetal

GLCDInstructionWrite (Y_ADRESS Xaxis); / / Select kolonneDataRead = GLCDDataRead (); / / Læs den nuværende placering

DataRead = GLCDDataRead (); / / på LCD.
dummy læseGLCDInstructionWrite (X_ADRESS (Yaxis / 8)); / / Vælg sidetal

GLCDInstructionWrite (Y_ADRESS Xaxis); / / Select kolonne

GLCDDataWrite (DataRead | (1 <<(Yaxis% 8))) / / Plot dot)

anden

/ / Højre side

(GLCDSelectSide (HØJRE); / / Select venstre side

GLCDInstructionWrite (X_ADRESS (Yaxis / 8)); / / Vælg sidetal

GLCDInstructionWrite (Y_ADRESS Xaxis - 64) / / Vælg kolonneDataRead = GLCDDataRead (); / / Læs den nuværende placering

DataRead = GLCDDataRead (); / / på LCD.
dummy læseGLCDInstructionWrite (X_ADRESS (Yaxis / 8)); / / Vælg sidetal

GLCDInstructionWrite (Y_ADRESS Xaxis - 64) / / Vælg kolonne

GLCDDataWrite (DataRead | (1 <<(Yaxis% 8))) / / Plot dot)GLCDInstructionWrite (START_LINE); / / Set adresse line 0)void GLCDRectangle (U16 Xaxis1, U16 Yaxis1, U16 Xaxis2, U16 Yaxis2)

(U16 CurrentValue = 0;/ / Draw de to vandrette linjer

for (CurrentValue = 0; CurrentValue <Xaxis2 - Xaxis1 1; CurrentValue )

(GLCDSetDot (Xaxis1 CurrentValue, Yaxis1);

GLCDSetDot (Xaxis1 CurrentValue, Yaxis2);

)/ / Draw de to lodrette linjer

for (CurrentValue = 0; CurrentValue <Yaxis2 - Yaxis1 1; CurrentValue )

(GLCDSetDot (Xaxis1, Yaxis1 CurrentValue);

GLCDSetDot (Xaxis2, Yaxis1 CurrentValue);))

* /

void main ()

(CMCON | = 0x07; / / Sluk komparatorer

ADCON1 | = 0x0F; / / Sluk analoge indgange

MEMCON.EBDIS = 1; / / Disable ekstern hukommelse busTRISJ = 0;

TRISD = 0;/ / GLCDInt ();

/ / GLCDDataWrite (0x65);

/ / GLCDRectangle (1, 1, 1, 1);

Glcd_Init (& PORTJ, 0, 1, 2, 3, 5, 4, & PORTD); / / Glcd_Init_BP5, se Autocomplete

Glcd_Fill (0x00);

GLCD_Write_Text ( "RACE = DYNAMICS", 25, 11, 2);

/ / GLCDSetDot (0,0);

/ / GLCDRectangle (0, 0, 10, 10);)

 

Welcome to EDABoard.com

Sponsor

Back
Top