{"id":1113,"date":"2026-01-06T18:09:49","date_gmt":"2026-01-06T10:09:49","guid":{"rendered":"https:\/\/www.ddzheng.cc\/?p=1113"},"modified":"2026-03-14T00:36:42","modified_gmt":"2026-03-13T16:36:42","slug":"gulton-luminator-flip-dot-display","status":"publish","type":"post","link":"https:\/\/www.ddzheng.cc\/?p=1113","title":{"rendered":"Gulton Luminator Flip-dot Display"},"content":{"rendered":"<h2 class=\"simpletoc-title\">Table of Contents<\/h2>\n<ul class=\"simpletoc-list\">\n<li><a href=\"#intro\">Intro<\/a>\n\n<\/li>\n<li><a href=\"#the-bus\">The Bus<\/a>\n\n<\/li>\n<li><a href=\"#the-displays\">The Displays<\/a>\n\n\n<ul><li>\n<a href=\"#flipdot-display\">Flip-dot Display<\/a>\n\n<\/li>\n<li><a href=\"#reverse-engineering-of-the-master-module\">Reverse Engineering of the Master Module<\/a>\n\n\n<ul><li>\n<a href=\"#way-of-work\">Way of Work<\/a>\n\n<\/li>\n<li><a href=\"#board-overview\">Board Overview<\/a>\n\n<\/li>\n<li><a href=\"#reverse-engineer-of-circuit\">Reverse Engineer of Circuit<\/a>\n\n<\/li>\n<li><a href=\"#reverse-engineer-of-timings-and-voltages\">Reverse Engineer of Timings and Voltages<\/a>\n\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<li><a href=\"#making-the-displays-work\">Making the Displays Work<\/a>\n\n\n<ul><li>\n<a href=\"#restoration\">Restoration<\/a>\n\n<\/li>\n<li><a href=\"#new-controller-board\">New Controller Board<\/a>\n\n\n<ul><li>\n<a href=\"#hardware\">Hardware<\/a>\n\n<\/li>\n<li><a href=\"#software\">Software<\/a>\n\n\n<ul><li>\n<a href=\"#display-arrangement\">Display arrangement<\/a>\n\n<\/li>\n<li><a href=\"#pixel-buffering\">Pixel Buffering<\/a>\n\n<\/li>\n<li><a href=\"#font\">Font<\/a>\n\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<li><a href=\"#current-usage\">Current Usage<\/a>\n<\/li>\n<\/ul>\n<\/li><\/ul>\n\n\n<h1 id=\"intro\" class=\"wp-block-heading\">Intro<\/h1>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/9\/92\/Luminator_MegaMax_flip-dot_destination_sign_in_TriMet_bus_2246%2C_a_1998_New_Flyer_D40LF.jpg\" alt=\"\"\/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Luminator_MegaMax_flip-dot_destination_sign_in_TriMet_bus_2246,_a_1998_New_Flyer_D40LF.jpg\">https:\/\/commons.wikimedia.org\/wiki\/File:Luminator_MegaMax_flip-dot_destination_sign_in_TriMet_bus_2246,_a_1998_New_Flyer_D40LF.jpg<\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Last year I came across a video on RedNote(\u5c0f\u7ea2\u4e66), posted by user &#8220;\u8001\u8f66\u6709\u6bd2&#8221; in which he converted a 1970s AM General bus into a mobile coffee shop. He removed some parts from the bus, including seats, interior parts and rollsigns for sale. I got in touch with him and purchased the set of rollsigns.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"2400\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29.jpg\" alt=\"\" class=\"wp-image-1119\" style=\"width:200px\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29.jpg 1080w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29-540x1200.jpg 540w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29-864x1920.jpg 864w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29-230x512.jpg 230w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29-768x1707.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29-691x1536.jpg 691w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231212050_24_29-922x2048.jpg 922w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2400\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29.jpg\" alt=\"\" class=\"wp-image-1118\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29.jpg 2400w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29-1200x540.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29-1920x864.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29-512x230.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29-768x346.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29-1536x691.jpg 1536w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211946_23_29-2048x922.jpg 2048w\" sizes=\"auto, (max-width: 2400px) 100vw, 2400px\" \/><\/figure>\n<\/div>\n\n\n<h1 id=\"the-bus\" class=\"wp-block-heading\">The Bus<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The bus is an AM General Metropolitan Series 10240B-8 (Flyer D800), serial number 10240B001176. It has Detroit Diesel 8V71N engine and Allison V730 transmission. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">According to CPTDB Wiki It served as Denver Regional RTD bus number 4672 before being sold to Community Transit in Lynnwood, Washington in 1990 and became bus number 308. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"530\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/0890ct305.jpg\" alt=\"\" class=\"wp-image-1146\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/0890ct305.jpg 800w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/0890ct305-512x339.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/0890ct305-768x509.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\">#305 resting at the Community Transit Garage in Everett in August of 1990.&nbsp; Photo captured by Peter McLaughlin. Image from busdrawings.com<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">What happened next may not be completely precise and is just what I know. When the AMGs were retired one (or some) of the buses were sold to some southeast Asia country. It was unloaded at the Port of Tianjin(\u5929\u6d25\u6e2f), China but it was never loaded again due to customs. After staying at \u5929\u6d25\u6e2f for more than 10 years, in 2024 it was sold to &#8220;a private buyer&#8221; for RMB 80,000 (about USD 12,000).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s a screenshot of the current look of bus 308.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"864\" height=\"1920\" data-id=\"1115\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-864x1920.jpg\" alt=\"\" class=\"wp-image-1115\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-864x1920.jpg 864w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-540x1200.jpg 540w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-230x512.jpg 230w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-768x1707.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-691x1536.jpg 691w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1-922x2048.jpg 922w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/e7b58be1d84ec43a37243b63afa459aa-1.jpg 1080w\" sizes=\"auto, (max-width: 864px) 100vw, 864px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"864\" height=\"1920\" data-id=\"1117\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-864x1920.jpg\" alt=\"\" class=\"wp-image-1117\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-864x1920.jpg 864w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-540x1200.jpg 540w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-230x512.jpg 230w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-768x1707.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-691x1536.jpg 691w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29-922x2048.jpg 922w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/\u5fae\u4fe1\u56fe\u7247_20251231211226_21_29.jpg 1080w\" sizes=\"auto, (max-width: 864px) 100vw, 864px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you would like to know what happened to the bus you can follow &#8220;\u8001\u8f66\u6709\u6bd2&#8221; on \u5c0f\u7ea2\u4e66(Rednote) or \u6296\u97f3(Douyin).<\/p>\n\n\n\n<h1 id=\"the-displays\" class=\"wp-block-heading\">The Displays<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The set of rollsigns I got were made around 1988 to 1990. They are the Gulton Luminator Max: 15 characters 5&#215;7 display.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/P1036717.MOV_20251230_000117.273.jpg\" alt=\"\" class=\"wp-image-1121\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/P1036717.MOV_20251230_000117.273.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/P1036717.MOV_20251230_000117.273-1200x675.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/P1036717.MOV_20251230_000117.273-512x288.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/P1036717.MOV_20251230_000117.273-768x432.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2025\/12\/P1036717.MOV_20251230_000117.273-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1180\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046754.jpg\" alt=\"\" class=\"wp-image-1180\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046754.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046754-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046754-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046754-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046754-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Each display has 3 module boards, one master module and 2 slave module. Between the front large display and the smaller side display, they seem to only differ in size, but identical in circuit design. The master module contains a driver board which accept signals from a control console.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-4 is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1170\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046742.jpg\" alt=\"\" class=\"wp-image-1170\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046742.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046742-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046742-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046742-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046742-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1173\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046743.jpg\" alt=\"\" class=\"wp-image-1173\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046743.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046743-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046743-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046743-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046743-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1171\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046744.jpg\" alt=\"\" class=\"wp-image-1171\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046744.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046744-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046744-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046744-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046744-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1169\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046745.jpg\" alt=\"\" class=\"wp-image-1169\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046745.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046745-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046745-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046745-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046745-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1168\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046749.jpg\" alt=\"\" class=\"wp-image-1168\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046749.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046749-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046749-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046749-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046749-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1175\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046750.jpg\" alt=\"\" class=\"wp-image-1175\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046750.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046750-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046750-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046750-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046750-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1172\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046752.jpg\" alt=\"\" class=\"wp-image-1172\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046752.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046752-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046752-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046752-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046752-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1174\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046753.jpg\" alt=\"\" class=\"wp-image-1174\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046753.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046753-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046753-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046753-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046753-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Each module contains 5 characters of 5&#215;7 pixel flip-dot elements.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036729.MOV_20251230_000350.679.jpg\" alt=\"\" class=\"wp-image-1162\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036729.MOV_20251230_000350.679.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036729.MOV_20251230_000350.679-1200x675.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036729.MOV_20251230_000350.679-512x288.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036729.MOV_20251230_000350.679-768x432.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036729.MOV_20251230_000350.679-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The module boards are connected together with a 40-pin ribbon cable and should be connected to the console with a 26-pin ribbon cable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046748-1.jpg\" alt=\"\" class=\"wp-image-1167\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046748-1.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046748-1-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046748-1-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046748-1-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046748-1-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The side display use a single-pin fluorescent light SYLVANIA: F42T6 while the font display use 2 standard fluorescent light F20T12.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"1920\" data-id=\"1181\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046758.jpg\" alt=\"\" class=\"wp-image-1181\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046758.jpg 1280w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046758-800x1200.jpg 800w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046758-341x512.jpg 341w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046758-768x1152.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046758-1024x1536.jpg 1024w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"1920\" data-id=\"1179\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046759.jpg\" alt=\"\" class=\"wp-image-1179\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046759.jpg 1280w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046759-800x1200.jpg 800w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046759-341x512.jpg 341w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046759-768x1152.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046759-1024x1536.jpg 1024w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">They should be equipped with a ballast driver which is a constant current controller for the DC ballast. On my set only the front display came with one.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" data-id=\"1150\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036723.MOV_20251230_000256.392.jpg\" alt=\"\" class=\"wp-image-1150\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036723.MOV_20251230_000256.392.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036723.MOV_20251230_000256.392-1200x675.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036723.MOV_20251230_000256.392-512x288.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036723.MOV_20251230_000256.392-768x432.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036723.MOV_20251230_000256.392-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1182\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046757.jpg\" alt=\"\" class=\"wp-image-1182\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046757.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046757-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046757-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046757-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046757-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Each vehicle should be equipped with a display control console. The seller didn&#8217;t include one. In the original setup, changing of pre-defined display content is done by either swap out (E)EPROMS or by using MTU device (on certain models).<\/p>\n\n\n\n<h2 id=\"flipdot-display\" class=\"wp-block-heading\">Flip-dot Display<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The flip-dot display is a kind of electro-mechanical display often used during 1960s to 2000s, and still used today for art installations. It&#8217;s often used for large format displays as it&#8217;s very energy efficient (like E-Ink display, only consumes power when changing display content). It&#8217;s also the only viable solution for many signage displays before LEDs were widely available and reliable enough.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.designboom.com\/weblog\/images\/images_2\/rodrigo\/breakfast\/dots_01.jpg\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The flip-dot element use an electro-magnet with a core to control the disc orientation. There is a small permanent magnet embedded in the disc. Once the core is magnetized in one direction, the disc can stay in that side (if the disc is lightweight enough, or if it rotates horizontally). Usually one side of the disc is painted black and the other white or bright greenish-yellow to make high contrast display.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/wiki.comakingspace.de\/images\/thumb\/c\/ce\/FDD_Function.gif\/300px-FDD_Function.gif\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/d\/d1\/Bistabile_anzeigeelemente.jpg\/500px-Bistabile_anzeigeelemente.jpg\" alt=\"\"\/><\/figure>\n<\/figure>\n\n\n\n<h2 id=\"reverse-engineering-of-the-master-module\" class=\"wp-block-heading\">Reverse Engineering of the Master Module <\/h2>\n\n\n\n<h3 id=\"way-of-work\" class=\"wp-block-heading\">Way of Work<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For stuff like this there is usually two ways to re-use them, one is to strip them down to bare minimum and keep only the actuators(in this case, the flip dot elements), or the other one is to take advantage of as much of the electronics as possible. For this project I chose the later, to reverse engineer the circuits. It will be hard and time consuming to make driver circuitry for hundreds of elements.<\/p>\n\n\n\n<h3 id=\"board-overview\" class=\"wp-block-heading\">Board Overview<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5c4f\u5e55\u622a\u56fe-2026-01-06-173433.jpg\" alt=\"\" class=\"wp-image-1165\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5c4f\u5e55\u622a\u56fe-2026-01-06-173433.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5c4f\u5e55\u622a\u56fe-2026-01-06-173433-1200x675.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5c4f\u5e55\u622a\u56fe-2026-01-06-173433-512x288.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5c4f\u5e55\u622a\u56fe-2026-01-06-173433-768x432.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5c4f\u5e55\u622a\u56fe-2026-01-06-173433-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The flip dot solenoids require bi-polar driving to inverse (flip) its magnetic field, which means it requires H-bridge style driver circuit. There are ULN2801 high side drivers and UDN2580 low side drivers on the board and they are arranged in pairs. Each driver chip is controlled by a connected 4551. By just looking at the board and do some counting we can assume that there is one section dedicated to row driving(7 rows) and the rest for column driving. The number of column 25 is somewhat embarrassing, if it were 24 it will be perfect(it can be divided by 8). so there are extra pair of drivers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is a rotary switch, obviously for address. There are hex inverters near the bus connector. There are some other logic chips. Everything is 4xxx CMOS, which means there is only one supply rail and it&#8217;s shared between logic and driving of solenoids.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The slave boards have their own row drivers.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"1920\" data-id=\"1176\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046746.jpg\" alt=\"\" class=\"wp-image-1176\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046746.jpg 1280w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046746-800x1200.jpg 800w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046746-341x512.jpg 341w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046746-768x1152.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046746-1024x1536.jpg 1024w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1178\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046755.jpg\" alt=\"\" class=\"wp-image-1178\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046755.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046755-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046755-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046755-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046755-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" data-id=\"1177\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046756.jpg\" alt=\"\" class=\"wp-image-1177\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046756.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046756-1200x800.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046756-512x341.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046756-768x512.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046756-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">By using a multimeter in continuity mode we can map out the circuit diagram. A small copper brush connected to one side of the multimeter can be very useful. As it is all DIP packages, it&#8217;s fairly easy. Although you may want to clean the board and use some chemicals to remove oxidation before working on it.<\/p>\n\n\n\n<h3 id=\"reverse-engineer-of-circuit\" class=\"wp-block-heading\">Reverse Engineer of Circuit<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1810\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-scaled.png\" alt=\"\" class=\"wp-image-1159\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-scaled.png 2560w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-1200x848.png 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-1920x1358.png 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-512x362.png 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-768x543.png 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-1536x1086.png 1536w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-10-2048x1448.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Incomplete diagram, designations of driver ICs are wrong. Some signals going to other module are not labelled. Pull-up resistors not connected.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Signals coming from the bus connectors are pulled-up by 10K resistors, and fed into inverters used as bus receiver. On the bus cable it&#8217;s active low and in the board after the inverters it&#8217;s active high.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The 3 address signals are compared with the rotary switch using 4070s and 4023 to generate an enable signal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2 column zone selection signals are fed into half 4556 multiplexer to select 4 column zones (3 zones of 8 columns + 1 zone of 1 column), the 4556 output Qs control both high and low side drivers by controlling the inhibit pin of the corresponding 4551 multiplexer. 3 column select pins are connected to the input of 4551, they select single column in the first three 8 column zones, completing all column select circuitry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2 module select signals are fed into half 4556 multiplexer to select 3 modules(master, middle and end), the output ultimately control the inhibit pin of the 4551 which is connected to row drivers. The 4th Q of 4556 is not used. There are jumper wires to select which module connect to Q0 and which to Q2, so it&#8217;s possible to mount the master module on either left or right side.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3 row select pins are connected to the 4551s which control row drivers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erase and write pins are logically connected to be exclusive and ultimately control the common pin of the 4551 multiplexers. Erase and write signals have jumper wires so that they can be inversed, which inverse the display in hardware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A disable pin is provided, it works by controlling row driver.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So now we can have pin definitions (pin number is in odd-even numbering, on external interface all digital signals active low, CMOS level, with regard to VCC):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">Pin Number<\/th><th class=\"has-text-align-center\" data-align=\"center\">Pin Name<\/th><th class=\"has-text-align-center\" data-align=\"center\">Pin Function<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">1, 2, 3, 4, 6<\/td><td class=\"has-text-align-center\" data-align=\"center\">GND<\/td><td class=\"has-text-align-center\" data-align=\"center\">Negative supply, vehicle chassis<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">5, 7, 8, 9, 10<\/td><td class=\"has-text-align-center\" data-align=\"center\">VCC<\/td><td class=\"has-text-align-center\" data-align=\"center\">Power supply<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">16<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ADDR0<\/td><td class=\"has-text-align-center\" data-align=\"center\">Address pin, compared with rotary switch output bit 0<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">14<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ADDR1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Address pin, compared with rotary switch output bit 1<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">12<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ADDR2<\/td><td class=\"has-text-align-center\" data-align=\"center\">Address pin, compared with rotary switch output bit 2<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">18<\/td><td class=\"has-text-align-center\" data-align=\"center\">!COL0<\/td><td class=\"has-text-align-center\" data-align=\"center\">Column select pin, connected to column 4551 input &#8220;A&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">20<\/td><td class=\"has-text-align-center\" data-align=\"center\">!COL1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Column select pin, connected to column 4551 input &#8220;B&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">22<\/td><td class=\"has-text-align-center\" data-align=\"center\">!COL2<\/td><td class=\"has-text-align-center\" data-align=\"center\">Column select pin, connected to column 4551 input &#8220;C&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">24<\/td><td class=\"has-text-align-center\" data-align=\"center\">!WRITE<\/td><td class=\"has-text-align-center\" data-align=\"center\">Pull low to set dot to yellow side<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">23<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ERASE<\/td><td class=\"has-text-align-center\" data-align=\"center\">Pull low to set dot to black side<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">25<\/td><td class=\"has-text-align-center\" data-align=\"center\">!COLZONE0<\/td><td class=\"has-text-align-center\" data-align=\"center\">Column zone select pin, connected to 4556 input &#8220;A0&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">26<\/td><td class=\"has-text-align-center\" data-align=\"center\">!COLZONE1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Column zone select pin, connected to 4556 input &#8220;A1&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">19<\/td><td class=\"has-text-align-center\" data-align=\"center\">!MODULE0<\/td><td class=\"has-text-align-center\" data-align=\"center\">Module select, connected to 4556 input &#8220;A0&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">21<\/td><td class=\"has-text-align-center\" data-align=\"center\">!MODULE1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Module select, connected to 4556 input &#8220;A1&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">13<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ROW0<\/td><td class=\"has-text-align-center\" data-align=\"center\">Row select pin, connected to row 4551 input &#8220;A&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">15<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ROW1<\/td><td class=\"has-text-align-center\" data-align=\"center\">Row select pin, connected to row 4551 input &#8220;B&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">17<\/td><td class=\"has-text-align-center\" data-align=\"center\">!ROW2<\/td><td class=\"has-text-align-center\" data-align=\"center\">Row select pin, connected to row 4551 input &#8220;C&#8221;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">11<\/td><td class=\"has-text-align-center\" data-align=\"center\">!DISABLE<\/td><td class=\"has-text-align-center\" data-align=\"center\">Pull low to disable whole system<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"reverse-engineer-of-timings-and-voltages\" class=\"wp-block-heading\">Reverse Engineer of Timings and Voltages<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The patent of the Luminator system is available online so it can be used to get a lot of useful information and also to confirm we have done the correct reverse engineering. It&#8217;s located at <a href=\"https:\/\/www.freepatentsonline.com\/EP0090043.pdf\">https:\/\/www.freepatentsonline.com\/EP0090043.pdf<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From the patent, we can know that the console sets the address, row, columns and then toggle the WRITE or ERASE signal for a given pulse length to set the display. This pulse length is critical, if it&#8217;s too long you risk frying the coils and if it&#8217;s too short the display may not be set correctly. In the patent, the pulse length is 1ms, which we can use as a baseline. If you are testing similar flip dot display boards, you can put a high-pass filter in series in the pulse signal. This way even if your controller is giving too long a pulse or straight voltage level, the coils won&#8217;t be damaged.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"814\" height=\"187\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-2.png\" alt=\"\" class=\"wp-image-1143\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-2.png 814w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-2-512x118.png 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-2-768x176.png 768w\" sizes=\"auto, (max-width: 814px) 100vw, 814px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The voltage to power the boards however is not mentioned. Base on my experience and the logic chips used, I think 9 to 15V is a valid range. And further test shows that this range works well, with 9V on the weaker slower side but also provides quieter operation. I decided to use 12V to power the system.<\/p>\n\n\n\n<h1 id=\"making-the-displays-work\" class=\"wp-block-heading\">Making the Displays Work<\/h1>\n\n\n\n<h2 id=\"restoration\" class=\"wp-block-heading\">Restoration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The smaller side display is missing the 40-pin ribbon cable that connects the module boards together, as well as the back cover. I crimped a new 40-pin IDC cable with 3 connectors (very similar with IDE cable).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"1920\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046741.jpg\" alt=\"\" class=\"wp-image-1183\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046741.jpg 1280w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046741-800x1200.jpg 800w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046741-341x512.jpg 341w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046741-768x1152.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1046741-1024x1536.jpg 1024w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">All of the modules in the side display are extremely dusty. This does not affect operation but will impact display contrast. I cleaned all of the modules using a soft brush. I washed all of if with pure alcohol.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve designed a new back cover for the side display but has yet to manufacture it. I&#8217;ll replace the fluorescent lamps with COB LED strips. <\/p>\n\n\n\n<h2 id=\"new-controller-board\" class=\"wp-block-heading\">New Controller Board<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With the reverse engineer result we can now design a new control system for the displays. I want to use one board to control both (or more) displays, with the ability to remotely alter the display content.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1706\" height=\"1279\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/c37780d935100dc2f556b4c48ffb124d.jpg\" alt=\"\" class=\"wp-image-1156\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/c37780d935100dc2f556b4c48ffb124d.jpg 1706w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/c37780d935100dc2f556b4c48ffb124d-1200x900.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/c37780d935100dc2f556b4c48ffb124d-512x384.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/c37780d935100dc2f556b4c48ffb124d-768x576.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/c37780d935100dc2f556b4c48ffb124d-1536x1152.jpg 1536w\" sizes=\"auto, (max-width: 1706px) 100vw, 1706px\" \/><\/figure>\n\n\n\n<h3 id=\"hardware\" class=\"wp-block-heading\">Hardware<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I designed a board using ESP32-S3 Wroom module as main controller. The ESP32 modules are leftover material from the SRJV project. There are two sets of level shifting circuits, it first shifts the 3.3V level from the MCU to 5V using 74LVC4245, then it shifts from 5V to CMOS level (9 to 15V) using CD4504. The board also include 5V and 3.3V power supply, utilizing MORNSUN buck converter modules (I did it the lazy way this time). I put 4 buttons on the board, a RTC chip, a CR2032 battery holder, USB circuitry for ESP32, and the auto programming circuit for ESP32. Some basic protection circuits were included.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1810\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-scaled.png\" alt=\"\" class=\"wp-image-1158\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-scaled.png 2560w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-1200x848.png 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-1920x1358.png 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-512x362.png 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-768x543.png 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-1536x1086.png 1536w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-9-2048x1448.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I manufactured the board at JLCPCB and have the SMT done partially. I usually do this to balance between cost and the time and effort I have to put into soldering components. The board came back nicely and it works no problem.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036732.MOV_20251230_000415.503.jpg\" alt=\"\" class=\"wp-image-1157\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036732.MOV_20251230_000415.503.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036732.MOV_20251230_000415.503-1200x675.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036732.MOV_20251230_000415.503-512x288.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036732.MOV_20251230_000415.503-768x432.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/P1036732.MOV_20251230_000415.503-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I crimped 26-pin IDC cable to connect the board to the display, initially one at a time. I tested the board and the display with some simple program, like dot-by-dot writing, and everything works fine. The displays have no dead dot either.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1800\" height=\"810\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/56ce97ce4caee4b58bd6c61ccd44e8a7.jpg\" alt=\"\" class=\"wp-image-1154\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/56ce97ce4caee4b58bd6c61ccd44e8a7.jpg 1800w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/56ce97ce4caee4b58bd6c61ccd44e8a7-1200x540.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/56ce97ce4caee4b58bd6c61ccd44e8a7-512x230.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/56ce97ce4caee4b58bd6c61ccd44e8a7-768x346.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/56ce97ce4caee4b58bd6c61ccd44e8a7-1536x691.jpg 1536w\" sizes=\"auto, (max-width: 1800px) 100vw, 1800px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2400\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c.jpg\" alt=\"\" class=\"wp-image-1155\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c.jpg 2400w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c-1200x540.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c-1920x864.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c-512x230.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c-768x346.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c-1536x691.jpg 1536w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/b809d02b61f1bf8e2a91ccc83327ab0c-2048x922.jpg 2048w\" sizes=\"auto, (max-width: 2400px) 100vw, 2400px\" \/><\/figure>\n\n\n\n<h3 id=\"software\" class=\"wp-block-heading\">Software<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I used Arduino IDE to write the firmware for the controller board. I initially was deciding between Adafruit GFX, LVGL and U8g2. I finally set the target to make a custom driver for this display for Adafruit GFX as it&#8217;s lightweight, versatile and simply being used a lot.<\/p>\n\n\n\n<h4 id=\"display-arrangement\" class=\"wp-block-heading\">Display arrangement<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The actual displays are 5x7x15, with about one pixel spacing between each character. So I set the display area of each character to (5+1)x(7+1), which can simplify a lot of things, as the built-in display font in GFX is 5&#215;8 in size and 1 pixel spacing. When writing the pixels, every 6th column is discarded. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The driver class takes a parameter of display numbers. If initialized with more than 1 display, the displays are arranged vertically. When writing the pixels, every 8th row is discarded.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"402\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-8.png\" alt=\"\" class=\"wp-image-1151\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-8.png 708w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/image-8-512x291.png 512w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n<\/div>\n\n\n<h4 id=\"pixel-buffering\" class=\"wp-block-heading\">Pixel Buffering<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In the original patent the display is refreshed pixel by pixel, suggesting some kind of single buffering (or no buffering). I implemented both single buffering and double buffering in the driver class. As this display has no memory, the graphics memory need to be on the controller side. Double buffered refreshing is usually significantly faster than single buffer, as we can compare the content to display next and what&#8217;s on the display, and only change the dots that need to be flipped. For flip-dot display this is very important as the refresh speed is so slow (~1ms per pixel).<\/p>\n\n\n\n<h4 id=\"font\" class=\"wp-block-heading\">Font<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The Adafruit GFX built-in font is actually 5&#215;8. for the lower case alphabets I had to make some modification to make them appear complete in the flip-dot display.<\/p>\n\n\n\n<h2 id=\"current-usage\" class=\"wp-block-heading\">Current Usage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m currently using the side display as a clock. However it&#8217;s a bit too noisy. I may fix the larger front display on the wall and use that to display stuff that need more updates. The larger display is actually quieter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Other things can be displayed, like weather forecast, 3D printing status, news feed, etc. It&#8217;s just some software coding, all the infrastructures are already there.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2400\" height=\"1080\" src=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29.jpg\" alt=\"\" class=\"wp-image-1185\" srcset=\"https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29.jpg 2400w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29-1200x540.jpg 1200w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29-1920x864.jpg 1920w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29-512x230.jpg 512w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29-768x346.jpg 768w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29-1536x691.jpg 1536w, https:\/\/www.ddzheng.cc\/wp-content\/uploads\/2026\/01\/\u5fae\u4fe1\u56fe\u7247_20260106003403_33_29-2048x922.jpg 2048w\" sizes=\"auto, (max-width: 2400px) 100vw, 2400px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Reverse-engineering and new controller board for Gulton Luminator MAX flip-dot display<\/p>\n","protected":false},"author":1,"featured_media":1186,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[7,23,14,10],"class_list":["post-1113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-hw","tag-pcb","tag-software","tag-writeup"],"_links":{"self":[{"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/posts\/1113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1113"}],"version-history":[{"count":13,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/posts\/1113\/revisions"}],"predecessor-version":[{"id":1221,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/posts\/1113\/revisions\/1221"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=\/wp\/v2\/media\/1186"}],"wp:attachment":[{"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ddzheng.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}