Electronic Load 1.0 Programmable Constant Current Sink

Macros | Functions | Variables
lcd.c File Reference

Routines for handling the LC-Display. More...

Include dependency graph for lcd.c:

## Macros
#define | LCD_DDR DDRC
#define | LCD_EN 3
#define | LCD_PIN PINC
#define | LCD_PORT PORTC
#define | LCD_RS 1
#define | LCD_RW 2

## Functions
void | LCDActivateBacklight (void)
bool | LCDBuildHBarChar (uint8_t nBars)
| Builds a Bar Graph Character for horizontal Bars. More...
bool | LCDBuildVBarChar (uint8_t nBars)
| Builds a Character for vertical Bar Graph. More...
bool | LCDBuildVBarChars (uint8_t nBars)
| Builds the Character Array for vertical Bar Graphs. More...
void | LCDClear (void)
| Clears the LCD and sets Cursor to Home Postion. More...
void | LCDCursorOff (void)
void | LCDCursorOn (void)
void | LCDGoTo (uint8_t pos)
| Sets the Cursor Position. More...
uint8_t | LCDGoToXY (uint8_t x, uint8_t y)
| Sets the Cursor Position. More...
int8_t | LCDHBarGraph (uint8_t line, uint8_t val)
| Prints a Line of Bar Graph. The rest of the line is cleared. More...
void | LCDInitCGRAM ()
| Initializes the Character Generator RAM. More...
void | LCDPrintLine_P (uint8_t line, const char *fmt,...)
| Printf for one complete Line of the Display. More...
char | LCDRead (void)
| Reads a Byte from the LCD. More...
char | LCDReadCmd (void)
char | LCDReadNibble (void)
| Reads a nibble from LCD. More...
void | LCDSecondlyCallback (void)
| Has to be called once per Second by the surrounding program. More...
void | LCDWait (void)
| Waits until the LCD is ready. More...
void | LCDWrite (char c)
| Writes a Byte to the Display. More...
void | LCDWriteCmd (char c)
| Writes a Command-Byte to the Display. More...
void | LCDWriteData (char c)
| Writes a Data-Byte to the Display. More...
void | LCDWriteNibble (char c)
| Writes a nibble to the LCD. More...
void | LCDWriteString (const char *s)
| Displays a String. More...
void | LCDWriteString_P (const char *s)
| Displays a String in Flash Memory. More...
void | LDCInit (void)
| Initializes the LC-Display. More...
int | putchar_LCD (char c, FILE *file)
| The Putchar-Routine for the LCD. More...

## Variables
uint8_t | backlightOnTime
| Time in Seconds the LCD-Backlight is already on (topped at 255 Seconds) More...
FILE | lcd =FDEV_SETUP_STREAM(putchar_LCD,NULL,_FDEV_SETUP_WRITE)
const uint8_t | LCDStartLine [] ={LCD_LINE1,LCD_LINE2,LCD_LINE3,LCD_LINE4}
uint8_t | lcdVbarChar [LCD_LINES]
| Holds the characters for Vertical Bar Graph from Line 3 to 0. More...

## Detailed Description

Routines for handling the LC-Display.

Copyright
  Copyright (C) 2009 Robert Loos http://www.loosweb.de

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

## Macro Definition Documentation

## ◆ LCD_EN

#define LCD_EN 3

## ◆ LCD_RW

#define LCD_RW 2

## ◆ LCD_RS

#define LCD_RS 1

## ◆ LCD_PORT

#define LCD_PORT PORTC

## ◆ LCD_PIN

#define LCD_PIN PINC

## ◆ LCD_DDR

#define LCD_DDR DDRC

## Function Documentation

## ◆ putchar_LCD()

int putchar_LCD | ( | char | c,
|  | FILE * | file
| ) |  |

The Putchar-Routine for the LCD.

Parameters

  c | The Character
  file | A pointer to the file (unused)

Returns
  Always 0

Here is the call graph for this function:

## ◆ LCDReadNibble()

char LCDReadNibble | ( | void |  | ) |

Reads a nibble from LCD.

Returns
  Character with data in four MSBs, LSBs are zero

Here is the caller graph for this function:

## ◆ LCDRead()

char LCDRead | ( | void |  | ) |

Reads a Byte from the LCD.

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ LCDReadCmd()

char LCDReadCmd | ( | void |  | ) |

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ LCDWait()

void LCDWait | ( | void |  | ) |

Waits until the LCD is ready.

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ LCDWriteNibble()

void LCDWriteNibble | ( | char | c | ) |

Writes a nibble to the LCD.

Parameters

  c | The Character. Only the upper nibble is used

Here is the caller graph for this function:

## ◆ LCDWrite()

void LCDWrite | ( | char | c | ) |

Writes a Byte to the Display.

The state of the RS-pin decides weather it is data or command.

Parameters

  c | The Byte

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ LCDWriteCmd()

void LCDWriteCmd | ( | char | c | ) |

Writes a Command-Byte to the Display.

Parameters

  c | The Byte

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ LCDWriteData()

