Преглед на файлове

【添加】LCD 支持的多种颜色

SummerGift преди 6 години
родител
ревизия
f3227aa959
променени са 2 файла, в които са добавени 51 реда и са изтрити 12 реда
  1. 18 0
      port/genhdr/qstrdefs.generated.h
  2. 33 12
      port/machine_lcd.c

+ 18 - 0
port/genhdr/qstrdefs.generated.h

@@ -705,5 +705,23 @@ QDEF(MP_QSTR_pixel, (const byte*)"\x4d\x05" "pixel")
 QDEF(MP_QSTR_show, (const byte*)"\x86\x04" "show")
 QDEF(MP_QSTR_LCD, (const byte*)"\xce\x03" "LCD")
 QDEF(MP_QSTR_text, (const byte*)"\x98\x04" "text")
+QDEF(MP_QSTR_WHITE, (const byte*)"\xa2\x05" "WHITE")
+QDEF(MP_QSTR_BLACK, (const byte*)"\x82\x05" "BLACK")
+QDEF(MP_QSTR_BLUE, (const byte*)"\x3b\x04" "BLUE")
+QDEF(MP_QSTR_BRED, (const byte*)"\x34\x04" "BRED")
+QDEF(MP_QSTR_GRED, (const byte*)"\x91\x04" "GRED")
+QDEF(MP_QSTR_GBLUE, (const byte*)"\x5c\x05" "GBLUE")
+QDEF(MP_QSTR_RED, (const byte*)"\x96\x03" "RED")
+QDEF(MP_QSTR_MAGENTA, (const byte*)"\xf0\x07" "MAGENTA")
+QDEF(MP_QSTR_GREEN, (const byte*)"\xde\x05" "GREEN")
+QDEF(MP_QSTR_CYAN, (const byte*)"\x10\x04" "CYAN")
+QDEF(MP_QSTR_YELLOW, (const byte*)"\x41\x06" "YELLOW")
+QDEF(MP_QSTR_BROWN, (const byte*)"\xc3\x05" "BROWN")
+QDEF(MP_QSTR_BRRED, (const byte*)"\x06\x05" "BRRED")
+QDEF(MP_QSTR_GRAY, (const byte*)"\x08\x04" "GRAY")
+QDEF(MP_QSTR_GRAY175, (const byte*)"\x1b\x07" "GRAY175")
+QDEF(MP_QSTR_GRAY151, (const byte*)"\xdd\x07" "GRAY151")
+QDEF(MP_QSTR_GRAY187, (const byte*)"\xb6\x07" "GRAY187")
+QDEF(MP_QSTR_GRAY240, (const byte*)"\x3e\x07" "GRAY240")
 
 // This file was automatically generated by makeqstrdata.py

+ 33 - 12
port/machine_lcd.c

@@ -245,7 +245,6 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(machine_lcd_write_obj, machine_lcd_write);
 ///
 /// Fill the screen with the given colour (0 or 1 for white or black).
 ///
-/// This method writes to the hidden buffer.  Use `show()` to show the buffer.
 STATIC mp_obj_t machine_lcd_fill(mp_obj_t self_in, mp_obj_t col_in) {
     machine_lcd_obj_t *self = MP_OBJ_TO_PTR(self_in);
     int col = mp_obj_get_int(col_in);
@@ -289,16 +288,20 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(machine_lcd_get_obj, machine_lcd_get);
 /// This method writes to the hidden buffer.  Use `show()` to show the buffer.
 STATIC mp_obj_t machine_lcd_pixel(size_t n_args, const mp_obj_t *args) {
     machine_lcd_obj_t *self = MP_OBJ_TO_PTR(args[0]);
-//    int x = mp_obj_get_int(args[1]);
-//    int y = mp_obj_get_int(args[2]);
-//    if (0 <= x && x <= 127 && 0 <= y && y <= 31) {
-//        uint byte_pos = x + 128 * ((uint)y >> 3);
-//        if (mp_obj_get_int(args[3]) == 0) {
-//            self->pix_buf2[byte_pos] &= ~(1 << (y & 7));
-//        } else {
-//            self->pix_buf2[byte_pos] |= 1 << (y & 7);
-//        }
-//    }
+    int x = mp_obj_get_int(args[1]);
+    int y = mp_obj_get_int(args[2]);
+    int col = mp_obj_get_int(args[3]);
+
+    if (col) {
+        col = BLACK;
+    }
+    else
+    {
+        col = WHITE;
+    }
+
+    lcd_draw_point_color(x, y, col);
+
     return mp_const_none;
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_lcd_pixel_obj, 4, 4, machine_lcd_pixel);
@@ -353,8 +356,26 @@ STATIC const mp_rom_map_elem_t machine_lcd_locals_dict_table[] = {
     { MP_ROM_QSTR(MP_QSTR_pixel), MP_ROM_PTR(&machine_lcd_pixel_obj) },
     { MP_ROM_QSTR(MP_QSTR_text), MP_ROM_PTR(&machine_lcd_text_obj) },
     { MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&machine_lcd_show_obj) },
+    // color
+    { MP_ROM_QSTR(MP_QSTR_WHITE), MP_ROM_INT(WHITE) },
+    { MP_ROM_QSTR(MP_QSTR_BLACK), MP_ROM_INT(BLACK) },
+    { MP_ROM_QSTR(MP_QSTR_BLUE), MP_ROM_INT(BLUE) },
+    { MP_ROM_QSTR(MP_QSTR_BRED), MP_ROM_INT(BRED) },
+    { MP_ROM_QSTR(MP_QSTR_GRED), MP_ROM_INT(GRED) },
+    { MP_ROM_QSTR(MP_QSTR_GBLUE), MP_ROM_INT(GBLUE) },
+    { MP_ROM_QSTR(MP_QSTR_RED), MP_ROM_INT(RED) },
+    { MP_ROM_QSTR(MP_QSTR_MAGENTA), MP_ROM_INT(MAGENTA) },
+    { MP_ROM_QSTR(MP_QSTR_GREEN), MP_ROM_INT(GREEN) },
+    { MP_ROM_QSTR(MP_QSTR_CYAN), MP_ROM_INT(CYAN) },
+    { MP_ROM_QSTR(MP_QSTR_YELLOW), MP_ROM_INT(YELLOW) },
+    { MP_ROM_QSTR(MP_QSTR_BROWN), MP_ROM_INT(BROWN) },
+    { MP_ROM_QSTR(MP_QSTR_BRRED), MP_ROM_INT(BRRED) },
+    { MP_ROM_QSTR(MP_QSTR_GRAY), MP_ROM_INT(GRAY) },
+    { MP_ROM_QSTR(MP_QSTR_GRAY175), MP_ROM_INT(GRAY175) },
+    { MP_ROM_QSTR(MP_QSTR_GRAY151), MP_ROM_INT(GRAY151) },
+    { MP_ROM_QSTR(MP_QSTR_GRAY187), MP_ROM_INT(GRAY187) },
+    { MP_ROM_QSTR(MP_QSTR_GRAY240), MP_ROM_INT(GRAY240) },
 };
-
 STATIC MP_DEFINE_CONST_DICT(machine_lcd_locals_dict, machine_lcd_locals_dict_table);
 
 const mp_obj_type_t machine_lcd_type = {