Add NHD-C12864LZ
authorKeith Packard <keithp@keithp.com>
Thu, 9 Mar 2023 06:41:39 +0000 (22:41 -0800)
committerKeith Packard <keithp@keithp.com>
Thu, 9 Mar 2023 07:32:22 +0000 (23:32 -0800)
This is a 128x64 LCD that might be suitable for TeleLCO

Signed-off-by: Keith Packard <keithp@keithp.com>
packages/.gitignore
packages/Makefile
packages/NHD-C12864LZ.py [new file with mode: 0755]
symbols/newhaven/NHD-C12864LZ.sym [new file with mode: 0644]

index 279db4b2562223256f346b9b9467093e77e05755..8333d022eeb415a32c5b3980a80f4cdf1fdc502e 100644 (file)
@@ -44,6 +44,7 @@ ap.10g.fp
 BTM182.fp
 NHD-C0216.fp
 NHD-C12832A1Z.fp
+NHD-C12864LZ.fp
 AH3.fp
 KSCJ.fp
 ADXL78.fp
index e96949733259f2d08d9e9a914d82c246edb46fca..356b38f4d0e399bb924e041701d1ef477959f531 100644 (file)
@@ -60,6 +60,7 @@ FOOTPRINTS= \
        BTM182.fp \
        NHD-C0216.fp \
        NHD-C12832A1Z.fp \
+       NHD-C12864LZ.fp \
        AH3.fp \
        KSCJ.fp \
        ADXL78.fp \
