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().