Edition 5 of LHFSD [ISBN 978 606 92185 32] has been specifically designed to become an educational/pedagogical manual for teachers, instructors, though it is also recommended to ordinary citizens. Have no fear, dear readers: LHFSD5 is still addressed to beginners, since EVERYTHING starts from a white page, and then things are developed/explained gradually [and logically], step by step. Note that our Source-Code Package ED5RV07EN_15 works on Windows 95, 98, 2000, ME, XP, VISTA, 7, 8.1, 10.

Our book continues to deliver exactly as the title says: the readers will learn hardware design, plus firmware and software development! In addition to being a practical project explained in sharp/complete details, each chapter in LSEG5 contains simple practical exercises/applications to wade the readers gently over the difficult HFS design work. On this Internet page is a summary presentation of the main parts in LHFSD 5th edition.


During 2005-2009 Corollary Theorems has sold a good number of LHFSD-HCK kits throughout the World. If one owner of a LHFSD-HCK kit intends to sell it, then write to us please, and we are going to post your offer in this site.

Additionally, any reader who builds the LHFSD-HCK kit (on a prototyping breadboard, or as a PCB) and wants to sell it could write to us, and we are also going to advertise his/her offer.



Hardware Design starts from an empty Schematic page, then it builds up gradually the LHFSD-HCK [Hardware Companion Kit]. The novelty in the 5th edition is that it advises the readers to build (alternatively) the LHFSD-HCK kit on a breadboard, instead of a PCB. Things are this way.

Some readers may decide to become perfectly groomed hardware designers; therefore they should build the LHFSD-HCK PCB as it is explained in minute details in our book. However, other readers may prefer to train mostly as firmware and/or software developers. For them, it is advisable to build LHFSD-HCK on a breadboard instead [or on any material that stands to solder temperature].

LHFSD-HCK has a fair degree of moderate hardware complexity, in order to help beginners most. Consequently, the hardware design work is divided into "modules", and each hardware-module is explained in sharp details, functionally. Fact is, the Hardware Design part is the easiest one to accomplish!

LHFSD-HCK kit implements the following hardware modules:

GREEN LEAF1. a power supply module having two power levels: unregulated +9V, and regulated +5V DC;
2. an oscillator circuit using a ceramic resonator (the crystal oscillator version is also presented);
3. the ICD2 programming interface using a standard RJ45/6-6 female connector;
4. the RS232 serial communications module working over USB is presented in 2 versions: using the standard MAX232N IC; plus via a custom RS232 hardware driver built out of discrete components;
5. a few discrete I/O modules for buttons, leds, buzzer, etc.;
6. a few serialized I/O  modules working over a custom SPI Bus--this last application is extremely important!
7. a programmable digital potentiometer working as an 8 bits Digital to Analog Converter controlled via the SPI Bus;
8. a Bargraph module using eight comparator Operational Amplifiers, and controlling an array of nine leds;
9. one Seven Segments three numbers led display using multiplexing, Shift-Registers, and the SPI Bus;
10. visual and audio indicators needed for testing and debugging;
11. one temperature sensor analog channel;
12. one linear potentiometer analog channel;
13. an universal unipolar/bipolar stepper driver module for steppers of 9-12V, and 20-200mA;
14. interface connectors for extended functionality;
15. the SPI Bus employing standard logic ICs--this is one of the most important lessons in hardware and firmware programming;
16. the microcontroller dsPIC30F4011/dsPIC30F3011.

Again, it is important that LHFSD-HCK is not very complex, in order to help beginners most. On the other hand, note that complexity should better be implemented inside the inexpensive firmware/software, rather than in the expensive hardware.


All Schematics needed to build the LHFSD-HCK kit are included into the accompanying Source-Code Package ED5RV07EN_15. Even more, the chapter dedicated to building LHFSD-HCK PCB includes the complete list of the Bill of Materials! 



Changes are radical in Firmware Design, in edition 5, compared to all previous editions. First of all, the structure of one firmware project was changed from:

a. source-code file plus other supporting "*.c" files (to);
b. source-code file plus "*.h" supporting files.

In addition, the readers may decide to setup their firmware workbench based on:

A. XC16® (of GNU free) type compiler and MPLAB® X Vx.x IDE (or);
B. C30® and MPLAB® V8.x (a free download version).

Naturally, the options above appear to be rather difficult to select; however, inside LHFSD5 there are sufficient details about either choice. In addition, the users may even switch from one option to another at code-time, since the source-code files contain a "compiler version check" algorithm (as is presented in the picture above).

