{"id":798,"date":"2020-05-31T13:21:29","date_gmt":"2020-05-31T13:21:29","guid":{"rendered":"https:\/\/www.adrian-smith31.co.uk\/blog\/?p=798"},"modified":"2020-11-27T17:32:06","modified_gmt":"2020-11-27T17:32:06","slug":"using-arduino-to-control-display-module-salvaged-from-led-sign","status":"publish","type":"post","link":"https:\/\/www.adrian-smith31.co.uk\/blog\/2020\/05\/using-arduino-to-control-display-module-salvaged-from-led-sign\/","title":{"rendered":"Using Arduino to control display module salvaged from LED sign."},"content":{"rendered":"<p>I came across someone selling parts from a large LED sign on <a href=\"https:\/\/www.ebay.co.uk\/itm\/LED-Dot-Matrix-35-5x7-x12-segment-data-display-module-circuit-control-board\/293388901145\" target=\"_blank\" rel=\"noopener noreferrer\">ebay<\/a> which by doing some research came from a Data Display LED board originally used for movie name, showtimes and price information display in a cinema lobby. Their part number could be DL110 as that&#8217;s the only number I can find on the board. The module I got consists of 12 5&#215;7 LED matrix modules with the shift registers and row driver circuitry so it can be directly interfaced to a microcontroller. Looking at the date codes on the IC&#8217;s this thing dates from 1997 \/ 1998 so is over 20 years old and certainly not something you can buy anymore. Even then it would be a custom part. This was really bought for something to mess around with whilst in lockdown and I do have a possible use for it as a sign to put in the rear window of a car to inform other road users of their driving skills (or lack of)&#8230; <em>don&#8217;t hog the middle lane you dumbass<\/em> lol. \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-805 alignleft\" src=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-300x124.jpg\" alt=\"\" width=\"300\" height=\"124\" srcset=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-300x124.jpg 300w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-1024x424.jpg 1024w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-768x318.jpg 768w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-1536x637.jpg 1536w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-600x249.jpg 600w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357-1040x431.jpg 1040w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/MVIMG_20200530_171357.jpg 1795w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>I obviously didn&#8217;t have a datasheet but reverse engineering the module by obtaining datasheets for the chips used on the module was fairly easy. The data comes in via a 14 pin connector and goes through buffers then to the row and column drivers. There is another connector for daisy chaining to the next module. I found that the 7 row drive signals come in then go through a 74HC373 latch which was being used as a buffer as it&#8217;s relevant enable pins where permanently tied high \/ low as required. The output enable \/ latch, clock and data are buffered by AND gates with the two AND inputs tied together. Seems strange how they did this as a schmitt trigger would have sufficed instead. The row drive signals then go on to a mosfet \/ power transistor driver chip and then finally to the row drive BD436 transistors whilst the rest of the signals go on to the column shift registers.<\/p>\n<p><!--more--><\/p>\n<p>On the off chance that you are reading this and have bought one of the other modules from the <a href=\"https:\/\/www.ebay.co.uk\/usr\/short-stump?_trksid=p2047675.l2559\">ebay seller<\/a> I will list the pin connections below. The pinout is looking at the front of the board with the input connector at the top left with the pin bottoms visible. I&#8217;ve numbered it so that pin 1 is lowest left and 14 is upper left so that it follows the same pin numbering of the IC&#8217;s on the board.<\/p>\n<p>The connections are:-<\/p>\n<p>1= GND, 2= column data, 3= 0 to -9V (brightness, works just fine tied to GND) 4= clock signal return to logic, not used here, 5= no connection, 6= column OE \/ latch, 7= column clock, 8 to 14 = row address pin 8 = D6, 14 =\u00a0 D0. Power is supplied by a 2 pin connector on the right hand side of the board. This must be regulated 5V at at least 3 amps.<\/p>\n<p><a href=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-807 alignleft\" src=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-300x134.jpg\" alt=\"\" width=\"300\" height=\"134\" srcset=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-300x134.jpg 300w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-1024x459.jpg 1024w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-768x344.jpg 768w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-1536x688.jpg 1536w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-600x269.jpg 600w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035-1040x466.jpg 1040w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200505_130035.jpg 1743w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>I haven&#8217;t done a schematic but I will try and describe what I did to get this to work. The original code used shiftout to drive the columns and direct addressing for the row scanning using 7 arduino pins. I modified it so that the column input signals are driven by the Arduino&#8217;s SPI interface ( pins 10, 11 &amp; 13) whilst I used a 74HC595 as a row address selector with the relevant address line being sent to the &#8216;595 serially on pins 2,3 &amp; 7. The 74HC595&#8217;s output pins used are D1-D7 with D0 unused, this is because the code was originally designed for 8&#215;8 modules where I&#8217;m using 5&#215;7 instead. I used shiftout to select the row addresses as speed isn&#8217;t really required here. Using SPI for columns improved the brightness and the flickering whilst scrolling. Also note that the 74HC595 requires that it&#8217;s OE pin is connected to GND and it&#8217;s MR (SRCLR) pin to 5V. Depending on what brand of 74HC595 chip you buy each manufacturer calls the input pins something different. E.g STCP (strobe clock pulse) and SER (serial) so you would have to check the datasheets accordingly. If your characters appear upside down then you have connections D1 through D7 reversed.<\/p>\n<p><a href=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-806 alignright\" src=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-300x150.jpg\" alt=\"\" width=\"300\" height=\"150\" srcset=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-300x150.jpg 300w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-1024x513.jpg 1024w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-768x385.jpg 768w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-1536x769.jpg 1536w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-600x301.jpg 600w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401-1040x521.jpg 1040w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200518_200401.jpg 1795w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>All that was required was to load the firmware and test. I did come across one problem where the row data has to have it&#8217;s logic inverted, in other words to turn on a row you send logic 0 and to turn it off you send logic 1. This is because the row drivers use PNP transistors. This is easily done in the code by adding the operand ^0xFF to swap any logic 1 with 0 and vice versa. The image on the right shows what the display will look like if the row address isn&#8217;t inverted. I further modified the test code to add a serial menu where you can upload a message to the display and it is stored in EEPROM. I also left space on the PCB to add further components such as an RTC module if I decided to use this project for something else.<\/p>\n<p>On a final note, in the photos the LED modules appear to be orange. In fact they are bright red and the orange look is just how they appear on my camera. Also it&#8217;s worth mentioning this needs 5V at 3.5A if all LED&#8217;s are lit however when scrolling a message the average current consumption is 600mA. These are old LED modules and are not very power efficient. The MIC5821 driver shift registers do get fairly warm. I&#8217;ve done a brief youtube video below if you want to take a look.<\/p>\n<p><a href=\"https:\/\/www.ebay.co.uk\/itm\/LED-Dot-Matrix-35-5x7-x12-segment-data-display-module-circuit-control-board\/293388901145\" target=\"_blank\" rel=\"noopener noreferrer\">Ebay auction these were bought from\u00a0<\/a><\/p>\n<p><a href=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/LED_Matrix_7x60.zip\" target=\"_blank\" rel=\"noopener noreferrer\">Code download here V1.0<\/a><\/p>\n\n<div class=\"youtube-embed\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\">\n\t<meta itemprop=\"url\" content=\"https:\/\/www.youtube.com\/v\/o4WCmX7btBQ\" \/>\n\t<meta itemprop=\"name\" content=\"Using Arduino to control display module salvaged from LED sign.\" \/>\n\t<meta itemprop=\"description\" content=\"Using Arduino to control display module salvaged from LED sign.\" \/>\n\t<meta itemprop=\"uploadDate\" content=\"2020-05-31T13:21:29+00:00\" \/>\n\t<meta itemprop=\"thumbnailUrl\" content=\"https:\/\/i.ytimg.com\/vi\/o4WCmX7btBQ\/default.jpg\" \/>\n\t<meta itemprop=\"embedUrl\" content=\"https:\/\/www.youtube.com\/embed\/o4WCmX7btBQ\" \/>\n\t<meta itemprop=\"height\" content=\"340\" \/>\n\t<meta itemprop=\"width\" content=\"560\" \/>\n\t<iframe loading=\"lazy\" style=\"border: 0;\" class=\"youtube-player\" width=\"560\" height=\"340\" src=\"https:\/\/www.youtube.com\/embed\/o4WCmX7btBQ\" allowfullscreen><\/iframe>\n<\/div>\n\n<p>The completed project:-<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-808 alignleft\" src=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-300x123.jpg\" alt=\"\" width=\"300\" height=\"123\" srcset=\"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-300x123.jpg 300w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-1024x419.jpg 1024w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-768x314.jpg 768w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-1536x628.jpg 1536w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-600x245.jpg 600w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222-1040x426.jpg 1040w, https:\/\/www.adrian-smith31.co.uk\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200530_171222.jpg 1833w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I came across someone selling parts from a large LED sign on ebay which by doing some research came from a Data Display LED board originally used for movie name, showtimes and price information display in a cinema lobby. Their part number could be DL110 as that&#8217;s the only number I can find on the [&hellip;]<\/p>\n","protected":false},"author":179,"featured_media":805,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Using Arduino to control display module salvaged from LED sign. - Adrian's electronics blog","description":"I came across someone selling parts from a large LED sign on ebay which by doing some research came from a Data Display LED board originally used for movie name"},"footnotes":""},"categories":[4,5],"tags":[],"class_list":["post-798","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microcontrollers","category-projects"],"_links":{"self":[{"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/posts\/798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/users\/179"}],"replies":[{"embeddable":true,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=798"}],"version-history":[{"count":16,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/posts\/798\/revisions"}],"predecessor-version":[{"id":819,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/posts\/798\/revisions\/819"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/media\/805"}],"wp:attachment":[{"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.adrian-smith31.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}