Show2Me control FW, initial shared version
Dependencies: SDFileSystem_HelloWorld mbed FATFileSystem
Fork of 000_GEO_SHOW2ME_OK_F411RE by
ST7565_LCD/ST7565_LCD.cpp@2:bbc3e860fa3d, 2018-02-13 (annotated)
- Committer:
- walter76
- Date:
- Tue Feb 13 08:22:23 2018 +0000
- Revision:
- 2:bbc3e860fa3d
Preliminary version used to test all HW sections
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
walter76 | 2:bbc3e860fa3d | 1 | |
walter76 | 2:bbc3e860fa3d | 2 | |
walter76 | 2:bbc3e860fa3d | 3 | #include "mbed.h" |
walter76 | 2:bbc3e860fa3d | 4 | #include "ST7565_LCD.h" |
walter76 | 2:bbc3e860fa3d | 5 | #include "font_5x7.h" |
walter76 | 2:bbc3e860fa3d | 6 | |
walter76 | 2:bbc3e860fa3d | 7 | unsigned int lcd_orientation, lcd_width, lcd_height; |
walter76 | 2:bbc3e860fa3d | 8 | unsigned int p_size, p_x, p_y, p_bg, p_fg; |
walter76 | 2:bbc3e860fa3d | 9 | |
walter76 | 2:bbc3e860fa3d | 10 | //extern const unsigned short font_PGM[]; |
walter76 | 2:bbc3e860fa3d | 11 | |
walter76 | 2:bbc3e860fa3d | 12 | int pagemap[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; |
walter76 | 2:bbc3e860fa3d | 13 | /* |
walter76 | 2:bbc3e860fa3d | 14 | // CAUTION HIGH VOLTAGE |
walter76 | 2:bbc3e860fa3d | 15 | unsigned int buffer[128*64/8] = { |
walter76 | 2:bbc3e860fa3d | 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 18 | 0x80, 0xE0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, |
walter76 | 2:bbc3e860fa3d | 20 | 0xF8, 0x0C, 0x04, 0x04, 0x04, 0x0C, 0x08, 0x00, 0x80, 0xF0, 0x7C, 0x0C, 0x7C, 0xF0, 0x80, 0x00, |
walter76 | 2:bbc3e860fa3d | 21 | 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x04, 0x04, 0x04, 0xFC, 0xFC, 0x04, 0x04, |
walter76 | 2:bbc3e860fa3d | 22 | 0x04, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0xF0, 0xF8, 0x0C, 0x04, 0x04, 0x0C, 0xF8, 0xF0, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 23 | 0xFC, 0xFC, 0x38, 0xE0, 0x80, 0xFC, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC, 0xFF, |
walter76 | 2:bbc3e860fa3d | 26 | 0xFF, 0x3F, 0x0F, 0x07, 0x01, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFF, 0xFE, 0xFC, 0xF0, 0xC0, 0x80, |
walter76 | 2:bbc3e860fa3d | 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, |
walter76 | 2:bbc3e860fa3d | 28 | 0x07, 0x0C, 0x08, 0x08, 0x08, 0x0C, 0x04, 0x0C, 0x0F, 0x03, 0x02, 0x02, 0x02, 0x03, 0x0F, 0x0C, |
walter76 | 2:bbc3e860fa3d | 29 | 0x00, 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 30 | 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x08, 0x08, 0x0C, 0x07, 0x03, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 31 | 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 32 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 33 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFE, 0xFF, 0x7F, 0x1F, 0x07, 0x01, |
walter76 | 2:bbc3e860fa3d | 34 | 0x00, 0x80, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0xFF, |
walter76 | 2:bbc3e860fa3d | 35 | 0xFE, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 37 | 0xFF, 0xFF, 0x10, 0x10, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFC, 0xFE, 0x03, |
walter76 | 2:bbc3e860fa3d | 38 | 0x01, 0x21, 0x21, 0xE3, 0xE2, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x10, 0x10, 0xFF, 0xFF, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 39 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 40 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 41 | 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0xFE, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC0, |
walter76 | 2:bbc3e860fa3d | 42 | 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 43 | 0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 44 | 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x40, |
walter76 | 2:bbc3e860fa3d | 45 | 0xC3, 0x83, 0x00, 0x00, 0x00, 0xC3, 0xC3, 0x00, 0x00, 0x03, 0x03, 0x00, 0x40, 0x40, 0x41, 0xC3, |
walter76 | 2:bbc3e860fa3d | 46 | 0xC2, 0x42, 0x42, 0x43, 0x01, 0x00, 0x00, 0xC3, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0x03, 0x00, 0x80, |
walter76 | 2:bbc3e860fa3d | 47 | 0xC0, 0x40, 0x40, 0x40, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, |
walter76 | 2:bbc3e860fa3d | 49 | 0xFC, 0xFF, 0x7F, 0x3F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7F, |
walter76 | 2:bbc3e860fa3d | 50 | 0x7F, 0x3F, 0x3F, 0x1F, 0x1C, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x7F, 0xFF, 0xFC, 0xF8, 0xE0, 0x80, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 52 | 0x00, 0x00, 0x07, 0x3F, 0xF8, 0xC0, 0xF8, 0x3F, 0x07, 0x00, 0x00, 0x3F, 0x7F, 0xC0, 0x80, 0x80, |
walter76 | 2:bbc3e860fa3d | 53 | 0xC0, 0x7F, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, |
walter76 | 2:bbc3e860fa3d | 54 | 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3F, 0x27, 0x20, 0x27, 0x3F, 0xF8, 0xC0, 0x00, 0x3F, 0x7F, |
walter76 | 2:bbc3e860fa3d | 55 | 0xC0, 0x80, 0x88, 0x88, 0xF8, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 56 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0x3F, 0x1F, |
walter76 | 2:bbc3e860fa3d | 57 | 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 58 | 0x00, 0x00, 0x80, 0x80, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 59 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3F, 0x7F, 0xFF, 0xFC, |
walter76 | 2:bbc3e860fa3d | 60 | 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 61 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 64 | 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFE, 0xFF, 0x7F, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 66 | 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFF, 0x3F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, |
walter76 | 2:bbc3e860fa3d | 68 | 0x0F, 0x3F, 0xFF, 0xFF, 0xFC, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 72 | 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, |
walter76 | 2:bbc3e860fa3d | 73 | 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, |
walter76 | 2:bbc3e860fa3d | 74 | 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, |
walter76 | 2:bbc3e860fa3d | 75 | 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, |
walter76 | 2:bbc3e860fa3d | 76 | 0x3C, 0x3C, 0x3C, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 79 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
walter76 | 2:bbc3e860fa3d | 80 | }; |
walter76 | 2:bbc3e860fa3d | 81 | */ |
walter76 | 2:bbc3e860fa3d | 82 | |
walter76 | 2:bbc3e860fa3d | 83 | // GEO ELECTRONICS 2017 |
walter76 | 2:bbc3e860fa3d | 84 | unsigned int buffer[128*64/8] = { |
walter76 | 2:bbc3e860fa3d | 85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xC0, |
walter76 | 2:bbc3e860fa3d | 87 | 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x10, 0x08, 0x08, 0x58, 0x78, |
walter76 | 2:bbc3e860fa3d | 89 | 0x30, 0x00, 0x00, 0xC8, 0xF8, 0xB8, 0xC8, 0xC8, 0x08, 0x18, 0x18, 0x08, 0xC0, 0xE0, 0x30, 0x10, |
walter76 | 2:bbc3e860fa3d | 90 | 0x08, 0x08, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 91 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 92 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 93 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, |
walter76 | 2:bbc3e860fa3d | 94 | 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, |
walter76 | 2:bbc3e860fa3d | 95 | 0x9F, 0xDF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 96 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10, 0x19, 0x0D, 0x0F, 0x03, 0x11, |
walter76 | 2:bbc3e860fa3d | 97 | 0x10, 0x9C, 0x9F, 0x93, 0x90, 0x11, 0x19, 0x08, 0x00, 0x00, 0x00, 0x0F, 0x1B, 0x10, 0x10, 0x08, |
walter76 | 2:bbc3e860fa3d | 98 | 0x0C, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 99 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 100 | 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, |
walter76 | 2:bbc3e860fa3d | 102 | 0xFF, 0xFF, 0xFF, 0x7F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0xE0, 0xE0, 0xF8, 0xFC, 0x7E, 0xDE, 0xE0, |
walter76 | 2:bbc3e860fa3d | 103 | 0xF7, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, |
walter76 | 2:bbc3e860fa3d | 104 | 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xB8, 0x2C, 0x2C, 0xAC, 0x38, 0x00, 0xC0, |
walter76 | 2:bbc3e860fa3d | 105 | 0xF0, 0x3C, 0x0F, 0xC3, 0xF0, 0xB8, 0x2C, 0x2C, 0xAC, 0x38, 0x00, 0xC0, 0xF0, 0xB8, 0x0C, 0x0C, |
walter76 | 2:bbc3e860fa3d | 106 | 0x84, 0x0C, 0xC0, 0xF4, 0x3C, 0x0F, 0x84, 0x04, 0x00, 0xC4, 0xFC, 0x38, 0x0C, 0x04, 0xEC, 0xF0, |
walter76 | 2:bbc3e860fa3d | 107 | 0x98, 0x0C, 0x84, 0xCC, 0x78, 0x00, 0x80, 0xF4, 0x3C, 0x0C, 0xC4, 0x3C, 0x1C, 0x00, 0xC0, 0xF4, |
walter76 | 2:bbc3e860fa3d | 108 | 0x3C, 0x0C, 0xC0, 0xF0, 0xB8, 0x08, 0x0C, 0x84, 0x0C, 0x80, 0xB8, 0x3C, 0xE4, 0xCC, 0x08, 0x00, |
walter76 | 2:bbc3e860fa3d | 109 | 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE3, 0x47, 0x1F, |
walter76 | 2:bbc3e860fa3d | 110 | 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x81, 0xC6, 0xEF, 0xF7, |
walter76 | 2:bbc3e860fa3d | 111 | 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, |
walter76 | 2:bbc3e860fa3d | 112 | 0x3F, 0x1F, 0x1F, 0xFC, 0xF0, 0xE0, 0xC0, 0x80, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, |
walter76 | 2:bbc3e860fa3d | 113 | 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, |
walter76 | 2:bbc3e860fa3d | 114 | 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, |
walter76 | 2:bbc3e860fa3d | 115 | 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, |
walter76 | 2:bbc3e860fa3d | 116 | 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 117 | 0x06, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x41, 0xE1, 0xF3, 0xFF, 0xFF, 0xFF, 0xFE, |
walter76 | 2:bbc3e860fa3d | 118 | 0xFE, 0xFE, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x06, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, |
walter76 | 2:bbc3e860fa3d | 119 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFD, 0x0D, 0x04, 0x00, |
walter76 | 2:bbc3e860fa3d | 120 | 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x04, |
walter76 | 2:bbc3e860fa3d | 121 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, |
walter76 | 2:bbc3e860fa3d | 122 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, |
walter76 | 2:bbc3e860fa3d | 123 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, |
walter76 | 2:bbc3e860fa3d | 124 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, |
walter76 | 2:bbc3e860fa3d | 125 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7C, 0xE0, 0x80, 0x01, 0x03, 0xFF, 0xFF, 0xFF, |
walter76 | 2:bbc3e860fa3d | 126 | 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 127 | 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x77, 0x7B, 0x7D, 0x3E, 0x00, 0x80, |
walter76 | 2:bbc3e860fa3d | 128 | 0xE0, 0x78, 0x3F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 129 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 130 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 131 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 132 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 133 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xC7, 0xEE, 0xFF, 0xFF, 0xFF, |
walter76 | 2:bbc3e860fa3d | 134 | 0xFF, 0xE3, 0xC1, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 135 | 0x00, 0x00, 0x01, 0x03, 0x83, 0x83, 0xC3, 0xC3, 0xE1, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xF7, 0xF3, |
walter76 | 2:bbc3e860fa3d | 136 | 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 137 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 138 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 139 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 140 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, |
walter76 | 2:bbc3e860fa3d | 142 | 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1F, 0x3F, 0x7E, 0xFE, 0xFE, 0x7E, 0x3E, 0x1E, |
walter76 | 2:bbc3e860fa3d | 143 | 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, |
walter76 | 2:bbc3e860fa3d | 144 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 145 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 146 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 147 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
walter76 | 2:bbc3e860fa3d | 148 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
walter76 | 2:bbc3e860fa3d | 149 | }; |
walter76 | 2:bbc3e860fa3d | 150 | |
walter76 | 2:bbc3e860fa3d | 151 | |
walter76 | 2:bbc3e860fa3d | 152 | extern const unsigned short font_PGM[]; |
walter76 | 2:bbc3e860fa3d | 153 | |
walter76 | 2:bbc3e860fa3d | 154 | |
walter76 | 2:bbc3e860fa3d | 155 | DigitalOut LCD_RST (D9); // D7=PA8--> LCD Reset |
walter76 | 2:bbc3e860fa3d | 156 | DigitalOut LCD_CS (D10); // D10=PB6--> LCD Chip-Select |
walter76 | 2:bbc3e860fa3d | 157 | DigitalOut LCD_SDI (D11); // D11=PA7--> LCD Serial Data In |
walter76 | 2:bbc3e860fa3d | 158 | DigitalOut LCD_A0 (D12); // D12=PA6--> LCD A0 |
walter76 | 2:bbc3e860fa3d | 159 | DigitalOut LCD_CLK (D13); // D13=PA5--> LCD Serial Clock |
walter76 | 2:bbc3e860fa3d | 160 | |
walter76 | 2:bbc3e860fa3d | 161 | |
walter76 | 2:bbc3e860fa3d | 162 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 163 | |
walter76 | 2:bbc3e860fa3d | 164 | void Delay_us(int howmany) |
walter76 | 2:bbc3e860fa3d | 165 | { |
walter76 | 2:bbc3e860fa3d | 166 | int n; |
walter76 | 2:bbc3e860fa3d | 167 | Timer t; |
walter76 | 2:bbc3e860fa3d | 168 | t.start(); |
walter76 | 2:bbc3e860fa3d | 169 | do |
walter76 | 2:bbc3e860fa3d | 170 | { |
walter76 | 2:bbc3e860fa3d | 171 | n=t.read_us(); |
walter76 | 2:bbc3e860fa3d | 172 | } |
walter76 | 2:bbc3e860fa3d | 173 | while (n<= howmany); |
walter76 | 2:bbc3e860fa3d | 174 | } |
walter76 | 2:bbc3e860fa3d | 175 | |
walter76 | 2:bbc3e860fa3d | 176 | |
walter76 | 2:bbc3e860fa3d | 177 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 178 | |
walter76 | 2:bbc3e860fa3d | 179 | |
walter76 | 2:bbc3e860fa3d | 180 | void SPI_Write(uint8_t data) |
walter76 | 2:bbc3e860fa3d | 181 | { |
walter76 | 2:bbc3e860fa3d | 182 | |
walter76 | 2:bbc3e860fa3d | 183 | uint8_t mask; |
walter76 | 2:bbc3e860fa3d | 184 | |
walter76 | 2:bbc3e860fa3d | 185 | for(mask=0x80; mask!=0; mask>>=1) |
walter76 | 2:bbc3e860fa3d | 186 | { |
walter76 | 2:bbc3e860fa3d | 187 | LCD_CLK=0; |
walter76 | 2:bbc3e860fa3d | 188 | if(mask & data) |
walter76 | 2:bbc3e860fa3d | 189 | LCD_SDI=1; |
walter76 | 2:bbc3e860fa3d | 190 | |
walter76 | 2:bbc3e860fa3d | 191 | else |
walter76 | 2:bbc3e860fa3d | 192 | LCD_SDI=0; |
walter76 | 2:bbc3e860fa3d | 193 | |
walter76 | 2:bbc3e860fa3d | 194 | LCD_CLK=1; |
walter76 | 2:bbc3e860fa3d | 195 | |
walter76 | 2:bbc3e860fa3d | 196 | } |
walter76 | 2:bbc3e860fa3d | 197 | LCD_CLK=0; |
walter76 | 2:bbc3e860fa3d | 198 | |
walter76 | 2:bbc3e860fa3d | 199 | return; |
walter76 | 2:bbc3e860fa3d | 200 | } |
walter76 | 2:bbc3e860fa3d | 201 | |
walter76 | 2:bbc3e860fa3d | 202 | |
walter76 | 2:bbc3e860fa3d | 203 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 204 | |
walter76 | 2:bbc3e860fa3d | 205 | void LCD_cmd(uint8_t command) |
walter76 | 2:bbc3e860fa3d | 206 | { |
walter76 | 2:bbc3e860fa3d | 207 | |
walter76 | 2:bbc3e860fa3d | 208 | LCD_A0=0; |
walter76 | 2:bbc3e860fa3d | 209 | |
walter76 | 2:bbc3e860fa3d | 210 | LCD_CS=0; |
walter76 | 2:bbc3e860fa3d | 211 | SPI_Write(command); |
walter76 | 2:bbc3e860fa3d | 212 | LCD_CS=1; |
walter76 | 2:bbc3e860fa3d | 213 | |
walter76 | 2:bbc3e860fa3d | 214 | return; |
walter76 | 2:bbc3e860fa3d | 215 | } |
walter76 | 2:bbc3e860fa3d | 216 | |
walter76 | 2:bbc3e860fa3d | 217 | |
walter76 | 2:bbc3e860fa3d | 218 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 219 | |
walter76 | 2:bbc3e860fa3d | 220 | void LCD_data(uint8_t data) |
walter76 | 2:bbc3e860fa3d | 221 | { |
walter76 | 2:bbc3e860fa3d | 222 | LCD_A0=1; |
walter76 | 2:bbc3e860fa3d | 223 | |
walter76 | 2:bbc3e860fa3d | 224 | LCD_CS=0; |
walter76 | 2:bbc3e860fa3d | 225 | SPI_Write(data); |
walter76 | 2:bbc3e860fa3d | 226 | LCD_CS=1; |
walter76 | 2:bbc3e860fa3d | 227 | |
walter76 | 2:bbc3e860fa3d | 228 | return; |
walter76 | 2:bbc3e860fa3d | 229 | } |
walter76 | 2:bbc3e860fa3d | 230 | |
walter76 | 2:bbc3e860fa3d | 231 | |
walter76 | 2:bbc3e860fa3d | 232 | |
walter76 | 2:bbc3e860fa3d | 233 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 234 | |
walter76 | 2:bbc3e860fa3d | 235 | void LCD_clear(void) |
walter76 | 2:bbc3e860fa3d | 236 | { |
walter76 | 2:bbc3e860fa3d | 237 | unsigned int p, c; |
walter76 | 2:bbc3e860fa3d | 238 | |
walter76 | 2:bbc3e860fa3d | 239 | for(p = 0; p < 8; p++) |
walter76 | 2:bbc3e860fa3d | 240 | { |
walter76 | 2:bbc3e860fa3d | 241 | LCD_cmd(CMD_SET_PAGE | p); |
walter76 | 2:bbc3e860fa3d | 242 | for(c = 0; c < 128; c++) |
walter76 | 2:bbc3e860fa3d | 243 | { |
walter76 | 2:bbc3e860fa3d | 244 | LCD_cmd(CMD_SET_COLUMN_LOWER | (c & 0xf)); |
walter76 | 2:bbc3e860fa3d | 245 | LCD_cmd(CMD_SET_COLUMN_UPPER | ((c >> 4) & 0xf)); |
walter76 | 2:bbc3e860fa3d | 246 | LCD_data(0x0); |
walter76 | 2:bbc3e860fa3d | 247 | } |
walter76 | 2:bbc3e860fa3d | 248 | } |
walter76 | 2:bbc3e860fa3d | 249 | |
walter76 | 2:bbc3e860fa3d | 250 | return; |
walter76 | 2:bbc3e860fa3d | 251 | } |
walter76 | 2:bbc3e860fa3d | 252 | |
walter76 | 2:bbc3e860fa3d | 253 | |
walter76 | 2:bbc3e860fa3d | 254 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 255 | |
walter76 | 2:bbc3e860fa3d | 256 | |
walter76 | 2:bbc3e860fa3d | 257 | void LCD_reset(void) |
walter76 | 2:bbc3e860fa3d | 258 | { |
walter76 | 2:bbc3e860fa3d | 259 | |
walter76 | 2:bbc3e860fa3d | 260 | // toggle RST low to reset; CS high |
walter76 | 2:bbc3e860fa3d | 261 | LCD_CS=1; |
walter76 | 2:bbc3e860fa3d | 262 | LCD_RST=0; |
walter76 | 2:bbc3e860fa3d | 263 | wait(0.01); |
walter76 | 2:bbc3e860fa3d | 264 | LCD_RST=1; |
walter76 | 2:bbc3e860fa3d | 265 | |
walter76 | 2:bbc3e860fa3d | 266 | LCD_cmd(CMD_SET_BIAS_7); // LCD bias select |
walter76 | 2:bbc3e860fa3d | 267 | LCD_cmd(CMD_SET_ADC_NORMAL); // ADC select === |
walter76 | 2:bbc3e860fa3d | 268 | LCD_cmd(CMD_SET_COM_REVERSE); // SHL select |
walter76 | 2:bbc3e860fa3d | 269 | LCD_cmd(CMD_SET_DISP_START_LINE); // Initial display line |
walter76 | 2:bbc3e860fa3d | 270 | |
walter76 | 2:bbc3e860fa3d | 271 | LCD_cmd(CMD_SET_POWER_CONTROL | 0x4); // turn on voltage converter (VC=1, VR=0, VF=0) |
walter76 | 2:bbc3e860fa3d | 272 | wait(0.01); |
walter76 | 2:bbc3e860fa3d | 273 | LCD_cmd(CMD_SET_POWER_CONTROL | 0x6); // turn on voltage regulator (VC=1, VR=1, VF=0) |
walter76 | 2:bbc3e860fa3d | 274 | wait(0.01); |
walter76 | 2:bbc3e860fa3d | 275 | LCD_cmd(CMD_SET_POWER_CONTROL | 0x7); // turn on voltage follower (VC=1, VR=1, VF=1) |
walter76 | 2:bbc3e860fa3d | 276 | wait(0.01); |
walter76 | 2:bbc3e860fa3d | 277 | |
walter76 | 2:bbc3e860fa3d | 278 | // set lcd operating voltage (regulator resistor, ref voltage resistor) |
walter76 | 2:bbc3e860fa3d | 279 | LCD_cmd(CMD_SET_RESISTOR_RATIO | 0x6); |
walter76 | 2:bbc3e860fa3d | 280 | |
walter76 | 2:bbc3e860fa3d | 281 | LCD_cmd(CMD_DISPLAY_ON); |
walter76 | 2:bbc3e860fa3d | 282 | LCD_cmd(CMD_SET_ALLPTS_NORMAL); |
walter76 | 2:bbc3e860fa3d | 283 | |
walter76 | 2:bbc3e860fa3d | 284 | // set contrast (leve= 0x09) |
walter76 | 2:bbc3e860fa3d | 285 | LCD_cmd(CMD_SET_VOLUME_FIRST); |
walter76 | 2:bbc3e860fa3d | 286 | LCD_cmd(CMD_SET_VOLUME_SECOND | (0x07 & 0x3f)); |
walter76 | 2:bbc3e860fa3d | 287 | LCD_clear(); |
walter76 | 2:bbc3e860fa3d | 288 | |
walter76 | 2:bbc3e860fa3d | 289 | return; |
walter76 | 2:bbc3e860fa3d | 290 | } |
walter76 | 2:bbc3e860fa3d | 291 | |
walter76 | 2:bbc3e860fa3d | 292 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 293 | |
walter76 | 2:bbc3e860fa3d | 294 | void LCD_write_buffer(unsigned int *buffer) |
walter76 | 2:bbc3e860fa3d | 295 | { |
walter76 | 2:bbc3e860fa3d | 296 | unsigned int c, p; |
walter76 | 2:bbc3e860fa3d | 297 | |
walter76 | 2:bbc3e860fa3d | 298 | for(p = 0; p < 8; p++) |
walter76 | 2:bbc3e860fa3d | 299 | { |
walter76 | 2:bbc3e860fa3d | 300 | LCD_cmd(CMD_SET_PAGE | pagemap[p]); |
walter76 | 2:bbc3e860fa3d | 301 | LCD_cmd(CMD_SET_COLUMN_LOWER | (0x0 & 0xf)); |
walter76 | 2:bbc3e860fa3d | 302 | LCD_cmd(CMD_SET_COLUMN_UPPER | ((0x0 >> 4) & 0xf)); |
walter76 | 2:bbc3e860fa3d | 303 | LCD_cmd(CMD_RMW); |
walter76 | 2:bbc3e860fa3d | 304 | LCD_data(0xFF); // X-axis offset |
walter76 | 2:bbc3e860fa3d | 305 | LCD_data(0xFF); |
walter76 | 2:bbc3e860fa3d | 306 | LCD_data(0xFF); |
walter76 | 2:bbc3e860fa3d | 307 | LCD_data(0xFF); |
walter76 | 2:bbc3e860fa3d | 308 | |
walter76 | 2:bbc3e860fa3d | 309 | for(c = 0; c < 128; c++) |
walter76 | 2:bbc3e860fa3d | 310 | { |
walter76 | 2:bbc3e860fa3d | 311 | LCD_data(buffer[(128*p)+c]); |
walter76 | 2:bbc3e860fa3d | 312 | } |
walter76 | 2:bbc3e860fa3d | 313 | } |
walter76 | 2:bbc3e860fa3d | 314 | |
walter76 | 2:bbc3e860fa3d | 315 | return; |
walter76 | 2:bbc3e860fa3d | 316 | |
walter76 | 2:bbc3e860fa3d | 317 | } |
walter76 | 2:bbc3e860fa3d | 318 | |
walter76 | 2:bbc3e860fa3d | 319 | |
walter76 | 2:bbc3e860fa3d | 320 | |
walter76 | 2:bbc3e860fa3d | 321 | |
walter76 | 2:bbc3e860fa3d | 322 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 323 | |
walter76 | 2:bbc3e860fa3d | 324 | void LCD_setpixel(unsigned int *buff, uint8_t x, uint8_t y, uint8_t color) |
walter76 | 2:bbc3e860fa3d | 325 | { |
walter76 | 2:bbc3e860fa3d | 326 | if ((x >= LCD_WIDTH) || (y >= LCD_HEIGHT)) |
walter76 | 2:bbc3e860fa3d | 327 | return; |
walter76 | 2:bbc3e860fa3d | 328 | |
walter76 | 2:bbc3e860fa3d | 329 | if (color) |
walter76 | 2:bbc3e860fa3d | 330 | buff[x+ (y/8)*128] |= (7-(y%8)); |
walter76 | 2:bbc3e860fa3d | 331 | else |
walter76 | 2:bbc3e860fa3d | 332 | buff[x+ (y/8)*128] &= ~(7-(y%8)); |
walter76 | 2:bbc3e860fa3d | 333 | |
walter76 | 2:bbc3e860fa3d | 334 | return; |
walter76 | 2:bbc3e860fa3d | 335 | } |
walter76 | 2:bbc3e860fa3d | 336 | |
walter76 | 2:bbc3e860fa3d | 337 | |
walter76 | 2:bbc3e860fa3d | 338 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 339 | |
walter76 | 2:bbc3e860fa3d | 340 | void LCD_clearpixel(unsigned int *buff, uint8_t x, uint8_t y) |
walter76 | 2:bbc3e860fa3d | 341 | { |
walter76 | 2:bbc3e860fa3d | 342 | if ((x >= LCD_WIDTH) || (y >= LCD_HEIGHT)) |
walter76 | 2:bbc3e860fa3d | 343 | return; |
walter76 | 2:bbc3e860fa3d | 344 | |
walter76 | 2:bbc3e860fa3d | 345 | buff[x+ (y/8)*128] &= ~(7-(y%8)); |
walter76 | 2:bbc3e860fa3d | 346 | |
walter76 | 2:bbc3e860fa3d | 347 | return; |
walter76 | 2:bbc3e860fa3d | 348 | } |
walter76 | 2:bbc3e860fa3d | 349 | |
walter76 | 2:bbc3e860fa3d | 350 | |
walter76 | 2:bbc3e860fa3d | 351 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 352 | |
walter76 | 2:bbc3e860fa3d | 353 | void LCD_drawline(unsigned int *buff, uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color) |
walter76 | 2:bbc3e860fa3d | 354 | { |
walter76 | 2:bbc3e860fa3d | 355 | uint8_t steep = abs(y1 - y0) > abs(x1 - x0); |
walter76 | 2:bbc3e860fa3d | 356 | |
walter76 | 2:bbc3e860fa3d | 357 | if (steep) { |
walter76 | 2:bbc3e860fa3d | 358 | swap(x0, y0); |
walter76 | 2:bbc3e860fa3d | 359 | swap(x1, y1); |
walter76 | 2:bbc3e860fa3d | 360 | } |
walter76 | 2:bbc3e860fa3d | 361 | |
walter76 | 2:bbc3e860fa3d | 362 | if (x0 > x1) { |
walter76 | 2:bbc3e860fa3d | 363 | swap(x0, x1); |
walter76 | 2:bbc3e860fa3d | 364 | swap(y0, y1); |
walter76 | 2:bbc3e860fa3d | 365 | } |
walter76 | 2:bbc3e860fa3d | 366 | |
walter76 | 2:bbc3e860fa3d | 367 | uint8_t dx, dy; |
walter76 | 2:bbc3e860fa3d | 368 | dx = x1 - x0; |
walter76 | 2:bbc3e860fa3d | 369 | dy = abs(y1 - y0); |
walter76 | 2:bbc3e860fa3d | 370 | |
walter76 | 2:bbc3e860fa3d | 371 | int err = dx / 2; |
walter76 | 2:bbc3e860fa3d | 372 | int ystep; |
walter76 | 2:bbc3e860fa3d | 373 | |
walter76 | 2:bbc3e860fa3d | 374 | if (y0 < y1) { |
walter76 | 2:bbc3e860fa3d | 375 | ystep = 1; |
walter76 | 2:bbc3e860fa3d | 376 | } else { |
walter76 | 2:bbc3e860fa3d | 377 | ystep = -1;} |
walter76 | 2:bbc3e860fa3d | 378 | |
walter76 | 2:bbc3e860fa3d | 379 | for (; x0<x1; x0++) { |
walter76 | 2:bbc3e860fa3d | 380 | if (steep) { |
walter76 | 2:bbc3e860fa3d | 381 | LCD_setpixel(buff, y0, x0, color); |
walter76 | 2:bbc3e860fa3d | 382 | } else { |
walter76 | 2:bbc3e860fa3d | 383 | LCD_setpixel(buff, x0, y0, color); |
walter76 | 2:bbc3e860fa3d | 384 | } |
walter76 | 2:bbc3e860fa3d | 385 | err -= dy; |
walter76 | 2:bbc3e860fa3d | 386 | if (err < 0) { |
walter76 | 2:bbc3e860fa3d | 387 | y0 += ystep; |
walter76 | 2:bbc3e860fa3d | 388 | err += dx; |
walter76 | 2:bbc3e860fa3d | 389 | } |
walter76 | 2:bbc3e860fa3d | 390 | } |
walter76 | 2:bbc3e860fa3d | 391 | |
walter76 | 2:bbc3e860fa3d | 392 | return; |
walter76 | 2:bbc3e860fa3d | 393 | } |
walter76 | 2:bbc3e860fa3d | 394 | |
walter76 | 2:bbc3e860fa3d | 395 | |
walter76 | 2:bbc3e860fa3d | 396 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 397 | |
walter76 | 2:bbc3e860fa3d | 398 | void LCD_drawchar(unsigned int *buff, uint8_t x, uint8_t line, char c) |
walter76 | 2:bbc3e860fa3d | 399 | { |
walter76 | 2:bbc3e860fa3d | 400 | uint8_t i; |
walter76 | 2:bbc3e860fa3d | 401 | |
walter76 | 2:bbc3e860fa3d | 402 | for (i =0; i<5; i++ ) |
walter76 | 2:bbc3e860fa3d | 403 | { |
walter76 | 2:bbc3e860fa3d | 404 | buff[x + (line*128) ] = font_PGM[((c-32)*5)+i]; |
walter76 | 2:bbc3e860fa3d | 405 | x++; |
walter76 | 2:bbc3e860fa3d | 406 | } |
walter76 | 2:bbc3e860fa3d | 407 | |
walter76 | 2:bbc3e860fa3d | 408 | return; |
walter76 | 2:bbc3e860fa3d | 409 | } |
walter76 | 2:bbc3e860fa3d | 410 | |
walter76 | 2:bbc3e860fa3d | 411 | |
walter76 | 2:bbc3e860fa3d | 412 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 413 | // The 128x64 LCD allows 8 rows of 21 chars |
walter76 | 2:bbc3e860fa3d | 414 | |
walter76 | 2:bbc3e860fa3d | 415 | void LCD_drawstring(unsigned int *buff, uint8_t x, uint8_t line, char *c) |
walter76 | 2:bbc3e860fa3d | 416 | { |
walter76 | 2:bbc3e860fa3d | 417 | unsigned int i=0; |
walter76 | 2:bbc3e860fa3d | 418 | while (c[i] != 0) |
walter76 | 2:bbc3e860fa3d | 419 | { |
walter76 | 2:bbc3e860fa3d | 420 | LCD_drawchar(buff, x, line, c[i]); |
walter76 | 2:bbc3e860fa3d | 421 | i++; |
walter76 | 2:bbc3e860fa3d | 422 | x += 6; // 6 pixels wide |
walter76 | 2:bbc3e860fa3d | 423 | if (x + 6 >= LCD_WIDTH) { |
walter76 | 2:bbc3e860fa3d | 424 | x = 0; // ran out of this line |
walter76 | 2:bbc3e860fa3d | 425 | line++; |
walter76 | 2:bbc3e860fa3d | 426 | } |
walter76 | 2:bbc3e860fa3d | 427 | if (line >= (LCD_HEIGHT/8)) |
walter76 | 2:bbc3e860fa3d | 428 | return; // ran out of space :( |
walter76 | 2:bbc3e860fa3d | 429 | } |
walter76 | 2:bbc3e860fa3d | 430 | |
walter76 | 2:bbc3e860fa3d | 431 | return; |
walter76 | 2:bbc3e860fa3d | 432 | } |
walter76 | 2:bbc3e860fa3d | 433 | |
walter76 | 2:bbc3e860fa3d | 434 | |
walter76 | 2:bbc3e860fa3d | 435 | //============================================================================== |
walter76 | 2:bbc3e860fa3d | 436 | |
walter76 | 2:bbc3e860fa3d | 437 | void Clear_buffer(unsigned int *buff) |
walter76 | 2:bbc3e860fa3d | 438 | { |
walter76 | 2:bbc3e860fa3d | 439 | unsigned short i; |
walter76 | 2:bbc3e860fa3d | 440 | |
walter76 | 2:bbc3e860fa3d | 441 | for(i=0; i<1024; i++) |
walter76 | 2:bbc3e860fa3d | 442 | buff[i]=0x00; |
walter76 | 2:bbc3e860fa3d | 443 | |
walter76 | 2:bbc3e860fa3d | 444 | return; |
walter76 | 2:bbc3e860fa3d | 445 | } |