You can see the structure of supporting files of one firmware project in the picture on left. Note that each line of firmware code is accompanied by adequate comments!

The 12 complete firmware projects presented in LHFSD5 are priceless firmware source-code examples unparalleled in the entire World--we guarantee this. Even more, LHFSD5 is written so nicely that, by the end of Firmware Design part, you are going to love firmware development in C!

As a note, Firmware Design starts from exactly one empty page, and it builds up gradually using the simplest firmware techniques. Again, EVERYTHING is explained in sharp details unparalleled by any other book in the entire World. Firmware Design part, at least, is a must have and a must know! The reader is gently introduced to:

1. structuring firmware projects;
2. real time multitasking;
3. programming with interrupts;
4. building a custom SPI Bus firmware driver;
5. using multiplexing;
6. programming discrete and serialized I/Os;
7. programming Analog to Decimal Conversion channels;
8. building an RS232 serial communications firmware driver (working over USB);
9. driving stepper motors;
10. real-time firmware field data control;
11. lots more . . .

LHFSD - Front Cover

Edition 5 of LHFSD and the Source-Code ED5RV07EN_15 have been specifically compiled and tested on Windows 7/32 bits, and on Windows 8.1/64 bits. However, in order to remain flexible, the software development environment is recommended to be implemented, by default, on a Windows 7 34/64 bits platform.

Software Design in edition 5 of LHFSD is implemented on Visual Basic 6 compiler working on Windows 7/8.1--again starting from a white page. However, this software development environment is presented only as "a similarity". The readers may use in a similar manner any other compiler (say Visual Basic .Net 2012, Java, Delphi) and any other OS platform (Windows, Linux, Mac).

In order to prove the "similar" manner of software development recommended method in LHFSD5, we have inserted for exemplification two *.exe programs that implement the same thing:

    1. first is C_OBDII_CRC.exe a console program written in ANSI C;
    2. second is VB_OBDII_CRC.exe written in Visual Basic 6.

Each program is capable of generating the OBDII CRC hex byte from a variable series of hex bytes, according to the OBDII protocol: X8 + X4 + X3 + X2 + 1 == b 0001 1101 == 0x1D.

Alternatively, both programs are able to validate a series of hex bytes that end in the proper CRC byte; the result is always 0xC4 == b 1100 0100 == X7 + X6 + X2.

Please download each program above, then play with them to understand the great concept of "similarity" we strive to explain here. Note that "the engine" behind each program is in data control at bit level, and it works exactly the same, although both compilers are so different.


In Software Design are presented 7 software programs (SDx),  fairly complex, though each line of code is again explained in sharp details. Note that the software programs are developed in parallel with the firmware ones, since they need to work together.

Since Software Design is the most complex part in LHFSD book, it will be detailed on another site-page. For now, take a look at the main software design-tasks that are implemented in all SDx programs:

1. two way serial communications, using RS232 protocol working over USB;
2. a MDI [Multiple Documents Interface] needed to harbor all  graphic controls--out of which MSFlexGrid control is the most exciting one to work with;
3. real-time field data display/control in software;
4. file management in software and in firmware;
5. analog graphic display of field signals, "GraphTrace"--this is similar to an oscilloscope application;
6. a perfectly functional embedded Internet Browser;
7. many more . . .

Software Design is ended in the LHFSD.exe program (well, in a commercial, deployable, Setup_LHFSD.exe program). A lite version may be downloaded, in order to test before you buy. In addition, on our download page we describe in details the functionality of our LHFSD.exe program.


MAPLE 7In ED5RV07EN_15 Source Code Package, each FDx firmware program has been compiled to a FDx.hex file: this allows the users to run FDx projects without a C30/XC16 compiler!

In addition, each SDx software applications has been compiled into an executable program--say, SD5.exe. In this way, the readers may run each SDx application without a Visual Basic 6 compiler!

For beginners, the HFS design aspects highlighted on this page may sound (more or less) gibberish. However, you do not need to worry, dear readers. As promised, EVERYTHING is explained in minute details in LHFSD5, everything is perfectly logic, everything works, and anybody can implement--fairly easy--any of the programs/applications developed in LHFSD.

LHFSD - Front Cover

Learn Hardware Firmware and Software Design the easy way!

Send your comments regarding this page using support@corollarytheorems.com, noi@editcc.com, or cus@2agraph.com
Page last updated on: April 20, 2017
© SC Complement Control SRL. All rights reserved.



Valid HTML 4.01!

Site pages valid according to W3C

Valid CSS!

Stylesheets pages valid according to W3C