MINI51DE_BSP V3.02.004
The Board Support Package for Mini51DE Series MCU
lcd_driver.c
Go to the documentation of this file.
1/**************************************************************************/
12#include "Mini51Series.h"
13#include "lcd_driver.h"
14
15extern const char Ascii[];
16
22static __INLINE void SpiWrite(uint32_t u32Data)
23{
24 SPI->TX = u32Data;
25 SPI->CNTRL |= SPI_CNTRL_GO_BUSY_Msk;
26 while((SPI->CNTRL & SPI_CNTRL_GO_BUSY_Msk));
27 SPI->CNTRL |= SPI_CNTRL_IF_Msk;
28}
29
35void LCD_Init(void)
36{
37 /* Use SPI for LCD */
40
41 CLK->APBCLK |= CLK_APBCLK_SPI_EN_Msk;
42
43 SYS->IPRSTC2 |= SYS_IPRSTC2_SPI_RST_Msk;
44 SYS->IPRSTC2 &= (~SYS_IPRSTC2_SPI_RST_Msk);
45
46 /* Initial SPI data format and SPI clock */
48 SPI->DIVIDER = (((12000000 / 2000000) + 1) >> 1) - 1;
49
50 /* Enable the automatic hardware slave select function. Select the SS pin and configure as low-active. */
52
53 // Set BR
54 SpiWrite(0xEB);
55
56 // Set PM
57 SpiWrite(0x81);
58 SpiWrite(0xA0);
59
60 SpiWrite(0xC0);
61
62 // Set Display Enable
63 SpiWrite(0xAF);
64}
65
72static void SetPACA(uint8_t PA, uint8_t CA)
73{
74 // Set PA
75 SpiWrite(0xB0 | PA);
76
77 // Set CA MSB
78 SpiWrite(0x10 | (CA >> 4) & 0xF);
79
80 // Set CA LSB
81 SpiWrite(0x00 | (CA & 0xF));
82}
83
91static void ShowChar(uint8_t x, uint8_t y, uint8_t ascii_word)
92{
93 int i = 0, k = 0;
94 unsigned char temp;
95 k = (ascii_word - 32) * 16;
96
97 for (i = 0; i < 8; i++)
98 {
99 SetPACA((x*2), (129 - (y*8) - i));
100 temp = Ascii[k+i];
101 SpiWrite(0x100 | temp);
102 }
103
104 for (i = 0; i < 8; i++)
105 {
106 SetPACA((x*2) + 1, (129 - (y*8) - i));
107 temp = Ascii[k+i+8];
108 SpiWrite(0x100 | temp);
109 }
110}
111
118{
120 P54 = 0;
121}
122
129{
131 P54 = 1;
132}
133
140void LCD_Print(uint8_t line, char *str)
141{
142 int i = 0;
143 do
144 {
145 ShowChar(line, i, *str++);
146 i++;
147 if (i > 15)
148 break;
149 }
150 while (*str != '\0');
151}
152
159{
160 int i = 0;
161 /*CLEAR ALL PANEL*/
162 SetPACA(0x0, 0x0);
163
164 for (i = 0; i < 132 *8; i++)
165 {
166 SpiWrite(0x100);
167 }
168 SpiWrite(0x10f);
169}
170
171
Mini51 series peripheral access layer header file. This file contains all the peripheral register's d...
#define SPI_CNTRL_TX_NEG_Msk
#define SPI_CNTRL_IF_Msk
#define SPI_SSR_SSR_Msk
#define SPI_SSR_AUTOSS_Msk
#define SPI_CNTRL_CLKP_Msk
#define SPI_CNTRL_TX_BIT_LEN_Pos
#define SYS_IPRSTC2_SPI_RST_Msk
#define SPI_CNTRL_GO_BUSY_Msk
#define CLK_APBCLK_SPI_EN_Msk
Definition: Mini51Series.h:917
#define P54
Definition: gpio.h:142
#define GPIO_PMD_OUTPUT
Definition: gpio.h:38
void GPIO_SetMode(GPIO_T *gpio, uint32_t u32PinMask, uint32_t u32Mode)
Set GPIO operation mode.
Definition: gpio.c:40
#define P5
Pointer to GPIO port 5 register structure.
#define CLK
Pointer to CLK register structure.
#define SPI
Pointer to SPI register structure.
#define SYS
Pointer to SYS register structure.
#define SYS_MFP_P05_MOSI
Definition: sys.h:81
#define SYS_MFP_P07_SPICLK
Definition: sys.h:89
#define SYS_MFP_P05_Msk
Definition: sys.h:82
#define SYS_MFP_P04_SPISS
Definition: sys.h:76
#define SYS_MFP_P04_Msk
Definition: sys.h:78
#define SYS_MFP_P07_Msk
Definition: sys.h:90
#define SYS_MFP_P06_MISO
Definition: sys.h:85
#define SYS_MFP_P06_Msk
Definition: sys.h:86
static void ShowChar(uint8_t x, uint8_t y, uint8_t ascii_word)
Show a char on LCD.
Definition: lcd_driver.c:91
void LCD_ClearScreen(void)
Clear screen to background color.
Definition: lcd_driver.c:158
const char Ascii[]
Definition: ascii_table.c:14
static __INLINE void SpiWrite(uint32_t u32Data)
Macro for SPI write method.
Definition: lcd_driver.c:22
void LCD_EnableBackLight(void)
Enable back-light of LCD.
Definition: lcd_driver.c:117
void LCD_Print(uint8_t line, char *str)
Show a string on specific line.
Definition: lcd_driver.c:140
static void SetPACA(uint8_t PA, uint8_t CA)
Configure start address of LCD.
Definition: lcd_driver.c:72
void LCD_Init(void)
Use SPI interface to configure LCD module.
Definition: lcd_driver.c:35
void LCD_DisableBackLight(void)
Disable back-light of LCD.
Definition: lcd_driver.c:128