📄 stm8l15x_lcd.c
字号:
* @brief Configures the LCD pulses on duration.
* @param LCD_PulseOnDuration: specifies the LCD pulse on duration in terms of
* CLKprescaler (prescaled LCD clock period) pulses.
* This parameter can be one of the following values:
* @arg LCD_PulseOnDuration_0: 0 pulse
* @arg LCD_PulseOnDuration_1: Pulse ON duration = 1/CLKprescaler
* @arg LCD_PulseOnDuration_2: Pulse ON duration = 2/CLKprescaler
* @arg LCD_PulseOnDuration_3: Pulse ON duration = 3/CLKprescaler
* @arg LCD_PulseOnDuration_4: Pulse ON duration = 4/CLKprescaler
* @arg LCD_PulseOnDuration_5: Pulse ON duration = 5/CLKprescaler
* @arg LCD_PulseOnDuration_6: Pulse ON duration = 6/CLKprescaler
* @arg LCD_PulseOnDuration_7: Pulse ON duration = 7/CLKprescaler
* @retval None
*/
void LCD_PulseOnDurationConfig(LCD_PulseOnDuration_TypeDef LCD_PulseOnDuration)
{
/* Check function parameters */
assert_param(IS_LCD_PULSE_DURATION(LCD_PulseOnDuration));
LCD->CR2 &= (uint8_t)(~LCD_CR2_PON); /* Clear the pulses on duration bits */
LCD->CR2 |= LCD_PulseOnDuration;
}
/**
* @brief Configures the LCD dead time.
* @param LCD_DeadTime: specifies the LCD dead time.
* This parameter can be one of the following values:
* @arg LCD_DeadTime_0: No dead Time
* @arg LCD_DeadTime_1: One Phase between different couple of Frame
* @arg LCD_DeadTime_2: Two Phase between different couple of Frame
* @arg LCD_DeadTime_3: Three Phase between different couple of Frame
* @arg LCD_DeadTime_4: Four Phase between different couple of Frame
* @arg LCD_DeadTime_5: Five Phase between different couple of Frame
* @arg LCD_DeadTime_6: Six Phase between different couple of Frame
* @arg LCD_DeadTime_7: Seven Phase between different couple of Frame
* @retval None
*/
void LCD_DeadTimeConfig(LCD_DeadTime_TypeDef LCD_DeadTime)
{
/* Check function parameters */
assert_param(IS_LCD_DEAD_TIME(LCD_DeadTime));
LCD->CR3 &= (uint8_t)(~LCD_CR3_DEAD); /* Clear the dead time bits */
LCD->CR3 |= LCD_DeadTime;
}
/**
* @brief Configures the LCD Blink mode and Blink frequency.
* @param LCD_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 LCD_BlinkFrequency: specifies the LCD blink frequency.
* This parameter can be one of the following values:
* @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 LCD_BlinkConfig(LCD_BlinkMode_TypeDef LCD_BlinkMode, LCD_BlinkFrequency_TypeDef LCD_BlinkFrequency)
{
/* Check function parameters */
assert_param(IS_LCD_BLINK_MODE(LCD_BlinkMode));
assert_param(IS_LCD_BLINK_FREQUENCY(LCD_BlinkFrequency));
LCD->CR1 &= (uint8_t)(~LCD_CR1_BLINK); /* Clear the blink mode bits */
LCD->CR1 |= LCD_BlinkMode; /* Config the LCD Blink Mode */
LCD->CR1 &= (uint8_t)(~LCD_CR1_BLINKF); /* Clear the blink frequency bits */
LCD->CR1 |= LCD_BlinkFrequency; /* Config the LCD Blink Frequency */
}
/**
* @brief Configures the LCD Contrast.
* @param LCD_Contrast: specifies the LCD Contrast.
* This parameter can be one of the following values:
* @arg LCD_Contrast_Level_0: Medium Density / High Density Maximum Voltage = 2.60V / 2.60V
* @arg LCD_Contrast_Level_1: Medium Density / High Density Maximum Voltage = 2.70V / 2.73V
* @arg LCD_Contrast_Level_2: Medium Density / High Density Maximum Voltage = 2.80V / 2.86V
* @arg LCD_Contrast_Level_3: Medium Density / High Density Maximum Voltage = 2.90V / 2.99V
* @arg LCD_Contrast_Level_4: Medium Density / High Density Maximum Voltage = 3.00V / 3.12V
* @arg LCD_Contrast_Level_5: Medium Density / High Density Maximum Voltage = 3.10V / 3.25V
* @arg LCD_Contrast_Level_6: Medium Density / High Density Maximum Voltage = 3.20V / 3.38V
* @arg LCD_Contrast_Level_7: Medium Density / High Density Maximum Voltage = 3.30V / 3.51V
* @retval None
*/
void LCD_ContrastConfig(LCD_Contrast_TypeDef LCD_Contrast)
{
/* Check function parameters */
assert_param(IS_LCD_CONTRAST(LCD_Contrast));
LCD->CR2 &= (uint8_t)(~LCD_CR2_CC); /* Clear the contrast bits */
LCD->CR2 |= LCD_Contrast; /* Select the maximum voltage value Vlcd */
}
/**
* @}
*/
/** @defgroup LCD_Group2 LCD RAM memory write functions
* @brief LCD RAM memory write functions
*
@verbatim
===============================================================================
LCD RAM memory write functions
===============================================================================
@endverbatim
* @{
*/
/**
* @brief Writes a word in the specific LCD RAM.
* @param LCD_RAMRegister: specifies the LCD Contrast.
* This parameter can be one of the following values:
* @arg LCD_RAMRegister_0: LCD RAM Register 0
* @arg LCD_RAMRegister_1: LCD RAM Register 1
* @arg LCD_RAMRegister_2: LCD RAM Register 2
* @arg LCD_RAMRegister_3: LCD RAM Register 3
* @arg LCD_RAMRegister_4: LCD RAM Register 4
* @arg LCD_RAMRegister_5: LCD RAM Register 5
* @arg LCD_RAMRegister_6: LCD RAM Register 6
* @arg LCD_RAMRegister_7: LCD RAM Register 7
* @arg LCD_RAMRegister_8: LCD RAM Register 8
* @arg LCD_RAMRegister_9: LCD RAM Register 9
* @arg LCD_RAMRegister_10: LCD RAM Register 10
* @arg LCD_RAMRegister_11: LCD RAM Register 11
* @arg LCD_RAMRegister_12: LCD RAM Register 12
* @arg LCD_RAMRegister_13: LCD RAM Register 13
* @arg LCD_RAMRegister_14: LCD RAM Register 14
* @arg LCD_RAMRegister_15: LCD RAM Register 15
* @arg LCD_RAMRegister_15: LCD RAM Register 16
* @arg LCD_RAMRegister_15: LCD RAM Register 17
* @arg LCD_RAMRegister_15: LCD RAM Register 18
* @arg LCD_RAMRegister_15: LCD RAM Register 19
* @arg LCD_RAMRegister_15: LCD RAM Register 20
* @arg LCD_RAMRegister_15: LCD RAM Register 21
* @param LCD_Data: specifies LCD Data Value to be written.
* @retval None
*/
void LCD_WriteRAM(LCD_RAMRegister_TypeDef LCD_RAMRegister, uint8_t LCD_Data)
{
/* Check function parameters */
assert_param(IS_LCD_RAM_REGISTER(LCD_RAMRegister));
/* Copy data bytes to RAM register */
LCD->RAM[LCD_RAMRegister] = LCD_Data;
}
/**
* @brief Select the LCD page where the data will be written.
* @param LCD_Page: The accessed LCD page.
* This parameter can be one of the following values:
* @arg LCD_PageSelection_FirstPage: The LCD RAM is selected as the first page
* @arg LCD_PageSelection_SecondPage: The LCD RAM is selected as the second page
* @retval None
*/
void LCD_PageSelect(LCD_PageSelection_TypeDef LCD_PageSelection)
{
/* Check function parameters */
assert_param(IS_LCD_PAGE_SELECT(LCD_PageSelection));
LCD->CR4 &= (uint8_t)(~LCD_CR4_PAGECOM); /* Clear the PAGE COM bit */
LCD->CR4 |= LCD_PageSelection; /* Select the LCD page */
}
/**
* @}
*/
/** @defgroup LCD_Group3 Interrupts and flags management functions
* @brief Interrupts and flags management functions
*
@verbatim
===============================================================================
Interrupts and flags management functions
===============================================================================
@endverbatim
* @{
*/
/**
* @brief Enables or disables the start of frame interrupt.
* @param NewState: new state of the specified LCD interrupts.
* This parameter can be: ENABLE or DISABLE.
* @retval None
*/
void LCD_ITConfig(FunctionalState NewState)
{
/* Check function parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
LCD->CR3 |= LCD_CR3_SOFIE; /* Enable interrupt*/
}
else
{
LCD->CR3 &= (uint8_t)(~LCD_CR3_SOFIE); /* Disable interrupt*/
}
}
/**
* @brief Checks whether the LCD start of new frame flag is set or not.
* @retval The new state of the start of new frame flag.
* This returned value can be: SET or RESET.
*/
FlagStatus LCD_GetFlagStatus(void)
{
FlagStatus status = RESET;
/* Check the status of the start of new frame LCD flag */
if ((LCD->CR3 & (uint8_t)LCD_CR3_SOF) != (uint8_t)RESET)
{
status = SET; /* Flag is set */
}
else
{
status = RESET; /* Flag is reset*/
}
/* Return the FLAG status */
return status;
}
/**
* @brief Clears the start of frame LCD flag.
* @param None
* @retval None
*/
void LCD_ClearFlag(void)
{
/* Clear the flag bit */
LCD->CR3 |= (uint8_t)(LCD_CR3_SOFC);
}
/**
* @brief Checks whether the start of frame interrupt has occurred or not.
* @param None
* @retval The new state of the start of new frame interrupt.
* This returned value can be: SET or RESET.
*/
ITStatus LCD_GetITStatus(void)
{
ITStatus pendingbitstatus = RESET;
uint8_t enablestatus = 0;
enablestatus = (uint8_t)((uint8_t)LCD->CR3 & LCD_CR3_SOFIE);
/* Check the status of the start of frame interrupt */
if (((LCD->CR3 & LCD_CR3_SOF) != RESET) && enablestatus)
{
/* ITPENDINGBIT is set */
pendingbitstatus = SET;
}
else
{
/* ITPENDINGBIT is reset */
pendingbitstatus = RESET;
}
/* Return the ITPENDINGBIT status */
return pendingbitstatus;
}
/**
* @brief Clears the start of frame interrupt pending bits.
* @param None
* @retval None
*/
void LCD_ClearITPendingBit(void)
{
/* Clear the flag bit */
LCD->CR3 |= (uint8_t)(LCD_CR3_SOFC);
}
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -