Class to drive the LCD Glass display (GH08172T device) present on DISCO_L476VG board.
Dependents: DISCO_L476VG_GlassLCD DISCO_L476VG_UART DISCO_L476VG_leds_buttons_carter DISCO_L476VG_ ... more
LCD_DISCO_L476VG.h
- Committer:
- bcostm
- Date:
- 2015-08-28
- Revision:
- 0:6ac2ed34f595
File content as of revision 0:6ac2ed34f595:
/* Copyright (c) 2010-2011 mbed.org, MIT License
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __LCD_DISCO_L476VG_H
#define __LCD_DISCO_L476VG_H
#ifdef TARGET_DISCO_L476VG
#include "mbed.h"
#include "stm32l476g_discovery_glass_lcd.h"
/*
Class to drive the LCD Glass display (GH08172T device)
present on DISCO_L476VG board.
Usage:
#include "mbed.h"
#include "LCD_DISCO_L476VG.h"
LCD_DISCO_L476VG lcd;
int main()
{
uint32_t temp = 0;
uint8_t stemp[7] = {0};
lcd.Clear();
lcd.DisplayString((uint8_t *)"Hello");
while(1)
{
sprintf((char *)stemp, "val=%d", temp);
lcd.DisplayString(stemp);
lcd.BarLevelConfig((uint8_t)temp);
temp++;
if (temp > 4) temp = 0;
wait(1);
}
}
*/
class LCD_DISCO_L476VG
{
public:
//! Constructor
LCD_DISCO_L476VG();
//! Destructor
~LCD_DISCO_L476VG();
/**
* @brief Initialize the LCD GLASS relative GPIO port IOs and LCD peripheral.
* @retval None
*/
void Init(void);
/**
* @brief DeInitialize the LCD GLASS relative GPIO port IOs and LCD peripheral.
* @retval None
*/
void DeInit(void);
/**
* @brief Configure the LCD Blink mode and Blink frequency.
* @param BlinkMode: specifies the LCD blink mode.
* This parameter can be one of the following values:
* @arg LCD_BLINKMODE_OFF: Blink disabled
* @arg LCD_BLINKMODE_SEG0_COM0: Blink enabled on SEG[0], COM[0] (1 pixel)
* @arg LCD_BLINKMODE_SEG0_ALLCOM: Blink enabled on SEG[0], all COM (up to 8
* pixels according to the programmed duty)
* @arg LCD_BLINKMODE_ALLSEG_ALLCOM: Blink enabled on all SEG and all COM
* (all pixels)
* @param BlinkFrequency: specifies the LCD blink frequency.
* @arg LCD_BLINKFREQUENCY_DIV8: The Blink frequency = fLcd/8
* @arg LCD_BLINKFREQUENCY_DIV16: The Blink frequency = fLcd/16
* @arg LCD_BLINKFREQUENCY_DIV32: The Blink frequency = fLcd/32
* @arg LCD_BLINKFREQUENCY_DIV64: The Blink frequency = fLcd/64
* @arg LCD_BLINKFREQUENCY_DIV128: The Blink frequency = fLcd/128
* @arg LCD_BLINKFREQUENCY_DIV256: The Blink frequency = fLcd/256
* @arg LCD_BLINKFREQUENCY_DIV512: The Blink frequency = fLcd/512
* @arg LCD_BLINKFREQUENCY_DIV1024: The Blink frequency = fLcd/1024
* @retval None
*/
void BlinkConfig(uint32_t BlinkMode, uint32_t BlinkFrequency);
/**
* @brief Configure the LCD contrast.
* @param Contrast: specifies the LCD contrast value.
* This parameter can be one of the following values:
* @arg LCD_CONTRASTLEVEL_0: Maximum Voltage = 2.60V
* @arg LCD_CONTRASTLEVEL_1: Maximum Voltage = 2.73V
* @arg LCD_CONTRASTLEVEL_2: Maximum Voltage = 2.86V
* @arg LCD_CONTRASTLEVEL_3: Maximum Voltage = 2.99V
* @arg LCD_CONTRASTLEVEL_4: Maximum Voltage = 3.12V
* @arg LCD_CONTRASTLEVEL_5: Maximum Voltage = 3.25V
* @arg LCD_CONTRASTLEVEL_6: Maximum Voltage = 3.38V
* @arg LCD_CONTRASTLEVEL_7: Maximum Voltage = 3.51V
* @retval None
*/
void Contrast(uint32_t Contrast);
/**
* @brief Write a character in the LCD RAM buffer.
* @param ch: The character to display.
* @param Point: A point to add in front of char.
* This parameter can be one of the following values:
* @arg POINT_OFF: No point to add in front of char.
* @arg POINT_ON: Add a point in front of char.
* @param Colon: Flag indicating if a colon character has to be added in front
* of displayed character.
* This parameter can be one of the following values:
* @arg DOUBLEPOINT_OFF: No colon to add in back of char.
* @arg DOUBLEPOINT_ON: Add an colon in back of char.
* @param Position: Position in the LCD of the character to write.
* This parameter can be any value in range [1:6].
* @retval None
* @note Required preconditions: The LCD should be cleared before to start the
* write operation.
*/
void DisplayChar(uint8_t* ch, Point_Typedef Point, DoublePoint_Typedef Column, DigitPosition_Typedef Position);
/**
* @brief Write a character string in the LCD RAM buffer.
* @param ptr: Pointer to string to display on the LCD Glass.
* @retval None
*/
void DisplayString(uint8_t* ptr);
/**
* @brief Write a character string with decimal point in the LCD RAM buffer.
* @param ptr: Pointer to string to display on the LCD Glass.
* @retval None
* @note Required preconditions: Char is ASCCI value "ORed" with decimal point or Colon flag
*/
void DisplayStrDeci(uint16_t* ptr);
/**
* @brief Display a string in scrolling mode
* @param ptr: Pointer to string to display on the LCD Glass.
* @param nScroll: Specifies how many time the message will be scrolled
* @param ScrollSpeed : Specifies the speed of the scroll, low value gives
* higher speed
* @retval None
* @note Required preconditions: The LCD should be cleared before to start the
* write operation.
*/
void ScrollSentence(uint8_t* ptr, uint16_t nScroll, uint16_t ScrollSpeed);
/**
* @brief Display one or several bar in LCD frame buffer.
* @param BarId: specifies the LCD GLASS Bar to display
* This parameter can be one of the following values:
* @arg BAR0: LCD GLASS Bar 0
* @arg BAR0: LCD GLASS Bar 1
* @arg BAR0: LCD GLASS Bar 2
* @arg BAR0: LCD GLASS Bar 3
* @retval None
*/
void DisplayBar(uint32_t BarId);
/**
* @brief Clear one or several bar in LCD frame buffer.
* @param BarId: specifies the LCD GLASS Bar to display
* This parameter can be combination of one of the following values:
* @arg LCD_BAR_0: LCD GLASS Bar 0
* @arg LCD_BAR_1: LCD GLASS Bar 1
* @arg LCD_BAR_2: LCD GLASS Bar 2
* @arg LCD_BAR_3: LCD GLASS Bar 3
* @retval None
*/
void ClearBar(uint32_t BarId);
/**
* @brief Configure the bar level on LCD by writing bar value in LCD frame buffer.
* @param BarLevel: specifies the LCD GLASS Battery Level.
* This parameter can be one of the following values:
* @arg BATTERYLEVEL_OFF: LCD GLASS Battery Empty
* @arg BATTERYLEVEL_1_4: LCD GLASS Battery 1/4 Full
* @arg BATTERYLEVEL_1_2: LCD GLASS Battery 1/2 Full
* @arg BATTERYLEVEL_3_4: LCD GLASS Battery 3/4 Full
* @arg BATTERYLEVEL_FULL: LCD GLASS Battery Full
* @retval None
*/
void BarLevelConfig(uint8_t BarLevel);
/**
* @brief Clear the whole LCD RAM buffer.
* @retval None
*/
void Clear(void);
private:
};
#else
#error "This class must be used with DISCO_L476VG board only."
#endif // TARGET_DISCO_L476VG
#endif