?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

/*! \file spyglass.h \brief Spyglass Control Panel UI Board Driver. */
//*****************************************************************************
//
// File Name    : 'spyglass.h'
// Title                : Spyglass Control Panel UI Board Driver
// Author               : Pascal Stang - Copyright (C) 2005
// Created              : 7/20/2005
// Revised              : 7/23/2005
// Version              : 0.9
// Target MCU   : Atmel AVR series
// Editor Tabs  : 4
//
///     \ingroup driver_hw
/// \defgroup spyglass Spyglass Control Panel UI Board Driver (spyglass.c)
/// \code
///             #include "lcd.h"
///             #include "i2c.h"
///             #include "spyglass.h"
/// \endcode
/// \par Overview
///             This library supports the 'Spyglass' I2C-controlled User Interface
///             board.  The Spyglass board has a standard 4x20 character LCD and a
///             convenient array of pushbuttons for a user interface.  The board also
///             has a user-controllable piezo beeper.  All of these functions are
///             accessible via I2C bus, making it possible to have a complete user
///             interface with just 4 wires (2 I/O and 2 power wires).  The Spyglass
///             board runs on 5V power.
///
/// \par Connections:
///             - Connect power to the +5V and ground pins.
///             - Connect the SCL/SDA pins to the corresponding SCL/SDA pins of
///                      your processor's I2C bus.
///             - If you wish to use the beeper, also connect +5V to pin 8.
///
///     \code
///  SPYGLASS PINOUT for 10-pin I/O header:
///
///                         ----
///             +5V - 1 |++| 2 - +5V
///             SCL - 3 |++| 4 - GND
///             SDA - 5 |++| 6 - GND
///                   7 |++| 8 - BEEPER PWR (+5V)
///                   9 |++| 10
///                     ----
/// \endcode
//
// This code is distributed under the GNU Public License
//              which can be found at http://www.gnu.org/licenses/gpl.txt
//
//*****************************************************************************
//@{

#ifndef SPYGLASS_H
#define SPYGLASS_H

// defines
// Base I2C node addresses
#define PCF8574_I2C_BASE_ADDR   0x40
#define MAX517_I2C_BASE_ADDR    0x58

// PCF8574 node addresses
#define PCF_NODE_BUTTONS                0x00
#define PCF_NODE_LCD_DATA               0x01
#define PCF_NODE_CONTROL                0x02

// Control node bit-defines
#define SPYGLASS_LED0           0x01
#define SPYGLASS_LED1           0x02
#define SPYGLASS_BEEPER         0x04
#define SPYGLASS_LCD_RS         0x20
#define SPYGLASS_LCD_RW         0x40
#define SPYGLASS_LCD_E          0x80

// map lcd.c commands to spyglass.c LCD commands
#define lcdInit                 spyglassLcdInit
#define lcdHome                 spyglassLcdHome
#define lcdClear                spyglassLcdClear
#define lcdGotoXY               spyglassLcdGotoXY
#define lcdDataWrite    spyglassLcdWriteChar

// functions
//! initialize the I2C bus for communication with the spyglass UI.
void spyglassInit(void);

// *********** MISC INPUT/OUTPUT commands ***********

//! Read the state of pushbuttons on the spyglass UI.
/// Returns an 8-bit number representing the state of buttons S1-S7 in bits 0-6 respectively.
///  - '0' bit value = button not pressed
///  - '1' bit value = button is pressed
u08 spyglassGetPushbuttons(void);

//! Sets the state of LEDs on the spyglass UI.
/// Argument is a 2-bit number representing the desired state of LEDs D2 & D3 respectively.
///  - '0' bit value = LED off
///  - '1' bit value = LED on
void spyglassSetLeds(u08 leds);

//! Sets the state of the beeper on the spyglass UI.
/// - '0' state => beeper off
/// - '1' state => beeper on
void spyglassSetBeeper(u08 state);

//! Sets the contrast voltage of the spyglass LCD.
/// Lower numbers are darker contrast, higher numbers are lighter contrast.
u08 spyglassSetLcdContrast(u08 contrast);

// *********** LCD commands ***********

//! Initialize LCD for operation.
void spyglassLcdInit(void);
//! Set write/cursor position to upper left. 
void spyglassLcdHome(void);
//! Clear LCD display.
void spyglassLcdClear(void);
//! Set write/cursor posision on LCD display (x=col, y=line).
void spyglassLcdGotoXY(u08 x, u08 y);
//! Write control or display data to LCD.
void spyglassLcdWrite(u08 rs, u08 data);
//! Write character to LCD.
void spyglassLcdWriteChar(u08 c);

// *********** LOW-LEVEL ACCESS ***********

//! Write I/O Data to PCF8574 I2C<->Digital I/O chip.
u08 pcf8574Write(u08 nodeAddr, u08 data);
//! Read I/O Data from PCF8574 I2C<->Digital I/O chip.
u08 pcf8574Read(u08 nodeAddr);

#endif
//@}
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3