mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GLCD mit NT7534 initialisieren


Autor: Jepp Tepp (jepp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Allerseits,

hab einen kleines Projekt gestartet bestehend aus ein Demo Board 
angebunden an einem Grafischen Display. Das Demo Board(SmartRF 04) ist 
von Chipcon(jetzt TI), die ist bestückt mit einem cc2510 MCU, dieser 
kommuniziert über SPI mit einem GLCD. Als Treiner dient ein NT7534.

In den Foren ware ich fündig gewesen. GLCD Treiber wie die von ST sind 
weit verbreitet relativ zu Novatek, sind aber weitestenhend kompatible.

Die SPI Anbindung funktioniert einwandfrei, was mein Logic analyser es 
auch zeigt. Die Initialisierungsroutine zum Display steht im folgenden 
Quellcode:
#include <hal_types.h>
#include <hal_defs.h>
#include <hal_cc8051.h>
#include <ioCCxx10_bitdef.h>
#include <ioCC2510.h>
#include "SpiToNovatek.h"

#define SI  P1_6
#define CLK P1_5
#define RES  P0_0
#define A0 P1_3
#define CS  P1_4
#define LOW 0
#define HIGH 1

void SpiWriteData(uint8 Data){
  A0 = HIGH;
  asm("NOP");
  CS = LOW;
  asm("NOP");asm("NOP");asm("NOP");asm("NOP");
  U1DBUF = Data;
  while(!(U1CSR & U1CSR_TX_BYTE));
  U1CSR &= ~U1CSR_TX_BYTE;
  asm("NOP");asm("NOP");asm("NOP");asm("NOP");
  CS = HIGH;
  A0 = LOW;
  }

  void SpiWriteCmd(uint8 cmd){
  A0 = LOW;
  asm("NOP");
  CS = LOW;
  asm("NOP");asm("NOP");asm("NOP");asm("NOP");
  U1DBUF = cmd;
  while(!(U1CSR & U1CSR_TX_BYTE));
  U1CSR &= ~U1CSR_TX_BYTE;
  asm("NOP");asm("NOP");asm("NOP");asm("NOP");
  A0 = HIGH;
  CS = HIGH;
 }

void delay(void){
  for (unsigned int i=0; i<10000; i++)
    {
      asm("NOP");
    }
}

void Init_LCD(void){
  RES = LOW;
  delay();                // delay min 20us
  RES = HIGH;
  asm("NOP");asm("NOP"); // delay Max 1us
  CS = LOW;
  SpiWriteCmd(0xA2); // 11 - Set bias 1/9 (Duty 1/65)
  SpiWriteCmd(0xA1); // 8 - ADC reverse
  SpiWriteCmd(0xC0); // 15 - Normal COM0~COM63
  SpiWriteCmd(0x2F); // Booster, Regulator and Follower on
  SpiWriteCmd(0x00);
  SpiWriteCmd(0x27); // 17 - Contrast set  
  SpiWriteCmd(0x81); // 18 - xxx 
  SpiWriteCmd(0xA7); // A6 Display normal // A7 invertiert
  SpiWriteCmd(0xA5); // All point are ON
  SpiWriteCmd(0x40); // Display start line (Start line 0)
  SpiWriteCmd(0xAF); // Display on
}

void SpiInit(void){
SLEEP &= ~SLEEP_OSC_PD;
while( !(SLEEP & SLEEP_XOSC_S) );
CLKCON = (CLKCON & ~(CLKCON_CLKSPD | CLKCON_OSC)) | CLKSPD_DIV_1;
while (CLKCON & CLKCON_OSC);
SLEEP |= SLEEP_OSC_PD;
// Master Mode
PERCFG |= 0x02;           // PERCFG.U1CFG = 1
P1SEL |= BIT6 | BIT5;     // SI and clk are peripherals
P1SEL &= ~(BIT4 | BIT3);  // CS and Res are set as GPIO
P1DIR |= BIT4 | BIT3;     // output
P0SEL |= ~BIT0;           // A0 is as GPIO
P0DIR |= BIT0;            // output
A0 = HIGH;
RES = HIGH;
CS = HIGH;

U1BAUD = 0x00; // BAUD_M = 0
U1GCR |= 0x11; // BAUD_E = 17
U1CSR &= ~0xA0;
U1GCR &= ~0x80; // SPI CPOL
U1GCR &= ~0x40; // SPI CPHA
U1GCR |= 0x20; //  SPI ORDER
}

int main(void)
{
  SpiInit();
  Init_LCD();
return 0;
}

Bis jetzt konnte ich am Display nichts angezeigt, auch die Invertierung 
mittles
0xA7
 hat nichts gewirkt. Villeicht habe ich doch was übersehen!!

Für euren Feedbak freue ich mich ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.