80 #include "stm32f4xx.h"
81 #include "stm32f4xx_gpio.h"
82 #include "stm32f4xx_rcc.h"
83 #include "tm_stm32f4_spi.h"
87 #define PCD8544_SPI SPI2
88 #define PCD8544_SPI_PINSPACK TM_SPI_PinsPack_1
93 #ifndef PCD8544_RST_PIN
94 #define PCD8544_RST_RCC RCC_AHB1Periph_GPIOC
95 #define PCD8544_RST_PORT GPIOC
96 #define PCD8544_RST_PIN GPIO_Pin_15
99 #ifndef PCD8544_DC_PIN
100 #define PCD8544_DC_RCC RCC_AHB1Periph_GPIOC
101 #define PCD8544_DC_PORT GPIOC
102 #define PCD8544_DC_PIN GPIO_Pin_14
105 #ifndef PCD8544_CE_PIN
106 #define PCD8544_CE_RCC RCC_AHB1Periph_GPIOC
107 #define PCD8544_CE_PORT GPIOC
108 #define PCD8544_CE_PIN GPIO_Pin_13
111 #define PCD8544_CE_LOW GPIO_ResetBits(PCD8544_CE_PORT, PCD8544_CE_PIN)
112 #define PCD8544_CE_HIGH GPIO_SetBits(PCD8544_CE_PORT, PCD8544_CE_PIN)
119 PCD8544_DATA = !PCD8544_COMMAND
120 } PCD8544_WriteType_t;
123 PCD8544_State_Low = 0,
124 PCD8544_State_High = !PCD8544_State_Low
140 PCD8544_Pixel_Clear = 0,
141 PCD8544_Pixel_Set = !PCD8544_Pixel_Clear
149 PCD8544_FontSize_5x7 = 0,
150 PCD8544_FontSize_3x5 = !PCD8544_FontSize_5x7
151 } PCD8544_FontSize_t;
162 #define PCD8544_WIDTH 84
163 #define PCD8544_HEIGHT 48
168 #define PCD8544_POWERDOWN 0x04
169 #define PCD8544_ENTRYMODE 0x02
170 #define PCD8544_EXTENDEDINSTRUCTION 0x01
171 #define PCD8544_DISPLAYBLANK 0x00
172 #define PCD8544_DISPLAYNORMAL 0x04
173 #define PCD8544_DISPLAYALLON 0x01
174 #define PCD8544_DISPLAYINVERTED 0x05
176 #define PCD8544_FUNCTIONSET 0x20
177 #define PCD8544_DISPLAYCONTROL 0x08
178 #define PCD8544_SETYADDR 0x40
179 #define PCD8544_SETXADDR 0x80
181 #define PCD8544_SETTEMP 0x04
182 #define PCD8544_SETBIAS 0x10
183 #define PCD8544_SETVOP 0x80
185 #define PCD8544_LCD_BIAS 0x03 // Range: 0-7 (0x00-0x07)
186 #define PCD8544_LCD_TEMP 0x02 // Range: 0-3 (0x00-0x03)
187 #define PCD8544_LCD_CONTRAST 0x46 // Range: 0-127 (0x00-0x7F)
189 #define PCD8544_CHAR5x7_WIDTH 6 //5*8
190 #define PCD8544_CHAR5x7_HEIGHT 8
191 #define PCD8544_CHAR3x5_WIDTH 4 //3*5
192 #define PCD8544_CHAR3x5_HEIGHT 6
194 #define PCD8544_BUFFER_SIZE PCD8544_WIDTH * PCD8544_HEIGHT / 8
201 extern void PCD8544_InitIO(
void);
207 extern void PCD8544_send(
unsigned char data);
213 extern void PCD8544_Pin(PCD8544_Pin_t pin, PCD8544_State_t state);
219 extern void PCD8544_Delay(
unsigned long micros);
225 extern void PCD8544_Write(PCD8544_WriteType_t cd,
unsigned char data);
231 extern void PCD8544_UpdateArea(
unsigned char xMin,
unsigned char yMin,
unsigned char xMax,
unsigned char yMax);
239 extern void PCD8544_Init(
unsigned char contrast);
247 extern void PCD8544_SetContrast(
unsigned char contrast);
257 extern void PCD8544_Invert(PCD8544_Invert_t invert);
262 extern void PCD8544_Clear(
void);
274 extern void PCD8544_DrawPixel(
unsigned char x,
unsigned char y, PCD8544_Pixel_t pixel);
280 extern void PCD8544_Home(
void);
286 extern void PCD8544_Refresh(
void);
295 extern void PCD8544_GotoXY(
unsigned char x,
unsigned char y);
309 extern void PCD8544_Putc(
char c, PCD8544_Pixel_t color, PCD8544_FontSize_t size);
323 extern void PCD8544_Puts(
char *c, PCD8544_Pixel_t color, PCD8544_FontSize_t size);
337 extern void PCD8544_DrawLine(
unsigned char x0,
unsigned char y0,
unsigned char x1,
unsigned char y1, PCD8544_Pixel_t color);
351 extern void PCD8544_DrawRectangle(
unsigned char x0,
unsigned char y0,
unsigned char x1,
unsigned char y1, PCD8544_Pixel_t color);
365 extern void PCD8544_DrawFilledRectangle(
unsigned char x0,
unsigned char y0,
unsigned char x1,
unsigned char y1, PCD8544_Pixel_t color);
378 extern void PCD8544_DrawCircle(
char x0,
char y0,
char r, PCD8544_Pixel_t color);
391 extern void PCD8544_DrawFilledCircle(
char x0,
char y0,
char r, PCD8544_Pixel_t color);