OSDN Git Service

hw/SSD1803.h: corrected, PREF() macro added
authorPawel Jewstafjew <Pawel.Jewstafjew@gmail.com>
Mon, 13 Nov 2017 18:31:30 +0000 (18:31 +0000)
committerPawel Jewstafjew <Pawel.Jewstafjew@gmail.com>
Mon, 13 Nov 2017 18:31:30 +0000 (18:31 +0000)
hw/SSD1803.h

index e68cf29..6fa4463 100644 (file)
 // http://www.solomon-systech.com
 // http://www.lcd-module.de/fileadmin/eng/pdf/zubehoer/ssd1803a_2_0.pdf
 
-enum {
+#ifndef PREF
+#define PREF(X) LCD_##X
+#endif
+
+enum { // I2C address
    SSD1803_I2C_ADDR_SA0 = 0b0111100, // I2C address, SA0 = 0
    SSD1803_I2C_ADDR_SA1 = 0b0111101, // I2C address, SA0 = 1
+};
+
+enum { // I2C control byte
+   PREF(I2C_CTRL_CMD)  = 0<<6, // D/C: CMD byte follows
+   PREF(I2C_CTRL_DATA) = 1<<6, // D/C: DATA byte follows
+   PREF(I2C_CTRL_CO)   = 1<<7, // Co, Continuation: CTRL sequence follows
+};
 
-   // I2C control byte
-   LCD_I2C_CTRL_CMD  = 0<<6, // D/C: CMD byte follows
-   LCD_I2C_CTRL_DATA = 1<<6, // D/C: DATA byte follows
-   LCD_I2C_CTRL_CO   = 1<<7, // Co, Continuation: CTRL sequence follows
+enum { // Status byte
+   PREF(BUSY) = 1<<7, // BF, Busy flag
 };
 
-// Command codes
-enum {
-   LCD_CLEAR      = 0b00000001, // Clear Display
-   LCD_HOME       = 0b00000010, // Return Home (RE=0)
-   LCD_POWER_DOWN = 0b00000011, // PD, Power Down Mode (RE=1)
-
-   LCD_MODE       = 0b00000100, // Entry Mode Set
-   LCD_MODE_INC   = 1<<1,  // I, Increment pos after access (RE=0)
-   LCD_MODE_SHIFT = 1<<0,  // S, Display shift after access (RE=0)
-   LCD_MODE_BDC   = 1<<1,  // BDC, reverse Common (COMx) (RE=1)
-   LCD_MODE_BDS   = 1<<0,  // BDS, reverse Segment (SEGx) (RE=1)
-
-   LCD_CTRL       = 0b00001000, // Display ON/OFF Control (RE=0)
-   LCD_CTRL_ON    = 1<<2,  // D, Display ON
-   LCD_CTRL_CURS  = 1<<1,  // C, Cursor ON
-   LCD_CTRL_BLINK = 1<<0,  // B, Blink ON
-
-   LCD_EXT        = 0b00001000, // Extended function set (RE=1)
-   LCD_EXT_FW     = 1<<2,  // FW, 6-dot/5-dot font width
-   LCD_EXT_INV    = 1<<1,  // B/W, black/white inverting of cursor
-   LCD_EXT_NW     = 1<<0,  // NW, 3,4-line/1,2-line display
-
-   LCD_SHIFT      = 0b00010000, // Cursor or Display Shift (IS=0, RE=0)
-   LCD_SHIFT_DISP = 1<<4,  // S/C, display/cursor shift
-   LCD_SHIFT_R    = 1<<3,  // R/L, Shift to right/left
-
-   LCD_CTRL2      = 0b00010000, // Double height / Bias / Display-dot shift (IS=1, RE=0)
-   LCD_CTRL2_UD2  = 1<<3,  // UD2
-   LCD_CTRL2_UD1  = 1<<2,  // UD1
-   LCD_CTRL2_BS1  = 1<<1,  // BS1
-   LCD_CTRL2_DH   = 1<<0,  // DH, display shift / dot scroll
-
-   LCD_OSC        = 0b00010000, // Internal OSC frequency (IS=1, RE=0)
-   LCD_OSC_BS0    = 1<<3,  // BS0
-   LCD_OSC_F2     = 1<<2,  // F2
+enum { // Command codes
+   PREF(CLEAR)       = 1<<0, // Clear Display
+
+   PREF(HOME)        = 1<<1, // Return Home (RE=0)
+
+   PREF(POWER_DOWN)  = 0b00000011, // PD, Power Down Mode (RE=1)
+
+   PREF(MODE)        = 1<<2, // Entry Mode Set
+   PREF(MODE_INC)    = 1<<1,  // I, Increment pos after access (RE=0)
+   PREF(MODE_SHIFT)  = 1<<0,  // S, Display shift after access (RE=0)
+   PREF(MODE_BDC)    = 1<<1,  // BDC, reverse Common (COMx) (RE=1)
+   PREF(MODE_BDS)    = 1<<0,  // BDS, reverse Segment (SEGx) (RE=1)
+
+   PREF(CTRL)        = 1<<3, // Display ON/OFF Control (RE=0)
+   PREF(CTRL_ON)     = 1<<2,  // D, Display ON
+   PREF(CTRL_CURS)   = 1<<1,  // C, Cursor ON
+   PREF(CTRL_BLINK)  = 1<<0,  // B, Blink ON
+
+   PREF(EXT)         = 1<<3, // Extended function set (RE=1)
+   PREF(EXT_FW)      = 1<<2,  // FW, 6-dot/5-dot font width
+   PREF(EXT_INV)     = 1<<1,  // B/W, black/white inverting of cursor
+   PREF(EXT_NW)      = 1<<0,  // NW, 3,4-line/1,2-line display
+
+   PREF(SHIFT)       = 1<<4, // Cursor or Display Shift (IS=0, RE=0)
+   PREF(SHIFT_DISP)  = 1<<3,  // S/C, display/cursor shift
+   PREF(SHIFT_R)     = 1<<2,  // R/L, Shift to right/left
+
+   PREF(CTRL2)       = 1<<4, // Double height / Bias / Display-dot shift (IS=1, RE=0)
+   PREF(CTRL2_UD2)   = 1<<3,  // UD2
+   PREF(CTRL2_UD1)   = 1<<2,  // UD1
+   PREF(CTRL2_BS1)   = 1<<1,  // BS1
+   PREF(CTRL2_DH)    = 1<<0,  // DH, display shift / dot scroll
+
+   PREF(OSC)         = 1<<4, // Internal OSC frequency (IS=1, RE=0)
+   PREF(OSC_BS0)     = 1<<3,  // BS0
+   PREF(OSC_F2)      = 1<<2,  // F2
    // ...
 
-   LCD_SHIFT      = 0b00010000, // Shift/Scroll enable (IS=1, RE=1)
-   LCD_SHIFT_L1   = 1<<0,  // DS1/HS1, 1st line shift/scroll enable
-   LCD_SHIFT_L2   = 1<<1,  // DS2/HS2, 2nd line shift/scroll enable
-   LCD_SHIFT_L3   = 1<<2,  // DS3/HS3, 3rd line shift/scroll enable
-   LCD_SHIFT_L4   = 1<<3,  // DS4/HS4, 4th line shift/scroll enable
+   PREF(SHIFT_EN)    = 1<<4, // Shift/Scroll enable (IS=1, RE=1)
+   PREF(SHIFT_EN_L1) = 1<<0,  // DS1/HS1, 1st line shift/scroll enable
+   PREF(SHIFT_EN_L2) = 1<<1,  // DS2/HS2, 2nd line shift/scroll enable
+   PREF(SHIFT_EN_L3) = 1<<2,  // DS3/HS3, 3rd line shift/scroll enable
+   PREF(SHIFT_EN_L4) = 1<<3,  // DS4/HS4, 4th line shift/scroll enable
 
-   LCD_FUNC       = 0b00100000, // Function Set
-   LCD_FUNC_8BIT  = 1<<4,  // DL, 8-bit interface
-   LCD_FUNC_2LINE = 1<<3,  // N, 2,4-line/1,3-line display
-   LCD_FUNC_RE    = 1<<1,  // RE
+   PREF(FUNC)        = 1<<5, // Function Set
+   PREF(FUNC_8BIT)   = 1<<4,  // DL, 8-bit interface
+   PREF(FUNC_2LINE)  = 1<<3,  // N, 2,4-line/1,3-line display
+   PREF(FUNC_RE)     = 1<<1,  // RE
 
-   LCD_FUNC_DH    = 1<<2,  // DH, double height font (RE=0)
-   LCD_FUNC_IS    = 1<<0,  // IS (RE=0)
+   PREF(FUNC_DH)     = 1<<2,  // DH, double height font (RE=0)
+   PREF(FUNC_IS)     = 1<<0,  // IS (RE=0)
 
-   LCD_FUNC_BE    = 1<<2,  // BE, blink enable (RE=1)
-   LCD_FUNC_REV   = 1<<0,  // REV, reverse display (RE=1)
+   PREF(FUNC_BE)     = 1<<2,  // BE, blink enable (RE=1)
+   PREF(FUNC_REV)    = 1<<0,  // REV, reverse display (RE=1)
 
-   LCD_CGRAM  = 0b01000000, // Set CGRAM Address  (IS=0, RE=0)
-   LCD_SEGRAM = 0b01000000, // Set SEGRAM Address (IS=1, RE=0)
+   PREF(CGRAM)       = 1<<6, // Set CGRAM Address  (IS=0, RE=0)
 
-   LCD_PIC    = 0b01010000, // Power / Icon control/ Contrast set (IS=1, RE=0)
-   LCD_PIC_I  = 1<<3, // Ion, ICON ON
-   LCD_PIC_B  = 1<<2, // Bon, booster ON
-   LCD_PIC_C5 = 1<<1, // C5, contrast
-   LCD_PIC_C4 = 1<<0, // C4, contrast
+   PREF(SEGRAM)      = 0b01000000, // Set SEGRAM Address (IS=1, RE=0)
 
-   LCD_FLLW   = 0b01100000, // Follower Control (IS=1, RE=0)
-   LCD_FLLW_D  = 1<<3, // Don, Driver ON
-   LCD_FLLW_R2 = 1<<2, // Rab2, Select Amplifier internal resistor ratio 
-   LCD_FLLW_R1 = 1<<1, // Rab1, Select Amplifier internal resistor ratio 
-   LCD_FLLW_R0 = 1<<0, // Rab0, Select Amplifier internal resistor ratio 
+   PREF(PIC)         = 0b01010000, // Power / Icon / Contrast set (IS=1, RE=0)
+   PREF(PIC_I)       = 1<<3, // Ion, ICON ON
+   PREF(PIC_B)       = 1<<2, // Bon, booster ON
+   PREF(PIC_C5)      = 1<<1, // C5, contrast
+   PREF(PIC_C4)      = 1<<0, // C4, contrast
 
-   LCD_CONTR  = 0b01110000, // Contrast set (IS=1, RE=0)
+   PREF(FLLW)        = 0b01100000, // Follower Control (IS=1, RE=0)
+   PREF(FLLW_D)      = 1<<3, // Don, Driver ON
+   PREF(FLLW_R2)     = 1<<2, // Rab2, Select Amplifier internal resistor ratio 
+   PREF(FLLW_R1)     = 1<<1, // Rab1, Select Amplifier internal resistor ratio 
+   PREF(FLLW_R0)     = 1<<0, // Rab0, Select Amplifier internal resistor ratio 
 
-   LCD_TEMP   = 0b01110110, // Set Temperature Coefficient (RE=1), data in following byte
-   LCD_ROM    = 0b01110010, // ROM Selection (RE=1), data in following byte
-   LCD_ROM_A  = 0<<2, // ROM A
-   LCD_ROM_B  = 1<<2, // ROM B
-   LCD_ROM_C  = 2<<2, // ROM C
+   PREF(CONTR)       = 0b01110000, // Contrast set (IS=1, RE=0)
 
-   LCD_DDRAM  = 0b10000000, // Set DDRAM Address (RE=0)
-   LCD_SCROLL = 0b10000000, // Set Scroll quantity (RE=1)
+   PREF(TEMP)        = 0b01110110, // Set Temperature Coefficient (RE=1), data in following byte
 
-   // status byte
-   LCD_BUSY = 1<<7, // BF, Busy flag
+   PREF(ROM)         = 0b01110010, // ROM Selection (RE=1), data in following byte
+   PREF(ROM_A)       = 0<<2, // ROM A
+   PREF(ROM_B)       = 1<<2, // ROM B
+   PREF(ROM_C)       = 2<<2, // ROM C
+
+   PREF(DDRAM)       = 1<<7, // Set DDRAM Address (RE=0)
+
+   PREF(SCROLL)      = 1<<7, // Set Scroll quantity (RE=1)
 };
+
+#undef PREF