Driver library for ST7565 graphics LCD controller over SPI interface.

Dependents:   ST7565SPI_Test OpPanel_Offline OpPanel_Offline_cmake_gcc_arm_NUCLEO_F303RENew

Committer:
kayekss
Date:
Sun Mar 01 22:06:09 2015 +0000
Revision:
2:138b0570a8e8
Parent:
1:2150513a5b18
Child:
3:86209398c73b
Remove unmoved comments in .cpp file

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kayekss 0:253db5137942 1 // ==================================================== Mar 02 2015, kayeks ==
kayekss 0:253db5137942 2 // ST7565SPI.cpp
kayekss 0:253db5137942 3 // ===========================================================================
kayekss 0:253db5137942 4 // Driver library for ST7565 graphics LCD controller over SPI interface.
kayekss 0:253db5137942 5
kayekss 0:253db5137942 6 #include "ST7565SPI.h"
kayekss 0:253db5137942 7
kayekss 0:253db5137942 8 ST7565SPI::ST7565SPI(PinName mosiPin, PinName sckPin, PinName csPin,
kayekss 0:253db5137942 9 PinName rsPin, PinName rstPin, int frequency)
kayekss 0:253db5137942 10 :
kayekss 0:253db5137942 11 rs(rsPin),
kayekss 0:253db5137942 12 rst(rstPin),
kayekss 0:253db5137942 13 spi(mosiPin, NC, sckPin),
kayekss 0:253db5137942 14 cs(csPin)
kayekss 0:253db5137942 15 {
kayekss 0:253db5137942 16 // Initialize SPI
kayekss 0:253db5137942 17 spi.format(8, 0);
kayekss 0:253db5137942 18 spi.frequency(frequency);
kayekss 0:253db5137942 19
kayekss 0:253db5137942 20 // Initialize pins
kayekss 0:253db5137942 21 rs = 0;
kayekss 0:253db5137942 22 rst = 1;
kayekss 0:253db5137942 23 cs = 1;
kayekss 0:253db5137942 24
kayekss 0:253db5137942 25 reset();
kayekss 0:253db5137942 26 }
kayekss 0:253db5137942 27
kayekss 0:253db5137942 28 ST7565SPI::~ST7565SPI() {
kayekss 0:253db5137942 29 }
kayekss 0:253db5137942 30
kayekss 0:253db5137942 31 void ST7565SPI::reset() {
kayekss 0:253db5137942 32 wait_ms(10);
kayekss 0:253db5137942 33 rst = 0;
kayekss 0:253db5137942 34 wait_ms(10);
kayekss 0:253db5137942 35 rst = 1;
kayekss 0:253db5137942 36 }
kayekss 0:253db5137942 37
kayekss 0:253db5137942 38 void ST7565SPI::clear() {
kayekss 0:253db5137942 39 for (uint8_t j = 7; j <= 7; j--) {
kayekss 0:253db5137942 40 setPage(j);
kayekss 0:253db5137942 41 setColumn(0);
kayekss 0:253db5137942 42 for (uint8_t i = 0; i < 132; i++) {
kayekss 0:253db5137942 43 data(0x00);
kayekss 0:253db5137942 44 }
kayekss 0:253db5137942 45 }
kayekss 0:253db5137942 46 }
kayekss 0:253db5137942 47
kayekss 1:2150513a5b18 48 void ST7565SPI::init(uint8_t v0, uint8_t contrast, Bias bias) {
kayekss 0:253db5137942 49 command(INTERNAL_RESET);
kayekss 0:253db5137942 50 wait_ms(5);
kayekss 0:253db5137942 51
kayekss 0:253db5137942 52 command(DISPLAY_ON);
kayekss 0:253db5137942 53 command(PCTRL_BOOSTER_ON | PCTRL_REGULATOR_ON | PCTRL_VFOLLOWER_ON);
kayekss 0:253db5137942 54 command(V0_INTERNAL_R_0 + (v0 & 0x07));
kayekss 0:253db5137942 55 command(ELECTRONIC_VOL_MODE);
kayekss 0:253db5137942 56 if (contrast == 0) {
kayekss 0:253db5137942 57 contrast = 1;
kayekss 0:253db5137942 58 }
kayekss 0:253db5137942 59 command(ELECTRONIC_VOL_1 - 1 + (contrast & 0x3f));
kayekss 0:253db5137942 60 switch (bias) {
kayekss 0:253db5137942 61 case Bias1_7:
kayekss 0:253db5137942 62 command(BIAS_1_7);
kayekss 0:253db5137942 63 break;
kayekss 0:253db5137942 64 case Bias1_9:
kayekss 0:253db5137942 65 command(BIAS_1_9);
kayekss 0:253db5137942 66 }
kayekss 0:253db5137942 67 command(COMMON_ASCENDING);
kayekss 0:253db5137942 68 command(SEGMENT_ASCENDING);
kayekss 0:253db5137942 69 command(ENTIRE_DISPLAY_OFF);
kayekss 0:253db5137942 70 command(INVERT_DISPLAY_OFF);
kayekss 0:253db5137942 71 command(COMMON_OFFSET);
kayekss 0:253db5137942 72 clear();
kayekss 0:253db5137942 73 }
kayekss 0:253db5137942 74
kayekss 0:253db5137942 75 void ST7565SPI::setPage(uint8_t page) {
kayekss 0:253db5137942 76 if (page < 16) {
kayekss 0:253db5137942 77 command(0xb0 | page);
kayekss 0:253db5137942 78 }
kayekss 0:253db5137942 79 }
kayekss 0:253db5137942 80
kayekss 0:253db5137942 81 void ST7565SPI::setColumn(uint8_t column) {
kayekss 0:253db5137942 82 command(0x10 | (column >> 4));
kayekss 0:253db5137942 83 command(column & 0x0f);
kayekss 0:253db5137942 84 }
kayekss 0:253db5137942 85
kayekss 0:253db5137942 86 void ST7565SPI::command(uint8_t c) {
kayekss 0:253db5137942 87 rs = 0;
kayekss 0:253db5137942 88 cs = 0;
kayekss 0:253db5137942 89 spi.write(c);
kayekss 0:253db5137942 90 cs = 1;
kayekss 0:253db5137942 91 }
kayekss 0:253db5137942 92
kayekss 0:253db5137942 93 void ST7565SPI::data(uint8_t d) {
kayekss 0:253db5137942 94 rs = 1;
kayekss 0:253db5137942 95 cs = 0;
kayekss 0:253db5137942 96 spi.write(d);
kayekss 0:253db5137942 97 cs = 1;
kayekss 0:253db5137942 98 }