LED display for HP 3457A multimeter - I did it :-) - Page 1
Forum section: electronics / projects

author: xi
author_rank: Contributor
timestamp: November 10, 2017, 02:07:51 am
content: Hi there,The HP 3457A is a well known really good DMM, I bought one for my hobbyist lab (got two for some reasons). Its main drawback is the LCD display! It's hard to read, especially when doing some critical measurements on a board, and trying to read the DMM at the same timeI know there are some mods to add a backlight - though this is a good idea, I am not a big fan of LCD displays at all: there is always some angles where you don't see anythingSo I though it could be a good idea to rebuild a display with some LEDsThere were two major difficulties:- reverse-engineer the HP LCD protocol.- recreate a display identical to the LCD one, eg with two point (colon) and a comma between each digit.I succeeded and here is the result (before / after):I am going to show the different steps of the design.HP LCD display protocol spyingI used 2 floppy drive disk ribbon cables to get a straight extension in order to connect my Saleae logic analyser. Then I tried to understand the HP LCD protocol (this was far from trivial, because the data for one digit are scattered at various places in the transmission frame).But I succeeded and was able to decode the digits with an ATMega32:Mechanical considerationsSecond biggest problem was to add the two points and the comma between each digit. I initially though about using some really small LED 14 digit display and use some discrete LED between each digit, with eg some 3D printed light pipes. But there were two new problems with this solution: the smallest display I found are 10mm width (there are 12 digits, and the DMM window is about 120mm with - meaning that there is absolutely NO room for some LED between each digit). The other problem was the price of the 3D printed light-pipe: more than 60€!So I thought about another solution: machine the displays to remove about 0.5mm on each side and use an additional PCB with some miniature LED in order to display the punctuationAnd it workedBelow is the image of the aluminium support to machine 4 display at a time:Electronic boardNext steps were to design the electronic board. I choose to design the display in 3 floors: one for the CPU and power / one for the 14 seg. displays / one for the punctuation. The board are single side PCB, so that I can easily engrave them at home. But I designed them with two layers, thus no straps are needed if they are engraved with two layersI used an Atmel ATMega162 which has 35 IO in a TQFP44 & DIP40 package (most of the other Atmel in this packages only have 32 IO lines). I will publish the schematics and some detailed explanations if there are some interests in that!Below are the boards just drilled and cut on my CNC machine.And here is the board just before engraving:AssemblyThe 3 boards after mounting all the components:The hardest part was to solder the miniature LEDs, especially the comma, because normally these LEDs are designed to be mounted horizontally, but I mounted them vertically ... (I wasn't able to find any LED with an elongated form factor, except these ones).Once assembled, comparison with the original LCD display:The original HP ribbon cable is reused and inserted into a DIP support:To be continued...

author: Vgkid
author_rank: Super Contributor
timestamp: November 10, 2017, 02:32:45 am
content: That is really good looking , look forward to seeing more.

author: xi
author_rank: Contributor
timestamp: November 10, 2017, 03:01:49 am
content: follow-upTestsI used the SPI hardware module of the Atmel to retrieve the info from the HP 3457A. The frame are not SPI at all (10 bits vs 8 bits, ...), but adding a few discrete logic gates I was able to decode every frame of the HP DMM using the Atmel SPI.First step was to display the decoded values in a serial terminal (Values in RED):Then on the LED display - this is one of the first test I made:All digit lit, once assembled:Final resultI am really pleased with the final result: viewing angle are - as expected - really really good (see top and side views just below), and the display is really fast - data are displayed as soon as they are received ; I think it's even faster than the LCD version, because the CPU is faster. As for the refresh rate, I achieve 80Hz, so there is no visible flickering at all.Power consumption is directly related to the brightness of the display. The yellow version of these Kingbright display would need about 10mA per segment to be really bright (meaning nearly 2A @ 5V for the 12x 14 segment display when everything is lit) ; this is way too high for the transformer of the DMM. I ended up in sending about 5mA per segment (mean value): when everything is lit, it adds about 4.5W of consumption on the transformer, and when some useful stuff is displayed, the consumption increase is about 2W, which is perfectly acceptable.For the next module, I will choose red display, because there is a high luminosity version for this color.That's all for now! If there are some interest, I will post the schematics and more detailed explanation

author: IanB
author_rank: Super Contributor
timestamp: November 10, 2017, 03:12:19 am
content: Wow! That's some serious hacking. You must have been really upset with that LCD display

author: retiredcaps
author_rank: Super Contributor
timestamp: November 10, 2017, 03:18:41 am
content: Awesome job!I have one bench meter, but I never use it. It is a Keithley 175 and it has the same hard to read display at certain angles. I got it for $30 CDN out of curiosity more than anything.I can certainly say that I would never even attempt this LED modification given the time required to do so. It is easier to reach for another handheld multimeter with a bigger display and backlight.

author: ludzinc
author_rank: Unknown
timestamp: November 10, 2017, 03:26:52 am
content: WOWA thing of beauty, and a Joy forever!

author: drussell
author_rank: Super Contributor
timestamp: November 10, 2017, 04:14:51 am
content: Slick! Nicely done!

author: rsjsouza
author_rank: Super Contributor
timestamp: November 10, 2017, 04:20:58 am
content: Congratulations on the modifications! The display looks stunning. I have two 3478As that have the same type of display... Perhaps some day I take the plunge to replace them...

author: Tomorokoshi
author_rank: Super Contributor
timestamp: November 10, 2017, 04:24:39 am
content: Very impressive. That would make a good upgrade kit.

author: TheSteve
author_rank: Unknown
timestamp: November 10, 2017, 05:21:52 am
content: Hardcore - I love it!

author: razberik
author_rank: Frequent Contributor
timestamp: November 10, 2017, 09:24:20 am
content: Amazing !Shall it fit to 3478A ?

author: kripton2035
author_rank: Super Contributor
timestamp: November 10, 2017, 09:40:08 am
content: you can start a kickstarter for this now ...

author: brabus
author_rank: Frequent Contributor
timestamp: November 10, 2017, 10:08:43 am
content: Very, very well made. Congratulations!

author: tooki
author_rank: Super Contributor
timestamp: November 10, 2017, 11:56:00 am
content: Wow, that's beautiful!!!I've never used that model or any relative. What does it use the colons between digits for?

author: tooki
author_rank: Super Contributor
timestamp: November 10, 2017, 12:01:32 pm
content: Quote from: retiredcaps on November 10, 2017, 03:18:41 amI'm working with Technogeeky to come up with a replacement display board for the Keithley 197/197A, and I wouldn't be surprised if it used a very similar display board, if not the same one. Keep your eyes peeled.

author: Mr. Scram
author_rank: Super Contributor
timestamp: November 10, 2017, 12:04:58 pm
content: Nice job, and certainly something I would have been interested in if I didn't lose the auction the other day.

author: capt bullshot
author_rank: Super Contributor
timestamp: November 10, 2017, 12:06:25 pm
content: Wow, that's stunningGreat job!

author: ElektroQuark
author_rank: Unknown
timestamp: November 10, 2017, 12:30:03 pm
content: Impressive work.As someone has noted, you could sell some kits.

author: Dr. Frank
author_rank: Super Contributor
timestamp: November 10, 2017, 01:12:50 pm
content: Great job, very well done and documented!Thanks for sharing.

author: xrunner
author_rank: Super Contributor
timestamp: November 10, 2017, 01:17:11 pm
content: Impressive - most impressive!

author: Back2Volts
author_rank: Unknown
timestamp: November 10, 2017, 03:20:12 pm
content: Wow, awesome, impressive, most impressive... what else can I say !!!

author: sokoloff
author_rank: Super Contributor
timestamp: November 10, 2017, 03:25:53 pm
content: Hacks like this are simply amazing to me.Such dedication and effort for such an elegant outcome; I love it.I'd love to see the schematics and more detailed information about how did the decoding and reverse engineering. (It's not like I even own that equipment, but I love reading the nitty-gritty details.)

author: bookaboo
author_rank: Frequent Contributor
timestamp: November 10, 2017, 03:58:06 pm
content: Incredible job

author: ealex
author_rank: Frequent Contributor
timestamp: November 10, 2017, 04:16:30 pm
content: that's awesomei'm interested in the protocol .maybe a small CPLD can be used to capture the data an drive the display ?

author: cvanc
author_rank: Frequent Contributor
timestamp: November 10, 2017, 04:44:15 pm
content: Beautiful, elegant work. Well done.

author: bingo600
author_rank: Super Contributor
timestamp: November 10, 2017, 05:39:20 pm
content: WooowwwVery nice looking modAny chance you would describe the protocol ?/Bingo

author: stj
author_rank: Super Contributor
timestamp: November 10, 2017, 06:17:16 pm
content: that's an incredible amount of mechanical effort!!i would have used a starburst VFD, it would have looked good, but probably not even close to that good.

author: texaspyro
author_rank: Super Contributor
timestamp: November 10, 2017, 07:48:35 pm
content: I've got 3 or 4 3457's hanging around here that could use a display upgrade. If you build more of these, I'm in. I'd also be interested in your code / protocol info. I'd probably implement it using a VFD or modern backlight LCD.I have a project on the back burner to do a replacement front panel board for the HP-531xx counters using (probably) a backlit LCD. There are a lot of those out there with weak VFD's. HP only sells the display as a complete front panel board... $1800.

