Forum: Mikrocontroller und Digitale Elektronik Ansteuerungsprobleme Batron LCD mit PIC18F2620


von hs_mat (Gast)


Angehängte Dateien:

Lesenswert?

Hallo @ all,

jetzt hab ich das komplette Internet durchforstet, an der Frage sind 
schon 2 Professoren gescheitert und wir wissen nicht weiter, woran es 
liegen kann, warum das Display von Batron BTHQ 128064AVD-SRE-06-COG 
nicht anspringen will.

Selbst der Hersteller des Displays kann uns nicht wirklich weiterhelfen, 
um zum Erfolg zu kommen. Hab denen den C-Code und Stromlaufplan / Layout 
geschickt. Die wissen nicht, woran es liegen kann.

Wir steuern das LCD mit einem PIC18F2620 an.


Könnte jemand kurz über den Code drüberkucken, um mir zu sagen, wo der 
Fehler liegen könnte.

Laut Displayfirma müssen an den Kondensatoren, die zum Display gehen, 
toggelnde Rechteckspannungen mit 3 V p-p liegen und an VOUT ca. -10 V 
liegen. Das mit den Rechtecksignalen könnte grad noch hinhauen, aber an 
VOut messen wir keine negative Spannung (Ca. + 450 mV).

Ich habe den Stromlaufplan und Layout mal gezippt...


Bitte helft mir weiter. Brauch ein Erfolgserlebnis. Wir wollen nur ALL 
pixels on machen. Das würde uns schon reichen



1000000 dank im vorauss

Hier das Main.C
[c] 
//###################################################################### 
########
//  filename:    WW0708_main.c
//
//   Implements the ????
//
//###################################################################### 
########
//
//    Author:
//    Company:      HS Ulm
//
//    Revision:      x.x
//    Date:        Dez. 2007
//    Assembled using    MPLAB 8.00 C18 3.14
//
//    who?  01.12.2007   start the project
//    who?
//
//
//    todo  -
//        -
//        -
//        -
//
//###################################################################### 
########


#define Debug_P1  PORTBbits.RB4
#define Debug_T1  TRISBbits.TRISB4


/** I N C L U D E S 
***********************************************************/
#include <p18f2620.h>
#include "LCD12864.h"


#pragma config OSC = INTIO67            // Configurationen
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BOREN = OFF
#pragma config BORV = 0
#pragma config WDT = OFF
#pragma config WDTPS = 1
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN = OFF
#pragma config STVREN = OFF
#pragma config LVP = OFF
#pragma config XINST = OFF
#pragma config DEBUG = ON
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF





/** V A R I A B L E S 
*********************************************************/
#pragma udata

/** P R I V A T E  P R O T O T Y P E S 
****************************************/
static void InitializeSystem(void);


/** V E C T O R  R E M A P P I N G 
********************************************/

extern void _startup (void);        // See c018i.c in your C18 compiler 
dir
//#pragma code _RESET_INTERRUPT_VECTOR = 0x000800
//void _reset (void)
//{
//    _asm goto _startup _endasm
//}
//#pragma code

/** D E C L A R A T I O N S 
***************************************************/
#pragma code
/*********************************************************************** 
********
 * Function:        void main(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Main program entry point.
 *
 * Note:            None
 ************************************************************************ 
*****/
void main(void)
{
   InitializeSystem();      //Sprung in Initialisierungsfunktion

    while(1)
    {
    Debug_P1 = 1;
    Debug_P1 = 0;
    }//end while
}//end main

/*********************************************************************** 
*******
 * Function:        static void InitializeSystem(void)
 *
 * PreCondition:    None
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        InitializeSystem is a centralize initialization 
routine.
 *                  All required USB initialization routines are called 
from
 *                  here.
 *
 *                  User application initialization routine should also 
be
 *                  called from here.
 *
 * Note:            None
 ************************************************************************ 
*****/

//Initialisation sample for ST7565


void InitializeSystem(void)
{
  /* Initialisation PIC18F2620 */

  OSCCON   = '0b01110000';  //IDLEN IRCF2 IRCF1 IRCF0 OSTS IOFS SCS1 
SCS0
  OSCTUNE = '0b11000000';  //INTSRC PLLEN — TUN4 TUN3 TUN2 TUN1 TUN0

  TRISA = '0b00111111';
  LATA = 0xC0;
  TRISB = '0b11000000';
  LATB = 0x3F;

  TRISC = 0x00;      // databus
  /* Initialisation End PIC18F2620 */

  Debug_T1 = 0;  // set debugpin #one to output
  Debug_P1 = 0;


  lcd_init();

}
[\c]


Hier die Routinen zum Initialisieren des Displays:

