daywalker008
19.04.2009, 16:32
Hallo Leute ich habe ein PollinDisplay TG12864B-03 auf meinen Atmega32
laufen, nur leider sieht das das Display so aus wie im angehängten Bild.
Hier mal mei n Quellcode vom main.c
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/delay.h>
#include "ks0108.h"
#include "font12x16.h"
#include "font6x8.h"
const char pgmString[] PROGMEM = "http://www.apeTech.de\n\naffe.t@gmx.de";
int main(void) {
volatile uint16_t i;
struct font largeFont, smallFont;
for(i=0; i<15000; i++);
largeFont.width = FONT12X16_WIDTH;
largeFont.height = FONT12X16_HEIGHT;
largeFont.charData = Font12x16;
smallFont.width = FONT6X8_WIDTH;
smallFont.height = FONT6X8_HEIGHT;
smallFont.charData = Font6x8;
ks0108Init();
ks0108GotoXY(20,0);
ks0108PutString("Ha", largeFont);
while(1);
habe DB0 -7 an Port A und die Controlleitungen an Port B angeschlossen:
hier der Quellcode:
#include <inttypes.h>
#include <avr/pgmspace.h>
#ifndef KS0108_H
#define KS0108_H
// Ports
#define LCD_CMD_PORT PORTB // Command Output Register
#define LCD_CMD_DIR DDRB // Data Direction Register for Command Port
#define LCD_DATA_IN PINA // Data Input Register
#define LCD_DATA_OUT PORTA // Data Output Register
#define LCD_DATA_DIR DDRA // Data Direction Register for Data Port
// Function Parameters
#define INCREMENT_X 0
#define NO_INCREMENT_X 1
// Command Port Bits
#define D_I 0x00 // D/I Bit Number
#define R_W 0x01 // R/W Bit Number
#define EN 0x02 // EN Bit Number
#define CSEL1 0x03 // CS1 Bit Number
#define CSEL2 0x04 // CS2 Bit Number
// Chips
#define CHIP1 0x00
#define CHIP2 0x01
// Commands
#define LCD_ON 0x3F
#define LCD_OFF 0x3E
#define LCD_SET_ADD 0x40
#define LCD_SET_PAGE 0xB8
#define LCD_DISP_START 0xC0
// Fill Modes
#define BLACK 0xFF
#define CLEAR 0x00
// Uncomment for slow drawing
// #define DEBUG
struct displayPos {
uint8_t x;
uint8_t y;
uint8_t page;
};
struct font {
uint8_t width;
uint8_t height;
PGM_P charData;
};
// Function Prototypes
void ks0108Enable(void);
void ks0108Fill(uint8_t mode);
void ks0108GotoXY(uint8_t, uint8_t);
void ks0108Init(void);
void ks0108SetDot(uint8_t, uint8_t);
void ks0108ClearDot(uint8_t, uint8_t);
void ks0108PutChar(char c, struct font font);
void ks0108NewLine(uint8_t fontHeight, uint8_t offset);
void ks0108PutString(char *string, struct font font);
void ks0108PutStringP(PGM_P string, struct font font);
char ks0108ReadData(uint8_t incXAdd);
void ks0108WriteCommand(uint8_t cmd, uint8_t chip);
void ks0108WriteData(uint8_t data);
#endif
Das ganze ist von hier:http://www.mikrocontroller.net/topic/12202#new leider hat dort schon lange niemnad mehr hingeschaut.
Wie ihr auf dem Bild sehen könnt passt irgendwas mit den Pages nicht, kann es ein verkabelungsproblem sein? habe aber alles schon 2 mal kontrolliert.
Für eure Hilfe wäre ich sehr dankbar.
laufen, nur leider sieht das das Display so aus wie im angehängten Bild.
Hier mal mei n Quellcode vom main.c
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/delay.h>
#include "ks0108.h"
#include "font12x16.h"
#include "font6x8.h"
const char pgmString[] PROGMEM = "http://www.apeTech.de\n\naffe.t@gmx.de";
int main(void) {
volatile uint16_t i;
struct font largeFont, smallFont;
for(i=0; i<15000; i++);
largeFont.width = FONT12X16_WIDTH;
largeFont.height = FONT12X16_HEIGHT;
largeFont.charData = Font12x16;
smallFont.width = FONT6X8_WIDTH;
smallFont.height = FONT6X8_HEIGHT;
smallFont.charData = Font6x8;
ks0108Init();
ks0108GotoXY(20,0);
ks0108PutString("Ha", largeFont);
while(1);
habe DB0 -7 an Port A und die Controlleitungen an Port B angeschlossen:
hier der Quellcode:
#include <inttypes.h>
#include <avr/pgmspace.h>
#ifndef KS0108_H
#define KS0108_H
// Ports
#define LCD_CMD_PORT PORTB // Command Output Register
#define LCD_CMD_DIR DDRB // Data Direction Register for Command Port
#define LCD_DATA_IN PINA // Data Input Register
#define LCD_DATA_OUT PORTA // Data Output Register
#define LCD_DATA_DIR DDRA // Data Direction Register for Data Port
// Function Parameters
#define INCREMENT_X 0
#define NO_INCREMENT_X 1
// Command Port Bits
#define D_I 0x00 // D/I Bit Number
#define R_W 0x01 // R/W Bit Number
#define EN 0x02 // EN Bit Number
#define CSEL1 0x03 // CS1 Bit Number
#define CSEL2 0x04 // CS2 Bit Number
// Chips
#define CHIP1 0x00
#define CHIP2 0x01
// Commands
#define LCD_ON 0x3F
#define LCD_OFF 0x3E
#define LCD_SET_ADD 0x40
#define LCD_SET_PAGE 0xB8
#define LCD_DISP_START 0xC0
// Fill Modes
#define BLACK 0xFF
#define CLEAR 0x00
// Uncomment for slow drawing
// #define DEBUG
struct displayPos {
uint8_t x;
uint8_t y;
uint8_t page;
};
struct font {
uint8_t width;
uint8_t height;
PGM_P charData;
};
// Function Prototypes
void ks0108Enable(void);
void ks0108Fill(uint8_t mode);
void ks0108GotoXY(uint8_t, uint8_t);
void ks0108Init(void);
void ks0108SetDot(uint8_t, uint8_t);
void ks0108ClearDot(uint8_t, uint8_t);
void ks0108PutChar(char c, struct font font);
void ks0108NewLine(uint8_t fontHeight, uint8_t offset);
void ks0108PutString(char *string, struct font font);
void ks0108PutStringP(PGM_P string, struct font font);
char ks0108ReadData(uint8_t incXAdd);
void ks0108WriteCommand(uint8_t cmd, uint8_t chip);
void ks0108WriteData(uint8_t data);
#endif
Das ganze ist von hier:http://www.mikrocontroller.net/topic/12202#new leider hat dort schon lange niemnad mehr hingeschaut.
Wie ihr auf dem Bild sehen könnt passt irgendwas mit den Pages nicht, kann es ein verkabelungsproblem sein? habe aber alles schon 2 mal kontrolliert.
Für eure Hilfe wäre ich sehr dankbar.