author: xi
author_rank: Contributor
timestamp: November 11, 2017, 12:42:15 am
content: Wow, I didn't expect so many answers! Thanks for your nice comments about my modJust answering quickly some of your questions ; I will post the protocol and schematic on tomorrow, I am too tired tonightAs for the 3478A, I think it would work too (I used the doc of this DMM to get the pinout of the display and the function of each line - it is more detailed than the 3457A one). But, you would loose the indications at the bottom of the display (MATH, CAL, SHIFT, ...), because on the 3478A, these indications appear directly on the display (contrarily to the 3457A where the indications are printed below the display).The colon is used to describe parameter's value. For example, if you launch the command "ID?" from the menu, it displays "ID?:HP3457A".As for selling a kit ... I don't know, I think it would be too expensive compared to the current price of the HP 3457A. But I will calculate with the BOM.

author: Macbeth
author_rank: Super Contributor
timestamp: November 11, 2017, 01:31:29 am
content: Amazing job, especially all that work to add the colons and commas on the third PCB.Please do publish the protocol, even though it removes some of the fun for us masochists who enjoy reverse engineering that kind of stuff!

author: Dave
author_rank: Super Contributor
timestamp: November 11, 2017, 04:12:02 am
content: Absolutely superb! These are the kinds of amazing projects that keep me hooked to this forum.

author: timb
author_rank: Super Contributor
timestamp: November 11, 2017, 04:50:07 am
content: Quote from: tooki on November 10, 2017, 12:01:32 pmWe should pool our resources, as I’m halfway done with an OLED mod for the 197. I’ve almost got the mechanical portion down (I designed a small frame that can be laser cut from plastic), now all I need to do is design the replacement PCB. The trick is getting the button positions right (I’ve scanned in the existing board so I can get precise measurements).I’ve also got some preliminary firmware going on an MSP430 to decode the signals.I’m still waiting on the OLEDs to get in from China so I can try it out on the meter itself.Initially, I was going to use LEDs like the OP’s 3457A mod, however it would have been difficult to replicate the annunciator symbols (BATT, HOLD, etc.) without implementing a diffuser and custom cut mask (I experimented with cutting the symbols into a black vinyl mask, adding a diffuser and then lighting them from behind with a single LED, but I wasn’t quite satisfied with the results). An LED cluster would have also used a lot power, which the 197 doesn’t have to spare. An OLED display won’t use more than 50mA, which is inside the 5VD rail’s buffer.Anyway, send me a PM, I’m about 50% done with my project. I was planning on releasing it as a retrofit kit.—As for the OP’s project: A work of art! Please release schematics and such. From the looks of the 3457A’s LCD and interface, this LED mod should be extendable to other gear from that era, like the HP 3488A switch mainframe, which has the same style LCD as the 3457A. (In fact, it may even be the same LCD, it’s the same size and alphanumeric, with bottom markers and everything.)

author: precaud
author_rank: Frequent Contributor
timestamp: November 11, 2017, 06:53:03 am
content: Superb! Congrats! I want one!

author: TiN
author_rank: Super Contributor
timestamp: November 11, 2017, 07:10:47 am
content: Very cool, impressed with amount of work into that old meter.Where did you get black screen in front of LEDs for contrast? I'm looking for that film for VFD displays...

author: cs.dk
author_rank: Unknown
timestamp: November 11, 2017, 08:21:45 am
content: Very nice mod

author: SeanB
author_rank: Super Contributor
timestamp: November 11, 2017, 08:31:49 am
content: Looks like a regular 80% or so solar film, simply cut to size. You can buy a whole roll, or just ask any car tint installer for an offcut in the desired shade and they likely will have a load of pieces you can cut the window out of for free.

author: tggzzz
author_rank: Super Contributor
timestamp: November 11, 2017, 08:43:41 am
content: Have you done any tests to ensureandassure thatchangesin the current powering the LEDs doesn't affect the measurements?

author: hugo
author_rank: Regular Contributor
timestamp: November 11, 2017, 07:50:06 pm
content: Congrats to you XI, awesome job.

author: cncjerry
author_rank: Unknown
timestamp: November 11, 2017, 08:25:28 pm
content: I'm really impressed. I have two of those meters and coupled with very bad eyesight with Glaucoma and cataracts, I hate the display. Absolutely hate it.Did you engrave the boards with CNC or etch them?Nice work all around.Jerry

