Skip to content

About

HELLO: a tiny 8051 computer shaped like a 1984 desktop. AT89S52, 32 KB SRAM, 128x64 ST7920 LCD, USB-C. 112 x 158 mm 2-layer KiCad 10 board, DRC clean, firmware that writes hello. Built through HeyPCB's MCP server.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

HELLO, a tiny 8051 computer

A 112 × 158 mm 8051 computer shaped like the front of a 1984 desktop machine: the 128×64 LCD sits where the screen would be, the chips sit in the chin, the ISP header sits where the floppy slot was, and a narrower foot runs along the bottom edge.

An agent built it through HeyPCB's MCP server, from one prompt to Claude Code: parts, wiring, outline, placement, routing and checks, all as tool calls. It then wrote the firmware, which draws "hello" on the LCD one pen stroke at a time. KiCad 10 opens the files directly, and the board is on Circuit World to open or fork in HeyPCB (sign-in required).

3D render of the HELLO board, every part modelled   Top view of the HELLO board

The firmware writing hello on the simulated 128x64 LCD

What's on it

  • AT89S52-24PU (DIP-40) at 11.0592 MHz, running from its own 8 KB of flash (EA tied to VCC).
  • 32 KB of SRAM: an AS6C62256 (DIP-28) behind a 74HC573 address latch, mapped at XDATA 0000–7FFF.
  • HS12864-15C, a 128×64 ST7920 graphic LCD, in 3-wire serial mode: P1.0 = CS, P1.1 = SID, P1.2 = SCLK, P1.3 = RST. Its backlight runs through R5, 22 Ω.
  • USB-C for 5 V only (GCT USB4085), with 5.1 kΩ pull-downs on CC1 and CC2, a 500 mA resettable fuse (Bourns MF-R050) and a power slide switch.
  • ISP header (10-pin, USBasp layout) to program the AT89S52, and a 6-pin UART header on P3.0 (RXI) and P3.1 (TXO).
  • Reset button, power LED, two M3 holes in the chin.
  • 2 layers, ground poured on both. Every part is through-hole except the crystal (an SMD HC-49S): LCSC lists no through-hole 11.0592 MHz part.

Every part has an LCSC number in the BOM.

Firmware

firmware/ builds with SDCC (4.6.0 here) and the board's ISP header takes the result:

cd firmware
make        # build/hello.hex, 2,832 of the AT89S52's 8,192 bytes
make sim    # runs the image on a simulated board and renders the screen to build/sim/

hello.hex is in the folder already built. The firmware reads ../hello.svg at build time (tools/svg2c.py), fits its 29 Bézier curves to the panel, then traces them with integer maths, stamping a round pen into a frame buffer in the external SRAM and sending the rows under the pen to the LCD after each of its 1,088 steps.

It has run only in simulation. make sim is a cycle-counted 8051 with a model of the ST7920 wired to P1, written from the ST7920 datasheet's serial protocol. Its final screen matches the bitmap computed from hello.svg with 0 pixels different, and SDCC's own simulator (ucsim) agrees on the frame buffer and the cycle count (4,256,702). That check covers the processor and memory, not the LCD model, so how the HS12864-15C itself handles the panel's bottom half is the first thing to confirm on hardware. The screen's colours in the renders are made up; the pixels are exact.

Checks

Measured on this revision:

Check Result
DRC, KiCad 10.0.6 run locally 0 errors, 0 unconnected; 27 warnings (14 hole-to-hole, 10 silkscreen over copper, 3 silkscreen near the edge)
DRC, HeyPCB 0 errors, 0 unconnected
ERC, HeyPCB 0 errors
ERC, KiCad 10.0.6 run locally 3 errors, all "input pin not driven" on the SRAM's A0–A2 (below)
HeyPCB verify every rung that ran passed; IR drop and the pin-direction check not verified
Fab readiness (JLCPCB) not ready: no blockers, but HeyPCB could only partly confirm the identity of the through-hole resistors and capacitors, so the BOM has no verdict

Things to know before ordering:

  • The 3 KiCad ERC errors are symbol pin types, not wiring. A0–A2 of the SRAM are driven by the 74HC573's outputs, but the 573's LCSC-generated symbol gives its pins no electrical type, so KiCad sees no driver. The same untyped pins are why HeyPCB could not judge the direction of 39 of the 43 signal nets.
  • Check the pinouts against the datasheets. The AT89S52, AS6C62256, 74HC573 and HS12864-15C are each wired from a single pin table that no second source confirmed.
  • 20 of the 181 plated holes have a 0.150 mm annular ring, under JLCPCB's preferred 0.180 mm (its minimum is 0.13 mm).
  • The SRAM is the expensive part: about $17 at LCSC, with 8 in stock when the board was designed. Any 600-mil DIP-28 62256 is pin-compatible.
  • The LCD's backlight resistor is a guess. If the module has its own resistor, or the light is too dim or too bright, change R5.
  • A few tracks pass near the crystal (advice, not a gate).

Files

Path What it is
hello.kicad_pro, .kicad_sch, .kicad_pcb, .kicad_dru The KiCad 10 project
heypcb-libs/ The LCSC parts' symbols and footprints, and one HeyPCB footprint, wired up by fp-lib-table and sym-lib-table
design.json The HeyPCB design the schematic and board are generated from
fab/ Gerbers and drill files, BOM and pick-and-place (CPL) for JLCPCB
firmware/ The SDCC firmware, its simulator, and hello.hex
hello.svg The lettering the firmware draws: one pen stroke
images/ HeyPCB's 3D view and photograph of the board, the schematic, and the simulated screen

License

MIT. See LICENSE.

About

HELLO: a tiny 8051 computer shaped like a 1984 desktop. AT89S52, 32 KB SRAM, 128x64 ST7920 LCD, USB-C. 112 x 158 mm 2-layer KiCad 10 board, DRC clean, firmware that writes hello. Built through HeyPCB's MCP server.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages