From d3b5cc63c4d7d6938f33fb492c91185833037fdb Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 8 Mar 2023 22:41:39 -0800 Subject: [PATCH] Add NHD-C12864LZ This is a 128x64 LCD that might be suitable for TeleLCO Signed-off-by: Keith Packard --- packages/.gitignore | 1 + packages/Makefile | 1 + packages/NHD-C12864LZ.py | 177 ++++++++++++++++++ symbols/newhaven/NHD-C12864LZ.sym | 288 ++++++++++++++++++++++++++++++ 4 files changed, 467 insertions(+) create mode 100755 packages/NHD-C12864LZ.py create mode 100644 symbols/newhaven/NHD-C12864LZ.sym diff --git a/packages/.gitignore b/packages/.gitignore index 279db4b..8333d02 100644 --- a/packages/.gitignore +++ b/packages/.gitignore @@ -44,6 +44,7 @@ ap.10g.fp BTM182.fp NHD-C0216.fp NHD-C12832A1Z.fp +NHD-C12864LZ.fp AH3.fp KSCJ.fp ADXL78.fp diff --git a/packages/Makefile b/packages/Makefile index e969497..356b38f 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -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 index 0000000..a484aa8 --- /dev/null +++ b/packages/NHD-C12864LZ.py @@ -0,0 +1,177 @@ +#!/usr/bin/python3 +# Copyright 2022 by Keith Packard . 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 index 0000000..e31b076 --- /dev/null +++ b/symbols/newhaven/NHD-C12864LZ.sym @@ -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 +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 +} -- 2.30.2