Little Man Computer Trainer

This is a low power pocket computer trainer for the Little Man Computer (LMC) computer model

Similar projects worth following
The purpose of this project is to create an inexpensive and portable device for student wanting to learn basic computer programming via the LMC model.

"The Little Man Computer (LMC) is an instructional model of a computer, created by Dr. Stuart Madnick in 1965"---

A low-power MSP430 MCU is selected for the project to provide maximum power efficiency.

The device will allow for entering, editing and deleting of multiple LMC programs.

Both numeric and mnemonic codes of LMC are supported.

The LMC trainer will allow for single stepping and continuous LMC program execution.

(photo showed is a prototyping unit built on a TI MSP430 Launchpad with LED modules and buttons shield)


The challenge on teaching high school students computer programming is that they are usually done in high level languages. This isolates the students on how computers actually work physically.

The Little Man Computer, or LMC , being modelled after a simple von Neumann architecture computer, allows students to associate basic programming with the physical CPU architecture, i.e. Machine / psuedo code on hardware register represented by LMC mailboxes. Learning programming via LMC will provide the complete picture on how computers actually work.

A handheld and battery operated learning device allows students to experiment with LMC anytime anywhere without restrictions.

A physical device instead of a mobile phone app provide the physical touch on computer learning. And students will be able to get the feel of a physical device.

Completed hardware plan including PCB layout will be provided as open source plans. Common parts and no SMDs is mandated in the design as one of the objectives is to allow ready and simple replication of the project by the average high school student. It is in fact a desire that high school soldering, robotic and computer computer clubs can adopt this as a kit for hardware and software learning.

The firmware of this project will be based on two of my published works hosted on github,  with the TMS080x emulator project provide command interpretation framework and the NP25 calculator project to provide LED multiplexing and key scanning that form the user interface.

Source code and firmware for the LMC trainer will be released as open source GNU Version 2 license.


  • LMC program entering, editing, deletion.
  • Multiple program storage in non volatile memory.
  • Support both numeric and mnemonic LMC code.
  • Single step and continuous LMC program execution.
  • Pocket size device for portability.
  • Low power consumption.
  • Open source hardware and software.

  • Other PCB Candidates

    Chris Chung04/30/2021 at 18:21 2 comments

    Other PCB Candidates

    Over the last few months, I had gone through 3 PCB designs. The hardware debugging is mostly done.

    I am waiting for a "final" PCB design. There will be 15 tactile buttons, 4 units of 3 digit 7 segment LED display modules, and powered by one AAA 1.5V cell.

    The design is focus on the following factors:

    • Pocket size - smaller footprint, fewer buttons, single battery.
    • Standalone sustained operation - battery power, AAA instead of coin cell.
    • Simple construction - few and common components. 

    This one turned out to be too big to fit in a shirt pocket. Also it is not battery powered.

    This design has 2 x AAA battery for power. Overall it is too large.

    This design is small and compact and USB powered. I had order another PCB powered by 1 x AAA cell. Hopefully that will be the final design.

  • Hardware Option #1

    Chris Chung04/27/2018 at 12:25 0 comments

    I am trying different hardware designs. This one design I might adapt is from a "basic" trainer project that I started and not finished.

    This PCB design has all components on one side of the PCB. It also contains some extra IO options for the user to experience with. The exposed components will be attractive to a kit builder / hardware person. And it may not be ideal for an everyday carry pocket device.

    This design full-fills the LMC trainers input and output requirements, plus extra

    • 4 IO pin breakout via header
    • 16 LED bit display for registers
    • Buzzer
    • Potentiometer for ADC experiments

    The little man computer instructions 901 (INP) and 902 (OUT) accepts input from the keys and output mailbox values to the 7 segment displays. An ideal is to introduce additional IO instructions, say 9xx for additional IO components. Ex. We can have 903 for input via ADC channel 1 (hookup to a light sensor), 904 as output to a 8 bit LED display.

    This will allow more hardware elements to interact w/ the LMC language.

    There are additional designs that I need to try out before fixing into the final.

View all 2 project logs

Enjoy this project?



Chris Chung wrote 04/27/2018 at 12:39 point

Yes, very basic IO will achieve this. If you are using 7-segments to show Hex, BCD will do. LMC being decimal makes it easy to learn.

  Are you sure? yes | no

Arduino Enigma wrote 04/24/2018 at 17:46 point

We really need Dirk's I Ching calculator:

  Are you sure? yes | no

Chris Chung wrote 04/27/2018 at 12:36 point

I read it up and find that the LMC trainer should have the h/w capability to do that. What will be more fun is to write a LMC program to perform the I Ching coin throwing task. Will have to expand LMC for a "random number" input instruction though.

  Are you sure? yes | no

Dr. Cockroach wrote 04/22/2018 at 21:36 point

Any project like this is an instant Like :-)
 I had not heard of the LMC model till now and I see that my IO is exactly the same except  IO uses Hex instead of decimal.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates