41static uint32_t g_LCDFrameRate;
64void LCD_SetPixel(uint32_t u32Com, uint32_t u32Seg, uint32_t u32OnFlag)
66 int32_t memnum = u32Seg / 4;
67 int32_t seg_shift = 8*(u32Seg-(4*memnum));
73 LCD->MEM_0 |= (1<<u32Com)<<seg_shift;
77 LCD->MEM_1 |= (1<<u32Com)<<seg_shift;
81 LCD->MEM_2 |= (1<<u32Com)<<seg_shift;
85 LCD->MEM_3 |= (1<<u32Com)<<seg_shift;
89 LCD->MEM_4 |= (1<<u32Com)<<seg_shift;
93 LCD->MEM_5 |= (1<<u32Com)<<seg_shift;
97 LCD->MEM_6 |= (1<<u32Com)<<seg_shift;
101 LCD->MEM_7 |= (1<<u32Com)<<seg_shift;
105 LCD->MEM_8 |= (1<<u32Com)<<seg_shift;
109 LCD->MEM_9 |= (1<<u32Com)<<seg_shift;
116 LCD->MEM_0 &= ~((1<<u32Com)<<seg_shift);
120 LCD->MEM_1 &= ~((1<<u32Com)<<seg_shift);
124 LCD->MEM_2 &= ~((1<<u32Com)<<seg_shift);
128 LCD->MEM_3 &= ~((1<<u32Com)<<seg_shift);
132 LCD->MEM_4 &= ~((1<<u32Com)<<seg_shift);
136 LCD->MEM_5 &= ~((1<<u32Com)<<seg_shift);
140 LCD->MEM_6 &= ~((1<<u32Com)<<seg_shift);
144 LCD->MEM_7 &= ~((1<<u32Com)<<seg_shift);
148 LCD->MEM_8 &= ~((1<<u32Com)<<seg_shift);
152 LCD->MEM_9 &= ~((1<<u32Com)<<seg_shift);
161 SysTick->VAL = (0x00);
162 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
165 while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
179 uint32_t u32SetValue;
183 u32SetValue = 0xFFFFFFFF;
187 u32SetValue = 0x00000000;
190 LCD->MEM_0 = u32SetValue;
191 LCD->MEM_1 = u32SetValue;
192 LCD->MEM_2 = u32SetValue;
193 LCD->MEM_3 = u32SetValue;
194 LCD->MEM_4 = u32SetValue;
195 LCD->MEM_5 = u32SetValue;
196 LCD->MEM_6 = u32SetValue;
197 LCD->MEM_7 = u32SetValue;
198 LCD->MEM_8 = u32SetValue;
204 SysTick->VAL = (0x00);
205 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
208 while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
228 if(u32Count == 0)
return 0;
250 u32Count = (u32Count+(div/2))/div;
260 u32Count = u32Count*div;
298uint32_t
LCD_Open(uint32_t u32DrivingType, uint32_t u32ComNum, uint32_t u32BiasLevel, uint32_t u32FramerateDiv, uint32_t u32DrivingVol)
300 uint32_t clkdiv, muldiv;
301 uint32_t lcd_freq_div[] = {32, 64, 96, 128, 192, 256, 384, 512};
302 uint32_t multiplex_freq_div[] = {2, 4, 6, 8, 10, 12};
307 SYS->IPRST_CTL2 &= ~SYS_IPRST_CTL2_LCD_RST_Msk;
315 switch(u32DrivingType)
320 LCD->DISPCTL &= ~LCD_DISPCTL_BV_SEL_Msk;
322 LCD->DISPCTL =
LCD->DISPCTL & ~LCD_DISPCTL_CPUMP_VOL_SET_Msk | (u32DrivingVol);
323 LCD->DISPCTL &= ~LCD_DISPCTL_IBRL_EN_Msk;
331 LCD->DISPCTL &= ~LCD_DISPCTL_CPUMP_EN_Msk;
333 LCD->DISPCTL &= ~LCD_DISPCTL_IBRL_EN_Msk;
339 LCD->CTL &= ~LCD_CTL_FREQ_Msk;
340 LCD->CTL |= u32FramerateDiv;
343 LCD->DISPCTL =
LCD->DISPCTL & ~LCD_DISPCTL_BIAS_SEL_Msk | u32BiasLevel;
346 u32clk_src = 32 * 1024;
348 u32clk_src = 10 * 1024;
353 g_LCDFreq = (double)u32clk_src / lcd_freq_div[clkdiv];
354 g_LCDFrameRate = (uint32_t)g_LCDFreq / multiplex_freq_div[muldiv];
356 return g_LCDFrameRate;
388 if((1000/u32ms) > g_LCDFrameRate) u32ms = (1000/g_LCDFrameRate);
390 framecount = (uint32_t) (u32ms / (1000/g_LCDFrameRate)) ;
392 if(framecount > 0x3F)
394 for(div=2; div<=8; div*=2)
396 framecount = (uint32_t) (u32ms / (1000/(g_LCDFrameRate/div)) );
398 if( framecount <= 0x40 )
406 else if(framecount == 0)
411 LCD->FCR =
LCD->FCR & ~LCD_FCR_PRESCL_Msk | prescale;
418 return ( (framecount*1000)/(g_LCDFrameRate/div) );
433 LCD->CTL &= ~LCD_CTL_BLINK_Msk;
477 LCD->FCR &= ~LCD_FCR_FCEN_Msk;
483 LCD->CTL &= ~LCD_CTL_PDINT_EN_Msk;
Nano100 series peripheral access layer header file. This file contains all the peripheral register's ...
#define LCD_DISPCTL_IBRL_EN_Msk
#define LCD_DISPCTL_CPUMP_EN_Msk
#define LCD_FCSTS_FCSTS_Msk
#define LCD_CTL_PDINT_EN_Msk
#define LCD_CTL_BLINK_Msk
#define LCD_FCSTS_PDSTS_Msk
#define SYS_IPRST_CTL2_LCD_RST_Msk
#define LCD_DISPCTL_BV_SEL_Msk
#define CLK_CLKSEL1_LCD_S_Msk
#define LCD_POWERDOWN_INT
#define LCD_FRAMECOUNT_INT
void LCD_SetPixel(uint32_t u32Com, uint32_t u32Seg, uint32_t u32OnFlag)
Enables a segment on the LCD display.
void LCD_SetAllPixels(uint32_t u32OnOff)
LCD Enable/Disable all segments.
uint32_t LCD_Open(uint32_t u32DrivingType, uint32_t u32ComNum, uint32_t u32BiasLevel, uint32_t u32FramerateDiv, uint32_t u32DrivingVol)
LCD Initialization routine.
void LCD_EnableInt(uint32_t IntSrc)
This function is used to enable LCD interrupt.
uint32_t LCD_EnableBlink(uint32_t u32ms)
Enable Blink function in LCD controller.
void LCD_Close(void)
The function is used to disable LCD controller.
void LCD_DisableInt(uint32_t IntSrc)
This function is used to disable LCD specified interrupt.
void LCD_DisableFrameCounter(void)
Disable frame count function.
void LCD_DisableBlink(void)
Disable Blink function in LCD controller.
uint32_t LCD_EnableFrameCounter(uint32_t u32Count)
Set Frame Count and Enable frame count.
static __INLINE void LCD_DisableDisplay(void)
Disable LCD controller.
#define CLK
Pointer to CLK register structure.
#define LCD
Pointer to LCD register structure.
#define SYS
Pointer to SYS register structure.