efter en hel del arbete med min glcd har jag kommit lika långt som jag var från början. Får inte ut ett skvatt på skärmen.
Min display är en 128*64 grafisk display SG12864C, jag jobbar med en PIC16F690 på breadboard. Min högsta önskan nu är att skriva ut en synlig pixel eller två på displayen. Jag har kollat att alla utgångar fungerar som de ska med lysdioder, jag har kopplat in kontrastpotentiometer, jag har studerat http://www.geocities.com/dinceraydin/dj ... cdsim.html. Dessutom har jag laddat ner alla olika 'glcd.c' på nätet och testat med mina förutsättningar.
Jag kan inte assembler, utan jobbar med c-kod via cc5x. Jag har testat _många_ varianter, men här är den senaste koden.
Kod: Markera allt
#include "16F690.h"
#pragma config FOSC = 4 //intern oscillator, RA4, RA5 tillgängliga för I/O
#pragma bit DI @ PORTB.4
#pragma bit ENABLE @ PORTB.5
#pragma bit RW @ PORTA.1
#pragma bit RESET @ PORTA.2
#pragma bit CS1 @ PORTB.6
#pragma bit CS2 @ PORTB.7
void delay(char millisec);
void main( void)
{
TRISA=0;TRISB=0;TRISC=0; //bara utgångar
//Måste initiera dessa för att kunna använda PORTA-PORTC som digital I/O
ANSEL=0;
ANSELH=0;
delay(100);
RESET=0;
delay(100);
RESET=1;
delay(100);
PORTC=0b00111111;delay(1); //display on
DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
delay(10);
ENABLE=0;nop();nop(); ENABLE=1;nop();nop(); //
PORTC=0b1100.0000;delay(1); //set STARTLINE
DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
delay(10);
ENABLE=0;nop();nop(); ENABLE=1;nop();nop();
PORTC=0b10111000;delay(1); //set page 0
DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
delay(10);
ENABLE=0;nop();nop(); ENABLE=1;nop();nop();
PORTC = 0b01000000;delay(1); //set y address 0
DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
delay(10);
ENABLE=0;nop();nop(); ENABLE=1;nop();nop();
PORTC = 0b01010101;delay(1); //write data
DI=1;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
delay(1);
ENABLE=0;nop();nop(); ENABLE=1;nop();nop();
while(1)
{
}
}
void delay( char millisec)
{
OPTION = 2; /* prescaler divide by 8 */
do {
TMR0 = 0;
while ( TMR0 < 125) /* 125 * 8 = 1000 */
;
} while ( -- millisec > 0);
}