Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

sed1520.cpp File Reference

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include "sc12/hwapi.h"
#include "sc12/rtos.h"
#include "gfxdriver.h"
#include "misc.h"

Go to the source code of this file.

Defines

#define LCD_CLOCK   2000
 LCD Refresh clock (in Hz).

#define LCD_MINPWMON   50
 The brightness PWM signal is derived from the LCD_CLOCK.

#define LCD_MINPWMOFF   10
#define LCD_UPSIDEDOWN
 If you want to mount the display upside down, you can mirror the graphics using this define.


Functions

char * LCD_GetScreenBuffer ()
 Get a pointer to the screen buffer.

int LCD_GetWidth ()
 Get Width of LCD matrix (in pixels).

int LCD_GetHeight ()
 Get Height of LCD matrix (in pixels).

void LCD_Clear ()
 Clear the lcd_screen array.

void LCD_Update ()
 Send the screen buffer to the actual display memory.

void LCD_SetBrightness (int level)
 Set display brightness.

void LCD_Init ()
 LCD_Init() must be called, before using any of the other LCD functions.

void LCD_Done ()
 Shut down the LCD controller.


Variables

const unsigned char mirror [256]
unsigned char lcd_screen [4][128]
 memory buffer for the LCD screen.


Define Documentation

#define LCD_CLOCK   2000
 

LCD Refresh clock (in Hz).

Definition at line 29 of file sed1520.cpp.

Referenced by LCD_SetBrightness().

#define LCD_MINPWMOFF   10
 

Definition at line 50 of file sed1520.cpp.

Referenced by LCD_SetBrightness().

#define LCD_MINPWMON   50
 

The brightness PWM signal is derived from the LCD_CLOCK.

Some displays have constraints on the duty cycle of the clock signal, so the minimum and maximum duty cycles can be set by LCD_MINPWMON and LCD_MINPWMOFF (in timer ticks)

NOTE: If you have problems with your LCD, you should try higher PWM values first! I had a real debugging nightmare when i got random pixels on my display, only to find out that the timing was too tight..

50 and 10 should do for any SED1520 driven display, while still allowing brightness control between 4 and 99.2% (i even tried heating it with a hairdryer, because the display controller seems to get slower when it's warm :)

Definition at line 49 of file sed1520.cpp.

Referenced by LCD_SetBrightness().

#define LCD_UPSIDEDOWN
 

If you want to mount the display upside down, you can mirror the graphics using this define.

(Thanks to Robert Dubber)

Definition at line 58 of file sed1520.cpp.


Function Documentation

void LCD_Clear  
 

Clear the lcd_screen array.

Definition at line 117 of file sed1520.cpp.

References lcd_screen.

Referenced by LCD_Init().

void LCD_Done  
 

Shut down the LCD controller.

Definition at line 220 of file sed1520.cpp.

References hal_stop_timer(), pfe_enable_pio(), PIO_IPD, and PIO_IPU.

int LCD_GetHeight  
 

Get Height of LCD matrix (in pixels).

Definition at line 108 of file sed1520.cpp.

char* LCD_GetScreenBuffer  
 

Get a pointer to the screen buffer.

Definition at line 90 of file sed1520.cpp.

References lcd_screen.

int LCD_GetWidth  
 

Get Width of LCD matrix (in pixels).

Definition at line 99 of file sed1520.cpp.

void LCD_Init  
 

LCD_Init() must be called, before using any of the other LCD functions.

The display gets initialized, and cleared.

Definition at line 191 of file sed1520.cpp.

References LCD_Clear(), LCD_SetBrightness(), LCD_Update(), pfe_enable_bus(), pfe_enable_pcs(), and pfe_enable_timer().

void LCD_SetBrightness int    level
 

Set display brightness.

This function MUST be called during initialization, because it sets up the vertical refresh timer for the LCD. (the brightness PWM signal is derived from that clock)

Parameters:
level  brigthness level 0..255

Definition at line 168 of file sed1520.cpp.

References hal_init_timer(), hal_start_timer(), LCD_CLOCK, LCD_MINPWMOFF, and LCD_MINPWMON.

Referenced by LCD_Init().

void LCD_Update  
 

Send the screen buffer to the actual display memory.

Note:
I tried REP_OUTSB, but some displays are too slow for this transfer.

Definition at line 130 of file sed1520.cpp.

References lcd_screen, and mirror.

Referenced by gfxTest(), and LCD_Init().


Variable Documentation

unsigned char lcd_screen[4][128] [static]
 

memory buffer for the LCD screen.

Definition at line 84 of file sed1520.cpp.

Referenced by LCD_Clear(), LCD_GetScreenBuffer(), and LCD_Update().

const unsigned char mirror[256] [static]
 

Initial value:

 {
  0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0,
  0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8,0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8,
  0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4,0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4,
  0x0C,0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC,0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC,
  0x02,0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2,0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2,
  0x0A,0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA,0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA,
  0x06,0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6,0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6,
  0x0E,0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE,0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE,
  0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1,0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1,
  0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9,0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9,
  0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5,0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5,
  0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED,0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD,
  0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3,0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3,
  0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB,0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB,
  0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7,0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7,
  0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF,0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF
}

Definition at line 61 of file sed1520.cpp.

Referenced by LCD_Update().


Generated on Sun Aug 4 21:47:41 2002 for k/os mp3v2 by doxygen1.2.16