/* * KS0108.h * * Created on: May 13, 2024 * Author: PC-MAGHREBI */ #ifndef KS0108_H_INCLUDED #define KS0108_H_INCLUDED //----- Headers ------------// #include "main.h" #include "IO_Macros.h" //--------------------------// #define GLCD_Active_Low 0 // GLCD pins #define GLCD_D0 GPIO_PIN_0 #define GLCD_D1 GPIO_PIN_1 #define GLCD_D2 GPIO_PIN_2 #define GLCD_D3 GPIO_PIN_3 #define GLCD_D4 GPIO_PIN_4 #define GLCD_D5 GPIO_PIN_5 #define GLCD_D6 GPIO_PIN_6 #define GLCD_D7 GPIO_PIN_7 #define GLCD_DI GPIO_PIN_8 #define GLCD_RW GPIO_PIN_9 #define GLCD_EN GPIO_PIN_10 #define GLCD_CS1 GPIO_PIN_11 #define GLCD_CS2 GPIO_PIN_12 #define GLCD_RST GPIO_PIN_13 //----- Auxiliary data ---------------------------// #define __GLCD_Pulse_En 1 #define __GLCD_Command_On 0x3F #define __GLCD_Command_Off 0x3E #define __GLCD_Command_Set_Address 0x40 #define __GLCD_Command_Set_Page 0xB8 #define __GLCD_Command_Display_Start 0xC0 #define __GLCD_Screen_Width 128 #define __GLCD_Screen_Height 64 #define __GLCD_Screen_Line_Height 8 #define __GLCD_Screen_Lines __GLCD_Screen_Height / __GLCD_Screen_Line_Height #define __GLCD_Screen_Chips 2 #define __GLCD_BUSY_FLAG 7 enum Chip_t { Chip_1, Chip_2, Chip_All }; enum ReadMode_t { GLCD_Increment, GLCD_No_Increment }; enum OperatingMode_t { GLCD_Inverted, GLCD_Non_Inverted }; enum PrintMode_t { GLCD_Overwrite, GLCD_Merge }; enum Color_t { GLCD_White = 0x00, GLCD_Black = 0xFF }; typedef struct { uint8_t *Name; uint8_t Width; uint8_t Height; uint8_t Lines; enum PrintMode_t Mode; }Font_t; typedef struct { uint8_t X; uint8_t Y; enum OperatingMode_t Mode; Font_t Font; }GLCD_t; //------------------------------------------------// //----- Prototypes ------------------------------------------------------------// void GLCD_SendCommand(const uint8_t Command, enum Chip_t Chip); void GLCD_SendData(const uint8_t Data, enum Chip_t Chip); void GLCD_Setup(void); void GLCD_Render(void); void GLCD_InvertMode(void); void GLCD_Clear(void); void GLCD_ClearLine(const uint8_t Line); void GLCD_GotoX(const uint8_t X); void GLCD_GotoY(const uint8_t Y); void GLCD_GotoXY(const uint8_t X, const uint8_t Y); void GLCD_GotoLine(const uint8_t line); uint8_t GLCD_GetX(void); uint8_t GLCD_GetY(void); uint8_t GLCD_GetLine(void); void GLCD_SetPixel(const uint8_t X, const uint8_t Y, enum Color_t Color); void GLCD_SetPixels(uint8_t X1, uint8_t Y1, uint8_t X2, uint8_t Y2, enum Color_t Color); void GLCD_DrawBitmap(const uint8_t *Bitmap, uint8_t Width, const uint8_t Height, enum PrintMode_t Mode); void GLCD_DrawLine(const uint8_t X1, const uint8_t Y1, const uint8_t X2, const uint8_t Y2, enum Color_t Color); void GLCD_DrawRectangle(const uint8_t X1, const uint8_t Y1, const uint8_t X2, const uint8_t Y2, enum Color_t Color); void GLCD_DrawRoundRectangle(const uint8_t X1, const uint8_t Y1, const uint8_t X2, const uint8_t Y2, const uint8_t Radius, enum Color_t Color); void GLCD_DrawTriangle(const uint8_t X1, const uint8_t Y1, const uint8_t X2, const uint8_t Y2, const uint8_t X3, const uint8_t Y3, enum Color_t Color); void GLCD_DrawCircle(const uint8_t CenterX, const uint8_t CenterY, uint8_t Radius, enum Color_t Color); void GLCD_FillScreen(enum Color_t Color); void GLCD_FillRectangle(const uint8_t X1, const uint8_t Y1, const uint8_t X2, const uint8_t Y2, enum Color_t Color); void GLCD_FillRoundRectangle(const uint8_t X1, const uint8_t Y1, const uint8_t X2, const uint8_t Y2, const uint8_t Radius, enum Color_t Color); void GLCD_FillTriangle(uint8_t X1, uint8_t Y1, uint8_t X2, uint8_t Y2, uint8_t X3, uint8_t Y3, enum Color_t Color); void GLCD_FillCircle(const uint8_t CenterX, const uint8_t CenterY, const uint8_t Radius, enum Color_t Color); void GLCD_InvertScreen(void); void GLCD_InvertRect(uint8_t X1, uint8_t Y1, uint8_t X2, uint8_t Y2); void GLCD_SetFont(const uint8_t *Name, const uint8_t Width, const uint8_t Height, enum PrintMode_t Mode); uint8_t GLCD_GetWidthChar(const char Character); uint16_t GLCD_GetWidthString(const char *Text); uint16_t GLCD_GetWidthString_P(const char *Text); void GLCD_PrintChar(char Character); void GLCD_PrintString(const char *Text); void GLCD_PrintString_P(const char *Text); void GLCD_PrintInteger(const int32_t Value); void GLCD_PrintDouble(double Value, const uint32_t Tens); //-----------------------------------------------------------------------------// #endif