About one month ago I bought one of this babies:
Its really big and its stunningly beautiful.
I'm using one arduino , but only as a "programmer board" because all my development is done under WinAvr, the avr is one atmega328p.
From the code provided by sparkfun(in the huge VU meter tutorial) and in this site:
http://en.radzio.dxp.pl/t6963/
I made a driver(in fact I just copy/pasted almost the code from the above given link), and I cant get the lcd to display anything that makes sense, I only get one full screen of random on/off pixels, if I reset the pattern is the same(it never changes, even if I unplug the power from the lcd and the micro), if I change my string in the code the pattern changes, but I cant get to display anything that is correct, my code is this:
#ifndef _BIGLCD_H_
#define _BIGLCD_H_
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/pgmspace.h>
//Data port
#define DATA_PORT PORTD
#define DATA_PIN PIND
#define DATA_DDR DDRD
//Control port
#define CONTROL_PORT PORTB
#define CONTROL_PIN PINB
#define CONTROL_DDR DDRB
//Control signals
#define WR PB0 // /WR write
#define RD PB1 // /RD read
#define CE PB2 // /CE chip enable
#define CD PB3 // /CD command/data
#define RST PB4 // /RST reset
//Display size
#define LINES 128
#define COLLUMS 160
#define FONT_WIDTH 8
#define GRAPHIC_AREA (COLLUMS / FONT_WIDTH)
#define TEXT_AREA (COLLUMS / FONT_WIDTH)
#define GRAPHIC_SIZE (GRAPHIC_AREA * LINES)
#define TEXT_SIZE (TEXT_AREA * (LINES/8))
#define TEXT_HOME 0
#define GRAPHIC_HOME (TEXT_HOME + TEXT_SIZE)
#define OFFSET_REGISTER 32
#define EXTERNAL_CG_HOME ((OFFSET_REGISTER/2)-1)
#define SET_CURSOR_POINTER 0x21
#define SET_OFFSET_REGISTER 0x22
#define SET_ADDRESS_POINTER 0x24
#define SET_TEXT_HOME_ADDRESS 0x40
#define SET_TEXT_AREA 0x41
#define SET_GRAPHIC_HOME_ADDRESS 0x42
#define SET_GRAPHIC_AREA 0x43
#define MODE_SET_OR 0x80
#define MODE_SET_EXOR 0x81
#define MODE_SET_AND 0x83
#define MODE_SET_TEXT_ATTRIBUTE 0x84
#define MODE_SET_CGROM 0x80
#define MODE_SET_CGRAM 0x88
#define DISPLAY_MODE 0x90
#define CURSOR_BLINK_ON 0x01
#define CURSOR_DISPLAY_ON 0x02
#define TEXT_DISPLAY_ON 0x04
#define GRAPHIC_DISPLAY_ON 0x08
#define CURSOR_PATERN_SELECT 0xA0
#define CURSOR_1_LINE 0x00
#define CURSOR_2_LINE 0x01
#define CURSOR_3_LINE 0x02
#define CURSOR_4_LINE 0x03
#define CURSOR_5_LINE 0x04
#define CURSOR_6_LINE 0x05
#define CURSOR_7_LINE 0x06
#define CURSOR_8_LINE 0x07
#define SET_DATA_AUTO_WRITE 0xB0
#define SET_DATA_AUTO_READ 0xB1
#define AUTO_RESET 0xB2
#define DATA_WRITE_AND_INCREMENT 0xC0
#define DATA_READ_AND_INCREMENT 0xC1
#define DATA_WRITE_AND_DECREMENT 0xC2
#define DATA_READ_AND_DECREMENT 0xC3
#define DATA_WRITE_AND_NONVARIABLE 0xC4
#define DATA_READ_AND_NONVARIABLE 0xC5
#define SCREEN_PEEK 0xE0
#define SCREEN_COPY 0xE8
#define WHITE 0x01
#define BLACK 0x00
void lcdPortConfig(void);
uint8_t CheckStatus(void);
void WriteCommand(uint8_t command);
void WriteData(uint8_t data);
void SetAddressPointer(uint16_t address);
void ClearText(void);
void ClearCG(void);
void ClearGraphic(void);
void WriteChar(char charCode);
void WriteString(char *string);
void WriteStringPGM(prog_char *string);
void TextXY(uint8_t x, uint8_t y);
void DefineChar(uint8_t charCode, char *defChar);
void SetPixel(uint8_t x, uint8_t y, uint8_t color);
void WriteDisplayData(uint8_t data);
void GraphicXY(uint8_t x, uint8_t y);
void Bitmap(uint8_t *bitmap, uint8_t x, uint8_t y, uint8_t width, uint8_t height);
void lcdInitialize(void);
void Rectangle(uint8_t x, uint8_t y, uint8_t xend, uint8_t yend);
void Circle(uint8_t cx, uint8_t cy, uint8_t radius);
void Line(int X1, int Y1,int X2,int Y2);
#endif
Continues in the next post.