YAHAL
Yet Another Hardware Abstraction Library
Loading...
Searching...
No Matches
sharp96_drv.h
1// ---------------------------------------------
2// This file is part of
3// _ _ __ _ _ __ __
4// ( \/ ) /__\ ( )_( ) /__\ ( )
5// \ / /(__)\ ) _ ( /(__)\ )(__
6// (__)(__)(__)(_) (_)(__)(__)(____)
7//
8// Yet Another HW Abstraction Library
9// Copyright (C) Andreas Terstegge
10// BSD Licensed (see file LICENSE)
11//
12// ---------------------------------------------
13//
14// Driver for Sharp 96x96 b/w LCD displays
15// (display type LS013B4DN04)
16
17#ifndef _SHARP96_H_
18#define _SHARP96_H_
19
20#include <cstdint>
21#include "spi_interface.h"
22#include "timer_interface.h"
23#include "gpio_interface.h"
24#include "lcd_interface.h"
25
26class sharp96_drv : public lcd_interface {
27public:
28 // User interface
31 gpio_interface & disp_on_pin,
32 gpio_interface & pwr_pin,
33 timer_interface & timer);
34
35 virtual ~sharp96_drv() { }
36
37 inline uint16_t getSizeX() override { return 96; }
38 inline uint16_t getSizeY() override { return 96; }
39
40 // x and y range from 0 to getX/YSize() - 1
41 void drawPixel(uint16_t x, uint16_t y, color_t color) override;
42 void drawHLine(uint16_t xs, uint16_t ys, uint16_t xe, color_t c) override;
43 void drawVLine(uint16_t xs, uint16_t ys, uint16_t ye, color_t c) override;
44
45 void drawArea (uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye,
46 pixel_stream & ps) override;
47
48 void fillArea (uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye,
49 color_t c) override;
50
51private:
52 void flush();
53 void writeData(uint8_t data);
54 uint8_t reverseByte(uint8_t data);
55
56 spi_interface & _spi;
57 gpio_interface & _disp_on_pin;
58 gpio_interface & _pwr_pin;
59 timer_interface & _timer;
60 bool _dirty;
61 bool _setVCOM;
62
63 // The internal buffer for the whole display.
64 // [Y][X], and 8 Pixel/byte in X
65 uint8_t _display_buffer[96][12];
66};
67
68#endif // _SHARP96_H_