{"id":6644,"date":"2013-01-30T12:10:30","date_gmt":"2013-01-30T17:10:30","guid":{"rendered":"http:\/\/embedded-lab.com\/blog\/?p=6644"},"modified":"2013-01-30T12:10:51","modified_gmt":"2013-01-30T17:10:51","slug":"day-4-eight-digit-seven-segments-led-with-max7219","status":"publish","type":"post","link":"https:\/\/embedded-lab.com\/blog\/day-4-eight-digit-seven-segments-led-with-max7219\/","title":{"rendered":"Netduino Day 4 : Eight Digit Seven Segment LED Display with MAX7219"},"content":{"rendered":"<p>In\u00a0<strong><a href=\"http:\/\/embedded-lab.com\/blog\/?p=6395\">Day 3 tutorial<\/a>,<\/strong>\u00a0we learnt basics of seven segment LED displays and discussed about a time-division multiplexing technique that reduces the number of required microcontroller I\/O pins to drive multiple seven segment LED displays. Today\u00a0we will move a step further and discuss about a serial interface (SPI) for driving 8 seven segment LED displays. The technique uses MAXIM&#8217;s MAX7219 LED driver chip that allows you to control 8 (or more in cascade configuration) common-cathode seven segment LED displays with only 3 I\/O pins of Netduino. For illustrative purpose, we will use our <strong><a href=\"http:\/\/embedded-lab.com\/blog\/?p=5310\">8-digit serial seven segment LED<\/a>\u00a0<\/strong>(8DSSSLED) display module here.\u00a0The benefit of using MAX7219 is, it will do all the hard work of multiplexing operation and let the microcontroller do more important jobs. It supports SPI serial communication protocol.<\/p>\n<div id=\"attachment_6645\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/?attachment_id=6645\" rel=\"attachment wp-att-6645\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6645\" class=\"size-full wp-image-6645\" title=\"Day4_SevenSegment_Top\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/Day4_SevenSegment_Top.jpg\" alt=\"\" width=\"550\" height=\"330\" \/><\/a><p id=\"caption-attachment-6645\" class=\"wp-caption-text\">Netduino controlling 8 Digit Serial Seven Segments LED using MAX7219<\/p><\/div>\n<p><!--more--><\/p>\n<p><span style=\"font-size: 1.5em; line-height: 19px;\">Circuit Setup and Theory<\/span><\/p>\n<p>The SPI communication method is the heart of the project besides the codes that controls what to display in the seven segments LED.\u00a0 In our setup, Netduino Plus acts as a SPI Master device and 8DSSSLED as a Slave. Among the several digital I\/O pins of Netduino, Pins 11, 12 and 13 are designed to support the SPI Bus communication. Pin 12 is Master In Slave Out (MISO), pin 11 is Master Out Slave In (MOSI), and pin 13 serves as the master clock. In our project the Netduino Plus does not receive any data back from the slave device (MAX7219), so the MISO pin is unused. The MOSI pin (11) of Netduino goes to DIN of 8DSSSLED and pin 13 drives the CLK signal of MAX7219. The LOAD signal (which is a Chip Select pin of MAX7219) of the 8DSSSLED board can be connected to any Digital I\/O of a microcontroller. In our case we have specified this to pin 10 of Netduino.<\/p>\n<p>Since the circuit diagram and all the necessary details of 8DSSSLED is well explain <a href=\"http:\/\/embedded-lab.com\/blog\/?p=5310\">here<\/a> so allow me not to reinvent the wheel.<\/p>\n<div id=\"attachment_6678\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/?attachment_id=6678\" rel=\"attachment wp-att-6678\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6678\" class=\"size-full wp-image-6678\" title=\"Day 4 CircuitDiagram Eight Digit Serial Seven Segments LED\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/Day-4-CircuitDiagram-Eight-Digit-Serial-Seven-Segments-LED1.png\" alt=\"\" width=\"550\" height=\"297\" \/><\/a><p id=\"caption-attachment-6678\" class=\"wp-caption-text\">Circuit Diagram - Eight Digit Serial Seven Segments LED and Netduino<\/p><\/div>\n<h2>C#.NET Program<\/h2>\n<p>The program basically focused around the MAX7219 drive then tailored towards the 8DSSSLED. The .NET Micro FramWork provides a SPI class so we don\u2019t have to worry too much about working with SPI. We will learn more about the SPI in a moment. Let\u2019s look at the overview of this class. All the methods and properties can be seen in the picture below. The MAX7219 class, most of the time, disables the BCDDecode mode and hence, controls individual segments to display alphanumeric characters.<\/p>\n<div id=\"attachment_6647\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/?attachment_id=6647\" rel=\"attachment wp-att-6647\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6647\" class=\"size-full wp-image-6647\" title=\"Max7219_Driver\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/Max7219_Driver.png\" alt=\"\" width=\"550\" height=\"541\" \/><\/a><p id=\"caption-attachment-6647\" class=\"wp-caption-text\">Overview of MAX7219 Driver<\/p><\/div>\n<p>In order to use the <em>Max7219<\/em> class we first need to create an instance of this class and directly call the Display related methods to show the test\/numbers in the Seven Segments LED. In the example below we are also setting intensity, clearing the display, setting the textDirection to LeftToRight.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\">max <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> Max7219<span style=\"color: #008000;\">&#40;<\/span>Pins<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">GPIO_PIN_D10<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SetIntensity<\/span><span style=\"color: #008000;\">&#40;<\/span>Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Max<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScorllFirstHalf<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;i_am on first line.&quot;<\/span>, <span style=\"color: #FF0000;\">1000<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>We will talk about utilizing the <em>Max7219<\/em> in output section so let\u2019s look at the <em>Max7219<\/em> class. Following section shows the constructor of the class. Notice the argument does not require any of the <em>SPI<\/em> pins rather it asks for the data pin which is I\/O 10 in our case. You can see we first defined the <em>SPI<\/em> <em>Configuration<\/em> and then providing that to the new <em>SPI<\/em> instance. Then it jumps to <em>Initialize()<\/em> method.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\"><span style=\"color: #008080; font-style: italic;\">\/\/\/ &lt;summary&gt;<\/span>\n<span style=\"color: #008080; font-style: italic;\">\/\/\/ Netduino Pin:<\/span>\n<span style=\"color: #008080; font-style: italic;\">\/\/\/ D11 - SPI MOSI --&gt; DIn of Board<\/span>\n<span style=\"color: #008080; font-style: italic;\">\/\/\/ D12 - None<\/span>\n<span style=\"color: #008080; font-style: italic;\">\/\/\/ D13 - SPI CLK --&gt; CLK of Board         <\/span>\n<span style=\"color: #008080; font-style: italic;\">\/\/\/ &lt;\/summary&gt;<\/span>\n<span style=\"color: #008080; font-style: italic;\">\/\/\/ &lt;param name=&quot;chipSelect&quot;&gt;Load pin of Board&lt;\/param&gt;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> Max7219<span style=\"color: #008000;\">&#40;<\/span>Cpu<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Pin<\/span> chipSelect<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    SPI<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Configuration<\/span> spiConfiguration <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> SPI<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Configuration<\/span><span style=\"color: #008000;\">&#40;<\/span>chipSelect, <span style=\"color: #0600FF; font-weight: bold;\">false<\/span>, <span style=\"color: #FF0000;\">0<\/span>, <span style=\"color: #FF0000;\">0<\/span>, <span style=\"color: #0600FF; font-weight: bold;\">false<\/span>, <span style=\"color: #0600FF; font-weight: bold;\">true<\/span>, <span style=\"color: #FF0000;\">2000<\/span>, SPI<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SPI_module<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SPI1<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    Spi <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> SPI<span style=\"color: #008000;\">&#40;<\/span>spiConfiguration<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    Initialize<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>The Initialize method basically initializes some fields and then creates a <em>Hashtable<\/em> for the supported characters. It calls some other methods like EnableDigits, DisplayTest and ShutDown to make the Seven Segments ready to take the input. As these methods are defined public, we can call these outside the class when needed.<\/p>\n<p>Let\u2019s look at the basic methods that control the Max7219 IC.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\"><span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> Initialize<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    segmentsOneAtaTime <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">&#123;<\/span> 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00 <span style=\"color: #008000;\">&#125;<\/span><span style=\"color: #008000;\">;<\/span>\n    segmentsPbarAscending1By1 <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">&#123;<\/span> 0x00, 0x40, 0x60, 0x70, 0x78, 0x7C, 0x7E <span style=\"color: #008000;\">&#125;<\/span><span style=\"color: #008000;\">;<\/span>\n    segmentsPbarDescending <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">&#123;<\/span> 0x3E, 0x1E, 0x0E, 0x06, 0x02, 0x00 <span style=\"color: #008000;\">&#125;<\/span><span style=\"color: #008000;\">;<\/span>\n    segmentsPbarAscendingAll <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">&#123;<\/span> 0x7E, 0x5E, 0x6E, 0x76, 0x7A, 0x7C, 0x3E, 0x7E <span style=\"color: #008000;\">&#125;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n&nbsp;\n    CharacterAddressMap <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> Hashtable<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;0&quot;<\/span>, 0x7E<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;1&quot;<\/span>, 0x30<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;2&quot;<\/span>, 0x6D<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;3&quot;<\/span>, 0x79<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;4&quot;<\/span>, 0x33<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;5&quot;<\/span>, 0x5B<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;6&quot;<\/span>, 0x5F<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;7&quot;<\/span>, 0x70<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;8&quot;<\/span>, 0x7F<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;9&quot;<\/span>, 0x7B<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;A&quot;<\/span>, 0x77<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;B&quot;<\/span>, 0x1F<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;C&quot;<\/span>, 0x4E<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;D&quot;<\/span>, 0x3D<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;E&quot;<\/span>, 0x4F<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;F&quot;<\/span>, 0x47<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;G&quot;<\/span>, 0x5E<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;H&quot;<\/span>, 0x37<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;I&quot;<\/span>, 0x30<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;J&quot;<\/span>, 0x3C<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;K&quot;<\/span>, 0x2F<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;L&quot;<\/span>, 0x0E<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;M&quot;<\/span>, 0x55<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;N&quot;<\/span>, 0x15<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;O&quot;<\/span>, 0x1D<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;P&quot;<\/span>, 0x67<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;Q&quot;<\/span>, 0x73<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;R&quot;<\/span>, 0x05<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;S&quot;<\/span>, 0x5B<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;T&quot;<\/span>, 0x0F<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;U&quot;<\/span>, 0x3E<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;V&quot;<\/span>, 0x1C<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;W&quot;<\/span>, 0x5C<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;X&quot;<\/span>, 0x49<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;Y&quot;<\/span>, 0x3B<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;Z&quot;<\/span>, 0x6D<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot; &quot;<\/span>, 0x00<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span> <span style=\"color: #008080; font-style: italic;\">\/\/ white space<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;.&quot;<\/span>, 0x80<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;-&quot;<\/span>, 0x01<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0600FF; font-weight: bold;\">Add<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;_&quot;<\/span>, 0x08<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    SpiWriteBuffer <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> <span style=\"color: #6666cc; font-weight: bold;\">ushort<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#93;<\/span><span style=\"color: #008000;\">;<\/span>\n    EnableDigits<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">8<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    DisplayTest<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">false<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    ShutDown<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">false<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    Clear<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> Clear<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> numberOfDigits <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">8<\/span><span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;=<\/span> numberOfDigits<span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n        Write<span style=\"color: #008000;\">&#40;<\/span>i, 0x00<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> SetIntensity<span style=\"color: #008000;\">&#40;<\/span>Intensity intensity<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>RegisterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span>, <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>intensity<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> SetBCDDecodeMode<span style=\"color: #008000;\">&#40;<\/span>BCDDecodeMode decodeMode<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>RegisterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DecodeMode<\/span>, <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>decodeMode<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> DisplayTest<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">bool<\/span> enable<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span>enable<span style=\"color: #008000;\">&#41;<\/span>\n        Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>RegisterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayTest<\/span>, 0x01<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">else<\/span>\n        Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>RegisterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayTest<\/span>, 0x00<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> ShutDown<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">bool<\/span> shutDown<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span>shutDown<span style=\"color: #008000;\">&#41;<\/span>\n        Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>RegisterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Shutdown<\/span>, 0x00<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">else<\/span>\n        Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>RegisterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Shutdown<\/span>, 0x01<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> Write<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> register, <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    SpiWriteBuffer<span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">ushort<\/span><span style=\"color: #008000;\">&#41;<\/span>register<span style=\"color: #008000;\">;<\/span>\n    SpiWriteBuffer<span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">&lt;&lt;=<\/span> <span style=\"color: #FF0000;\">8<\/span><span style=\"color: #008000;\">;<\/span>\n    SpiWriteBuffer<span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#93;<\/span> <span style=\"color: #008000;\">|=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">;<\/span>\n    Spi<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Write<\/span><span style=\"color: #008000;\">&#40;<\/span>SpiWriteBuffer<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    Debug<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Print<\/span><span style=\"color: #008000;\">&#40;<\/span>SpiWriteBuffer<span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#93;<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToString<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>Now, let\u2019s look the methods that controls the Display of the LEDs.<br \/>\nThe Blink method, simply shuts the unit down for the given time and it does that for given number of time.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\"><span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> Blink<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> times, <span style=\"color: #6666cc; font-weight: bold;\">int<\/span> delay<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> times<span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        ShutDown<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        ShutDown<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">false<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>The main method that is responsible to show the information in the 8DSSSLED is the <em>Display<\/em> method where given string is looped for each character in the string then it calls the <em>Write<\/em> method through _<em>Display<\/em> method.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\"><span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> Display<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">string<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span>, <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> startDigit<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">char<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #008000;\">&#93;<\/span> texts <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToCharArray<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">string<\/span> displayText<span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> texts<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span><span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        displayText <span style=\"color: #008000;\">=<\/span> texts<span style=\"color: #008000;\">&#91;<\/span>i<span style=\"color: #008000;\">&#93;<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToString<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToUpper<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span>CharacterAddressMap<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Contains<\/span><span style=\"color: #008000;\">&#40;<\/span>displayText<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span>\n            _Display<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span>startDigit, Convert<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToByte<\/span><span style=\"color: #008000;\">&#40;<\/span>CharacterAddressMap<span style=\"color: #008000;\">&#91;<\/span>displayText<span style=\"color: #008000;\">&#93;<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToString<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n        <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span>LeftToRight<span style=\"color: #008000;\">&#41;<\/span>\n            startDigit <span style=\"color: #008000;\">-=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">else<\/span>\n            startDigit <span style=\"color: #008000;\">+=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>The auto scrolling functionality is added on <em>DisplayAutoScroll<\/em>, <em>DisplayAutoScrollFirstHalf<\/em> and <em>DisplayAutoScrollSecondHalf<\/em> methods. <em>DisplayAutoScroll<\/em> uses all 8 digits of the Seven Segments LED whereas <em>DisplayAutoScrollFirstHalf<\/em>, and <em>DisplayAutoScrollSecondHalf<\/em> uses only first four and last four digits respectively. The first argument is the information to display and second delay argument to hold the display for that long until if scrolls to another character.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\"><span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> DisplayAutoScroll<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">string<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span>, <span style=\"color: #6666cc; font-weight: bold;\">int<\/span> delay<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    SetBCDDecodeMode<span style=\"color: #008000;\">&#40;<\/span>BCDDecodeMode<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Disable<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">string<\/span> text<span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> startDigit <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">8<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">!<\/span>LeftToRight<span style=\"color: #008000;\">&#41;<\/span> startDigit <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> <span style=\"color: #000000;\">System<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Math<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Max<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span> <span style=\"color: #008000;\">-<\/span> <span style=\"color: #FF0000;\">8<\/span> <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span>, <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        text <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Substring<\/span><span style=\"color: #008000;\">&#40;<\/span>i, <span style=\"color: #000000;\">System<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Math<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Min<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">8<\/span>, <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        Display<span style=\"color: #008000;\">&#40;<\/span>text, startDigit<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n        Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> DisplayAutoScorllFirstHalf<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">string<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span>, <span style=\"color: #6666cc; font-weight: bold;\">int<\/span> delay<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    SetBCDDecodeMode<span style=\"color: #008000;\">&#40;<\/span>BCDDecodeMode<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Disable<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">string<\/span> text<span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> startDigit <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">4<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">!<\/span>LeftToRight<span style=\"color: #008000;\">&#41;<\/span> startDigit <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> <span style=\"color: #000000;\">System<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Math<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Max<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span> <span style=\"color: #008000;\">-<\/span> <span style=\"color: #FF0000;\">4<\/span> <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span>, <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        text <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Substring<\/span><span style=\"color: #008000;\">&#40;<\/span>i, <span style=\"color: #000000;\">System<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Math<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Min<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">4<\/span>, <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        Display<span style=\"color: #008000;\">&#40;<\/span>text, startDigit<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n        Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> DisplayAutoScorllSecondHalf<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">string<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span>, <span style=\"color: #6666cc; font-weight: bold;\">int<\/span> delay<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    SetBCDDecodeMode<span style=\"color: #008000;\">&#40;<\/span>BCDDecodeMode<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Disable<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">string<\/span> text<span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> startDigit <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">8<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">!<\/span>LeftToRight<span style=\"color: #008000;\">&#41;<\/span> startDigit <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">5<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> <span style=\"color: #000000;\">System<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Math<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Max<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span> <span style=\"color: #008000;\">-<\/span> <span style=\"color: #FF0000;\">4<\/span> <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span>, <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        text <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Substring<\/span><span style=\"color: #008000;\">&#40;<\/span>i, <span style=\"color: #000000;\">System<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Math<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Min<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">4<\/span>, <span style=\"color: #0600FF; font-weight: bold;\">value<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n        Display<span style=\"color: #008000;\">&#40;<\/span>text, startDigit<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n        Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>The <em>Max7219<\/em> class also provides some nice way to show a busy sign in the seven segments LED. It supports four major methods which can be doubled by setting the direction (clockwise\/counter clockwise).<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\"><span style=\"color: #0600FF; font-weight: bold;\">public<\/span> <span style=\"color: #6666cc; font-weight: bold;\">void<\/span> DisplayBusy<span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">bool<\/span> clockwise, <span style=\"color: #6666cc; font-weight: bold;\">int<\/span> delay, BusyStyle style<span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#91;<\/span><span style=\"color: #008000;\">&#93;<\/span> segments<span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">switch<\/span> <span style=\"color: #008000;\">&#40;<\/span>style<span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">case<\/span> BusyStyle<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">OneAtaTime<\/span><span style=\"color: #008000;\">:<\/span>\n            segments <span style=\"color: #008000;\">=<\/span> segmentsOneAtaTime<span style=\"color: #008000;\">;<\/span>\n            <span style=\"color: #0600FF; font-weight: bold;\">break<\/span><span style=\"color: #008000;\">;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">case<\/span> BusyStyle<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarAscending1By1<\/span><span style=\"color: #008000;\">:<\/span>\n            segments <span style=\"color: #008000;\">=<\/span> segmentsPbarAscending1By1<span style=\"color: #008000;\">;<\/span>\n            <span style=\"color: #0600FF; font-weight: bold;\">break<\/span><span style=\"color: #008000;\">;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">case<\/span> BusyStyle<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarDescending<\/span><span style=\"color: #008000;\">:<\/span>\n            segments <span style=\"color: #008000;\">=<\/span> segmentsPbarDescending<span style=\"color: #008000;\">;<\/span>\n            <span style=\"color: #0600FF; font-weight: bold;\">break<\/span><span style=\"color: #008000;\">;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">case<\/span> BusyStyle<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarAscendingAll<\/span><span style=\"color: #008000;\">:<\/span>\n            segments <span style=\"color: #008000;\">=<\/span> segmentsPbarAscendingAll<span style=\"color: #008000;\">;<\/span>\n&nbsp;\n            <span style=\"color: #0600FF; font-weight: bold;\">break<\/span><span style=\"color: #008000;\">;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">default<\/span><span style=\"color: #008000;\">:<\/span>\n            segments <span style=\"color: #008000;\">=<\/span> segmentsOneAtaTime<span style=\"color: #008000;\">;<\/span>\n            <span style=\"color: #0600FF; font-weight: bold;\">break<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n&nbsp;\n&nbsp;\n    SetBCDDecodeMode<span style=\"color: #008000;\">&#40;<\/span>BCDDecodeMode<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Disable<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    <span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> digits <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n&nbsp;\n    <span style=\"color: #0600FF; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">&#40;<\/span>clockwise<span style=\"color: #008000;\">&#41;<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> <span style=\"color: #FF0000;\">8<\/span> <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n        <span style=\"color: #008000;\">&#123;<\/span>\n            <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> j <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> j <span style=\"color: #008000;\">&lt;<\/span> segments<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span><span style=\"color: #008000;\">;<\/span> j<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n            <span style=\"color: #008000;\">&#123;<\/span>\n                digits <span style=\"color: #008000;\">=<\/span> LeftToRight <span style=\"color: #008000;\">?<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">8<\/span> <span style=\"color: #008000;\">-<\/span> i <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span> <span style=\"color: #008000;\">:<\/span> i<span style=\"color: #008000;\">;<\/span>\n                _Display<span style=\"color: #008000;\">&#40;<\/span>digits, segments<span style=\"color: #008000;\">&#91;<\/span>j<span style=\"color: #008000;\">&#93;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n                Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n            <span style=\"color: #008000;\">&#125;<\/span>\n        <span style=\"color: #008000;\">&#125;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n    <span style=\"color: #0600FF; font-weight: bold;\">else<\/span>\n    <span style=\"color: #008000;\">&#123;<\/span>\n        <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> <span style=\"color: #FF0000;\">8<\/span> <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span> i<span style=\"color: #008000;\">++<\/span><span style=\"color: #008000;\">&#41;<\/span>\n        <span style=\"color: #008000;\">&#123;<\/span>\n            <span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> j <span style=\"color: #008000;\">=<\/span> segments<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Length<\/span> <span style=\"color: #008000;\">-<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">;<\/span> j<span style=\"color: #008000;\">--<\/span> <span style=\"color: #008000;\">&gt;<\/span> <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">;<\/span> <span style=\"color: #008000;\">&#41;<\/span>\n            <span style=\"color: #008000;\">&#123;<\/span>\n                digits <span style=\"color: #008000;\">=<\/span> LeftToRight <span style=\"color: #008000;\">?<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">byte<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">8<\/span> <span style=\"color: #008000;\">-<\/span> i <span style=\"color: #008000;\">+<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span> <span style=\"color: #008000;\">:<\/span> i<span style=\"color: #008000;\">;<\/span>\n                _Display<span style=\"color: #008000;\">&#40;<\/span>digits, segments<span style=\"color: #008000;\">&#91;<\/span>j<span style=\"color: #008000;\">&#93;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n                Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span>delay<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n            <span style=\"color: #008000;\">&#125;<\/span>\n        <span style=\"color: #008000;\">&#125;<\/span>\n    <span style=\"color: #008000;\">&#125;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<h2>Output<\/h2>\n<p>Let\u2019s utilize the <em>Max7219<\/em> class and use it for displaying different results.<\/p>\n<div id=\"attachment_6648\" style=\"width: 560px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/?attachment_id=6648\" rel=\"attachment wp-att-6648\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6648\" class=\"size-full wp-image-6648\" title=\"Day4_SevenSegment_Output\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/12\/Day4_SevenSegment_Output.jpg\" alt=\"\" width=\"550\" height=\"412\" \/><\/a><p id=\"caption-attachment-6648\" class=\"wp-caption-text\">Displaying number and alphabets in 8DSSSLED<\/p><\/div>\n<p>Following example shows the auto scroll functionality on first four digits and then last four digits. The second argument in the method is delay to hold the display for that long.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\">max <span style=\"color: #008000;\">=<\/span> <span style=\"color: #008000;\">new<\/span> Max7219<span style=\"color: #008000;\">&#40;<\/span>Pins<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">GPIO_PIN_D10<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SetIntensity<\/span><span style=\"color: #008000;\">&#40;<\/span>Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Max<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n<span style=\"color: #0600FF; font-weight: bold;\">while<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">OneAtaTime<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Clear<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScorllFirstHalf<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;i_am on first line.&quot;<\/span>, <span style=\"color: #FF0000;\">1000<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">false<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScorllSecondHalf<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;second line here&quot;<\/span>, <span style=\"color: #FF0000;\">1000<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.youtube.com\/embed\/BJ6fez570pY\" frameborder=\"0\" width=\"580\" height=\"436\"><\/iframe><\/p>\n<p>Now let\u2019s use both first four and last four inside a counter loop and also change the brightness\/intensity at the same time.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\">max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #0600FF; font-weight: bold;\">for<\/span> <span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #6666cc; font-weight: bold;\">int<\/span> i <span style=\"color: #008000;\">=<\/span> <span style=\"color: #FF0000;\">1000<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">&lt;<\/span> <span style=\"color: #FF0000;\">1050<\/span><span style=\"color: #008000;\">;<\/span> i <span style=\"color: #008000;\">+=<\/span> <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span>\n<span style=\"color: #008000;\">&#123;<\/span>\n    max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SetIntensity<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span>Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#40;<\/span>i <span style=\"color: #008000;\">%<\/span> <span style=\"color: #FF0000;\">15<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n    max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScorllFirstHalf<\/span><span style=\"color: #008000;\">&#40;<\/span>i<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToString<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span>, <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScorllSecondHalf<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">2000<\/span> <span style=\"color: #008000;\">-<\/span> i<span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ToString<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span>, <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n    Thread<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Sleep<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">200<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n<span style=\"color: #008000;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.youtube.com\/embed\/7jMH6AmRSOA\" frameborder=\"0\" width=\"580\" height=\"436\"><\/iframe><\/p>\n<p>Let\u2019s send a long string to use all digits and change the LeftToRight to true and then to false to see the scrolling effect.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\">max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScroll<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;0123456789abcdefghijklmnopqrstuvwxyz.&quot;<\/span>, <span style=\"color: #FF0000;\">1000<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScroll<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot; --  -- &quot;<\/span>, <span style=\"color: #FF0000;\">0<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Blink<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #FF0000;\">2<\/span>, <span style=\"color: #FF0000;\">200<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">false<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScroll<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;0123456789abcdefghijklmnopqrstuvwxyz.&quot;<\/span>, <span style=\"color: #FF0000;\">1000<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.youtube.com\/embed\/JnwxWXX2nWo\" frameborder=\"0\" width=\"580\" height=\"436\"><\/iframe><\/p>\n<p>As mentioned earlier, the <em>Max7219<\/em> class offers some busy signs, progress bar, so let\u2019s take a look.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"csharp\" style=\"font-family:monospace;\">max<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">LeftToRight<\/span> <span style=\"color: #008000;\">=<\/span> <span style=\"color: #0600FF; font-weight: bold;\">true<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SetIntensity<\/span><span style=\"color: #008000;\">&#40;<\/span>Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Max<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">OneAtaTime<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">false<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">OneAtaTime<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Clear<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarAscending1By1<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Clear<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SetIntensity<\/span><span style=\"color: #008000;\">&#40;<\/span>Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Min<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarAscendingAll<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Clear<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">false<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarAscendingAll<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\n&nbsp;\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Clear<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">SetIntensity<\/span><span style=\"color: #008000;\">&#40;<\/span>Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Intensity<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">Average<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayAutoScroll<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #666666;\">&quot;00000000&quot;<\/span>, <span style=\"color: #FF0000;\">1<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span> <span style=\"color: #008080; font-style: italic;\">\/\/ turn all on<\/span>\nmax<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">DisplayBusy<\/span><span style=\"color: #008000;\">&#40;<\/span><span style=\"color: #0600FF; font-weight: bold;\">true<\/span>, <span style=\"color: #FF0000;\">100<\/span>, Max7219<span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">BusyStyle<\/span><span style=\"color: #008000;\">.<\/span><span style=\"color: #0000FF;\">ProgressBarDescending<\/span><span style=\"color: #008000;\">&#41;<\/span><span style=\"color: #008000;\">;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.youtube.com\/embed\/4jx5-g_PA6M\" frameborder=\"0\" width=\"580\" height=\"436\"><\/iframe><\/p>\n<h2>Downloads<\/h2>\n<p>1) <a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2013\/01\/EmbeddedLab.NetduinoPlus.Day4_.zip\" title=\"EmbeddedLab.NetduinoPlus.Day4\">C#.NET solution (Code) file<\/a>.<\/p>\n<h2>What Next<\/h2>\n<p>In our next tutorial, we will not do any circuitry rather utilize the SD card that Netduino Plus supports. We will learn to write to a text file that resides in an SD card. &lt;Link will be added&gt;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In\u00a0Day 3 tutorial,\u00a0we learnt basics of seven segment LED displays and discussed about a time-division multiplexing technique that reduces the number of required microcontroller I\/O pins to drive multiple seven segment LED displays. Today\u00a0we will move a step further and discuss about a serial interface (SPI) for driving 8 seven segment LED displays. The technique uses MAXIM&#8217;s MAX7219 LED driver chip that allows you to control 8 (or more in cascade configuration) common-cathode seven segment LED displays with only 3 I\/O pins of Netduino. For illustrative purpose, we will use our 8-digit serial seven segment LED\u00a0(8DSSSLED) display module here.\u00a0The benefit<\/p>\n","protected":false},"author":4,"featured_media":6645,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,495],"tags":[538,439,1316,537,236,536],"class_list":["post-6644","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded-lessons","category-netduino","tag-8-digit-seven-segment-led","tag-max7219","tag-netduino","tag-serial-peripheral-interface","tag-seven-segment-led","tag-spi"],"_links":{"self":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/6644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/comments?post=6644"}],"version-history":[{"count":47,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/6644\/revisions"}],"predecessor-version":[{"id":7074,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/6644\/revisions\/7074"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media\/6645"}],"wp:attachment":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media?parent=6644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/categories?post=6644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/tags?post=6644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}