[c]//################################################################### 
###########
//  filename:    LCD12864.c
//
//   Implements the BTHQ128064AVD-... Communication
//
//###################################################################### 
########
//
//    Author:
//    Company:      HS Ulm
//
//    Revision:      x.x
//    Date:        Dez. 2007
//    Assembled using    MPLAB 8.00 C18 3.14
//
//    who?  01.12.2007   start the project
//    who?
//
//
//    todo  -
//        -
//        -
//        -
//
//###################################################################### 
########


/** I N C L U D E S 
***********************************************************/
#include "p18f2620.h"
#include "delays.h"
#include "LCD12864.h"


#pragma udata access ACCESSRAM
/** G L O B A L  V A R I A B L E s 
********************************************/

#pragma udata
/** P R I V A T E  V A R I A B L E S 
******************************************/


/** G L O B A L  P R O T O T Y P E S 
****************************************/
//void lcd_command(char cmd);
//void lcd_data(char dat);
//void lcd_init();

/** P R I V A T E  P R O T O T Y P E S 
****************************************/



/** F U N C T I O N S 
*********************************************************/

//////////////////////////////////////////////////////////////////////// 
////////
//                           lcd_command() 
//
//////////////////////////////////////////////////////////////////////// 
////////
void lcd_init(void)                // intel 8080
{
  /* Initialisation LCD-Controller ST7565*/

    lcd_command(cmdRESET);               // Reset
    lcd_command(disp_on);                // Display 0n
  lcd_command(adc_0);                // ADC=0
    lcd_command(c_outputm);               // Common Output Mode Select
  lcd_command(disp_normal);          // Display normal
  lcd_command(all_dots_off);          // all dots off (normal)
  lcd_command(lcd_bias);              // LCD BIAS   SED1565
  lcd_command(disp_linestart);        // Display Line Start adress
  lcd_command(page_adress);           // Page adress
  lcd_command(c_adress_l);            // Column adress low
  lcd_command(c_adress_h);            // Column adress high
    lcd_command(power_circuits);        // power circuits
    lcd_command(resistor_ratio);        // Resistor ratio
  lcd_command(e_volume);              // electronic volume
  lcd_command(e_volume_value);        // electronic volume value
}
//////////////////////////////////////////////////////////////////////// 
////////
//                           lcd_command() 
//
//////////////////////////////////////////////////////////////////////// 
////////
void lcd_command(char cmd)        // intel 8080
{
  DISP_DATA=cmd;
  R_S=0;                    // Register Select
  RD=1;                     // READ
  WR=0;                     // Write
  CS=0;                      // Chip Select
  Delay10TCYx( 1 );
  WR=1;                     // Write
  CS=1;
  Delay10TCYx( 10 );
}


//////////////////////////////////////////////////////////////////////// 
////////
//                             lcd_data() 
//
//////////////////////////////////////////////////////////////////////// 
////////
void lcd_data(char dat)              // intel 8080
{
  DISP_DATA=dat;
  R_S=1;                    // Register Select
  RD=1;                     // READ
  WR=0;                     // Write
  CS=0;                      // Chip Select
  Delay10TCYx( 1 );
  WR=1;                     // Write
  CS=1;
  Delay10TCYx( 10 );
}
[\c]


Hier die Defines:

[c]
//###################################################################### 
########
//  filename:    LCD12864.h
//
//   Implements the BTHQ128064AVD-... Communication
//
//###################################################################### 
########
//
//    Author:
//    Company:      HS Ulm
//
//    Revision:      x.x
//    Date:        Dez. 2007
//    Assembled using    MPLAB 8.00 C18 3.14
//
//
//###################################################################### 
########
/* Pin Defining */

#define RES      LATBbits.LATB2    // low active
#define CS      LATBbits.LATB1    // low active
#define R_S      LATBbits.LATB0    // cmd or data
#define WR      LATAbits.LATA7    // low active
#define RD      LATAbits.LATA6    // low active
#define DISP_DATA  PORTC



/* LCD Command Defining */
#define cmdRESET    0xE2
#define disp_on      0xAF
#define  adc_0      0xA0
#define  c_outputm    0xC0
#define  disp_normal    0xA6
#define  all_dots_off  0xA4
#define  lcd_bias    0xA2
#define  disp_linestart  0x40
#define  page_adress    0xB0
#define  c_adress_l    0x00
#define  c_adress_h    0x10
#define  power_circuits  0x2f
#define resistor_ratio  0x24
#define  e_volume    0x81
#define  e_volume_value  0x20


/** G L O B A L  V A R I A B L E s 
********************************************/
//extern ...

/** G L O B A L  P R O T O T Y P E S 
****************************************/
void lcd_command(char cmd);
void lcd_data(char dat);
void lcd_init(void);
[\c]

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.