Chainable/Cascaded Seven Segment Display Module Design - Page 1
Forum section: electronics / projects

author: rupinc
author_rank: Newbie
timestamp: August 12, 2025, 03:35:34 am
content: Hello!I am seeking constructive feedback from the community members on a project!MotivationIt allows beginners to design a complex display. Its targetted towards learners, who are well past the phase of designing on a breadboard and now want to work on a challenging meaningful project.What is it?The idea is to use a cascade system where each module can be configured into either an up or down counter with configurable reset using dip switches. Say for example, I want the counter to counter from 0 to 5, and then reset.Essentially a clock will be an input to this module, and every pulse gets counted. a carry is generated which becomes the clock to the next module.Also, if the user wants they can , make this a 4 bit decoder, which can then be connected to half adders.Core Features & FunctionalityCascadable Counter ArchitectureEach module acts as a digit (or 4-bit block) and can cascade via carry-out (for counting up) or borrow-out (for counting down); these signals become the clock inputs for the next module.Carry/borrow output is asserted when the counter reaches its reset or terminal value, enabling seamless chaining for multi-digit/count applications (e.g., 00–99, 000–9999, etc.).DIP switches or jumpers configure the count range (e.g., set upper limit to 5 for a 0–5 counter), and optionally set the operating mode (count up/down, modulo value).Configurable Up/Down CountingSupport both up and down counting modes selectable via DIP switch or control input.Reset/Preset capability: DIP switches or buttons allow setting the reset point or initial value, supporting non-decimal moduli (e.g., counter resets after reaching 5, not just 9 or 15).External Clock Input: Count pulses sourced via a dedicated clock line.Display & Decoding LogicSeven-segment display, driven according to a 4-bit counter value.Optional mode where the module functions as a simple 4-bit decoder for input from external logic (such as feeding with outputs from a half adder chain or microcontroller).DIP or mode jumper selects between autonomous counter or decoder operation.Hardware & User InterfaceDIP Switch SettingsSet counting range (e.g., max count value).Select up/down mode.Enable/disable carry/borrow output.Switch between counter/decoder modes.Optional: set initial/preset value.Connector PinsIN: Clock input.OUT: Carry/borrow output.MODE: Up/Down, Counter/Decoder.DATA: Parallel input pins for decoder mode.POWER: Vcc and GND.Optionally, bus lines for chaining (power/ground pass-through).Smart or Advanced FeaturesProgrammable Logic (via CH32V003)Allow firmware updates for custom counting logic (odd moduli, gray code, user patterns).Optionally support I2C/SPI inputs for configuration or chaining.Display IndicatorsSegment-test button: Show all segments lit for test/demo.Power/status LED.Optional decimal point/extra indicator.Use Case ExampleSuppose you want a two-digit counter that counts from 00 to 55 and then rolls over. Each module would have its max count DIP set to 5. The carry output of the lower module clocks the next upper module when it rolls from 5 back to 0. For a single-step, you send clock pulses; for a two-digit setup, chain the carry as "next clock".If using the module as a decoder, set mode via DIP, and use the 4 data inputs (for example from a half adder chain or microcontroller GPIO) to select the segment. The display responds to binary input instead of internal counter.Integration With Adders/External LogicIn decoder mode, binary data lines accept input from logic circuits (e.g., half-adders), displaying their output directly on the seven-segment as specified by the 4-bit value.This ensures flexibility for integration with arithmetic experiments, learning kits, or as generic display/indicator modules.What do you think about this project? Please add it in the comments!

author: brucehoult
author_rank: Super Contributor
timestamp: August 12, 2025, 03:48:36 am
content: Sounds expensive, if implemented using 7400-series chips for each 7-segment display.Or are you thinking of using ONLY a CH32V003 for each digit? That could work. A 20 pin CH32V003 (18 GPIOs) could read the DIP switches, drive the segments, and do the in/out module IO.

author: rupinc
author_rank: Newbie
timestamp: August 12, 2025, 04:19:20 am
content: The ch32v003 drives every thing, there is no other IC needed.I am wondering if this sounds like an academic project or seems useful in more than one context.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: August 12, 2025, 05:11:40 am
content: Quote from: rupinc on August 12, 2025, 04:19:20 amIt does sound like an academic project.You have not mentioned what size 7 Segment, or how exactly these physically combine and chain.Aliexpress have many 7 segment display modules, all on one board, of 4-6-8 digits, for low prices that take care of the packaging and mounting of multiple digits.For a little more, you can get 10 digit 16 segment LCD modules at Aliexpress, for readable low power segment display.A MCU used for this will have some caveats :SPI MCU slaves usually lack a daisy-chain mode, so cannot operate like a 74HC595LED drivers can have analog pin drive and dimming, which MCUs lackDoes anyone know of a MCU with a daisy-chainable HC595 type mode in SPI ?There are MCUs with eg 80mA pin drive for LED drive, and even have multi-digit scan memory inbuilt, but those use PWM dimming, not analog pin control.

author: brucehoult
author_rank: Super Contributor
timestamp: August 12, 2025, 05:23:49 am
content: Quote from: PCB.Wiz on August 12, 2025, 05:11:40 amDoesn't really matter, as you can do it in software with minimal latency at 48 MHz -- surely sub µs. For educational purposes I imagine this thing only needs to operate with the clock in to the first digit in the ms to second range, and the other digits more and more slowly. But it might well be capable of counting at 1 MHz or more with the suggested approach.

