Version:0.9 StartHTML:0000000105 EndHTML:0000341656 StartFragment:0000001499 EndFragment:0000341640
#define Version "2021_0928"
//#define Version "2021_0927"
// 1er test ABCD EFGH IJKL MNO
#define Directory "C:\\_MikroC\\_MesProjets_MikroC\\OLED_SPI_DM13_625_18F26K22_2021"
#define Project "OLED_SPI_DM13_625_18F26K22_2021-09.mcppi"
#define Source "OLED_SPI_DM13_625_18F26K22_"
#define HARDWARE "Carte Base 18F26K22, LCD OLED SH1106 1.3\" 128x64 en Bleu"
#define OTHER " "
#define Config "P18F26K22_FOSC_interne_16xPLL_64MHz_RA6_FreqOut.cfgsch"
#define FOSC_INTERNE
#define FOSC "16MHz x PLL = 64MHz"
#define MCU "18F26K22 DIP28"
#define POWER_Supply "3.6 V mini ! up to 5.0V"
#define FOSC_INTERNE
#define SSD1106_SPI
#define NB_PAGES 8
#define SS1106_LCDWIDTH 128
#define SS1106_LCDHEIGHT 64
#define CLS 12
#define CR 13
#define LF 10
#define TAB 9
#define BACK 8
#define ON 0
#define OFF 1
#define Byte unsigned char
#define Word unsigned int
#define INIT_A
// ac:Base_18F
// Hardware
/*
Pin 28 RB7 -----------------ICSP Data
Pin 27 RB6 -----------------ICSP Clock
Pin 26 RB5
Pin 25 RB4
Pin 24 RB3
Pin 23 RB2 input
Pin 22 RB1 --- strap input
Pin 21 RB0 input
Pin 20 VDD --------+5V ----- Pin 1 OLED VCC
Pin 19 Vss ---------Gnd ---- Pin 2 OLED Gnd
Pin 18 RC7 RX UART <---------------- Keyboard
Pin 17 RC6 TX UART ----------------> Display * mettre une pull up de 10K si RX non utilisée
Pin 16 RC5 MOSI output
Pin 15 RC4
Pin 14 RC3 SCL ------> OLED CLCK
Pin 13 RC2
Pin 12 RC1
Pin 11 RC0
Pin 10 RA6
Pin 9 RA7
Pin 8 VSS --------- Gnd
Pin 7 RA5
Pin 6 RA4 Output -- Led -- 2,7K --+Vcc
Pin 5 RA3 SQA output --> SQA50 Analyser synchro input
Pin 4 RA2 (DAC)
Pin 3 RA1 Analog input EA1
Pin 2 RA0 Analog Input EA0 ou OWS
Pin 1 RE3 MCLR Reset --------ICSP PGRM VPP
*/
#include "../__common/BMP_128x64_Cheval.h"
#include "../__common/BMP_128x64_Vumetre.h"
//#include "../__common/BMP_128x64_Popeye.h"
//#include "../__common/BMP_128x64_Monroe.h"
#include "../__common/BMP_Truck.h"
/*
const unsigned char cheval [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xF0, 0xF0, 0xF0,
0xF0, 0xF8, 0xF8, 0xFC, 0xFF, 0xFF, 0x7F, 0x7E, 0x7E, 0x3E, 0x3E, 0x1E, 0x1F, 0x1F, 0x9F, 0x9F,
0x1F, 0x1F, 0x1E, 0x0E, 0x3E, 0x7E, 0xFE, 0xDC, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0x7F, 0x7F, 0x3F,
0x3F, 0x3F, 0x9E, 0xFE, 0xFE, 0xFC, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03,
0x07, 0x07, 0x06, 0x0E, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, 0x38, 0x18, 0x38,
0x38, 0x18, 0x38, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x3F,
0xFF, 0xE7, 0xC3, 0x01, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x1C, 0xEE, 0xF0, 0x7E, 0x3F, 0x7F,
0x71, 0x70, 0xE0, 0xE0, 0xC0, 0x07, 0x07, 0x07, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x08, 0x0C, 0x1C, 0x0C, 0x1C,
0x1C, 0x1E, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x80, 0x80, 0x00,
0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xF0, 0xF0, 0xF8, 0xFC, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x33, 0xFF, 0xFF, 0xFC, 0xFA, 0xF3, 0xFF, 0x7F, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0E, 0x1E, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
0xC0, 0x80, 0x80, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF8, 0xFE, 0xEF, 0x77, 0x37, 0x3F,
0x3F, 0x1B, 0xFB, 0xF9, 0xF0, 0xF0, 0xF0, 0xB0, 0x38, 0x38, 0x18, 0x38, 0x1C, 0x0E, 0x0F, 0x07,
0x03, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x1C, 0x38,
0x38, 0x18, 0xF8, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF3, 0xFF, 0x77, 0x7F, 0x7E, 0x7C, 0xF8, 0xE0,
0x80, 0x7E, 0xFF, 0xBF, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0F, 0x0F, 0x1F,
0x0F, 0x1F, 0x07, 0x0F, 0x0F, 0x0F, 0x0D, 0x1F, 0x0F, 0x07, 0x03, 0x60, 0xF0, 0xF0, 0xF8, 0xF8,
0xF0, 0xFC, 0xFE, 0xFF, 0x7F, 0x3F, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE,
0xFE, 0x67, 0x7F, 0x3F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F,
0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0xF8, 0x7C, 0x7E, 0x3E, 0x3E, 0x3F, 0x0F, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x23, 0x7F, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x1F, 0x0F, 0x1F, 0x1E, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
*/
//Signal_generation_Sinus_harmoniq_2021.xls
unsigned char Table_Sinus_128_Steps[]=
{ // '=SIN(C6*Coeff2*2*PI()/360)*Amplitude2
// + SIN(C6*Coeff2*6*PI()/360)*Amplitude2/3
// + SIN(C6*Coeff2*10*PI()/360)*Amplitude2/6
32,36,40,44,48,51,54,56,58,59,60,60,60,60,59,58,
58,57,56,55,55,54,54,54,55,55,56,56,57,57,58,58,
58,58,58,57,57,56,56,55,55,54,54,54,55,55,56,57,
58,58,59,60,60,60,60,59,58,56,54,51,48,44,40,36,
32,28,24,20,16,13,10,8,6,5,4,4,4,4,5,6,
6,7,8,9,9,10,10,10,9,9,8,8,7,7,6,6,
6,6,6,7,7,8,8,9,9,10,10,10,9,9,8,7,
6,6,5,4,4,4,4,5,6,8,10,13,16,20,24,28,
};
const unsigned char font_regular_6x8[92][6] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, // !
0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // "
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // #
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
0x00, 0x62, 0x64, 0x08, 0x13, 0x23, // %
0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // &
0x00, 0x00, 0x05, 0x03, 0x00, 0x00, // '
0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, // (
0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, // )
0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, // *
0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
0x00, 0x00, 0x00, 0xA0, 0x60, 0x00, // ,
0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // -
0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // .
0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // /
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46, // 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, // 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39, // 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // 9
0x00, 0x00, 0x36, 0x36, 0x00, 0x00, // :
0x00, 0x00, 0x56, 0x36, 0x00, 0x00, // ;
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // <
0x00, 0x14, 0x14, 0x14, 0x14, 0x14, // =
0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // >
0x00, 0x02, 0x01, 0x51, 0x09, 0x06, // ?
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, // A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C, // D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, // N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, // R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31, // S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, // W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // [ 91
0x00, 0x02, 0x04 , 0x08, 0x10, 0x20, // \92
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // ]
0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // _
0x00, 0x00, 0x01, 0x02, 0x04, 0x00, // '
0x00, 0x20, 0x54, 0x54, 0x54, 0x78, // a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38, // b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20, // c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F, // d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18, // e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02, // f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, // i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, // j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, // l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78, // m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, // n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38, // o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, // p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, // q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, // r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20, // s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20, // t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44, // x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, // z
0x14, 0x14, 0x14, 0x14, 0x14, 0x14 // horiz lines
};
unsigned char code F8X16[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//~ 94
};
// File generated by LCD Assistant
// http://en.radzio.dxp.pl/bitmap_converter/
// #include "BMP_128x64_Cheval.h"
/*
#include "BMP_Tigre_128x64.h "
#include "BMP_128x64_Monroe.h"
*/
// #define NB_PAGES 8
static unsigned char buffer[1060]; // (128*64) /8
sbit SQA at LATA.B3;
sbit SQA_Dir at TRISA.B3;
sbit Led_R at LATA.B4; //tirage au +VCC via 2,7K
sbit Led_R_dir at TRISA.B4;
//sbit OLED_Supply at LATA.B5;
//sbit OLED_Supply at TRISA.B5;
// 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 TEXTE[128];
unsigned char buffer1[128];
unsigned char buffer2[80];
unsigned char * txt;
int i,j,k,l;
unsigned char Reglage;
unsigned const char *p1;
unsigned char *p2;
unsigned char CRam1[80];
unsigned int Index;
float F1;
unsigned int EA1, SEA1;
unsigned int clk;
volatile char c1,c2;
volatile int DataReady1;
volatile int CptFO1,CptFE1;
volatile int Index1,i1;
int erreurs;
unsigned long L1 =0;
unsigned char Cde,Donnee;
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,
0xA4,0x3F,
0xAF,
0xFF
};
unsigned char BAD_Init_B_Chaine[]={
// voir Init page 16 datasheet DM-OLED13-625
0x02,0x10,0x40,0xB0,0x81,0xBF,0xA1,0xA6,0xA8,0x3F,0xAD,0x8A,0x32,0xC8,
0xD3,0x20,0xD5,0x80,0xD9,0x22,0xDA,0x12,0xDB,0x40,0xAF,0xFF
};
void Print_Cte_String (const char * q);
void UART1_Write_CText(const char *txt);
void CRLF1(void);
void WriteCmd(unsigned char I2C_Command);
void WriteDat(unsigned char I2C_Data);
void Write_Char_At(unsigned char X,unsigned char Y, unsigned char C);
Word oldx,oldy;
void OLED_ShowStr(unsigned char x, unsigned char y, unsigned char *ch, unsigned char TextSize) ;
void Display_Picture(unsigned char pic[]);
void SSD1106_ClearDisplay(void);
// --- Copie le texte depuis FLASH ROM vers RAM
void strConstRamCpy(unsigned char *dest, const code char *source)
{
while (*source)*dest++ = *source++ ;
*dest = 0 ; // terminateur
}
void Delay_2sec(void)
{
Delay_1sec(); Delay_1sec();
}
void Delay_300ms(void)
{
Delay_100ms(); Delay_100ms(); Delay_100ms();
}
#define CPrint UART1_Write_CText
#define Print UART1_Write_Text
void UART1_Write_CText(const char *txt)
{
while (*txt) UART1_Write(*txt++);
}
void CRLF1()
{
UART1_Write(CR); UART1_Write(LF);
}
void WriteDat(unsigned char Donnee)
{
DC_mode=1;
Chip_Sel=0;
SPI1_Write(Donnee);
Chip_Sel=1;
}
void WriteCmd(unsigned char Command)
{
DC_mode=0;
Chip_Sel=0;
SPI1_Write(Command);
Chip_Sel=1;
}
//Set page adress for Page Addressing Mode
void Set_Page_Address(unsigned char add)
{
add=add |0xB0;
WriteCmd(add);
}
//Set column adress for Page Addressing Mode
void Set_Column_Address(unsigned char add)
{
WriteCmd(0x80);
WriteCmd (0x10|(add>>4)); //nible (LSB)
WriteCmd(0x80);
WriteCmd(0x0f&add); // nible (MSB)
}
void OLED_SetPos(unsigned char x, unsigned char y)
{
WriteCmd(0xB0+y);
WriteCmd(x&0x0f) ;
WriteCmd(((x&0xf0)>>4)|0x10);
}
void Write_Char_At(unsigned char X,unsigned char Y, unsigned char C)
{ int i;
unsigned char ca;
if (C>=32)
{
ca=C-32;
OLED_SetPos(X,Y);
for(i=0;i<6;i++) WriteDat(font_regular_6x8[ca][i]) ;
}
}
void OLED_ShowStr(unsigned char x, unsigned char y, unsigned char *ch, unsigned char TextSize)
{
unsigned char c = 0,i = 0,j = 0, cz=0;
unsigned char xd=0,yd=0;
int kx,lx;
xd=x;
yd=y;
OLED_SetPos(xd,yd);
switch(TextSize)
{
case 1:
while((*(ch+j) !=0) && ( yd<NB_PAGES))
{
c = *(ch+j) - 32;
if(xd > 120)
{
xd = x;
yd++;
OLED_SetPos(xd,yd);
}
for(i=0;i<6;i++)
{
cz=font_regular_6x8[c][i];
WriteDat(cz) ;
// copie aussi dans RamBuffer
buffer[yd*128+xd+i]=cz;
}
xd=xd+6;
j++;
}
// 02/02/2021
// WriteDat(0); WriteDat(0); // format 8x8 horizontal
break;
case 2:
kx=strlen(ch);
j=0;
while((*(ch+j) !=0) && (j<16) )
{
c = *(ch+j) - 32;
//if(xd > 112) // width > 14 chars x8
//{
// xd = x; // si deborde la ligne
// yd=yd+1; // change de ligne
// }
OLED_SetPos(xd,yd);
for(i=0;i<8;i++)
{
cz= F8X16[c*16+i];
WriteDat(cz);
// copie aussi dans RamBuffer
buffer[yd*128+xd+i]=cz;
}
OLED_SetPos(xd,yd+1);
for(i=0;i<8;i++)
{
cz=F8X16[c*16+i+8];
WriteDat(cz);
buffer[(yd+1)*128+xd+i]=cz;
}
xd=xd+8;
j++;
}
break;
default:
break ;
}
}
void SSD1106_Display(void)
{
signed int i;
//Word i;
Byte x;
WriteCmd(0x40);
//@@
WriteCmd(0); // Column start address (0 = reset)
WriteCmd(SS1106_LCDWIDTH); // Column end address (127 = reset)
// WriteCmd(0); // Column start address (0 = reset)
// WriteCmd(SS1106_LCDWIDTH-1); // Column end address (127 = reset)
WriteCmd(0xB0);
WriteCmd(0); // Page start address (0 = reset)
WriteCmd(7); // Page end address
for (i = 0; i < (SS1106_LCDWIDTH*SS1106_LCDHEIGHT )/ 8; i++)
{
WriteDat (0x40);
for (x = 0; x < 16; x++)
{
WriteDat(buffer[i]);
i++;
}
i--;
}
}
void Rabote(int k)
{
int i,j;
char dot ='.';
// char dot=32; // Space
WordToStrWithZeros(k,txt);
Print(txt); UART1_Write(9);
txt++;
// if (k<10000) *(txt)=dot;
if (k<1000) {*(txt)=dot; }
if (k<100) {*(txt)=dot; *(txt+1)=dot; }
if (k<10) {*(txt)=dot; *(txt+1)=dot; *(txt+2)=dot;}
Print(txt); CRLF1();
}
void OLED_CLS(void)
{
unsigned char m,n;
WriteCmd(0x21); // Setup column start and end address
WriteCmd(0); //A[6:0] : Column start address, range : 0-127d,(RESET=0d)
WriteCmd(127); // B[6:0]: Column end address, range : 0-127d,(RESET =127d)
WriteCmd(0x22);
WriteCmd(0);
WriteCmd(NB_PAGES);
WriteCmd(0xD3); //-set display offset
WriteCmd(0x40); //page 0 à 3
OLED_SetPos(0,0);
for(m=0;m<8;m++) // was <8
{
WriteCmd(0xB0+m); //page0-page1
WriteCmd(0x00); //l0x01 Low column start address
WriteCmd(0x10); //high column start address
Delay_us(10);
for(n=0;n<132;n++)
{
WriteDat(0x00);
Delay_us(20);
}
}
WriteCmd(0x2E);
OLED_SetPos(0,0);
}
void Hardware_Init()
{
ANSELA=0x01;
PORTA=0;
Led_R_dir=0;
Led_R=1;
SQA_Dir=0;
SQA=0;
ANSELB=0;
PORTB=0;
TRISB=0xFF;
ANSELC=0;
PORTC=0;
Chip_Sel_Dir=0; //RC0
RES_dir =0 ; //RC1 reset de l'écran
DC_mode_dir=0; //RC2;
Sck_dir=0; // RC3 horloge de synchronisation SPI
MOSI_dir=0; //RC5;
Chip_Sel=0;
Sck=0;
DC_mode=0;
RES=0;
MOSI=0;
}
void SSD1106_ClearDisplay(void)
{
unsigned int i;
for (i=0; i < 1059; i++) buffer[i] = 0;
// for (i=0; i < ( (SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT) / 8); i++) buffer[i] = 0;
}
//Display picture for Page Addressing Mode
void Display_Picture(unsigned const char * pic)
{
int k;
unsigned char i,j,num=0;
for(i=0; i<8; i++)
{
Set_Page_Address(i);
Set_Column_Address(0x04); //@@@ was 0
WriteCmd(0x40);
for(j=0; j<128; j++)
{
k=i*0x80+j;
WriteDat(*(pic+k));
}
}
}
// main function
void main()
{
#ifdef FOSC_INTERNE
OSCCON = 0b01110010 ; //0x72 ; //Oscillateur à 16Mhz
//OSCTUNE.PLLEN=0 ;
OSCTUNE=0;
//OSCCON = 0b01110000 ; //0x70 ; //Oscillateur à 16Mhz (avec PLL)
OSCTUNE.PLLEN=0; //Oscillateur à 16Mhzx4= 64MHz
while (OSCCON.HFIOFS==0); // wait stable oscillator
//#else
// Q=20Mhz
#endif
Hardware_Init();
for (i=0;i<16;i++)
{
_asm btg LATA,4 ;
Delay_ms(100);
}
for (i=0;i<6;i++)
{
Led_R=0;
Delay_ms(500);
Led_R=1;
Delay_ms(500);
}
i1=0;
Index1=0;
DataReady1=0;
CptFO1=CptFE1=0;
for (i=0;i<sizeof(TEXTE);i++) TEXTE[i]=0;
txt=TEXTE;
UART1_Init(115200);
UART_Set_Active(&UART1_Read, &UART1_Write, &UART1_Data_Ready, &UART1_Tx_Idle);
Delay_ms(200);
// ---- Presentation ---------------
UART1_Write(CLS);
CRLF1();
CPrint(" MCU : " MCU"\r\n");
CPrint(" Power supply: "POWER_Supply"\r\n");
CPrint(" Directory : " Directory"\r\n");
CPrint(" Projet : " Project"\r\n");
CPrint(" Source : "Source" version "Version"\r\n");
CPrint(" Autres : "OTHER"\r\n");
CPrint(" Config : "Config"\r\n");
CPrint(" FOSC : " FOSC"\r\n");
CPrint(" Hardware : " HARDWARE"\r\n");
CRLF1() ;
Led_R=OFF;
Delay_1sec(); // wait a second
CPrint(" Advanced SPI Hardware Init RC0=Cs RC3=SCKL RC5=MOSI \r\n");
// SPI1_Init_Advanced(unsigned short master_slav, unsigned short data_sample, unsigned short clock_idle, unsigned short transmit_edge);
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_HIGH,_SPI_LOW_2_HIGH);
SPI_Set_Active(&SPI1_Read, &SPI1_Write); // Sets the SPI1 module active
//*** test ci dessous OK *****
/* CPrint(" test SPI with SQA analyser\r\n");
Chip_Sel=0;
SQA=1;
Delay_us(1);
SQA=0;
SPI1_Write(0x01);
SPI1_Write(0x02);
SPI1_Write(0x04);
SPI1_Write(0x55);
SPI1_Write(0xAA);
SPI1_Write(0x80);
SPI1_Write(0x40);
SPI1_Write(0x22);
SPI1_Write(0x11);
SPI1_Write(0x00);
Chip_Sel=1;
// SQA=0;
Led_R=0;
Delay_ms(1000);
Led_R=1;
Delay_ms(1000);
*/
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);
Chip_Sel=0;
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;
RES=1;
Chip_Sel=1;
Delay_ms(100);
Chip_Sel=0;
OLED_CLS();
OLED_SetPos(0,0);
Write_Char_At(4,0,'A');
Write_Char_At(124,0,'Z');
Delay_ms(2000);
OLED_CLS();
CPrint(" ABCD page 0\r\n");
Chip_Sel=0;
OLED_CLS();
OLED_SetPos(0,0);
Write_Char_At(4,0,'A');
Write_Char_At(12,0,'B');
Write_Char_At(20,0,'C');
Write_Char_At(28,0,'D');
Chip_Sel=1;
Delay_ms(1000);
CPrint(" EFGH page 1\r\n");
Chip_Sel=0;
Write_Char_At(36,1,'E');
Write_Char_At(44,1,'F');
Write_Char_At(52,1,'G');
Write_Char_At(60,1,'H');
Chip_Sel=1;
Delay_ms(1000);
CPrint(" IJKL page 2\r\n");
Chip_Sel=0;
Write_Char_At(68,2,'I');
Write_Char_At(76,2,'J');
Write_Char_At(84,2,'K');
Write_Char_At(92,2,'L');
Chip_Sel=1;
Delay_ms(1000);
CPrint(" MNO page 3\r\n");
Chip_Sel=0;
Write_Char_At(100,3,'M');
Write_Char_At(108,3,'N');
Write_Char_At(116,3,'O');
Write_Char_At(124,3,'P');
Chip_Sel=1;
CPrint(" PQRST page 4\r\n");
Chip_Sel=0;
Write_Char_At(4,4,'Q');
Write_Char_At(12,4,'R');
Write_Char_At(20,4,'S');
Write_Char_At(28,4,'T');
Chip_Sel=1;
Delay_ms(1000);
_asm btg LATA,4
strConstRamCpy(CRam1,"123456789012345678901");
Print(CRam1);CRLF1();
OLED_ShowStr(4,5,CRam1,1);
strConstRamCpy(CRam1,"Hello Chaps ");
Print(CRam1);CRLF1();
OLED_ShowStr(4,6,CRam1,1);
strConstRamCpy(CRam1,"How are you ");
Print(CRam1);CRLF1();
OLED_ShowStr(4,6,CRam1,1);
Delay_ms(2000);
CPrint(" Display taille 1 \r\n");
OLED_CLS();
OLED_SetPos(0,0);
strConstRamCpy(CRam1,"Taille 1 01234567 ") ;
OLED_ShowStr(4,0,CRam1,1);
strConstRamCpy(CRam1,"ABC 0123") ;
OLED_ShowStr(4,1,CRam1,1);
Delay_2sec();
CPrint(" Display taille 2 \r\n");
strConstRamCpy(CRam1,"Taille 2 012345") ;
OLED_ShowStr(4,2,CRam1,2);
Delay_2sec();
strConstRamCpy(CRam1,"ABC 0123") ;
OLED_ShowStr(4,4,CRam1,2);
Delay_2sec();
strConstRamCpy(CRam1,"derniere ligne ") ;
OLED_ShowStr(4,6,CRam1,1);
Delay_2sec();
CRLF1();
CPrint(" image4 128x64 (C) cheval \r\n");
SSD1106_ClearDisplay();
//SSD1106_DrawBMP(0,0, cheval,127,63) ;
p1=&cheval[0];
Display_Picture(p1) ;
SSD1106_Display();
Delay_2sec(); Delay_2sec();
// p1=&Monroe_128x64[0] ;
// Display_Picture(p1) ;
// SSD1106_Display();
// Delay_2sec(); Delay_2sec();
SSD1106_ClearDisplay();
p1=&Vumetre[0] ;
Display_Picture(p1) ;
SSD1106_Display();
Delay_2sec(); Delay_2sec();
SSD1106_ClearDisplay();
p1=&truck_bmp[0];
Display_Picture(p1) ;
SSD1106_Display();
Delay_2sec(); Delay_2sec();
}
while(1);
//---------------------------------------
asm reset;
}