author: xi
author_rank: Contributor
timestamp: November 11, 2017, 11:52:40 pm
content: HP 3457A multimeter LCD display protocolAs several of you asked for it, this is the protocol of the HP LCD displayElectrical lines descriptionA 34 pin HE10 connector is used on the HP 3457A digital motherboard (same as those used for the 3.5" floppy drives). The ribbon cable attached is cut in two parts: pins 1 to 16 for the keyboard and pins 17 to 32 for the LCD display (pins 33 and 34 are NC).Below is the pinout and the description of the LCD part of this HE10 connector.Code:(NC) 17|18 (V3V: power supply for the LCD)(instruction line: ISA) 19|20 (V2V: power supply for the LCD)(1 = read data on ISA / 0 = read data on INA: SYNC) 21|22 (V1V: power supply for the LCD)(NC) 23|24 (GND)(data line: INA) 25|26 (OS1: for internal oscillator of the LCD display ; connected to a 470pF capacitor on the motherboard)(second clock, same as O1 with a small delay: 02) 27|28 (NC)(clock: 01) 29|30 (NC)(global chip select: PWO) 31|32 (VCC: +5V with a serial resistor of 1k on the motherboard)(NC) 33|34 (NC)So this is a serial synchronous transmission, and for us there are 5 interesting lines: PWO, 02 clk, SYNC, ISA and INA. With these lines we are able to completely decode the protocol of the LCD display. (note: O1 and O2 clocks are exactly the same, but the O2 line is 6µs late compared to O1. We will use rising edge of O2 clock to sample the data, because it has the best timing (middle of each data bit)).Note: the pinout of the DIL connector (LCD end of the ribbon cable) is given on my schematic that I will publish soon. Basically, pin 17 of the HE10 goes to pin 1 of the DIL support, pin 18 on pin 2, ... and pin 32 on pin 16!Protocol overviewLet's observe a capture of a full frame (once received, this frame will display the above text "BEEP,-99999.1_", with two annunciators lit : "SMPL" & "MATH"):Description of each line:PWO:this is the global chip select, when at level "1", the LCD display is selected and must read the data.CLK 02:this is the clock for the data received on ISA and INA lines. Max clock frequency is 55kHz (may be less, I guess it depends on the processor load).SYNC:this line is at level "1" when the data must be read on ISA line / at level "0" when the data must be read on INA line. On the above screenshot, the SYNC line goes "high" 7 times, meaning there are 7 instructions sent on ISA lineISA:this line sends the instructions to the LCD display, I have found 7 types of instructions:- 0x3F0: select the LCD display (1 byte)- 0x2E0: ?- 0x320: toggle display ON/OFF- 0x2F0: annunciators ON/OFF ("SMPL", "REM", "SRQ", "ADRS", "AC+DC", "4W", "AZOFF", "MRNG", "MATH", "REAR", "ERR", "SHIFT") (2 bytes)- 0x028: write A registers (6 bytes)- 0x068: write B registers (6 bytes)- 0x0A8: write C registers (6 bytes)INA:this line sends the data to the LCD display (eg the values to display on the digits)Chip Select:is not a line from the motherboard, it is generated by my board with a bit of logic (we will see why later)Let's zoom on the complete frame:complete frame (very large image)We can see 7 instructions sent on theISAline in this order: 0x3F0, 0x2E0, 0x320, 0x2F0, 0x0A8, 0x028, 0x068. Some frame will have less instructions, in fact, only the data that change are re-transmitted (if you press the "SINGLE" button of the DMM, the data are sent once to the LCD display, then nothing changes, so nothing is transmitted anymore (to be exact, when nothing changes, the data are retransmitted each 2 minutes or so).Below is a screenshot of two successive frames, one has 7 instructions, the following only has 4 instructions, because only the annunciator changed:TheINAline shows the data that follow each instruction. In the following section we will describe the useful sections more in-depth.Examining the first instruction: 0x3F0 = select the displayGeneral info about the transmission:- Each bit are transmitted reverse, ie the bit 0 (= Least Significant Bit) of a register is sent first ...- The same apply for the digits: digit 12 (the last one) is transmitted first ...Let's observe the first instruction received on the above complete frame: 0x3F0:The doc I found says this instruction is to select the display, and the display is selected when the data received on INA line is 0xFD. Let's verify!Let's check theinstruction between C1 and C2 markersfirst: remember that instructions are sent onISAline when SYNC line is at level "1". On the above screenshot, we can see that we received these bits:0000111111 (10 bits).Also remember that the bits are sent in reverse order, so once reordered, the data on ISA line is:1111110000 = 0x3F0 = select the LCD display commandNow we are going to check thedata between A1 and A2 markers: remember that data are sent onINAline when SYNC line is at level "0". On the above screenshot, we can see that we received these bits:10111111 (8 bits).Also remember that the bits are sent in reverse order, so once reordered, the data on INA line is:11111101 = 0xFD = select the LCD display valueWhat about thebits received between C2 and A1 markers ?(two clock pulses)There arealwaysthese two bits, whatever the line (ISA or INA), and they are always 0. The useful data always starts after these 2 bits, and are then sent on a multiple of 8 bits.In other words, each transmission of data starts with a 10 bits set, followed by n 8 bits sets. But since the first 2 bits are always 0, we can ignore them and consider that the data are only composed of 8 bits sets.Ignoring these 2 bits is not an easy task for the microcontroller, because it is not designed to receive a variable length of data on the SPI busFor this reason, I have added a bit of logic (two D flip-flop to delay theSYNCsignal and an XOR gate to generate my"Chip Select"). With this logic, I am able to decode directly the data from the HP 3457A using the hardware SPI module from the Atmel microcontroller (the"Chip Select"line directly drives the CS input of the Atmel: the CS input is only enabled when at logic level "0").The Digits partOk, I hope you have understood how the frame is built, so now let's decode the interesting part of the frame: the data sent to the digitsWe will ignore the useless (for the mod) instructions (0x2F0, ...) and we will decode the 0x028 / 0x068 / 0x0A8 instructions. There are 3 registers of 6 bytes each = 18 bytes in total to describe the 12 chars of the display + the punctuation. Each register is set by one instruction received on ISA line: 0x028 for register A, 0x068 for register B and 0x0A8 for register C.This screenshot shows the complete decoding of the0x028 command(values for register A), up to the next command0x068.The principle for decoding this instruction is exactly the same as for the "First instruction: 0x3F0", so refer to this section to understand itThe data set received for register A is (hexadecimal): 1F 99 99 D9 50 25Note that there are 6 more bytes transmitted after these 6 bytes, but they arealways0, so we don't bother to retrieve and decode them (I don't know the purpose of these bytes).This is screenshot for 0x068 command = values for register B:The exact same principle applies to decode it, and the data set received is: 31 37 33 23 0D 00Similarly, the register C (0xA8 command) will decode as: 00 00 00 00 00 00Ok, so "BEEP,-99999.1_" is displayed on the screen, and we have 3 registers, containing the following values ... how to match them?reg A = 1F 99 99 D9 50 25reg B = 31 37 33 23 0D 00reg C = 00 00 00 00 00 00Decode the DigitsAfter much research for "HP LCD charset" and other similar things, I ended-up finding this little treasure: the complete doc of a ROM for the HP41C! This is a calculator that contains a LCD display with a similar protocol as the one used on the DMM ; thanks HP for the good consistency between the productsThis is here:http://www.series80.org/Misc/ZenROM.pdfThe most interesting info are on page 115 and following (section 8.2 "Display handling"):- description of the format of the frames- description of the instructions (some are missing, like the 0x2E0, but it's enough to understand the protocol)- and the most interesting: the HP character set for the LCD display!Below is a reproduction of this charset, with the value for each char (eg, char 'X' has value "0x18")Each byte of register A contains 4 LSB bits for each digit (meaning there are the LSB part of 2 digits in each byte)Similarly, each byte of register B contains 2 MSB bits for 2 digits and 2 bits for the punctuation of 2 digitsAnd, each byte of register C contains the Extended bit for 2 digits.Below is a table that represents the 6 bytes received for each registers (A, B & C), and the matching digits data.Code:----------------------------------------------------------------------------------------------------------------------|Byte nr received | 1 | 2 | 3 | 4 | 5 | 6 |----------------------------------------------------------------------------------------------------------------------|Digit number | 11 | 12 | 9 | 10 | 7 | 8 | 5 | 6 | 3 | 4 | 1 | 2 |----------------------------------------------------------------------------------------------------------------------Char value is given by retrieving the following bits from register A, B & C:(The first line represents the 7 bits of the char value ; this value directly matches the HP charset showed above)(The second and third line show which register and bit needs to be read to retrieve the char value. Eg, "RegB3_bit1" means Register B, byte 3, bit 1)Code:------------------------------------------------------------------------------------------------------------------------------| bit number for one char | 6 | 5 | 4 | 3 | 2 | 1 | 0 |------------------------------------------------------------------------------------------------------------------------------| pos in the reg. for even digits | RegCn_bit0 | RegBn_bit1 | RegBn_bit0 | RegAn_bit3 | RegAn_bit2 | RegAn_bit1 | RegAn_bit0 |------------------------------------------------------------------------------------------------------------------------------| pos in the reg. for odd digits | RegCn_bit4 | RegBn_bit5 | RegBn_bit4 | RegAn_bit7 | RegAn_bit6 | RegAn_bit5 | RegAn_bit4 |------------------------------------------------------------------------------------------------------------------------------Lets apply this table to our example. Remember we got these values in the registers:reg A = 1F 99 99 D9 50 25reg B = 31 37 33 23 0D 00reg C = 00 00 00 00 00 00So if we want todecode digit 4 for example, using the first table, we know that digit 4 data are stored in byte number 5:Digit 4 data are 50 (reg A), 0D (reg B), 00 (reg C). Written in binary, this is:01010000 (reg A), 00001101 (reg B), 00000000 (reg C)Now we use the second table to decode the char ; digit 4 is an even number, so decoding is done using these bits:Code:| RegC_bit0 | RegB_bit1 | RegB_bit0 | RegA_bit3 | RegA_bit2 | RegA_bit1 | RegA_bit0 || 0 | 0 | 1 | 0 | 0 | 0 | 0 |= 0010000 = 0x10Last, we use the HP charset to see that char 0x10 is the letter 'P', eg what was expected(forth digit of "BEEP,-99999.1_" text)Decode the PunctuationThe punctuation is transmitted in the register B, using the exact same principle as above.Code:-------------------------------------------------------------| bit number for the punctuation | 1 | 0 |-------------------------------------------------------------| pos in the reg. for even digits | RegBn_bit3 | RegBn_bit2 |-------------------------------------------------------------| pos in the reg. for odd digits | RegBn_bit7 | RegBn_bit6 |-------------------------------------------------------------And the charset for the punctuation is this one:Code:--------------------|Value | Sign |--------------------| 0 | (none) || 1 | . (point) || 2 | : (colon) || 3 | , (comma) |--------------------(note: the annunciators are transmitted separately in another instruction)Lets apply this table to our example. Remember we got these values in the registers:reg A = 1F 99 99 D9 50 25reg B = 31 37 33 23 0D 00reg C = 00 00 00 00 00 00So if we want todecode punctuation for digit 10 for example, using the first table, we know that digit 10 data are stored in byte number 2:So, digit 10 data is 0x37 (reg B) = 00110111 (reg B)Now we use the punctuation decoding table ; digit 10 is an even number, so decoding is done using these bits:Code:| RegB_bit3 | RegB_bit2 || 0 | 1 |= 0b01 = 1Last, we use the charset for the punctuation to see that value 1 corresponds to punctuation '.' (point), eg what we expected(punctuation for 10thdigit of "BEEP,-99999.1_" text)Decode the AnnunciatorsRemember, the annunciators are the functions "SMPL", "REM", "SRQ", "ADRS", "AC+DC", "4W", "AZOFF", "MRNG", "MATH", "REAR", "ERR", "SHIFT" below the display.They are send just after the instruction 0x2F0, like in the screenshot below:As always, the instruction is between C1 & C2 markers. Decoding the instruction gives 0x2F0, which indicates that the annunciators will follow onINAline.Decoding the annunciator is really simple: they are sent on INA line between markers D1 & D2, and there is one bit per annunciator. The only difficulty is that they are written reverse (as always), so the first transmitted bit is the last annunciator.Code:---------------------------------------------------------------------------------------------------| annunciator | SMPL | REM | SRQ | ADRS | AC+DC | 4Wo | AZOFF | MRNG | MATH | REAR | ERR | SHIFT |---------------------------------------------------------------------------------------------------| bit position | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |---------------------------------------------------------------------------------------------------Applied to our example, we have bit's positions 4 and 12 which are at level "1", meaning that "MATH" indicator and "SMPL" indicators are ONLiterature- This is the key documentation, starting at page 115, it gives the instructions supported by the display, and the complete charset:http://www.series80.org/Misc/ZenROM.pdf- This one shows the representation of the HP charset on 14 segments display (the chars are scattered at various places, and some symbols are missing) :https://www.pungerer.net/pfx/MesPockets/HP/hp41cv/QuickCards/HP41QuickGuideSunthProgA.jpg- The service manual of the HP 3478A for the description of the LCD display lines (page 141, section 7-F-66):http://www.arimi.it/wp-content/Strumenti/HP/Multimetri/hp-3478a-Service.pdfThat's the end! I have spent a lot of time writing this "spec" ; I hope it will benefit to someone!Feel free to ask if something is unclear or poorly written ...

author: xi
author_rank: Contributor
timestamp: November 12, 2017, 01:38:14 am
content: Quote from: TiN on November 11, 2017, 07:10:47 amThis is grey perspex (the original brand) ref 923 in 3mm thickness. I have tested several colors, and this one is the best for this application (once multimeter is closed, you don't see at all the unlit digits nor the punctuation). Specs are here:http://www.perspexsheet.uk/neutral-923-perspex/and I bought it from here:https://www.ebay.fr/itm/361076230021And no problem at all to machine this perspex sheet on my CNC:Quote from: tggzzz on November 11, 2017, 08:43:41 amThe original HP 3457A consumes about 9.5W on the mains input line, with the extension board inserted. The mains fuse is 80mA at 230V, meaning that max power consumption could be 18W in theory (just to give an idea). The LED module consumes 2W in normal use with yellow displays (up to 4.5W when all digits are lit). It is plugged directly on the same transformer output as the digital motherboard, using an extension (see image below), so I don't load at all the 5V regulator of this board nor I load the windings used for the analog board.I have also measured the input voltage on the 5V regulator of the digital board: 10.9V when the LED display is disconnected / 10.4V when the LED display is connected and used normally / 10V when the LED display is all lit. And ripple is 0.5V peak-peak on this input, so the 5V regulator will fully work at all loads.So I am quite confident that the power consumption increase will not affect at all the measurements. HP took a large security margin for the voltages, and after several hours of work, the transformer keeps quite cool.In case of doubt, I could still mount the red version of the Displays, which is low power / high brightness, and thus reduce the power consumption by a factor 2 I think.Quote from: cncjerry on November 11, 2017, 08:25:28 pmThanks for your feedback!And sorry, I used the wrong term: the boards are etched and not engraved, you are rightI use the CNC to drill and cut them.

author: tggzzz
author_rank: Super Contributor
timestamp: November 12, 2017, 08:18:32 am
content: Quote from: xi on November 12, 2017, 01:38:14 amYou missed a key word in my question, even though I useditalicsto emphasise it:changes.Your response above is about themeanpower dissipation. Your calculations and measurements may well be true, but are only vaguely relevant and are not definitive.The LCD display will draw a constant current no matter what is displayed. The LED display will draw a different current depending on what is displayed. Every time the current changes there might well be some noise injected into the instrument's sensitive front-end - and that could affect the measurement.If the display is multiplexed, and most LED displays are multiplexed to reduce the pin/wire count, then the current will change at the digit rate. The worst noise injection would probably occur when the display is 181818 or 111888 since 5 segments are changing from on to off and vice versa.If, unusually, the display is not multiplexed, then the worst noise injection would occur whenever the displayed value changes. If no part of the measurement cycle is occurring at that time, then noise injection would probably be unimportant.Without having considered the problem in detail, I will guess that any problems are most likely to appear with measurements:high source impedance, say 100kohms to pick a common value in metrologyAC, not DC (although there might also be issues with DC measurements)values near 0Vwhere a sub-harmonic of the multiplexing is near the mains line frequency, so that the mains frequency filter does not remove interference from the mainwhere the number of displayed segments changes most, e.g. 181818

author: voltsandjolts
author_rank: Unknown
timestamp: November 12, 2017, 09:42:47 am
content: QuoteWell done on the reverse engineering and the nice write-up, much appreciated

author: xi
author_rank: Contributor
timestamp: November 12, 2017, 09:15:56 pm
content: Quote from: tggzzz on November 12, 2017, 08:18:32 amNo, I didn't miss the word in your questionSimply, as you must have noticed, English is not my native language and I have understood your sentence differently: I though you were talking about "changesin the current powering the LEDs" compared to the current powering the LCD, and I have answered to that question. In fact you were talking about current variations during the LEDs commutation. Sorry, It must be perfectly clear for the natives, but it was unclear for me.The display is obviously multiplexed, otherwise It would need more than 200 pins to drive the LEDs and 200 wire passing from one board to the other in my design! Yes, the worst case is when I switch from one digit with many segments lit to a digit completely OFF (like when there is a space in the text displayed).When designing the power supply, the perturbations were one of my concern: I have added some external filtering (coil and capacitors) at the input of the Murata DC/DC converter, in order to reduce EMI (there are some spectral analysis given by Murata that guarantee the max value of the EMI when using these external components).I guess your overall question is about EMI? Conducted EMI or radiated EMI?As for the conducted EMI, I am not too worried: the LED commutation is low frequency and this is typically well filtered by the capacitors and the regulators of the DMM. Moreover, a power filter doesn't eliminate these low frequencies either, so they do cross the transformer, as well as my board may generate them, and the DMM is designed to work with that.I was a bit more worried about the higher frequency EMI (included those generated by the DC-DC), hence the coil, and hence my connection on the "Digital" winding of the transformer and not the "analog" one (I don't know if it is useful, but it won't hurt, moreover than HF generally doesn't cross well a 50Hz power transformer).And I was also worried about radiated EMI, and for this part, I have no real clues, nor any device to measure them.As for your proposed "problematic" tests:- I did some measurements near 0 with a µV DC source (see the firsts photos), and results are really good: there is absolutely no visible change between the LCD version and the LED version.- Today I did some tests with a resistor, as you advised: mounted the LCD display back, used a high stability 200k resistor, waited 3 hours for the equipment and the resistor to be perfectly warmed, mounted back the LED display, waited a bit more and compared the results: at the same room temperature (22.5°C), the result areexactlythe same: 200.0118kOhms.- I don't have a stable enough AC source, so I can't answer you on this part.- I did another test too: simply choosing the "FREQ" measurement with nothing connected to the inputs: it still displays 50Hz as it did before, so I guess there are not too much radiated EMI.The comparison tests I did don't show any problem, but no, I just can'tassurethat the LED display doesn't affect measurements. I just did what I though good to maximise my chances of success, and it seems to be OK when comparing before/after, but assuring that would need costly measurement equipments that I don't have.Hope this answers part of your question. If you think there are some designs flaw, or if you know better ways of designing LED display, please say so. I have some Enertec 7045 here too with the schematics, I will take a look at their design.P.S. I will be without internet during 1 week, so don't expect too quick answer.

author: tggzzz
author_rank: Super Contributor
timestamp: November 13, 2017, 12:33:35 am
content: Quote from: xi on November 12, 2017, 09:15:56 pmThose are reasonable points. My apologies for being unnecessarily belligerent.QuoteEither or bothFrom a users perspective it wouldn't matter since either would be bad.QuoteAny such measurement is difficult - and unreliable in the sense that it is difficult to reproduce and easy to measure a different value.QuoteDid you try measuring the DC voltage across the (relatively high) resistor, which should, of course, be zero. The AC voltage across the resistor should be the thermal Johnson noise in the resistor. If not then it is possible that interference is causing problems - of which one interference source might be from the LED commutation currents.QuoteI think it would be unlikely that the meter could measure a frequency of switching noise.QuoteAccepted, but if you lack expensive equipment then you have to think and to use skill and imagination - which is usually beneficialQuoteNo answer is necessary!If you can devise measurements that would be most affected by interference, and can compare the measurements with an unmodified meter, and show there is no difference, then you have gone a long way to demonstrating interference isn't a problem.

author: coromonadalix
author_rank: Super Contributor
timestamp: November 15, 2017, 09:47:47 pm
content: wow just wow i wish i could do some reverse protocol etc ... , great work

author: Specmaster
author_rank: Super Contributor
timestamp: November 16, 2017, 12:24:10 am
content: Really is a great job you did there and I agree with the other lads on here, you could set up a small manufacturing process for these and sell them as complete replacement displays.Perhaps starting up a small company designing replacement displays for other similar meters now you know how to do it. This could be your chance to go into business developing these kits and offering them as kits and or complete pre-built units with all the instructions on the procedure for fitting the replacement displays?

author: Keicar
author_rank: Regular Contributor
timestamp: November 16, 2017, 01:16:29 am
content: I'm in awe - that's gorgeous!Cheers,Karl.

author: Echo88
author_rank: Frequent Contributor
timestamp: November 16, 2017, 09:58:12 am
content: https://hackaday.com/2017/11/15/leds-give-hp-3457a-ddms-lcd-display-the-boot/

author: Swake
author_rank: Frequent Contributor
timestamp: November 16, 2017, 10:22:44 am
content: Félicitation, très belle réalisation!There might be a market for these kinds of mods. Lots of HP/Agilent equipment are build with very similar LCD displays. Would not be surprised if all of these use the same protocol. Also those with the fading VFD displays.As you have access to a CNC machine you might consider milling your own segmented digits out of some black plexiglass. Very similar as what is done in cheap LED clocks. They solder the leds directly to the PCB board with the milled-out plexy hot-glued on top. This way you can have any design you want and choose from many more LEDs to suit your color and power consumption needs.

author: macboy
author_rank: Super Contributor
timestamp: November 16, 2017, 08:53:18 pm
content: Excellent work. Looks really really great.While I do appreciate that you tried to stay with a 1:1 segment-to-segment identical replacement to the LCD, I wonder if you also considered using a graphic display to produce a custom display? With the data decoded, you could easily decode everything to an alpha-numeric string and display on a (e.g.) 256x64 pixel OLED like this one:This would be more software work but a lot easier mechanically.

author: niekvs
author_rank: Contributor
timestamp: November 17, 2017, 11:40:01 am
content: Quote from: macboy on November 16, 2017, 08:53:18 pmBut now try to fit that into the space of the original HP device and make it look good. Unless you have an elongated graphics display in the dimensions of the original it's replacing, it's probably going to look very ugly. Your example display would probably fill up only half of the horizontal space available. You may have some additional space and put in a larger display that's mostly hidden by the enclosure, but how elegant would that be? I think the elegance of the OP's solution is how it fits so perfectly and looks as though it should have been there from the start. Great job!

author: 001
author_rank: Super Contributor
timestamp: November 18, 2017, 11:03:47 am
content: Awesome work

author: USMC_Spike
author_rank: Regular Contributor
timestamp: November 19, 2017, 05:04:25 am
content: I also am interested.I've found that to be a major drawback to the HPs with LCD readouts.If you are doing work...it's a real pain to read the display.I have only a cursory understanding of what you've accomplished,well done.We have some of the nice CNC machines at school, I assumethey use a standard protocol for programming.Could use the information for the CNC too.it's very good stuff!

author: Icchan
author_rank: Regular Contributor
timestamp: November 19, 2017, 09:03:45 pm
content: Oh darn this is great!I have an 3478A and the display is basically driving me crazy... I really hope you release more details about this project as open source so I could get this otherwise great device to be even better!I'm mostly intrested in the protocol details and what discreet logic you used to help you out with the SPI compatibility.I mean it's all about those details and everythign else is how one wants to tackle the issue.I was considering a graphics LCD myself for the replacement since I don't own a CNC.

author: xi
author_rank: Contributor
timestamp: November 19, 2017, 11:37:36 pm
content: Hi,I am back from my business trip, I will answer the questions and post more details (schematics, ...) on the upcoming week. I have already posted the protocol, I hope everything is clear?I will also see if I can provide some replacement kits at a reasonable price.Thanks for all your comments and for the post on hackaday(I am currently mounting the red version of the display)Xavier

author: vgskb4
author_rank: Newbie
timestamp: December 16, 2017, 06:51:56 am
content: Great job on this mod!Thanks for sharing your work.

author: mlefe
author_rank: Regular Contributor
timestamp: December 24, 2017, 04:17:05 pm
content: Excellent work!! Great skills

author: dxl
author_rank: Regular Contributor
timestamp: January 03, 2018, 11:48:12 am
content: Awesome Work on reversing this. I'm thinking of replacing the display in my HP 4263A LCR Meter, which is (i guess) the same kind of display. This will save me a lot of work :-). I thought someone did the replacement in the 4263A already, but can't find the thread.Regardsdxl

author: 5065AGuru
author_rank: Frequent Contributor
timestamp: January 05, 2018, 05:28:54 am
content: VERY nice! The guys at Time Nuts have complained about displays for the 53131A/53132A counters going bad. This would be a very popular fix for those units!!!Cheers,Corby

author: Inverted18650
author_rank: Frequent Contributor
timestamp: January 05, 2018, 05:34:34 am
content: Great work mate and I'm sure you've just inspired many more to follow.

author: O_Shovah
author_rank: Newbie
timestamp: April 11, 2018, 06:28:55 pm
content: I really appreciate the work of Xavier for this great substitute for the HP series.Here is a HP3457A, a Agilent 4263B and others lacking in the Display department.@XiMay i kindly ask you to post/share the firmware and the layouts of your PCB as you proposed.I would be interested in ordering a batch of PCBs so we could share those as a starting pointfor the people who haven't got access to a milling machine.Best regardsJens

author: pelule
author_rank: Frequent Contributor
timestamp: April 11, 2018, 07:52:40 pm
content: As far as I know, thats the same LCD Display module used in the HP 6624 Power Supplies (the "tank").I planned to replace that module as it's readability is quite bad - thus your great work may help a lot to make that project reality./PeLuLe

author: xi
author_rank: Contributor
timestamp: April 22, 2018, 09:45:21 pm
content: Hello,I finally found some time for cleaning my program, so, attached to this message you will find the source code for the ATMega162 that I used for my HP 3457A LED displayhttps://www.eevblog.com/forum/projects/led-display-for-hp-3457a-multimeter-i-did-it-)/?action=dlattach;attach=415101It is distributed under the open source GPL licence, please comply with it.I am also including the complete schematic, also attached to this post:https://www.eevblog.com/forum/projects/led-display-for-hp-3457a-multimeter-i-did-it-)/?action=dlattach;attach=415104As for the PCB, since there were some demand, I tried to make it manufactured, here is the result:As you may have noticed, they did it completely wrongThey didn't follow my instructions (wrong dimensions), neither they worried about drillingallthe holes at 0.8mm diameter, telling me that my files were wrong (the same files that I used to make my prototype). Anyway, this is still in progress, and for now I want to keep the PCB design and try to make a kit with it. If it doesn't work, I will provide the PCB files too in the future.Other news about the display are:As suggested by tggzzz, I measured the AC noise across a 100k resistor with the LCD display and just after with the LED display, the good news is that I can't see any difference in the value measured between the two displays!Also made the red version version of the display, using the High Luminosity (Kingbright Super Bright Red PSA39-21SRWA) version of the 14 digits displays:The result is both nice and a bit disappointing, because these display are not really brighter than the normal version. To be more precise: they can be much brighter, but the segments lit will leak on the other segments that are off ... I initially though that there were some commutation latency problems with my board, but no, in fact the compartment between each digit let pass the light, like on my photo below:(Only one digit is lit trough a 1k2 resistor 5V => about 3mA ; as you can see, surrounding digits are also lit a bit, even-though they are not powered (one of them is even shorted)).So the only advantage of this High Luminosity version is that it consumes less power!

author: cheeseit
author_rank: Regular Contributor
timestamp: April 23, 2018, 05:40:00 pm
content: This is anawesomeproject and I've been following it for some time, even though I don't (yet) own a 3457. If I did, I would totally buy a kit and I hope that you're able to make a bit of money off it! Well done!

author: Specmaster
author_rank: Super Contributor
timestamp: April 23, 2018, 06:31:19 pm
content: Agreed, you have done an awesome job with the and deserve to make at least some money from it. I'm not sure if you are aware of this or not but the links you provided do not work?

author: TERRA Operative
author_rank: Super Contributor
timestamp: June 29, 2018, 06:41:48 pm
content: If you decide to sell PCB's etc, you have a guaranteed sale here!

author: bitseeker
author_rank: Super Contributor
timestamp: June 30, 2018, 02:33:21 am
content: You know a forum is big when you've missed an awesome hack like this for so long.Great job, Xavier! I must say I like the yellow display more than the red, even if there wasn't light bleed. For some reason the yellow LEDs go better with the look of the 3457A.

author: precaud
author_rank: Frequent Contributor
timestamp: June 30, 2018, 01:11:18 pm
content: Quote from: bitseeker on June 30, 2018, 02:33:21 amSame here. Our eyes are more sensitive in the green part of the spectrum. So even with equivalent luminance, the yellow would appear to us to have better contrast.

author: intabits
author_rank: Frequent Contributor
timestamp: July 05, 2018, 04:15:35 am
content: Xi, that is fantastic work you have done there!Thanks very much for your efforts in decoding the protocol and making your findings available.I've only skimmed what you've provided, but it looks scary complicated at first glance.I have three HP3468A's, and I can't stand the LCD displays on them.They seem to use the same part for the display as yours, with the same signals, so your project is of great interest to me.I can't find the part (5061-1166) in the HP3457A manual, as it seems to be part of a larger assembly.The processor in the 3468A is different (1820-2718), an 8039 (from the Intel MCS-48 family), but it's also used in other HP test gear.I have been thinking about something similar for the last year, and just found this thread, which tells me that it's doable.But the approach I've been thinking of has differences:-* Use OLED display(s)* Hack the firmware, replacing the display protocol entirely.(among other possibilities that this would enable, the cal values could be saved in EEPROM, rather than depending on the battery backed RAM)To this end, I wrote a "smart, interactive" disassembler for the 8039, so that I could see how it talked to the display.The disassembler still needs more work, so almost no progress on unraveling the ROM code so far.(Member "sailor" was also working on this, and I was hoping to collaborate, but he hasn't been here in over a year)In any case, your protocol "specification" will be invaluable in deciphering the contents of my ROM, thanks again.

author: mcinque
author_rank: Unknown
timestamp: July 05, 2018, 04:22:34 pm
content: That's talent.

author: fenugrec
author_rank: Frequent Contributor
timestamp: November 11, 2018, 05:49:48 pm
content: Awesome work, xi. I've worked on the 3478A firmare and can confirm almost exactly the same LCD protocol, with one minor interpretation difference.In the code, they send instruction words as 8-bit bytes, so for instance "0x0A" for "write reg A". The 2 bits difference is easily explained : in your analysis you shift in the 2 bits (always 0) sent while "CS" is high.In the end it makes no difference though, the actual data exchanged seems identical.Also, I've emulated the 3478A to a limited extent in MAME , for testing firmware hacks. Current status is rough WIP, no keypad, AD LINK FAIL (of course), no CAL RAM, no GPIB.

author: bitseeker
author_rank: Super Contributor
timestamp: November 12, 2018, 02:33:44 am
content: A MAME DMM? That's cool.

author: McBryce
author_rank: Super Contributor
timestamp: November 26, 2018, 11:30:39 am
content: Seriously cool mod.I turned on my 3478A last night and noticed the black crystals have started to leak from the bottom leftSo add me to the list if you start selling kits.I'd actually prefer to stay with the original LCd, but I doubt I'll be able to find a drop-in replacement.McBryce.

author: rastro
author_rank: Frequent Contributor
timestamp: November 26, 2018, 03:48:03 pm
content: Quote from: McBryce on November 26, 2018, 11:30:39 amYou may want to look at taking the LCD from an hp 3488a - it think they are interchangeable (but you should verify). You can usually find these pretty cheap on eBay. However shipping it is sometimes more than the unit costs. However you might see if the seller will just ship the front panel or display PCB since that would lower shipping cost. There is not much in HP 3488A unit so you wouldn't be losing much junking the rest of the unit if you are just interested in the LCD.I just saw two on ebay (unfortunately for Europe buyer it is in the US) for $15.00 but shipping in US about $20.00.rastro

author: TERRA Operative
author_rank: Super Contributor
timestamp: November 27, 2018, 03:36:53 am
content: I wonder how hard it would be to get a Chinese manufacturer to make some replica LCD panels, along the lines of what Dave did for his uCurrent.I wonder what the general minimum quantity is on this sort of thing?Not as cool as the LED's, but maybe more easily accessible pending final cost.....

author: bitseeker
author_rank: Super Contributor
timestamp: November 27, 2018, 03:48:05 am
content: It seems getting them made isn't a problem. It just depends on the amount (cost and quantity) required.

author: TERRA Operative
author_rank: Super Contributor
timestamp: November 27, 2018, 04:07:29 am
content: Yeah, 100-odd is doable, but 1000 or more is stretching it whether you'd even sell them all...

author: floobydust
author_rank: Super Contributor
timestamp: November 27, 2018, 04:56:37 am
content: I think the deal breaker, as far as mass-producing this really neat retrofit, is milling the LED displays to get the width down by 1mm and leave room for discrete colons and comma.Throwing numbers out there...OP usedKingbright PSA39-21 0.39"displays about $1.15 each1000-lotX 12 digits = $14For a custom LED display, I imagine it's the NRE to get a custom injection mold made and the custom LED die mounts.Say it's $10,000 and good for a 4 digit module, need 3 per multimeter and you sell enough for 333 retrofits, total 1,000 pcs. of a custom 4-digit module.That would make the NRE $10 per (4-digit) display module, and then add the LED module's cost to that, say $11 ea. so $21 per module ($63 per DMM) and $21,000 outlay then.Someone would have to hit up some LED manufacturers and see if my guess is far off.Kingbright SMT LED displayACPSA04 is 9.3mm wide vs the original through-hole 9.9mm-1mm milling... I wonder if that would work? It's not as thick too.

author: texaspyro
author_rank: Super Contributor
timestamp: November 27, 2018, 05:47:37 am
content: Use standard SMT LEDs on a PCB to make the segments. 3D print a housing for 7-seg digits. Maybe fill segments with clear resin.

author: fenugrec
author_rank: Frequent Contributor
timestamp: November 27, 2018, 05:54:04 am
content: Quote from: floobydust on November 27, 2018, 04:56:37 amIndeed, but I think @TERRA meant manufacturing *LCD* panels, like Dave's multimeter with a custom vector drawing of the segments, etc.

author: bitseeker
author_rank: Super Contributor
timestamp: November 27, 2018, 06:14:35 am
content: Correct, fenugrec. Nevertheless, both possibilities are certainly interesting for the various HP equipment from this era.

author: McBryce
author_rank: Super Contributor
timestamp: November 27, 2018, 08:02:29 am
content: Quote from: rastro on November 26, 2018, 03:48:03 pmCan anyone here confirm that the 3488 LCD is compatible with the 3478?McBryce.Edit: Forget the question, they are not the same. The 3478 has text along the bottom row (SRQ, LSTN, TLK etc), the 3488 has just arrows.

author: TERRA Operative
author_rank: Super Contributor
timestamp: November 27, 2018, 08:26:19 am
content: Yeah, maybe discreet SMD LED's with a 3D printed frame for the segments sounds like a doable idea.I wonder if a stack of a few PCB's could have the cutout shapes routed out and used the same way?

author: rastro
author_rank: Frequent Contributor
timestamp: November 27, 2018, 06:11:54 pm
content: Quote from: McBryce on November 27, 2018, 08:02:29 amYou are correct. I was thinking it is a possible replacement for the HP 3457 which does use arrows like the 3488.It slipped by me you were taking about an HP 3478; a different meter from the one of the OP referenced. Sorry for the confusion.rastro

author: enochRoot
author_rank: Newbie
timestamp: August 19, 2019, 12:43:57 pm
content: Hello Xi,Not sure if you saw but I sent you a PM. Interested in any progress on the kit for this. Would love to inject some visibility into my 3457!

author: coldframe
author_rank: Regular Contributor
timestamp: September 01, 2019, 03:10:44 pm
content: Shut Up And Take My Money!

author: k007007
author_rank: Newbie
timestamp: January 29, 2020, 10:05:31 pm
content: Hello!Really nice job by Xi on both decoding the protocol and building the replacement display!However, as long as no kit for a LED display appears to be available, this solution might be too consuming for some of us.A compromise way might be a graphical LCD or OLED.There is another hurdle though at this way: apparently both 3457A and 3478A send O and S instead of 0 and 5 to LCD. This will make alphanumeric messages look ugly on any display, which presents S and 5 differently; probably there is no chance to "guess" between 5 and S (respectively 0 and O) in the display's controller.Fenugrec's (https://www.eevblog.com/forum/testgear/hp-3478a-rom-modification-relative-mode/msg2048623/#msg2048623) excellent disasm of 3478A makes chances better at least for 3478A:hierhttps://github.com/fenugrec/hp3478a_utils/blob/master/ROM_disasm/dc118.d48#L3965might be the routine substituting those two bytes.Though it is not quite clear, why or how 5 is passed to that routine as number 0x05 rather than as symbol 0x35.Any thoughts or deeper insights greatly appreciated.

author: fenugrec
author_rank: Frequent Contributor
timestamp: January 29, 2020, 10:59:42 pm
content: Quote from: k007007 on January 29, 2020, 10:05:31 pmYou must also look at the code for "render_reading" around 18AD, which takes the packed-BCD reading and prepares the "string" to be sent to the LCD.Now keep in mind I haven't looked at 8039 asm and this project in a while -but see how it calls "append_hsdigit" or _lsdigit to go through both upper and lower nibbles of each byte containing packed-BCD.And later in the implementation of those :Code:append_digit:anla,#0xf; 1d25 - 53 0fS.orla,#0x30; 1d27 - 43 30C0append_tail:jcX1d2e; 1d29 - f6 2ev.mov@r1,a; 1d2b - a1!incr1; 1d2c - 19.ret; 1d2d - 83.;X1d2e:movr7,a; 1d2e - af/xrla,#0x30; 1d2f - d3 30S0jzX1d3e; 1d31 - c6 3eF>xrla,#0x5; 1d33 - d3 05S.jnzX1d39; 1d35 - 96 39.9movr7,#0x13; 1d37 - bf 13?.X1d39:selmb0; 1d39 - e5ecallX17ca; 1d3a - f4 catJselmb1; 1d3c - f5uret; 1d3d - 83.;X1d3e:movr7,#0xf; 1d3e - bf 0f?.jmpX1d39see how "orl a,#0x30" would appear to transform digits to "ASCII" numbers (0x30-0x39), but immediately after, you have two XOR operations with 0x30 and 0x05 which seem to do exactly as you describe: check if =='0' or '5' and replace with O/S. (keep in mind the LCD character map has 0x01-0x1A mapped as uppercase letters. (?? see detailed charmap that someone posted earlier)I still think it would be a better project to emulate some of the code from a modern mcu and replace the display + cal code with something easier to work with. Luckily my display still works so I don't need to worry about that !

author: k007007
author_rank: Newbie
timestamp: January 30, 2020, 01:17:07 am
content: Ok, thank you!now it's clear.

author: graybeard
author_rank: Frequent Contributor
timestamp: February 02, 2020, 09:36:29 pm
content: excellent work!

author: dietert1
author_rank: Super Contributor
timestamp: June 16, 2021, 06:54:34 pm
content: Today i found this quick fix using pieces of 24 V LED strip. These meters will be in a stationary setup for a long time and i needed illumination for debugging GPIB control.Regards, Dieter

author: Xyphro
author_rank: Regular Contributor
timestamp: February 03, 2022, 02:33:26 pm
content: In case you look for an Oled variant of this, check this out:https://www.eevblog.com/forum/testgear/hp3548-hp3457-oled-display/Credits to XI for sharing his protocol reverseengineering details!

author: dxl
author_rank: Regular Contributor
timestamp: May 12, 2022, 06:43:49 pm
content: Very nice work reverse engineering the protocol. Many thanks for that. I started wiring up the 3457A based on the 3478a code in mame. It is showing signs of life, but i haven't implemented the keyboard yet which is a bit larger. And i'm not sure whether i can do anything with the Keyboard when it is in that 'FAILED' state.

author: dxl
author_rank: Regular Contributor
timestamp: May 12, 2022, 08:57:55 pm
content: Does anyone have the schematics of the Keyboard matrix? I haven't found that in the Service Manual which has all the other schematics.

author: fenugrec
author_rank: Frequent Contributor
timestamp: May 12, 2022, 11:08:31 pm
content: Quote from: dxl on May 12, 2022, 06:43:49 pmAwesome ! I was wondering if anyone would ever reuse that code. I never split out the LCD emulation as a separate class, but it's probably worth doing now.Can't help with your keypad schematics sorry - I would probably just give up, disconnect the keypad and continuity test the key matrix ...

author: dxl
author_rank: Regular Contributor
timestamp: May 13, 2022, 06:00:50 am
content: Quote from: fenugrec on May 12, 2022, 11:08:31 pmUnfortunately i don't have a 3457a (yet). I had two several years ago, but sold them because... because of the crappy Display.

author: dxl
author_rank: Regular Contributor
timestamp: May 13, 2022, 12:02:55 pm
content: This looks like a nice display for the 3457A:https://www.ebay.de/itm/201694165598?epid=1648365133&hash=item2ef5e8ba5e:g:ogsAAOSwRp5iYURz

author: oz2cpu
author_rank: Frequent Contributor
timestamp: May 13, 2022, 02:49:05 pm
content: i am a bit impressed :-)specially about the home etched and home milled and all that home DIYI must admit, i would have ordered pcb's from jlc or similar places.great to save them old top class DMM

author: wizard69
author_rank: Super Contributor
timestamp: May 14, 2022, 03:20:42 am
content: Thanks for this thread! I really like this sort of post, as even an old man like myself can learn a bit. Beyond all of that there is enough info here so that people can easily come up with their own solutions. Impressive work!

author: xi
author_rank: Contributor
timestamp: November 15, 2022, 01:23:54 am
content: First of all, thanks everyone for all your nice comments and everything else about my modAfter a loooooong pause for my home improvement, I ended up making electronic againI have worked on my LED display for the HP3457A kit, and for everyone who previously asked: I have nowonecomplete display to sellDon't be too excited though, it won't be cheap, because it costs a lot to build (expensive BOM & time consuming machining / soldering). Just for the Bill Of Material, cost is now more than Eur 110 (approx the same in $).The BOM's cost was much lower before the crisis, but some people are taking advantage of this situation to increase their component's price unreasonably. (For example: the kingbright red high luminosity display PSA39-21 cost including VAT was 1€548 in 2019 and now it is 4€607. So for 12 digits, the BOM cost - just for the 14 segments LED displays - increased from 18€60 to more than 55€ ...)Anyway, I have one kit fully assembled available now, and given the BOM cost, the milling time (PCBs + LED displays + acrylic sheet) and the hand soldering, I will sell this first kit for Eur 175 (preferably inside Europe, to avoid any complicated customs declaration); contact me if you are interested.After that, I will have 4 more PCBs sets left ; depending on the interest for this first display, I could:- either provide a fully assembled display like the first one,- or provide a complete kit to be soldered & assembled,- or even just provide the PCBs + the digits + the plastic sheet machined (and possibly a programmed ATMEGA 162),- or just do nothing if there is no interest in it(For the kits to be soldered, be careful, the punctuation board requires high soldering skills (a binocular microscope is almost mandatory because of the "coma" LEDs which must be mounted vertically with the legs bent at 180° angle)).What do you think?Some more pictures of this "kit" below:

author: TERRA Operative
author_rank: Super Contributor
timestamp: November 16, 2022, 12:13:31 pm
content: Nice work, I still want one or two, but this chip shortage is killing the pricing of parts...Are you willing to release source code and schematics etc so we can build our own versions?I have an idea to construct the display from SMD LED's and milled PCB instead of the 14 segment LED modules. I can do mechanical design no worries, but software is way beyond me.

author: xi
author_rank: Contributor
timestamp: November 16, 2022, 11:42:17 pm
content: Quote from: TERRA Operative on November 16, 2022, 12:13:31 pmSee my previous posts: I have already released the source code (GPL), the HP LCD protocol, the schematics, ... the only thing I didn't released is the PCBs because I wanted to try to sell them before; but I think I will release them too in a near future.

author: TERRA Operative
author_rank: Super Contributor
timestamp: November 17, 2022, 06:47:25 am
content: Ah, I should have checked!Thanks!

author: dietert1
author_rank: Super Contributor
timestamp: November 17, 2022, 10:17:34 am
content: Can you offer a kit, like boards, LEDs and programmed MCU, maybe special connectors? For me it would be fun to build this and hopefully i can make it work. We have three 3457A, including one spare unit that i could use for a test.Regards, Dieter

author: The Bootloader
author_rank: Contributor
timestamp: January 04, 2023, 11:13:55 am
content: Hi,There is one reason why so many Kickstarter projects fail. Lack of DFM (Design For Manufacturing).As we are seeing here, designing a prototype is one thing - but having a design that can be produced "en masse" in a cost-effective way is another thing.Very often, companies do a complete redesign.The situation with the Kingbright displays at 4 euros each is ridiculous and is a great example of this issue.Take a look at these:https://www.aliexpress.us/item/3256803078161467.htmlAround $8 for 30 modules of 4 digits, that's $0.24 per module, you need 3 per display, that's less than one dollar. They are also much simpler to assemble as they are already multiplexed.My suggestion: just redo your two top PCBs to use these modules. It should reduce your BOM cost substantially, potentially dropping your list price from 170 euros to 115 euros. If you can find other savings to drop it below 100 euros, it should be much easier to sell (remember the relative value of the display cannot be too high relative to the value of the instrument)I suspect there are many ways to reduce the cost. I can't see how this can cost more than 50 euros if produced with DFM in mind, leveraging proper assembly facilities.You could leverage the SMT assembly service of JLCPCB (or others) to pre-assemble all the passives. Using an ATmega microcontroller might not be a good idea either - go with something chinese and commonly available for cheap, maybe an ESP32? An ESP32-S2 is available from LCSC forless than $1.3, and they can solder it for you too! You can base your design onthis dev board, and you would get free wifi capabilities (could be neat for data logging).Try finding all your components on LCSC. I'm sure you can be sub-50 euros when produced in sufficient volume (100 units). I am sure you can sell 100 units based on the responses in this forum. 175 euros is prototype-level price.Hope this helps and hope it gives you good pointers

author: DavidKo
author_rank: Frequent Contributor
timestamp: January 04, 2023, 01:07:32 pm
content: You need to pick up 14 segment display for 3457A likehttps://www.aliexpress.com/item/32584509522.html

author: The Bootloader
author_rank: Contributor
timestamp: January 05, 2023, 09:04:36 am
content: Haha, you're right! I was tired it seems.I remember this old video from Dave about getting custom LCDs manufactured. I wonder if it would not be a good avenue to explore :It would be possible to have them assemble everything, with the right dimensions, and make a drop-in replacement.But this time around, with backlight...Could probably also find OLED display manufacturers, or simply custom LED modules. There are a lot of suppliers forcustom LED moduleson Alibaba, and the MOQ and prices seems really affordable (<$1 each, MOQ 100-1000).Dave was able to get 5 custom LCD displays delivered for $100, so it seems to me that it is definitely something to explore

author: dietert1
author_rank: Super Contributor
timestamp: January 05, 2023, 10:04:09 am
content: The 3457A native display is LCD and it is quite easy to supplement background illumination, except there doesn't seem to be a kit.I once modded a 3478A, that has the same or a very similar display unit. Bought some transparent acryl boards with different surfaces like one side glossy, one side dim, laser cut to the proper size. Then i added six green LEDs, three on each end. Result after first try was useful and remained. For a revision i would increase the length of the acrylic sheet some mm in order to somewhat reduce direct light from the LEDs.In 2013 there was this thread:https://www.eevblog.com/forum/projects/hp-3457a-lcd-backlight-mod-(also-for-3478a)/msg227880/#msg227880Regards, Dieter

author: rsbonini
author_rank: Newbie
timestamp: May 30, 2023, 04:49:35 am
content: Superb work on this.Any word on either kits availability or complete manufacturing documentation so we can roll our own?

author: IanJ
author_rank: Unknown
timestamp: January 03, 2025, 09:55:47 am
content: Well, it’s beaten me.I’ve tried to get this working on STM32 but just can’t get good data captured.I may have a conflict with an irq/timer/channel as I do have 1 wierd thing that occurs. If I comment out my LCD SPI init (MX_SPI1_Init();) my main loop stops……and I don’t know how to resolve that.Code:// InterruptPriorityDescription// EXTI15_10_IRQn1SYNC interrupt(critical timing)// TIM3_IRQn23457A O2 signal processing// DMA1_Channel3_IRQn3SPI DMA for LCD// TIM2_IRQn3Periodic timer for general tasksAnyway, I setup up two buffers for capturing ISA and INA data after getting SYNC to toggle, clocked the data in but it just doesn’t look like valid data despite changing continually. Then of course attempting to convert via the HP charset just renders junk.If anyone wants to have a look the code is in my GIT -https://github.com/Ian-Johnston/3457A_VS_DisplayIt’s packaged for VS2022/VisualGDB but the source files are there to see etc.Any hints, tips......STM32 help!......greatly appreciated.Cheers.Ian

author: TERRA Operative
author_rank: Super Contributor
timestamp: January 03, 2025, 03:54:40 pm
content: The code here might help:https://github.com/xyphro/HP3457-OLED-displayWe are making OLED displays here:https://www.eevblog.com/forum/testgear/hp3548-hp3457-oled-display/

author: IanJ
author_rank: Unknown
timestamp: January 03, 2025, 04:32:56 pm
content: Quote from: TERRA Operative on January 03, 2025, 03:54:40 pmI'd been over this code also, and subject to getting right into it I could probably move forward.......but it's my lack of STM32 knowledge that isn't helping.Thanks,Ian.

author: beenai2018
author_rank: Contributor
timestamp: January 03, 2025, 06:16:53 pm
content: This is very cool stuff. Great work !!There looks like lot of hard parts to this puzzle (and the mechanicals are always the big-pain ,even when the electronics seem to work well).Congrats on making this replicable and sharing it.If possible to share the investigative work in a video for decoding the protocol ,it may help to teach a valuable skill to others working on similar problems.The writeup and screens are great. (Even if not in english ,youtube can automatically translate the captions for from french to english)

author: g0rsq
author_rank: Contributor
timestamp: January 05, 2025, 11:01:44 pm
content: Quote from: IanJIan I have been re-writing the code to use on a PIC18F26K83 micro, mainly because I have other applications for this novel display idea (different instruments) so needed to understand how it worked (I am not an arduino person, and a novice with PIC18 and XC8!)The arduino coding is very clever, far to clever for me, so I have simplified it for my application and knowledge level.One of the big issues I had to overcome was speed, as the HP sends a lot of spurious data, and odd sequences, that totally screw up the available time to read the data. You really need to validate if the date is good before trying to decode it.I needed to carefully put in place "filters" to prevent attempts at decoding if non valid data was received in real time..I opted to do everything with I2C and SPI modules on the PIC which took time to learn and get working, but do a good job. This is as much a learning project as repairing one of my HP Meters!I am at the position to make the PCB's and deciding to go for a "integrated" approach like the arduino project, or to build a display board and separate processor board.Not sure if this helps, but for every problem there is a solution...

author: Hugo_Hurtig
author_rank: Contributor
timestamp: September 13, 2025, 07:33:36 am
content: Hi,Inspired by OLED designs, I have been looking into colour OLEDs of various sizes.I settled onhttps://www.aliexpress.com/item/1005008969260148.htmlas the best option for me at the moment.The gaps between the writable areas of the displays are difficult (for me). In the above model, these are quite small (4 mm between 2 displays).I also use this distance as the distance between the individual characters – then it is not noticeable.To do this, I had to adapt a font (the original C41 font proved to be impractical).The current result as a prototype – only for the spacing – is attached.It looks good to me – I will continue with this.The colour gradient comes from my speed test – switching between red and white.I placed the ‘cover plate’ over it to determine the size. The protective films are still on the modules...

author: intabits
author_rank: Frequent Contributor
timestamp: September 14, 2025, 04:32:37 am
content: Quote from: beenai2018 on January 03, 2025, 06:16:53 pmNot a description of the work done to get it, but documentation of the result. Some may find it useful.It's the assembler code I used in the prototype shown in this thread:-https://www.eevblog.com/forum/projects/replacement-front-panel-for-hp3468a-multimeter/msg4663885/#msg4663885(I've abandoned that idea, but will still use the code in a different implementation of the project)

author: TERRA Operative
author_rank: Super Contributor
timestamp: September 14, 2025, 07:26:23 am
content: Quote from: intabits on September 14, 2025, 04:32:37 amOk, that is really cool. Turning a 3468A front panel into something like a 34461A looking thing. Did you make any more progress from your thread?

author: intabits
author_rank: Frequent Contributor
timestamp: September 15, 2025, 07:32:18 am
content: Quote from: TERRA Operative on September 14, 2025, 07:26:23 amThanks.Not much progress so far. Mainly because I've decided to do this instead:-https://www.eevblog.com/forum/projects/hp3468a-multi-multimeter-project/msg6020347/#msg6020347Just got to pull the finger out and get working on it...(Also need to get a fourth 3468A for cheap)

author: squadchannel
author_rank: Frequent Contributor
timestamp: September 15, 2025, 08:55:43 am
content: Quote from: intabits on September 14, 2025, 04:32:37 amthere are various implementation methods, but since the bus speed isn't faster than today's mcu's, using interrupts and reading io should be fine.in my case, I used the Attiny416 SPI IP. It's just a shift register.Once the command byte is parsed, the number of data bytes to acquire is known. Use SPI to fetch the data bytes; when the SPI interrupt occurs, move them to the buffer to prepare for the next acquisition. After reading the required number of bytes, parse them and place them into the character buffer.ISA and IWA are not sent at same time (only 3478A?), connect them to PA1 (MOSI) via an OR diode. SYNC to PA2 (MISO), #2 to PA3 (SCK), and PWO to PA4(SS). 9600bps 8N1, display output to terminal.Code:/*/** hp_lcd_usart.c** Created: 2025/02/22 8:51:16* Author : squad*/#define F_CPU5000000UL#define USART_BAUDRATE9600#define USART_BAUD_CALC(float)(64 * F_CPU / (16 * (float)USART_BAUDRATE)) + 0.5#include <avr/io.h>#include <avr/interrupt.h>struct _lcd_segment{uint8_t character_A : 4;uint8_t character_B : 2;uint8_t character_C : 1;uint8_t punctuation : 3;uint8_t annunciator : 1;};struct lcd_data{uint8_t enable : 1;uint8_t onoff : 1;struct _lcd_segment segment;};const uint8_t hp_font_ascii_tables = {'@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_',' ','!','"','#','$','%','&','\'','(',')','*','+','{','-','}','/','0','1','2','3','4','5','6','7','8','9','8',',','<','=','>','?',' ','a','b','c','d','e','\x7e',' ',' ',' ',' ',' ','u',' ','E',' '};void usart_write(uint8_t character);uint8_t flip_bit(uint8_t bits);uint8_t decode_12bit(uint8_t *data, uint8_t data_pos);uint8_t hp_lcd_register_to_char(struct lcd_data *lcd_data, uint8_t digit);struct lcd_data lcd_data;int main(void){CCP = 0xD8;CLKCTRL_MCLKCTRLB = 0b00000011;PORTC_PIN3CTRL = 0b10000000;//PWO INVENVPORTA_DIR = 0b00000010;//SRCLKPORTMUX_CTRLB = 0b00000101;//USARTUSART0_BAUD = USART_BAUD_CALC;USART0_CTRLA = 0b10000000;//RXCIEUSART0_CTRLC = 0b00000011;//CHSIZE = 8USART0_CTRLB = 0b01000000;//TXEN//SPISPI0_CTRLB = 0b10000000;//BUFENSPI0_INTCTRL = 0b10000000;//RXCIESPI0_CTRLA = 0b00000001;//ENCPUINT_LVL1VEC = 21;sei();while(1){if(lcd_data.enable && lcd_data.onoff){//characterfor(uint8_t i = 0; i < 12; i++){//characterusart_write(hp_font_ascii_tables[hp_lcd_register_to_char(&lcd_data, i)]);//punctuationswitch(lcd_data.segment.punctuation){case 0b00:{usart_write(' ');break;}case 0b01:{usart_write('.');break;}case 0b10:{usart_write(':');break;}case 0b11:{usart_write(',');break;}}}usart_write('\r');usart_write('\n');//annunciatorfor(uint8_t i = 0; i < 12; i++){if(lcd_data.segment.annunciator == 1){usart_write('*');usart_write(' ');}else{usart_write(' ');usart_write(' ');}}usart_write('\x1B');usart_write('[');usart_write('H');}}}ISR(SPI0_INT_vect){uint8_t read_buf;static uint8_t need_data_count;static uint8_t curr_read_data_count;static uint16_t command;static uint8_t data;if(SPI0_INTFLAGS & (0b1 << 7)){//RXCIFread_buf = SPI0_DATA;if((VPORTC_IN & (0b1 << 1)) && (GPIOR0 & (0b1 << 0))){command = flip_bit(read_buf) << 2;switch(command){default://unknown commandscase 0x2E0://DISOFFcase 0x320: need_data_count = 0; break;//DISTOGcase 0x2F0://WRITANcase 0x3F0: need_data_count = 2; break;//PERSLCTcase 0x028://WRA12Lcase 0x068://WRB12Lcase 0x0A8: need_data_count = 7; break;//WRC12L}curr_read_data_count = 0;}else if(GPIOR0 & (0b1 << 0)){if(curr_read_data_count >= need_data_count){GPIOR0 = 0;if(lcd_data.enable){switch(command){case 0x028:{//WRA12Luint8_t i = 0;do{uint8_t buf = decode_12bit(data, i);//characterslcd_data.segment[11 - (i + i + 1)].character_A = (buf >> 4);//digit 2,4,6,8,10,12lcd_data.segment[11 - (i + i)].character_A = (buf >> 0);//digit 1,3,5,7,9,11i++;}while(i < 6);break;}case 0x068:{//WRB12Luint8_t i = 0;do{uint8_t buf = decode_12bit(data, i);//characterslcd_data.segment[11 - (i + i + 1)].character_B = (buf >> 4);//digit 2,4,6,8,10,12lcd_data.segment[11 - (i + i)].character_B = (buf >> 0);//digit 1,3,5,7,9,11//punctuationlcd_data.segment[11 - (i + i + 1)].punctuation = (buf >> 6) & 0b11;//digit 2,4,6,8,10,12lcd_data.segment[11 - (i + i)].punctuation = (buf >> 2) & 0b11;//digit 1,3,5,7,9,11i++;}while(i < 6);break;}case 0x0A8:{//WRC12Luint8_t i = 0;do{uint8_t buf = decode_12bit(data, i);//characterslcd_data.segment[11 - (i + i + 1)].character_C = (buf >> 4);//digit 2,4,6,8,10,12lcd_data.segment[11 - (i + i)].character_C = (buf >> 0) ;//digit 1,3,5,7,9,11i++;}while(i < 6);break;}case 0x2F0:{//WRITANuint8_t i = 12;do{i--;lcd_data.segment.annunciator = (((data << 6) + (data >> 2)) >> i) & 0b1;}while(i > 0);break;}case 0x2E0:{//DISOFFlcd_data.onoff = 0;break;}case 0x320:{//DISTOGlcd_data.onoff = ~lcd_data.onoff;break;}case 0x3F0:{//PERSLCTgoto PERSLCT;}default:;//unknown commands}}else if(command == 0x3F0){PERSLCT:lcd_data.enable = 0;if(decode_12bit(data, 0) == 0xFD) lcd_data.enable = 1;}}else{data = read_buf;curr_read_data_count++;}}else if(VPORTC_IN & (0b1 << 1)){GPIOR0 = 1;//command received flags}}}void usart_write(uint8_t character){USART0_TXDATAL = character;while(!(USART0_STATUS & (0b1 << 5)));}uint8_t flip_bit(uint8_t bits){uint8_t buf = 0;if (bits & 0b00000001) buf |= 0b10000000;if (bits & 0b00000010) buf |= 0b01000000;if (bits & 0b00000100) buf |= 0b00100000;if (bits & 0b00001000) buf |= 0b00010000;if (bits & 0b00010000) buf |= 0b00001000;if (bits & 0b00100000) buf |= 0b00000100;if (bits & 0b01000000) buf |= 0b00000010;if (bits & 0b10000000) buf |= 0b00000001;return buf;}uint8_t decode_12bit(uint8_t *data, uint8_t data_pos){return flip_bit((data << 2) + (data[data_pos + 1] >> 6));}uint8_t hp_lcd_register_to_char(struct lcd_data *lcd_data, uint8_t digit){return (lcd_data->segment.character_C << 6) + (lcd_data->segment.character_B << 4) + (lcd_data->segment.character_A << 0);}I tried making my own display, but the 3D printed segments are not good. light through the thin walls.don't worry about the missing segment.

author: intabits
author_rank: Frequent Contributor
timestamp: September 17, 2025, 05:46:53 am
content: I went for the bit-banging method because of that 10 bit command byte, which initial developer Xi handled with some logic, which I wanted to avoid if possible. But sounds like you've avoided it anyway.Anyway, once the command byte was read, everything was there to continue with the rest of the message, so I did.I also wanted to avoid the SPI interface as I hadn't used it before, so it may have been hard to debug the use of an unfamiliar interface while also trying to unravel a protocol that (at that time) wasn't clear to me.Unlike what you and Xi have done, I was replacing the entire front panel. So I also had to do keypad scanning, large font character display to the LCD, and touch screen monitoring. And the SPI interface may have been needed for some of that (but it wasn't).Edit: Forgot to mention: I like your idea to diode-OR the data lines. I'll do that, it will make the code a bit cleaner.

author: squadchannel
author_rank: Frequent Contributor
timestamp: September 17, 2025, 09:38:36 am
content: I tried dyeing the plastic with black pigment to see if I could make it darker, and it worked.Visibility improved significantly.I'm feeling motivated to keep going with this project.already has continuous mode, but I'm itching to add more features. I'll switch to a micros with more pins and try reading the keypad. first, zero offset function.PS:slight light through due to stretching caused by 3D printing tolerances. the LED and segment frames are also misaligned.I'll ask JLC about ways to reduce errors. orientation are adjusted on the JLC side.also it seems can specify it.