author: rupinc
author_rank: Newbie
timestamp: August 12, 2025, 05:24:40 am
content: The display used is the 0.56" one.The chainable method is by two pins. A clock carry/borrow, and a global reset pin, which resets all displays connected together.I think that there is some meaning to being able to understand how the carry percolates from display to display.The ability to preselect the upper bound when countring up, and lower bound when counting down is what sets it apart. You can chain two displays together, set a 10 count for a carry on the units place, and a 6 count for carry on the 10s place, and you have a 00-59 counter which can become the first part of a clock.Or we can chain many of these displays together to make a tachometer, or an event counter.Combine 6 of these displays, counting downwards and set a ms clock input to count time between two events.I have attached the potential layout of one of the modules. It can be connected to the next digit using jumpers, as the vertical headers will be adjacent.The headers at the bottom all connect into a breadboard.

author: MariuszD
author_rank: Regular Contributor
timestamp: August 12, 2025, 05:39:47 am
content: Quote from: rupinc on August 12, 2025, 03:35:34 amThese are two modulo-6 counters. People are used to the decimal system, the senary system is unintuitive.QuoteBut you can't count to 12 with this method.

author: rupinc
author_rank: Newbie
timestamp: August 12, 2025, 05:42:18 am
content: Quote from: MariuszD on August 12, 2025, 05:39:47 amThe number at which the display will generate a carry/ borrow is user selectable.

author: brucehoult
author_rank: Super Contributor
timestamp: August 12, 2025, 06:01:45 am
content: Quote from: MariuszD on August 12, 2025, 05:39:47 amIt's true that is not a decimal counter, but as you say, senary. People don't use that much, but binary, octal, and hex are in common use.QuoteWith four DIP switches to set the limit you can count to 12 on a single digit. People manage to display hex digits on a 7 segment display and you can even buy decoder chips for that. With an MCU it is of course easy.The problem of counting to a limit that requires more than one digit to test for the limit is an interesting one, and perhaps OP should think about it e.g. counting 00..55 or 00..11 in decimal.I think it can be done with one more forward output signal "my reset conditions are satisfied, what do you think?" and one reverse-direction output "yes, I concur" plus the corresponding inputs. And one more switch: "ask next digit before resetting and wait for permission". That's 4 more GPIOs, which I think might exceed a 20 pin device?

author: rupinc
author_rank: Newbie
timestamp: August 12, 2025, 06:10:35 am
content: Those are interesting ideas brucehoult.The carry output generated from any higher face value digit, can be plugged back into lower face value digits as a reset input.This way, a hundreds digit can communicate a reset condition to lower tens and units digits.Essentially, thinking about it, the device is a modulo counter, and it can do modulo n counting from hex 0 to F.

author: ledtester
author_rank: Super Contributor
timestamp: August 13, 2025, 03:00:02 am
content: Quote from: rupinc on August 12, 2025, 04:19:20 amYou might be interested in the "Serial Wombat" project:https://github.com/BroadwellConsultingInc/SerialWombat/As I understand it the idea is to provide a pre-programmed MCU (like a CH32V003) which has a whole host of callable functionality. For instance, you can tell it to take a bunch of ADC readings on a certain pin and report back the average. Or monitor a matrix keypad and report back when keys are pressed, etc. All the pin assignments are configurable.Communication between your main MCU and the Serial Wombat is either I2C or serial UART.Note that in the case of serial UART communication the "main MCU" could be a laptop/desktop and provides a convenient way for those kinds of computers to interact with the real world without having to program a microcontroller.Here are some links for more info:https://www.hackster.io/news/jonathan-broadwell-s-latest-serial-wombat-offers-a-wealth-of-features-over-i2c-for-just-1-50-f4a134ee28a6There are over 90 tutorial videos on youtube:https://www.youtube.com/playlist?list=PL9_vji2WbJGjNSjp9rnOrdrNzMCQIjaj_So maybe your ideas could fit in this ecosystem.

author: brucehoult
author_rank: Super Contributor
timestamp: August 13, 2025, 07:22:56 am
content: Oh .. the readme text at the github talks only about a board with a PIC16 and another with a PIC24, both CPUs can only be programmed by rewriting flash, or by implementing an interpreter for bytecode in RAM.BUT, hidden in the directory structure, with no links to it, is a new version using CH32V003.I looked at the git first then the Hackster article and was ... WTF? ... these are talking about totally different boards, as the Hackster talks about CH32V003.But it's kind of weird. It communicates with 8 byte command / response packets with a fixed (but expandable obv) set of commands for yeah things such as "read ADC n", or "set GPIO pin n".QuoteMaybe there is a specific canned command to do exactly that, but I didn't notice anything close to Turing-completeness in the commands. Maybe I didn't look hard enough.I can't see a lot of point in this over using a tiny BASIC / Python / Forth with a built in library for the GPIO, ADC etc functionality, but which you can then download small custom programs (as text) and then call functions in them.Or, for that matter, put a tiny RISC-V JIT in the host and download and run RISC-V code in RAM that calls the ROM functions. Well ... compiling downloaded Forth words into RAM and calling ROM routines from them would give virtually the same performance and flexibility, but could also work on the older PIC boards (if anyone cares).But this is really going in a totally different direction to OP.