diff --git a/packages/NHD-C12864LZ.py b/packages/NHD-C12864LZ.py
new file mode 100755 (executable)
index 0000000..a484aa8
--- /dev/null
@@ -0,0 +1,177 @@
+#!/usr/bin/python3
+# Copyright 2022 by Keith Packard <keithp@keithp.com>.  GPLv3
+#
+# Program to emit PCB footprint for NHD-C12864LZ-FSW-FBW-3V3 graphic LCD
+#
+
+# dimensions in mm from NHD-C12864LZ-FSW-FBW-3V3.pdf datasheet
+BodyWidth = 77.4
+BodyHeight = 52.4
+PinDiam = 0.7
+PinSpacing = 1.27
+PinOffset = 1.05
+Pins = 28
+
+ViewWidth = 66.52
+ViewHeight = 33.24
+ViewHCtr = BodyHeight / 2 - (33.24 / 2 + 6.08)
+
+# centered pair of holes for alignment pins
+MntWidth = 72.40
+MntOffset = 3
+MntDiam = 1.6
+
+# contacts for LED backlight
+BLWidth = 60.0
+BLDiam = 1.9   # a 1.9 x 1.0 slot is called for
+BLOffset = 3.79
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print('# author: Keith Packard')
+print('# email: keithp@keithp.com')
+print('# dist-license: GPL 3')
+print('# use-license: unlimited')
+
+print('Element[0x0 "NHD-C12864LZ" "" "" 0 0 0 0 0 100 0x0]')
+print("(")
+
+# pins
+       # pin( x y thickness clearance mask drillhole name number flags)
+for pin in range (0,Pins):
+    if pin == Pins - 1:
+        Flags = '0x0101'
+    else:
+        Flags = '0x0001'
+
+    print('   Pin[',\
+       mm2mils100((13.5 - pin)*PinSpacing), \
+       mm2mils100(-BodyHeight/2+PinOffset), \
+       mm2mils100(PinDiam * 1.75), \
+       1200, \
+       mm2mils100(PinDiam * 1.75) + 600, \
+       mm2mils100(PinDiam), \
+       '"pin%i"' % (Pins-pin), '"%i"' % (Pins-pin), Flags, ']')
+
+print('   ElementLine[',\
+       -mm2mils100(BodyWidth/2), \
+       -mm2mils100(BodyHeight/2), \
+       mm2mils100(BodyWidth/2), \
+       -mm2mils100(BodyHeight/2), \
+       500, \
+       ']')
+print('   ElementLine[',\
+       -mm2mils100(BodyWidth/2), \
+       -mm2mils100(BodyHeight/2), \
+       -mm2mils100(BodyWidth/2), \
+       mm2mils100(BodyHeight/2), \
+       500, \
+       ']')
+print('   ElementLine[',\
+       -mm2mils100(BodyWidth/2), \
+       mm2mils100(BodyHeight/2), \
+       mm2mils100(BodyWidth/2), \
+       mm2mils100(BodyHeight/2), \
+       500, \
+       ']')
+print('   ElementLine[',\
+       mm2mils100(BodyWidth/2), \
+       mm2mils100(BodyHeight/2), \
+       mm2mils100(BodyWidth/2), \
+       -mm2mils100(BodyHeight/2), \
+       500, \
+       ']')
+
+# mark viewable area
+
+print('   ElementLine[',\
+       mm2mils100(-ViewWidth/2), \
+       mm2mils100(ViewHCtr + ViewHeight/2), \
+       mm2mils100(ViewWidth/2), \
+       mm2mils100(ViewHCtr + ViewHeight/2), \
+       500, \
+       ']')
+
+print('   ElementLine[',\
+       mm2mils100(-ViewWidth/2), \
+       mm2mils100(ViewHCtr - ViewHeight/2), \
+       mm2mils100(ViewWidth/2), \
+       mm2mils100(ViewHCtr - ViewHeight/2), \
+       500, \
+       ']')
+
+print('   ElementLine[',\
+       mm2mils100(-ViewWidth/2), \
+       mm2mils100(ViewHCtr - ViewHeight/2), \
+       mm2mils100(-ViewWidth/2), \
+       mm2mils100(ViewHCtr + ViewHeight/2), \
+       500, \
+       ']')
+
+print('   ElementLine[',\
+       mm2mils100(ViewWidth/2), \
+       mm2mils100(ViewHCtr - ViewHeight/2), \
+       mm2mils100(ViewWidth/2), \
+       mm2mils100(ViewHCtr + ViewHeight/2), \
+       500, \
+       ']')
+
+print('   ElementLine[',\
+       mm2mils100(ViewWidth/2), \
+       mm2mils100(ViewHCtr - ViewHeight/2), \
+       mm2mils100(-ViewWidth/2), \
+       mm2mils100(ViewHCtr + ViewHeight/2), \
+       500, \
+       ']')
+
+print('   ElementLine[',\
+       mm2mils100(-ViewWidth/2), \
+       mm2mils100(ViewHCtr - ViewHeight/2), \
+       mm2mils100(ViewWidth/2), \
+       mm2mils100(ViewHCtr + ViewHeight/2), \
+       500, \
+       ']')
+
+# holes for alignment pins
+print('   Pin[',\
+       mm2mils100(MntWidth/2), \
+       mm2mils100(-BodyHeight / 2 + MntOffset), \
+       mm2mils100(MntDiam * 1.75), \
+       1200, \
+       mm2mils100(MntDiam * 1.75) + 600, \
+       mm2mils100(MntDiam), \
+       '"G"', '"G"', '0x0001', ']')
+
+print('   Pin[',\
+       mm2mils100(-MntWidth/2), \
+       mm2mils100(-BodyHeight / 2 + MntOffset), \
+       mm2mils100(MntDiam * 1.75), \
+       1200, \
+       mm2mils100(MntDiam * 1.75) + 600, \
+       mm2mils100(MntDiam), \
+       '"G"', '"G"', '0x0001', ']')
+
+# backlight pins
+print('   Pin[',\
+       mm2mils100(-BLWidth/2), \
+       mm2mils100(-BodyHeight/2+BLOffset), \
+       mm2mils100(BLDiam * 1.75), \
+       1200, \
+       mm2mils100(BLDiam * 1.75) + 600, \
+       mm2mils100(BLDiam), \
+       '"K"', '"K"', '0x0001', ']')
+
+print('   Pin[',\
+       mm2mils100(BLWidth/2), \
+       mm2mils100(-BodyHeight/2+BLOffset), \
+       mm2mils100(BLDiam * 1.75), \
+       1200, \
+       mm2mils100(BLDiam * 1.75) + 600, \
+       mm2mils100(BLDiam), \
+       '"A"', '"A"', '0x0001', ']')
+
+print(")")
diff --git a/symbols/newhaven/NHD-C12864LZ.sym b/symbols/newhaven/NHD-C12864LZ.sym
new file mode 100644 (file)
index 0000000..e31b076
--- /dev/null
@@ -0,0 +1,288 @@
+v 20220529 2
+T 0 1300 8 10 1 1 0 0 1
+refdes=X?
+T 0 1750 5 10 0 0 0 0 1
+device=LCD
+T 0 1550 5 10 0 0 0 0 1
+footprint=NHD-C12864LZ
+P 200 0 200 300 1 0 0
+{
+T 150 200 5 8 1 1 90 6 1
+pinnumber=1
+T 200 350 9 8 1 1 90 0 1
+pinlabel=/CS1
+T 350 300 5 10 0 1 90 0 1
+pintype=in
+}
+P 600 0 600 300 1 0 0
+{
+T 550 200 5 8 1 1 90 6 1
+pinnumber=2
+T 600 350 9 8 1 1 90 0 1
+pinlabel=/RES
+T 600 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 1400 0 1400 300 1 0 0
+{
+T 1350 200 5 8 1 1 90 6 1
+pinnumber=4
+T 1400 350 9 8 1 1 90 0 1
+pinlabel=/WR
+T 1400 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 1000 0 1000 300 1 0 0
+{
+T 950 200 5 8 1 1 90 6 1
+pinnumber=3
+T 1000 350 9 8 1 1 90 0 1
+pinlabel=A0
+T 1000 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 2200 0 2200 300 1 0 0
+{
+T 2150 200 5 8 1 1 90 6 1
+pinnumber=6
+T 2200 350 9 8 1 1 90 0 1
+pinlabel=DB0
+T 2200 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 2600 0 2600 300 1 0 0
+{
+T 2550 200 5 8 1 1 90 6 1
+pinnumber=7
+T 2600 350 9 8 1 1 90 0 1
+pinlabel=DB1
+T 2600 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 3000 0 3000 300 1 0 0
+{
+T 2950 200 5 8 1 1 90 6 1
+pinnumber=8
+T 3000 350 9 8 1 1 90 0 1
+pinlabel=DB2
+T 3000 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 3400 0 3400 300 1 0 0
+{
+T 3350 200 5 8 1 1 90 6 1
+pinnumber=9
+T 3400 350 9 8 1 1 90 0 1
+pinlabel=DB3
+T 3400 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 3800 0 3800 300 1 0 0
+{
+T 3750 200 5 8 1 1 90 6 1
+pinnumber=10
+T 3800 350 9 8 1 1 90 0 1
+pinlabel=DB4
+T 3800 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 11400 0 11400 300 1 0 0
+{
+T 11350 200 5 8 1 1 90 6 1
+pinnumber=A
+T 11400 350 9 8 1 1 90 0 1
+pinlabel=Anode
+T 11400 350 5 8 0 1 90 2 1
+pintype=pwr
+}
+P 11800 0 11800 300 1 0 0
+{
+T 11750 200 5 8 1 1 90 6 1
+pinnumber=K
+T 11800 350 9 8 1 1 90 0 1
+pinlabel=Cathode
+T 11800 350 5 8 0 1 90 2 1
+pintype=pwr
+}
+B 0 300 12000 900 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 0 1950 5 10 0 0 0 0 1
+use-license=unlimited
+T 0 2150 5 10 0 0 0 0 1
+dist-license=GPL3
+T 0 2350 5 10 0 0 0 0 1
+author=Keith Packard <keithp@keithp.com>
+T 0 2550 5 10 0 0 0 0 1
+datasheet=newhaven/NHD-C12864LZ-FSW-FBW-3V3.pdf
+T 4800 1250 9 10 1 0 0 6 1
+NHD 128x64 pixel COG LCD Module
+P 1800 0 1800 300 1 0 0
+{
+T 1750 200 5 8 1 1 90 6 1
+pinnumber=5
+T 1800 350 9 8 1 1 90 0 1
+pinlabel=/RD
+T 1800 350 5 8 0 1 90 2 1
+pintype=in
+}
+P 4200 0 4200 300 1 0 0
+{
+T 4150 200 5 8 1 1 90 6 1
+pinnumber=11
+T 4200 350 9 8 1 1 90 0 1
+pinlabel=DB5
+T 4350 300 5 10 0 1 90 0 1
+pintype=in
+}
+P 4600 0 4600 300 1 0 0
+{
+T 4550 200 5 8 1 1 90 6 1
+pinnumber=12
+T 4600 350 9 8 1 1 90 0 1
+pinlabel=DB6/SCL
+T 4750 300 5 10 0 1 90 0 1
+pintype=in
+}
+P 5400 0 5400 300 1 0 0
+{
+T 5400 350 5 8 0 1 90 2 1
+pintype=pwr
+T 5350 200 5 8 1 1 90 6 1
+pinnumber=14
+T 5400 350 9 8 1 1 90 0 1
+pinlabel=VCC
+}
+P 5000 0 5000 300 1 0 0
+{
+T 5000 350 5 8 0 1 90 2 1
+pintype=in
+T 4950 200 5 8 1 1 90 6 1
+pinnumber=13
+T 5100 350 9 8 1 1 90 0 1
+pinlabel=DB7/SI
+}
+P 6200 0 6200 300 1 0 0
+{
+T 6200 350 5 8 0 1 90 2 1
+pintype=pas
+T 6150 200 5 8 1 1 90 6 1
+pinnumber=16
+T 6200 350 9 8 1 1 90 0 1
+pinlabel=VOUT
+}
+P 6600 0 6600 300 1 0 0
+{
+T 6600 350 5 8 0 1 90 2 1
+pintype=pas
+T 6550 200 5 8 1 1 90 6 1
+pinnumber=17
+T 6600 350 9 8 1 1 90 0 1
+pinlabel=CAP3+
+}
+P 5800 0 5800 300 1 0 0
+{
+T 5800 350 5 8 0 1 90 2 1
+pintype=pwr
+T 5750 200 5 8 1 1 90 6 1
+pinnumber=15
+T 5800 350 9 8 1 1 90 0 1
+pinlabel=GND
+}
+P 7000 0 7000 300 1 0 0
+{
+T 7000 350 5 8 0 1 90 2 1
+pintype=pas
+T 6950 200 5 8 1 1 90 6 1
+pinnumber=18
+T 7000 350 9 8 1 1 90 0 1
+pinlabel=CAP1-
+}
+P 7400 0 7400 300 1 0 0
+{
+T 7400 350 5 8 0 1 90 2 1
+pintype=pas
+T 7350 200 5 8 1 1 90 6 1
+pinnumber=19
+T 7400 350 9 8 1 1 90 0 1
+pinlabel=CAP1+
+}
+P 7800 0 7800 300 1 0 0
+{
+T 7800 350 5 8 0 1 90 2 1
+pintype=pas
+T 7750 200 5 8 1 1 90 6 1
+pinnumber=20
+T 7800 350 9 8 1 1 90 0 1
+pinlabel=CAP2+
+}
+P 8200 0 8200 300 1 0 0
+{
+T 8200 350 5 8 0 1 90 2 1
+pintype=pas
+T 8150 200 5 8 1 1 90 6 1
+pinnumber=21
+T 8200 350 9 8 1 1 90 0 1
+pinlabel=CAP2-
+}
+P 8600 0 8600 300 1 0 0
+{
+T 8750 300 5 10 0 1 90 0 1
+pintype=pas
+T 8550 200 5 8 1 1 90 6 1
+pinnumber=22
+T 8600 350 9 8 1 1 90 0 1
+pinlabel=V4
+}
+P 9000 0 9000 300 1 0 0
+{
+T 9150 300 5 10 0 1 90 0 1
+pintype=pas
+T 8950 200 5 8 1 1 90 6 1
+pinnumber=23
+T 9000 350 9 8 1 1 90 0 1
+pinlabel=V3
+}
+P 9800 0 9800 300 1 0 0
+{
+T 9800 350 5 8 0 1 90 2 1
+pintype=pas
+T 9750 200 5 8 1 1 90 6 1
+pinnumber=25
+T 9800 350 9 8 1 1 90 0 1
+pinlabel=V1
+}
+P 9400 0 9400 300 1 0 0
+{
+T 9400 350 5 8 0 1 90 2 1
+pintype=pas
+T 9350 200 5 8 1 1 90 6 1
+pinnumber=24
+T 9400 350 9 8 1 1 90 0 1
+pinlabel=V2
+}
+P 10600 0 10600 300 1 0 0
+{
+T 10600 350 5 8 0 1 90 2 1
+pintype=in
+T 10550 200 5 8 1 1 90 6 1
+pinnumber=27
+T 10600 350 9 8 1 1 90 0 1
+pinlabel=C86
+}
+P 11000 0 11000 300 1 0 0
+{
+T 11000 350 5 8 0 1 90 2 1
+pintype=in
+T 10950 200 5 8 1 1 90 6 1
+pinnumber=28
+T 11000 350 9 8 1 1 90 0 1
+pinlabel=PS
+}
+P 10200 0 10200 300 1 0 0
+{
+T 10200 350 5 8 0 1 90 2 1
+pintype=pas
+T 10150 200 5 8 1 1 90 6 1
+pinnumber=26
+T 10200 350 9 8 1 1 90 0 1
+pinlabel=V0
+}