Forum: Mikrocontroller und Digitale Elektronik DOG S 102-6 ansteuern


von Alex X. (behindi)


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

von Alex X. (behindi)


Lesenswert?

Ist wohl noch nicht viel los heute:(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.