Skip to content

Commit e6f39b0

Browse files
committed
adds JD9863 display driver
1 parent e5b35cd commit e6f39b0

File tree

2 files changed

+151
-0
lines changed

2 files changed

+151
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
from micropython import const # NOQA
2+
import time
3+
import lvgl as lv
4+
5+
6+
_SLPOUT = const(0x11)
7+
_INVOFF = const(0x20)
8+
_INVON = const(0x21)
9+
_DISPON = const(0x29)
10+
_CASET = const(0x2A)
11+
_PASET = const(0x2B)
12+
_RAMWR = const(0x2C)
13+
_TEOFF = const(0x34)
14+
_TEON = const(0x35)
15+
_COLMOD = const(0x3A)
16+
17+
18+
def init(self):
19+
param_buf = bytearray(32)
20+
param_mv = memoryview(param_buf)
21+
22+
self.set_params(_SLPOUT)
23+
time.sleep_ms(120) # NOQA
24+
25+
param_buf[:2] = bytearray([0x98, 0x53])
26+
self.set_params(0xDF, param_mv[:2])
27+
28+
param_buf[:2] = bytearray([0x98, 0x53])
29+
self.set_params(0xDF, param_mv[:2])
30+
31+
param_buf[0] = 0x23
32+
self.set_params(0xB2, param_mv[:1])
33+
34+
param_buf[:4] = bytearray([0x00, 0x47, 0x00, 0x6F])
35+
self.set_params(0xB7, param_mv[:4])
36+
37+
param_buf[:6] = bytearray([0x1C, 0x1A, 0x55, 0x73, 0x63, 0xF0])
38+
self.set_params(0xBB, param_mv[:6])
39+
40+
param_buf[:2] = bytearray([0x44, 0xA4])
41+
self.set_params(0xC0, param_mv[:2])
42+
43+
param_buf[0] = 0x16
44+
self.set_params(0xC1, param_mv[:1])
45+
46+
param_buf[:8] = bytearray([0x7D, 0x07, 0x14, 0x06, 0xCF, 0x71, 0x72, 0x77])
47+
self.set_params(0xC3, param_mv[:8])
48+
49+
param_buf[:12] = bytearray(
50+
[0x00, 0x00, 0xA0, 0x79, 0x0B, 0x0A, 0x16, 0x79, 0x0B, 0x0A, 0x16, 0x82]
51+
)
52+
self.set_params(0xC4, param_mv[:12])
53+
54+
param_buf[:32] = bytearray(
55+
[0x3F, 0x32, 0x29, 0x29, 0x27, 0x2B, 0x27, 0x28, 0x28, 0x26, 0x25, 0x17,
56+
0x12, 0x0D, 0x04, 0x00, 0x3F, 0x32, 0x29, 0x29, 0x27, 0x2B, 0x27, 0x28,
57+
0x28, 0x26, 0x25, 0x17, 0x12, 0x0D, 0x04, 0x00]
58+
)
59+
self.set_params(0xC8, param_mv[:32])
60+
61+
param_buf[:5] = bytearray([0x04, 0x06, 0x6B, 0x0F, 0x00])
62+
self.set_params(0xD0, param_mv[:5])
63+
64+
param_buf[:2] = bytearray([0x00, 0x30])
65+
self.set_params(0xD7, param_mv[:2])
66+
67+
param_buf[0] = 0x14
68+
self.set_params(0xE6, param_mv[:1])
69+
70+
param_buf[0] = 0x01
71+
self.set_params(0xDE, param_mv[:1])
72+
73+
param_buf[:5] = bytearray([0x03, 0x13, 0xEF, 0x35, 0x35])
74+
self.set_params(0xB7, param_mv[:5])
75+
76+
param_buf[:3] = bytearray([0x14, 0x15, 0xC0])
77+
self.set_params(0xC1, param_mv[:3])
78+
79+
param_buf[:2] = bytearray([0x06, 0x3A])
80+
self.set_params(0xC2, param_mv[:2])
81+
82+
param_buf[:2] = bytearray([0x72, 0x12])
83+
self.set_params(0xC4, param_mv[:2])
84+
85+
param_buf[0] = 0x00
86+
self.set_params(0xBE, param_mv[:1])
87+
88+
param_buf[0] = 0x02
89+
self.set_params(0xDE, param_mv[:1])
90+
91+
param_buf[:3] = bytearray([0x00, 0x02, 0x00])
92+
self.set_params(0xE5, param_mv[:3])
93+
94+
param_buf[:3] = bytearray([0x01, 0x02, 0x00])
95+
self.set_params(0xE5, param_mv[:3])
96+
97+
param_buf[0] = 0x00
98+
self.set_params(0xDE, param_mv[:1])
99+
100+
self.set_params(_TEOFF)
101+
102+
color_size = lv.color_format_get_size(self._color_space)
103+
if color_size == 2: # NOQA
104+
pixel_format = 0x55
105+
elif color_size == 3:
106+
pixel_format = 0x66
107+
else:
108+
raise RuntimeError(
109+
'IC only supports '
110+
'lv.COLOR_FORMAT.RGB565 or lv.COLOR_FORMAT.RGB888'
111+
)
112+
113+
param_buf[0] = pixel_format
114+
self.set_params(_COLMOD, param_mv[:1])
115+
116+
param_buf[:4] = bytearray([0x00, 0x00, 0x00, 0x00])
117+
self.set_params(_CASET, param_mv[:4])
118+
119+
param_buf[:4] = bytearray([0x00, 0x00, 0x00, 0x00])
120+
self.set_params(_PASET, param_mv[:4])
121+
122+
param_buf[0] = 0x02
123+
self.set_params(0xDE, param_mv[:1])
124+
125+
param_buf[:3] = bytearray([0x00, 0x02, 0x00])
126+
self.set_params(0xE5, param_mv[:3])
127+
128+
param_buf[0] = 0x00
129+
self.set_params(0xDE, param_mv[:1])
130+
131+
self.set_params(_DISPON)
132+
time.sleep_ms(120) # NOQA
133+
134+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Copyright (c) 2024 - 2025 Kevin G. Schlosser
2+
3+
from micropython import const # NOQA
4+
import display_driver_framework
5+
6+
7+
BYTE_ORDER_RGB = display_driver_framework.BYTE_ORDER_RGB
8+
BYTE_ORDER_BGR = display_driver_framework.BYTE_ORDER_BGR
9+
10+
STATE_HIGH = display_driver_framework.STATE_HIGH
11+
STATE_LOW = display_driver_framework.STATE_LOW
12+
STATE_PWM = display_driver_framework.STATE_PWM
13+
14+
15+
class JD9853(display_driver_framework.DisplayDriver):
16+
pass
17+

0 commit comments

Comments
 (0)