void LCDWriteData | ( | char | c | ) |

Writes a Data-Byte to the Display.

Parameters

  c | The Byte

Here is the call graph for this function:

## ◆ LCDWriteString()

void LCDWriteString | ( | const char * | s | ) |

Displays a String.

Parameters

  s | The String

Here is the call graph for this function:

## ◆ LCDWriteString_P()

void LCDWriteString_P | ( | const char * | s | ) |

Displays a String in Flash Memory.

Parameters

  s | The String

Here is the call graph for this function:

## ◆ LCDClear()

void LCDClear | ( | void |  | ) |

Clears the LCD and sets Cursor to Home Postion.

Here is the call graph for this function:

## ◆ LCDInitCGRAM()

void LCDInitCGRAM | ( |  | ) |

Initializes the Character Generator RAM.

This routine basically defines the antenna-character (DCF77-symbol), the micro and the Omega. Since a character 0 cannot be used for printf, we use character 1 for it.
The symbols for bargraph display use character codes 2 to 6. Character code 7 is unused until now.

Here is the call graph for this function:

## ◆ LDCInit()

void LDCInit | ( | void |  | ) |

Initializes the LC-Display.

Here is the call graph for this function:

## ◆ LCDCursorOn()

void LCDCursorOn | ( | void |  | ) |

Here is the call graph for this function:

## ◆ LCDCursorOff()

void LCDCursorOff | ( | void |  | ) |

Here is the call graph for this function:

## ◆ LCDGoTo()

void LCDGoTo | ( | uint8_t | pos | ) |

Sets the Cursor Position.

        Lines start at 0 and 64 for the 2x16 and
        0,64,20 and 84 for the 4x20-Display

Parameters

  pos | The Position

Here is the call graph for this function:

## ◆ LCDGoToXY()

uint8_t LCDGoToXY | ( | uint8_t | x,
|  | uint8_t | y
| ) |  |

Sets the Cursor Position.

Parameters

  x | The Row Number
  y | The Line Number

Returns
  The Position as raw Display Value

Here is the call graph for this function:

## ◆ LCDPrintLine_P()

void LCDPrintLine_P | ( | uint8_t | line,
|  | const char * | fmt,
|  |  | ...
| ) |  |

Printf for one complete Line of the Display.

This is a handy printf-like function for outputting display content. It ensures that no more characters are written than one line can hold and automatically deletes all characters beyond the content so that no fragments of the previous content remain visible.

Parameters

  line | The line to print on (0-based)
  fmt | A printf-like format string
  ... | Optional further parameters

Returns

Here is the call graph for this function:

## ◆ LCDBuildHBarChar()

bool LCDBuildHBarChar | ( | uint8_t | nBars | ) |

Builds a Bar Graph Character for horizontal Bars.

The horizontal bar graph character can be printed as character code 2

Parameters

  nBars | The number of black Columns (0..5)

Returns
  True if OK, false if not

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ LCDBuildVBarChar()

bool LCDBuildVBarChar | ( | uint8_t | nBars | ) |

Builds a Character for vertical Bar Graph.

The vertical bar graph character can be printed as character code 3

Parameters

  nBars | The number of black Lines (0..8)

Returns
  True if OK, false if not

Here is the call graph for this function:

## ◆ LCDBuildVBarChars()

bool LCDBuildVBarChars | ( | uint8_t | nBars | ) |

Builds the Character Array for vertical Bar Graphs.

Parameters

  nBars | The number of black Bars

Returns
  True if OK, false if not

Here is the call graph for this function:

## ◆ LCDHBarGraph()

int8_t LCDHBarGraph | ( | uint8_t | line,
|  | uint8_t | val
| ) |  |

Prints a Line of Bar Graph. The rest of the line is cleared.

Parameters

  line | The 0-based Line Number
  val | The number of black Lines to draw. This is not a percent value! Maximum is five times the width of the display (i.e. 100 for 4x20 and 80 for 2x16).

Returns
  -1 on Error, 0 if OK

Here is the call graph for this function:

## ◆ LCDSecondlyCallback()

void LCDSecondlyCallback | ( | void |  | ) |

Has to be called once per Second by the surrounding program.

Timing of functions like LCD-Backlight determine on this timing. If you call this function at other intervals, times will change accordingly.

Here is the call graph for this function:

## ◆ LCDActivateBacklight()

void LCDActivateBacklight | ( | void |  | ) |

Here is the call graph for this function:

## Variable Documentation

## ◆ backlightOnTime

uint8_t backlightOnTime

Time in Seconds the LCD-Backlight is already on (topped at 255 Seconds)

## ◆ lcdVbarChar

uint8_t lcdVbarChar

Holds the characters for Vertical Bar Graph from Line 3 to 0.

## ◆ lcd

FILE lcd =FDEV_SETUP_STREAM(putchar_LCD,NULL,_FDEV_SETUP_WRITE)

## ◆ LCDStartLine

const uint8_t LCDStartLine[] ={LCD_LINE1,LCD_LINE2,LCD_LINE3,LCD_LINE4}