Show2Me control FW, initial shared version

Dependencies:   SDFileSystem_HelloWorld mbed FATFileSystem

Fork of 000_GEO_SHOW2ME_OK_F411RE by Walter Trovo

/media/uploads/walter76/img-1277.jpg

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?

UserRevisionLine numberNew 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 }