Je viens de recevoir un OLED 1,3" en mode SPI/I2C .. MAIS ce n'est pas un modele SSD1306 !
je l'ai testé avec la version ASM de TempsX , mais probleme d'affichage bigorné..
Je reprends donc à zero, mais en C !
avec la datasheet du OLED
J'utilise la lib SPI1 Hardware de mikroC
Test liaison SPI OK avec SQA analyser.
en me fiant à l'init montrée dans la datasheet page 16 -> RIEN !
j'ai donc utilisé l'init donnée dans l'ordinogramme page 14
Code : Tout sélectionner
Hardware:
// SPI1
sbit Chip_Sel at LATC0_bit;//RC0 active ou désactive la transmission
sbit RES at LATC.B1; //RC1 reset de l'écran
sbit DC_mode at LATC.B2; //RC2 sélection du mode : commande = 0 , donnée = 1
sbit Sck at LATC.B3; // RC3 horloge de synchronisation SPI
sbit MOSI at LATC.B5; // RC5 envoye les données sur écran oled 128x64
sbit Chip_Sel_Dir at TRISC0_bit;
sbit RES_dir at TRISC.B1; //RC1 reset de l'écran
sbit DC_mode_dir at TRISC.B2;
sbit Sck_dir at TRISC.B3; // RC3 horloge de synchronisation SPI
sbit MOSI_dir at TRISA.B5;
unsigned char Init_A_Chaine[]={
// init page 14 datasheet DM-OLED13-625
0xD5,0x80,
0xA8,0x3F,
0xD3,0x00,
0x40,
0xAD,0x8B,
0xA1,
0xC8,
0xDA,0x12,
0x81,0xBF,
0xD9,0x22,
0xDB,0x40,
0x32,0xA6,
0xAF,
0xFF // terminateur !
};
j'ai reutilisé mon affichage de char defini pour un OLED SSD1306
et réussi à afficher 4 lignes avec des chars
une ligne de cracra verticale apparait en bout d'ecran
ce qui confirmerait (?) que la RAM ecran est de 132x64 au lieu de 128x64
voir video ....
rajouté l'ecriture de A en position X=4 sinon il est un peut bouffé sur le coté et char Z en 120
Nota: si j'ecris le char 'Z' en position X=124 on le voit en entier ! il y a bien 132 position sens X! sinon il serait bouffé coté droit
Code : Tout sélectionner
CPrint(" Init (A) OLED 1,3\" SSD1106 LCD 128x64\r\n");
RES=1;
Delay_ms(100);
RES=0;
Delay_ms(1000);
RES=1;
Delay_ms(1000);
SPI1_Write(0xAE); // display OFF
i=0;
SQA=1;
Chip_Sel=0;
SQA=0;
do
{
Led_R=0;
SPI1_Write(Init_A_Chaine[i]);
Led_R=1;
//SQA=0;
i++ ;
}while (Init_A_Chaine[i]<0xFF) ;
do
{
SQA=0;
Chip_Sel=1;
Delay_ms(100);
Chip_Sel=0;
OLED_CLS();
OLED_SetPos(0,0);
Write_Char_At(4,1,'A');
Write_Char_At(124,1,'Z'); // occupe la place de 124 à 131
Delay_ms(2000);
OLED_CLS();
CPrint(" ABCD ligne 1\r\n");
Chip_Sel=0;
OLED_CLS();
OLED_SetPos(0,0);
Write_Char_At(8,1,'A');
Write_Char_At(16,1,'B');
Write_Char_At(24,1,'C');
Write_Char_At(32,1,'D');
Chip_Sel=1;
Delay_ms(1000);
CPrint(" EFGH ligne 3\r\n");
Chip_Sel=0;
Write_Char_At(40,2,'E');
Write_Char_At(48,2,'F');
Write_Char_At(56,2,'G');
Write_Char_At(64,2,'H');
Chip_Sel=1;
Delay_ms(1000);
CPrint(" IJKL ligne 3\r\n");
Chip_Sel=0;
Write_Char_At(72,3,'I');
Write_Char_At(80,3,'J');
Write_Char_At(88,3,'K');
Write_Char_At(96,3,'L');
Chip_Sel=1;
Delay_ms(1000);
CPrint(" MNO ligne 4\r\n");
Chip_Sel=0;
Write_Char_At(104,4,'M');
Write_Char_At(112,4,'N');
Write_Char_At(120,4,'O');
Chip_Sel=1;
Delay_ms(1000);
_asm btg LATA,4
// CPrint(" image4 128x64 (C) cheval \r\n");
}
while(1);
fichier hex de ce test


pour cette mise à jour que j'ai lu avec attention, mais j'ai voulu télécharger le fichier :
car je vais me faire expulsé.