DOG S 102-6 ansteuern

OP #3026703
Lesenswert?

Hallo erst mal an alle

ich weiß ,dass es schon sehr viele Beiträge zu diesem Display gibt, 
jedoch komm ich trotz dass ich sie alle gelesen hab nicht voran.

Ich möchte mit dem PIC18F4685 über SPI das DOG S 102 Display ansteuern 
bzw. erstmal nur initialisieren.
Die SPI übertragung funktioniert, da ich sie mit dem Oszi überprüft hab.
Trotz allem tut sich nichts:(,
Die Verbindungen zum Display hab ich mehrmals auch überprüft und sollten 
stimmen.
Ich hab beim Display jedoch mal aus versehen die Versorgungsspannung 
verkehrt angeschlossen :(, ich hoffe das hat es überlebt.
und ich hab bei den externen Kondis Elkos verwendet, hab jedoch schon 
darauf geachtet dass sie richtig angeschlossen sind.


Hier ist die main
1
#include "p18f4685.h"
2
#include "delays.h"
3
#include "Alexander_functions.h"
4

5
#define RESET LATCbits.LATC0
6
#define CD LATCbits.LATC1
7
#define CS LATCbits.LATC2
8

9
char send_Byte,get_Byte[12];
10
int write=0,read=1;
11
char byte,command,data;
12
char i;
13
char abc;
14

15
void Ports_Init(void);
16

17

18
void main (void)
19
{
20
  Delay10KTCYx(200);
21

22
    Ports_Init();
23
  SPI_INIT();
24
  Delay10KTCYx(10);
25
  INIT_GDISPLAY();
26
  Delay10KTCYx(10);
27

28
    SEND_COMMAND(0b00000000);
29
    SEND_COMMAND(0b00010000);
30
    SEND_DATA(0xFF);
31
    SEND_COMMAND(0b00000001);
32
    SEND_COMMAND(0b00010000);
33
    SEND_DATA(0xFF);
34
    SEND_COMMAND(0b00000010);
35
    SEND_COMMAND(0b00010000);
36
    SEND_DATA(0xFF);
37
    SEND_COMMAND(0b00000011);
38
    SEND_COMMAND(0b00010000);
39
    SEND_DATA(0xFF);
40
    SEND_COMMAND(0b00000100);
41
    SEND_COMMAND(0b00010000);
42
    SEND_DATA(0xFF);
43

44
    SEND_COMMAND(0xa4);
45

46

47
while(1);
48
}            // end of main
49

50

51
void Ports_Init(void)
52
    {
53

54
  TRISCbits.TRISC3 = 0;    // Master, so SCK is output
55
  TRISCbits.TRISC4 = 1;    // SDI is input
56
  TRISCbits.TRISC5 = 0;    // SDO is output
57
  TRISCbits.TRISC6 = 0;    // Chip Select
58

59
  TRISCbits.TRISC0 = 0;    // Master, so SCK is output
60
  TRISCbits.TRISC1 = 0;    // Master, so SCK is output
61
  TRISCbits.TRISC2 = 0;    // Master, so SCK is output
62

63
  RESET=1;
64
  CS=1;            // Chip select
65
    }


das sind die Funktionen
1
#include "p18f4685.h"
2
#include "delays.h"
3
#include "Alexander_functions.h"
4

5
void SPI_INIT(void)
6
  {
7
  SSPCON1bits.SSPEN = 1;    // Enable MSSP
8
  SSPCON1bits.CKP = 0;    // IDLE is low level
9
  SSPCON1bits.SSPM3 = 0;
10
  SSPCON1bits.SSPM2 = 0;
11
  SSPCON1bits.SSPM1 = 1;    // Master Mode, Clock is Fosc/64  (20MHz / 64 = 300 kHz)
12
  SSPCON1bits.SSPM0 = 0;
13

14
  SSPSTATbits.SMP = 0;    // Input data sampled at middle of data output time
15
  SSPSTATbits.CKE = 1;      // Transmit on transition from Idle to active clock state
16
  }
17

18
int SPI_BYTE(char byte)
19
  {
20
  SSPBUF = byte;
21
  while(SSPSTATbits.BF == 0);
22
  PIR1bits.SSPIF = 0;     // Clear Interrupt flag (wird immer gesetzt wenn ein Byte ankommt)
23
  byte = SSPBUF;          // Read
24

25
  return byte;
26
  }
27

28
void INIT_GDISPLAY(void)
29
  {
30
  char i,init_array[12]={0x40,0xa1,0xc0,0xa6,0xa2,0x2f,0x27,0x81,0x10,0xfa,0x90,0xaf};
31

32
  Delay10KTCYx(10);
33
  RESET=0;          //  Reset
34
  Delay10KTCYx(10);
35
  RESET=1;  
36
  Delay10KTCYx(10);      // 20ms delay
37

38
  for(i=0;i<12;i++)
39
  {
40
  SEND_COMMAND(init_array[i]);
41
  }
42
  }
43

44
void SEND_COMMAND(char command)
45
  {  
46
  CD=0;          // Command Data
47
  CS=0;          // Chip select
48
  SPI_BYTE(command);
49
  CS=1;          // Chip select
50
  }
51

52
void SEND_DATA(char data)
53
  {
54
  CD=1;          // Command Data
55
  CS=0;          // Chip select
56
  SPI_BYTE(data);
57
  CS=1;          // Chip select
58
  }

und noch die include datei
1
#define RESET LATCbits.LATC0
2
#define CD LATCbits.LATC1
3
#define CS LATCbits.LATC2
4

5
extern void SPI_INIT_(void);
6
extern void INIT_GDISPLAY(void);
7

8
extern void SEND_COMMAND(char command);
9
extern void SEND_DATA(char data);
10
extern int SPI_BYTE(char byte);

 Das Programm macht schon was es sollte jedoch das display nich, wenn 
jemand nen Felher im Programm findet wäre das super:)


danke im voraus für jede Hilfe

mgf
alex

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren