Making a 8×40 LED matrix marquee using shift registers
|
LED matrix displays provide flexibility to display text, graphics, animations, and video, and therefore, they have become a popular mean of displaying information these days. You can see them at gas stations displaying the gas prices, or in the public places displaying information, and alongside highways displaying advertisements on large dot matrix panels. This project is about constructing a mono-color LED matrix display board that consists 320 LEDs arranged in 8 rows and 40 columns. The heart of this project is PIC16F1847 microcontroller which receives data from a PC through a serial port (or USB using an USB-UART interface), and display on the LED matrix with the help of five 74HC595 shift registers.
Theory
If you are not familiar with LED matrices at all, I strongly suggest to read my two experimental tutorials that were posted earlier: Basics of LED matrix display and Scrolling text message on an LED matrix. The first tutorial describes the basic structure of LED matrices and the multiplexing technique of driving them to display static characters. The second tutorial is focussed more on creating animation and demonstrates the concept of displaying a scrolling message on a matrix of 16×8 LEDs. This project is basically a continuation of those two tutorials and I am hopeful it will further improve your understanding of driving a bigger size LED matrix display, both at hardware and software level. The operational part of the project hardware is described in the following section along with the circuit diagram.
Circuit diagrams
Five 8×8 square LED display modules are arranged in a linear fashion to construct an 8-row X 40-column display matrix. The LED display modules I used in this project are NFM-12883AS from Futurlec. They are common-row-cathode type, which means the cathodes of all the LEDs in each individual row are interconnected, and therefore each row pin is supposed to sink currents from eight LEDs in that row. The similar row pins of all 5 modules are further connected together and are fed to the the output sinks of an ULN2803 IC, which consists of 8 Darlington arrays. Now each output pin of ULN2803 is a sink for 40 (=8×5) LEDs in that particular row. Since ULN2803 can sink current up to 500 mA per pin, the current per LED is limited to 500/40 = 12.5 mA.
The anode terminals of LEDs are accessible through column pins. Since we are going to apply row scanning technique (read Scrolling text message on an LED matrix), each column pin needs to source current for only one LED, as only one row is active in that column at a time. The columns are driven by the outputs of a 40-bit serial-in-parallel-out arrangement constructed by cascading five 74HC595 ICs. The 74HC595 device is an 8-bit serial-input and parallel/serial output shift register. The serial output feature allows cascading of multiple 74HC595 devices. From engineering point of view, 74HC595 may not be a good choice as column drivers because they are not meant for sourcing current for LEDs. But several experiments done by people (including me) have shown that they can drive LEDs reasonably bright, and therefore can be used as column drivers in an LED matrix project like this.
The microcontroller used in this project is PIC16F1847 from the enhanced mid-range 8-bit PIC family. It runs at 32 MHz using its internal clock source (with PLL enabled). PORTB provides ground path for individual rows (cathode) through the ULN2803 darlington pair array, whereas RA0, RA1, and RA2 pins are used to control the Data, SH_CP, and ST_CP lines of the cascaded shift registers. Pin 8 and 7 of PIC16F1847 are the default pins for UART communication. They go to the USB-UART module for serial communication with the PC. A serial terminal program running on the PC can be used to send character data to the microcontroller which saves the received information into its internal EEPROM.
I constructed the above circuit on a general purpose perforated prototyping board. You definitely need a bigger one to fit all 5 LED display modules along with other components. I used VECTOR ELECTRONICS 3-hole solder pad circuit board from Newark which is a very good quality 4.5″ x 8.08″ perfboard. An LM7805 IC is used to derive regulated +5V power supply. The power supply circuit is not shown above because it is a very common circuit and I assumed you know it.
The following picture shows the finished LED display board with an USB-UART module plugged in. [A crystal oscillator is also seen in the board but it is not really used. The microcontroller runs at 32MHz using its internal clock source. I first thought I would use an external clock, but later changed my mind but I was lazy to take the crystal off the board.]
Software
The firmware for this project is developed using mikroC Pro for PIC compiler. The program uses an 8×5 byte (=320 bits) array (Buffer[8][5]) to store the display pixel information. Each bit corresponds to one LED. The user can send message from PC to the display board using a serial terminal program. I am using Termite 2.9 program on Windows. The message sent is saved onto the PIC’s internal EEPROM. The first two EEPROM locations are reserved for a data input flag and number of characters in the message. The following sequence describes in detail how the firmware of this project works.
- Power is turned ON. The PIC MCU initializes the ports, and listen to its serial port. It prints a message ‘ARE YOU READY FOR YOUR INPUT? Y/N’ to serial port and the message is displayed on PC serial terminal application window. The user gets 3 seconds to send character ‘Y’. Otherwise, the MCU continues and displays the pre-stored message. The message is displayed scrolling from right towards left. The serial communication between the MCU and PC happens at 115200 bps.
- If the user sends ‘Y’, the MCU waits for incoming data. The MCU reads the incoming bytes until it receives ‘#’, which is an indicator of last character byte sent from the PC. The MCU then writes 1 to EEPROM location 0x00, and saves the number of bytes received at EEPROM location 0x01. The received characters are sequentially saved into sequential EEPROM locations starting from 0x02.
- Next, the MCU loads the character data from EEPROM into RAM and display it on the LED matrix scrolling from right to left. Each character is mapped to its graphic font which is saved in to the program memory as static array. Please read Scrolling text message on an LED matrix tutorial for more detail on LED matrix font.
Download the complete source code and compiled HEX file
Output
|
Sir
I am trying the same project with 8051 . can you send me code along with proteus simulation.
i cant get it to work on proteus. kindly assist me with the simulation file
Sir, I am very much interested with your project. Could you send me the code for Pic16f873A? God bless you.
Hi..
I want to do this project in my acedmic , so please suggasted me about that . can i use pic 18f4550 microcontroller.
Oh, please make it and code it for me and send it to me by Christmas. Oh, and one for my uncle too… 🙂
I just explored your project looking for ideas for my own Arduino project. Not sure that shift registers will be fast enough for me on a 7×10 bargraph display. I might need to latch data. I’ll figure it out, thanks for posting your own work! I’m afraid to post mine, considering all the people who want someone to do everything for them!
With due respect sir, I need a complete coding of a matrix board using a remote control, to control it THANK
Goog day sir, i want to build your 8&40 led scroling text massage, but the ploblem is that i want to replace pic16f1847 to pic18f2550 i dont kown if it can work,bet if it possible plese can you write the source code and the hex file, circuite diagram and i want the led to display somethine like this, text will display and end, the next step will start by flying up and down and pus for some seconds and start nomal. thanks am waiting for your reply thanks
hello sir, I am making a 4 segment counter using 4 shift register 4094 by cascading.so how can I will sent data serially. I have also followed your matrix display shifting c program.plz help me by given data sending mikroc c program.plz plz plz sir.
tm.manik.3e@gmail.com
Hi sir,
I’m working on a 108×24 LED matrix scrolling display.
I used shift registers for the columns and decade counter for the rows.
now I’m having problems with the code, I’m not an expert on coding,
so I’m asking you to help me make it work.
it supposes to work via Bluetooth communication.
please HELP!!
code
const unsigned short Adobe_Heiti_Std_R14x24[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char
0x03, 0xFF, 0xFF, 0x61, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char !
0x06, 0xFE, 0x01, 0x00, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x00, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ”
0x0D, 0x00, 0xC3, 0x00, 0x00, 0xC3, 0x00, 0x00, 0xC3, 0x7F, 0x00, 0xFF, 0x7F, 0xFE, 0xFF, 0x00, 0xFE, 0xC3, 0x00, 0x00, 0xC3, 0x00, 0x00, 0xC3, 0x7F, 0x00, 0xFF, 0x7F, 0xFE, 0xFF, 0x00, 0xFE, 0xC3, 0x00, 0x00, 0xC3, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, // Code for char #
0x0D, 0xC0, 0x03, 0x0C, 0x00, 0xE0, 0x07, 0x1C, 0x00, 0xF0, 0x0F, 0x38, 0x00, 0xF0, 0x1F, 0x38, 0x00, 0xF8, 0x1F, 0xFE, 0x01, 0x38, 0x3E, 0xFE, 0x01, 0x38, 0x3C, 0xFE, 0x01, 0xFF, 0x78, 0x38, 0x00, 0xFF, 0xF8, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x38, 0xF0, 0x1F, 0x00, 0x70, 0xE0, 0x0F, 0x00, 0x60, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $
0x0E, 0xF8, 0x1F, 0xF0, 0x1C, 0x38, 0xF0, 0x0C, 0x30, 0x3C, 0x1C, 0x38, 0x0F, 0xF8, 0x9F, 0x0F, 0xF0, 0xFF, 0x03, 0x00, 0xFC, 0x01, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x07, 0xC0, 0xF3, 0x1F, 0xF0, 0x18, 0x38, 0x7C, 0x0C, 0x30, 0x1F, 0x18, 0x18, 0x0F, 0xF0, 0x0F, // Code for char %
0x0E, 0x00, 0x80, 0x0F, 0xC0, 0xE1, 0x1F, 0xE0, 0xF3, 0x3F, 0xF8, 0xFF, 0xF8, 0xFC, 0x7F, 0xE0, 0x3E, 0x3F, 0xC0, 0x1E, 0x3E, 0xE0, 0x4E, 0x3E, 0xF0, 0x1E, 0x7F, 0x78, 0xFC, 0xFB, 0x3F, 0xF8, 0xE3, 0x1F, 0xF0, 0x81, 0x3F, 0x00, 0xF0, 0xFF, 0x00, 0xF8, 0xF0, // Code for char &
0x06, 0x00, 0x01, 0x00, 0xF0, 0x01, 0x00, 0xFC, 0x01, 0x00, 0xFC, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ‘
0x06, 0x80, 0xFF, 0x01, 0xE0, 0xFF, 0x07, 0xFC, 0xFF, 0x3F, 0x7E, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x03, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char (
0x06, 0x03, 0x00, 0xC0, 0x0F, 0x00, 0xF0, 0xFE, 0x00, 0x7E, 0xFC, 0xFF, 0x3F, 0xE0, 0xFF, 0x07, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char )
0x0B, 0x80, 0x00, 0x00, 0xC8, 0x09, 0x00, 0xD8, 0x1D, 0x00, 0xBC, 0x1E, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x07, 0x00, 0xFC, 0x07, 0x00, 0xBC, 0x1E, 0x00, 0xD8, 0x1D, 0x00, 0xC8, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char *
0x0C, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char +
0x06, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ,
0x0C, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char –
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x78, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x78, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char .
0x0C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0xC0, 0x7F, 0x00, 0xF8, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0xFF, 0x00, 0xF0, 0x1F, 0x00, 0xFE, 0x07, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char /
0x0D, 0xE0, 0xFF, 0x03, 0xF0, 0xFF, 0x07, 0xFC, 0xFF, 0x1F, 0x7E, 0x00, 0x7E, 0x1F, 0x00, 0xF8, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x1F, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0xFC, 0xFF, 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, // Code for char 0
0x09, 0x60, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1
0x0E, 0x00, 0x00, 0xE0, 0x1C, 0x00, 0xF0, 0x1E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x0F, 0x00, 0xFE, 0x07, 0x00, 0xFF, 0x07, 0x80, 0xFF, 0x07, 0xE0, 0xEF, 0x0F, 0xF0, 0xE7, 0x1F, 0xFC, 0xE3, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xE0, 0xFC, 0x3F, 0xE0, 0xF0, 0x0F, 0xE0, // Code for char 2
0x0E, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x78, 0x1F, 0x00, 0xF8, 0x1F, 0x00, 0xF8, 0x0F, 0x18, 0xF0, 0x0F, 0x18, 0xF0, 0x0F, 0x18, 0xF0, 0x0F, 0x3C, 0xF0, 0x1F, 0x7E, 0xF8, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x7F, 0xFC, 0xE7, 0x3F, 0xF8, 0xC3, 0x1F, 0xF0, 0x81, 0x0F, // Code for char 3
0x0E, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x80, 0xEF, 0x00, 0xC0, 0xE3, 0x00, 0xF0, 0xE0, 0x00, 0x38, 0xE0, 0x00, 0x1C, 0xE0, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, // Code for char 4
0x0C, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0xE0, 0x07, 0x07, 0xE0, 0x07, 0x07, 0xF0, 0x07, 0x07, 0xF8, 0x07, 0x0E, 0x7E, 0x07, 0xFE, 0x3F, 0x07, 0xFC, 0x1F, 0x07, 0xF8, 0x0F, 0x07, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5
0x0C, 0x00, 0xFF, 0x0F, 0xC0, 0xFF, 0x1F, 0xE0, 0xFF, 0x7F, 0xF0, 0x3F, 0xFC, 0xFC, 0x1F, 0xF8, 0x7E, 0x0E, 0xF0, 0x3F, 0x06, 0xE0, 0x0F, 0x0E, 0xF0, 0x07, 0x1E, 0x78, 0x07, 0xFC, 0x3F, 0x07, 0xFC, 0x1F, 0x07, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6
0x0C, 0x07, 0x00, 0xF8, 0x07, 0x80, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, 0x07, 0xFF, 0x0F, 0xC7, 0xFF, 0x03, 0xF7, 0x7F, 0x00, 0xFF, 0x1F, 0x00, 0xFF, 0x07, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7
0x0B, 0xF0, 0xC1, 0x0F, 0xFC, 0xE1, 0x3F, 0xFE, 0xF3, 0x7F, 0x1E, 0x7F, 0x7C, 0x0F, 0x3E, 0xF8, 0x07, 0x1C, 0xF0, 0x0F, 0x3E, 0xF8, 0x1E, 0x7F, 0x7C, 0xFE, 0xF3, 0x7F, 0xFC, 0xE1, 0x3F, 0xF0, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8
0x0C, 0x00, 0x00, 0xC0, 0xF0, 0x1F, 0xE0, 0xFC, 0x3F, 0xE0, 0xFC, 0x3F, 0xF0, 0x1F, 0x78, 0xF8, 0x0F, 0x70, 0x78, 0x07, 0x60, 0x3C, 0x0F, 0x70, 0x1E, 0x1F, 0xF8, 0x1F, 0xFC, 0xFF, 0x0F, 0xFC, 0xFF, 0x03, 0xF0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9
0x06, 0xC0, 0x00, 0x03, 0xE0, 0x81, 0x07, 0xE0, 0x81, 0x07, 0xE0, 0x81, 0x07, 0xE0, 0x81, 0x07, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char :
0x07, 0x00, 0x00, 0x70, 0xC0, 0x00, 0x7F, 0xE0, 0x81, 0x7F, 0xE0, 0x81, 0x7F, 0xE0, 0x81, 0x1F, 0xE0, 0x81, 0x07, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ;
0x0E, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x77, 0x00, 0x00, 0x77, 0x00, 0x80, 0xE3, 0x00, 0x80, 0xE3, 0x00, 0xC0, 0xC1, 0x01, 0xC0, 0xC1, 0x01, 0xE0, 0x80, 0x03, 0xE0, 0x80, 0x03, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, // Code for char
0x0A, 0x0C, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0F, 0xE0, 0x38, 0x07, 0xFC, 0x7C, 0x07, 0xFE, 0x7C, 0x0F, 0xFF, 0x38, 0xFF, 0x1F, 0x00, 0xFE, 0x0F, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ?
0x0E, 0xC0, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0x30, 0x00, 0x38, 0x30, 0x00, 0x30, 0x18, 0x7F, 0x30, 0x98, 0xC3, 0x30, 0x98, 0x81, 0x31, 0x98, 0x81, 0x31, 0x98, 0x81, 0x31, 0x98, 0xC3, 0x31, 0x18, 0xFF, 0x30, 0x30, 0xC0, 0x30, 0x60, 0x40, 0x30, 0xC0, 0x7F, 0x30, // Code for char @
0x0E, 0x00, 0x00, 0xFF, 0x00, 0xF8, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x07, 0xFE, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFE, 0xE0, 0x00, 0xF8, 0xFF, 0x07, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0xFF, // Code for char A
0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x1C, 0xE0, 0x07, 0x1C, 0xE0, 0x07, 0x1C, 0xE0, 0x07, 0x3E, 0xF0, 0x0F, 0x7F, 0xF8, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0xFC, 0xF3, 0x3F, 0xF0, 0xC0, 0x0F, 0x00, 0x00, 0x00, // Code for char B
0x0D, 0xC0, 0xFF, 0x03, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, 0x1F, 0xFC, 0x00, 0x7F, 0x3E, 0x00, 0x7E, 0x1F, 0x00, 0xF8, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0x60, 0x00, 0x00, 0x00, // Code for char C
0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0x7E, 0xFC, 0x81, 0x3F, 0xF8, 0xFF, 0x1F, 0xF0, 0xFF, 0x0F, 0xC0, 0xFF, 0x01, // Code for char D
0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x0F, 0x3C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E
0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F
0x0E, 0xE0, 0xFF, 0x07, 0xF0, 0xFF, 0x1F, 0xF8, 0xFF, 0x3F, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0xF8, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0xE0, 0x07, 0x38, 0xE0, 0x07, 0x38, 0xF0, 0x07, 0x38, 0xF8, 0x07, 0xF8, 0xFF, 0x0F, 0xF8, 0x7F, 0x0E, 0xF0, 0x3F, // Code for char G
0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // Code for char H
0x06, 0x03, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I
0x0E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x07, 0x00, 0xF0, 0x07, 0x00, 0xF0, 0x07, 0x00, 0xF8, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, // Code for char J
0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x3F, 0x00, 0xC0, 0x7F, 0x00, 0xE0, 0xFB, 0x01, 0xF0, 0xF1, 0x07, 0xF8, 0xE1, 0x0F, 0xFC, 0xC0, 0xFF, 0x3F, 0x00, 0xFF, 0x1F, 0x00, 0xFE, 0x0F, 0x00, 0xF8, 0x07, 0x00, 0xE0, // Code for char K
0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L
0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0F, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xC0, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0xFC, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // Code for char M
0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x00, 0xE0, 0x1F, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // Code for char N
0x0D, 0xC0, 0xFF, 0x07, 0xF0, 0xFF, 0x1F, 0xF8, 0xFF, 0x3F, 0xFC, 0x81, 0x3F, 0x3E, 0x00, 0x7C, 0x1E, 0x00, 0x78, 0x1E, 0x00, 0x78, 0x1E, 0x00, 0x78, 0x3E, 0x00, 0x7C, 0xFC, 0x81, 0x3F, 0xF8, 0xFF, 0x3F, 0xF0, 0xFF, 0x1F, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0x00, // Code for char O
0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x1F, 0x3C, 0x00, 0x3E, 0x1E, 0x00, 0xFC, 0x1F, 0x00, 0xF8, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, // Code for char P
0x0E, 0xE0, 0xFF, 0x07, 0xF0, 0xFF, 0x1F, 0xFC, 0xFF, 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0x00, 0x7B, 0x07, 0x00, 0x73, 0x07, 0x00, 0x73, 0x07, 0x00, 0x7B, 0x0F, 0x00, 0x7F, 0x3E, 0x00, 0x3F, 0xFC, 0xFF, 0x3F, 0xF0, 0xFF, 0x37, 0xE0, 0xFF, 0xF1, 0x00, 0x00, 0xE0, // Code for char Q
0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x78, 0x00, 0x07, 0x78, 0x00, 0x07, 0x78, 0x00, 0x07, 0x7C, 0x00, 0x07, 0xFC, 0x01, 0x0F, 0xFE, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xC7, 0xFF, 0xFC, 0xC7, 0xFF, 0xF0, 0x01, 0xFF, // Code for char R
0x0D, 0x00, 0x00, 0x3C, 0xF8, 0x00, 0x78, 0xFC, 0x01, 0xF0, 0xFE, 0x07, 0xE0, 0xFF, 0x0F, 0xC0, 0xFF, 0x0F, 0xC0, 0x0F, 0x1F, 0xE0, 0x07, 0x1E, 0xF0, 0x03, 0x7E, 0xFC, 0x07, 0xFC, 0x7F, 0x0F, 0xF8, 0x3F, 0x0E, 0xF0, 0x1F, 0x0C, 0xE0, 0x07, 0x00, 0x00, 0x00, // Code for char S
0x0E, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, // Code for char T
0x0E, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, // Code for char U
0x0D, 0xFF, 0x07, 0x00, 0xFF, 0x1F, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0x80, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x80, 0xFF, 0x00, 0xF0, 0x1F, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0x3F, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, // Code for char V
0x0E, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0x80, 0x7F, 0x00, 0xE0, 0x0F, 0x00, 0xFE, 0x03, 0x00, 0xFE, 0x03, 0x00, 0xE0, 0x0F, 0x00, 0x80, 0x7F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x0F, // Code for char W
0x0E, 0x03, 0x00, 0xC0, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xFF, 0xFE, 0xC0, 0x7F, 0xF8, 0xE3, 0x1F, 0xE0, 0xFF, 0x03, 0x80, 0x3F, 0x00, 0x80, 0x3F, 0x00, 0xE0, 0xFF, 0x03, 0xF8, 0xE3, 0x1F, 0xFE, 0xC0, 0x7F, 0x1F, 0x00, 0xFF, 0x07, 0x00, 0xF8, 0x03, 0x00, 0xC0, // Code for char X
0x0E, 0x0F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xE0, 0x0F, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0x00, 0xFE, 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0xFF, 0x03, 0x00, 0xFF, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0x00, 0x00, // Code for char Y
0x0E, 0x07, 0x00, 0xF0, 0x07, 0x00, 0xFC, 0x07, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x07, 0xF0, 0xEF, 0x07, 0xFC, 0xE3, 0x07, 0xFF, 0xE0, 0x87, 0x3F, 0xE0, 0xE7, 0x0F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0x00, 0xE0, 0x7F, 0x00, 0xF8, 0x1F, 0x00, 0xF8, 0x07, 0x00, 0xF8, // Code for char Z
0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [
0x0D, 0x03, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x07, 0x00, 0xFE, 0x3F, 0x00, 0xF0, 0xFF, 0x01, 0x80, 0xFF, 0x0F, 0x00, 0xFC, 0x7F, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, // Code for char BackSlash
0x08, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ]
0x0E, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x03, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x08, 0x00, // Code for char ^
0x0D, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, // Code for char _
0x07, 0x00, 0x03, 0x00, 0xE0, 0x03, 0x00, 0xF8, 0x03, 0x00, 0xFC, 0x01, 0x00, 0xFC, 0x01, 0x00, 0x7C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char `
0x0D, 0x00, 0x80, 0x07, 0xC0, 0xE0, 0x0F, 0xC0, 0xF1, 0x1F, 0xE0, 0xF1, 0x3F, 0xE0, 0xF9, 0x3F, 0xE0, 0x78, 0x3C, 0xE0, 0x38, 0x38, 0xE0, 0x19, 0x38, 0xE0, 0x0F, 0x38, 0xE0, 0xFF, 0x3F, 0xC0, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, // Code for char a
0x0E, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0x80, 0x07, 0x3C, 0x80, 0x03, 0x38, 0x80, 0x01, 0x30, 0x80, 0x03, 0x38, 0x80, 0x07, 0x3C, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x1F, 0x00, 0xFF, 0x1F, 0x00, 0xFE, 0x0F, 0x00, 0xF8, 0x01, // Code for char b
0x0D, 0x00, 0xF0, 0x03, 0x00, 0xFC, 0x0F, 0x00, 0xFE, 0x1F, 0x00, 0xFF, 0x1F, 0x00, 0xFF, 0x3F, 0x80, 0x0F, 0x3E, 0x80, 0x03, 0x38, 0x80, 0x01, 0x30, 0x80, 0x01, 0x30, 0x80, 0x01, 0x30, 0x80, 0x03, 0x38, 0x80, 0x03, 0x38, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, // Code for char c
0x0D, 0x00, 0xFC, 0x07, 0x00, 0xFE, 0x0F, 0x00, 0xFF, 0x1F, 0x00, 0xFF, 0x3F, 0x80, 0x0F, 0x3C, 0x80, 0x03, 0x38, 0x80, 0x01, 0x30, 0x80, 0x03, 0x38, 0x80, 0x07, 0x3C, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x00, // Code for char d
0x0E, 0x00, 0xFC, 0x07, 0x00, 0xFE, 0x0F, 0x00, 0xFF, 0x1F, 0x00, 0xFF, 0x3F, 0x80, 0x67, 0x3E, 0x80, 0x63, 0x38, 0x80, 0x61, 0x30, 0x80, 0x63, 0x30, 0x80, 0x67, 0x30, 0x80, 0x7F, 0x30, 0x00, 0x7F, 0x38, 0x00, 0x7F, 0x38, 0x00, 0x7E, 0x18, 0x00, 0x78, 0x00, // Code for char e
0x0B, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0xF0, 0xFF, 0x7F, 0xFC, 0xFF, 0x7F, 0xFC, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0x0E, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f
0x0D, 0xF0, 0x3F, 0x30, 0xFC, 0x7F, 0x78, 0xFC, 0x7F, 0xEC, 0xFE, 0xFF, 0xEC, 0x3E, 0xF0, 0xE0, 0x0E, 0xE0, 0xE0, 0x06, 0xC0, 0xE0, 0x0E, 0xE0, 0xF8, 0x1E, 0xF0, 0xFC, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x3F, 0xFC, 0xFF, 0x1F, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, // Code for char g
0x0C, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x03, 0x00, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x00, 0xFF, 0x3F, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h
0x05, 0x8C, 0xFF, 0x3F, 0x9E, 0xFF, 0x3F, 0x9E, 0xFF, 0x3F, 0x9E, 0xFF, 0x3F, 0x8C, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i
0x09, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xC6, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xCF, 0xFF, 0x7F, 0xC6, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j
0x0D, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0x00, 0xF8, 0x01, 0x00, 0xFC, 0x03, 0x00, 0xFE, 0x07, 0x00, 0xDF, 0x1F, 0x80, 0x8F, 0x3F, 0x80, 0x07, 0x3E, 0x80, 0x01, 0x38, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, // Code for char k
0x04, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l
0x0E, 0xC0, 0xFF, 0x3F, 0xC0, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x07, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0xFF, 0x3F, 0x00, 0xFE, 0x3F, // Code for char m
0x0D, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x03, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0xFF, 0x3F, 0x00, 0xFF, 0x3F, 0x00, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, // Code for char n
0x0E, 0x00, 0xFC, 0x01, 0x00, 0xFF, 0x0F, 0x80, 0xFF, 0x0F, 0xC0, 0xFF, 0x1F, 0xE0, 0x07, 0x3F, 0xE0, 0x01, 0x3C, 0xE0, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xE0, 0x01, 0x3C, 0xE0, 0x07, 0x3F, 0xC0, 0xFF, 0x1F, 0x80, 0xFF, 0x0F, 0x00, 0xFF, 0x07, 0x00, 0xFC, 0x01, // Code for char o
0x0D, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0x1E, 0xF0, 0x00, 0x0E, 0xE0, 0x00, 0x06, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x1E, 0xF0, 0x00, 0xFE, 0xFF, 0x00, 0xFC, 0x7F, 0x00, 0xF8, 0x3F, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, // Code for char p
0x0E, 0xC0, 0x0F, 0x00, 0xF8, 0x3F, 0x00, 0xFC, 0x7F, 0x00, 0xFC, 0xFF, 0x00, 0xFE, 0xFF, 0x00, 0x1E, 0xF0, 0x00, 0x0E, 0xE0, 0x00, 0x06, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x1E, 0xF0, 0x01, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, // Code for char q
0x09, 0xC0, 0xFF, 0x3F, 0xC0, 0xFF, 0x3F, 0xC0, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x00, 0xFF, 0x3F, 0x80, 0x07, 0x00, 0xC0, 0x03, 0x00, 0xC0, 0x01, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r
0x0C, 0x00, 0x0F, 0x0C, 0x80, 0x1F, 0x1C, 0x80, 0x3F, 0x3C, 0xC0, 0x3F, 0x38, 0xE0, 0x7F, 0x38, 0xE0, 0x79, 0x38, 0xE0, 0xF0, 0x3C, 0xE0, 0xF0, 0x3F, 0xE0, 0xF1, 0x1F, 0xE0, 0xE1, 0x0F, 0xC0, 0xC0, 0x0F, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s
0x0B, 0xC0, 0x01, 0x00, 0xC0, 0x01, 0x00, 0xC0, 0x01, 0x00, 0xF8, 0xFF, 0x0F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x3F, 0xF8, 0xFF, 0x3F, 0xF8, 0xFF, 0x3F, 0xC0, 0x01, 0x3C, 0xC0, 0x01, 0x38, 0xC0, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t
0x0D, 0x80, 0xFF, 0x07, 0x80, 0xFF, 0x0F, 0x80, 0xFF, 0x1F, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3C, 0x80, 0xFF, 0x1F, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, // Code for char u
0x0E, 0x80, 0x07, 0x00, 0x80, 0x3F, 0x00, 0x80, 0xFF, 0x01, 0x80, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0x80, 0xFF, 0x07, 0x80, 0xFF, 0x00, 0x80, 0x3F, 0x00, 0x80, 0x07, 0x00, // Code for char v
0x0E, 0x80, 0xFF, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xFF, 0x0F, 0x00, 0xE0, 0x3F, 0x00, 0xC0, 0x3F, 0x00, 0x80, 0x01, 0x80, 0xFF, 0x03, 0x80, 0xFF, 0x03, 0x00, 0x80, 0x01, 0x00, 0xC0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xFF, 0x0F, 0x80, 0xFF, 0x01, 0x80, 0xFF, 0x00, // Code for char w
0x0D, 0x80, 0x01, 0x30, 0x80, 0x01, 0x30, 0x80, 0x03, 0x3C, 0x80, 0x07, 0x3E, 0x00, 0x9E, 0x0F, 0x00, 0xFC, 0x07, 0x00, 0xF8, 0x03, 0x00, 0xFC, 0x07, 0x00, 0x9E, 0x0F, 0x80, 0x07, 0x3E, 0x80, 0x03, 0x3C, 0x80, 0x01, 0x30, 0x80, 0x01, 0x30, 0x00, 0x00, 0x00, // Code for char x
0x0D, 0x78, 0x00, 0xC0, 0xF8, 0x03, 0xE0, 0xF8, 0x1F, 0xF0, 0xF8, 0x3F, 0xF8, 0x00, 0x7F, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0xF0, 0x1F, 0x00, 0xF8, 0x07, 0x00, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xF8, 0x1F, 0x00, 0xF8, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y
0x0D, 0xE0, 0x00, 0x38, 0xE0, 0x00, 0x3E, 0xE0, 0x00, 0x3F, 0xE0, 0xC0, 0x3F, 0xE0, 0xF0, 0x3F, 0xE0, 0xF8, 0x3F, 0xE0, 0xFE, 0x3B, 0xE0, 0xFF, 0x38, 0xE0, 0x7F, 0x38, 0xE0, 0x1F, 0x38, 0xE0, 0x07, 0x38, 0xE0, 0x03, 0x38, 0xE0, 0x00, 0x38, 0x00, 0x00, 0x00, // Code for char z
0x09, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0xFC, 0xFF, 0x3F, 0xFE, 0xFF, 0x7F, 0xFF, 0xE7, 0xFF, 0x7F, 0x00, 0xFC, 0x07, 0x00, 0xE0, 0x03, 0x00, 0xC0, 0x03, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char {
0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char |
0x09, 0x03, 0x00, 0xC0, 0x03, 0x00, 0xC0, 0x07, 0x00, 0xE0, 0x3F, 0x00, 0xF8, 0xFF, 0x03, 0xFF, 0xFE, 0xFF, 0x7F, 0xFC, 0xFF, 0x3F, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char }
0x0E, 0xC0, 0x03, 0x00, 0xE0, 0x03, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x01, 0x00, 0xC0, 0x03, 0x00, 0x80, 0x03, 0x00, 0x00, 0x03, 0x00, 0x80, 0x03, 0x00, 0xF0, 0x01, 0x00, 0xF0, 0x00, 0x00, // Code for char ~
0x08, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char
};
//Library for the LED matrix
# include “LedControl.h”
// Virtual serial Library used with the bluetooth
# include
int latchPin = 10;
int clockPin = 13;
int dataPin = 11;
int clock = 9;
int Reset = 8;
int latchPinPORTB = latchPin – 8;
int clockPinPORTB = clockPin – 8;
int dataPinPORTB = dataPin – 8;
int i = 0;
long scrolling_word[24];
int array_turn = 0;
byte your_text[14][24] = {“Fingers cross Hoping it works”}; //Put your text here
//********* First message on the screen **************
void setup() {
for (int address = 0; address 0) { //if message is from virtual bluetooth prot
stg_length = BT.available(); // incoming string length
for (int i = 0; i < stg_length; i++) {
incomingByte = BT.read(); //reading incoming byte
Phrase[i] = incomingByte; //store the character into string array
}
}
void setup() {
Serial.begin(9600);
pinMode (dataPin, OUTPUT);
pinMode (clockPin, OUTPUT);
pinMode (latchPin, OUTPUT);
pinMode (clock, OUTPUT);
pinMode (Reset, OUTPUT);
digitalWrite (Reset, HIGH);
digitalWrite (Reset, LOW);
setupSPI();
}
//*** This function displays the symbols***//
void display_word (int loops, byte word_print[][24], int num_patterns, int delay_length){
i = 0; //resets the counter for the 4017
for (int g = 0; g < 24; g++) //resets the long int where the word goes
scrolling_word[g] = 0;
for (int x = 0; x< num_patterns; x++) { // main loop goes over symbols
for (int r = 0; r < 24; r++) //puts the first build symbol
scrolling_wrod [r] |= word_print[x][r];
for (int z = 0; z < 24; z++) { //scrolling action
for (int p = 0; p < 24; p++)
scrolling_word[p] = scrolling_word[p] << 1;
// end of scrolling function
for (int t = 0; t < delay_length; t++) { //delay function, it just loop over the same display
for (int y = 0; y < 24; y++) { //scanning the dispaly
if (i == 24) { //counting up to 24 with the 4017
digitalWrite (Reset, HIGH);
digitalWrite (Reset, LOW);
i = 0;
}
latchOff();
spi_transfer(make_word(0x01000000,y)); //sending the data
spi_transfer(make_word(0x00010000,y));
spi_transfer(male_word(0x00000100,y));
latchOn();
delayMicroseconds (800); //waiting a bit
latchOff();
spi_transfer(0); //clearing the data
spi_transfer(0);
spi_transfer(0);
latchOn();
digitalWrite (clock, HIGH); // counting up with the 4017
digitalWrite (clock, LOW);
i++
}
}
}
}
byte make_word (long position, byte turn) {
byte dummy_word = 0;
for (int q = 0; q < 14; q++) {
if (scrolling_word[turn] & (position << q))
dummy_word |= 0x01 << q;
}
return dummy_word;
}
void loop() {
//calls for the display_pattern function
display_word(1, your_text,8,15);
}
void latchOn() {
bitSet (PORTB, latchPinPORTB);
}
void latchOff() {
bitClear(PORTB, latchPinPORTB);
}
void setupSPI() {
byte clr;
SPCR |= ( (1 << SPE) | (1 << MSTR) ); // enable SPI as master
SPCR |= ( (1 << SPR1) | (1 << SPRO) ); // set prescaler bits
SPCR &= ~( (1 << SPR1) | (1 << SPRO) ); // clear prescalar bits
clr = SPSR; // clear SPI status reg
clr = SPDR; // clear SPI data reg
SPSR |= (1 << SPI2X); //set prescaler bits
SPSR &= ~(1 << SPI2X); //clear prescaler bits
delay (10);
}
byte spi_transfer(byte data)
{
SPDR = data; // Start the transmission
while (!(SPSR & (1 << SPIF))) //Wait the end of the transmission
{
};
return SPDR; //return the recieved byte
}
If i remove USB connection from computer will it display or not.
Should i connect this circuit to computer contineously for displaying.
please i need : code + shema isis arduino uno r3/ 2 registre /matrix 8*8
merci de repondre
Using your hex file works fine but if I re-compile I get nothing displayed.
I also cannot get terminal to display anything.
Please advise
Dear sir/madam good evening.
with due respect I would like to request you that I want to create this project by using 18F2550 so can you help me about it.
thank you.
Can anyone please send me the code for 8*24 led matrix using pic16f877a.. there’s some problem with mine.. its scrolling but some leds lights up unnecessarily when connecting the third shift register..
Bibinedmond@gmail.com
sorry you can’t because 16F877 has not enough RAM space.
would you mind to enumerate the materials used?
Can I get a complete range of 8 × 40 matrix LED display please?
I’m using atmega 8535 and the sliding registers using 74HC595 with LED size 5mm.
please send to:martosby@yahoo.com
Bisakah saya mendapatkan rangkaian lengkap 8 × 40 tampilan matriks LED please?
saya menggunakan atmega 8535 dan register gesernya menggunakan 74hc595 dengan ukuran led 5mm.
silakan kirim ke: martosby@yahoo.com
helo sir..
ThAnks for this project guidance. i have gained alot from this.. n i am preparing a gsm based led moving message display.. so if can please help me out in the programing for this..
i m using 89s52 micro controller and size of our display is 16*62.
please reply if any one has any help for me…
Sir… I need the coding of Atmega16 for led dotmatrix. Please send it urgently.(indrohnil000@gmail.com)
plesase sir i want code for 8051 micro controller
please send me code for 8051 micro controller
please sir i was struggling with this
i would like to replace pic 16f147 by the pic16f877 please can you help me
wana know what to do
thank you
very good & i like it.
but i want to use pic16f877. is it possible?
how can i apply pic16f877 & what is the code.
sorry you can’t because 16f877 has not enough RAM space.
sorry you can’t because 16F877 has not enough RAM space.
you can but you have to remove UART configure commands and only default massage can be display
Dear sir good afternoon.
with due respect I would like to know that can I use PIC16F628A to this project and how to I can send my desired message into EPPROM using pickit2?
please kindly help me as soon as possible.
Thank you
sir i want 8*160 display sourse coad
PLEASE CAN SOMEONE SEND TO ME THE CODE NO PIC USE ONLY WITH DRIVER AND PLATE 74HC595 ARDUINO ….
EMAIL: ROBERTOCARLOSALVARENGA@HOTMAIL.COM
HELP ME
(BRAZIL)
sir i want need to usage ic pic 16f72 this display same code of hex sand me please///////////////
sorry you can’t because 16F72 and 16f73 has no RAM space.
you can use 18F2550
hai,i have started my mini project on led cube8*8*8 and i have competed my project but i want one help from you guys.i want source codeof led cube 8*8*8 8051VN so,please help me guys
Can I get the complete circuit of 8×40 LED matrix display please?
Someone can send me the code for 8×64 and 8×80 at dapelow@gmail.com. Thanks again.
Someone can send me the code for 8×64 and 8×80. Thanks.
just increase the buffer routine to add more matrix display
4th comment…
Finally, I have successfully build the 8×48 matrix display. (it can be increase to 8×80)
steps I followed
1. compared original LISTS file and my file . (there were some differences . but the hex files size were the same ).
2. Remove the ListenSerial function and recompiled than it worked but only with default MSG..
3. Included the ListenSerial function doing some changes. it worked and can send text to eeprom . I forgot to mention that I disabled many library files. and the hex file size is 12.5kb.
My ListenSerial()
void ListenSerial(){
char RxByte;
UART_Write_Text(“Start”);
UART_Write(10);
UART_Write(13);
UART_Write_Text(“INPUT? Y/N”);
Delay_onesec();
Delay_onesec();
Delay_onesec();
Delay_onesec();
Delay_onesec();
if (UART_Data_Ready()) //If data is received,
{
RxByte = UART_Read(); //read the received data,
if(RxByte == ‘Y’) {
UART_Write(RxByte);
while (!UART_Data_Ready()); // if data is received
UART_Read_Text(message, “#”, 250); // reads text until ‘#’ is found
message[0] = ‘ ‘;
StringLength = Find_StrLength();
Save_Message();
}
}
}
I Think there must be some problem with the windows os (I am using xp home edition.)
or damaged Mirokc file.
Who can a give answer … I released that nothing to do any changes to the original code . except increasing buffer !!! ???.
siri
please send your 8×48 program to my email.id(prabakaran_1991@rocketmail.com). i am struggling lot
Please can you help me send 8by 48 , the source code and circuit diagram.. I’m using mikro C compiler thanks a lot
gaullyubong@yahoo.com…….please send me message display code and circuit diagram using pic16f877a, I’m using mikro C pro
please bro send your 8×48 program to me
My mail address:-
ganeshpkundapur@gmail.com
I want to use 74LS164
I like this 8×8 LED display systems, and how to do with connected to PC.
Can some one teach me.
Hello…
MUIGAI can I have your source codes for PIC16f88… plz
My Email ID siriyadasa.umagiliya@gmail.com
3rd … comment
Mr; R.B
Sir,
As I mentioned in my 2nd comment the 8×40 matrix display is working very nicely.
But when I recompiled your c source file the output gave me 14.4kb hex file. it is not working,no display, not even one led glows. __config set according to yours. Are there any changes to be done? if it is … plz send me the codes (because I want to change it to 8×48 )
My Email ID siriyadasa.umagiliya@gmail.com
Sir,
This is regarding the comment given by me on June 24,2014 . The problem was with the usb cable. one wire was disconnected (dry joint) replaced with new one . Now I can send text to eeprom .
R.B. Excellent project
Siri
Sir ,
I build the 8×40 led matrix using pic16f1847 and programed with your HEX file. It is working
without any problem(Displaying the default message ) When I try to send text data to eeprom
(using USB to serial adapter – FT232RL with termite SW) I got only [0][0][0]…………. similar to
to comment given by “Prabhat – September – 11- 2013” plz help me.
siri
excellent tutorial with a great explanation thank you. i have succesfully managed to adopt your code for 16f877a with an 8×72 led matrix display and removed the uart part -for now but will add later.. PROTEUS can’t simulate correctly but the circuit is working flawless.
thank you again for sharing both your knowledge and experience..
Hi ilker.. can u share with me how to change the code for 16f877a?? i would like to learn from u.. i just need a guide to do that.. doesn’t have to send me the full code that u have done by urself.. can u teach me? please email me at azinmil@yahoo.com .. thanks.. ^^
can u help me on what is wrong with this code. am using pic16f452. the program compile successfully. but when i simulate it in Proteus all the LED light up.
sbit Serial_Data at RA0_bit;
sbit SH_Clk at RA1_bit;
sbit ST_Clk at RA2_bit;
unsigned short Buffer[8][5] = {{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}};
void Send_Data(unsigned short rw)
{
unsigned short Mask, t, num, Flag;
for (num = 0; num < 5; num++)
{
Mask = 0x01;
for (t=0; t<8; t++)
{
Flag = Buffer[rw][num] & Mask;
if(Flag==0)
Serial_Data = 0;
else
Serial_Data = 1;
SH_Clk = 1;
SH_Clk = 0;
Mask = Mask << 1;
}
}
ST_Clk = 1;
ST_Clk = 0;
}
const unsigned short CharData[][8] ={
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000000, 0b00000100},
{0b00001010, 0b00001010, 0b00001010, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00001010, 0b00011111, 0b00001010, 0b00011111, 0b00001010, 0b00011111, 0b00001010},
{0b00000111, 0b00001100, 0b00010100, 0b00001100, 0b00000110, 0b00000101, 0b00000110, 0b00011100},
{0b00011001, 0b00011010, 0b00000010, 0b00000100, 0b00000100, 0b00001000, 0b00001011, 0b00010011},
{0b00000110, 0b00001010, 0b00010010, 0b00010100, 0b00001001, 0b00010110, 0b00010110, 0b00001001},
{0b00000100, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000010, 0b00000100, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00000100, 0b00000010},
{0b00001000, 0b00000100, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000100, 0b00001000},
{0b00010101, 0b00001110, 0b00011111, 0b00001110, 0b00010101, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00011111, 0b00000100, 0b00000100, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000110, 0b00000100, 0b00001000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000100},
{0b00000001, 0b00000010, 0b00000010, 0b00000100, 0b00000100, 0b00001000, 0b00001000, 0b00010000},
{0b00001110, 0b00010001, 0b00010011, 0b00010001, 0b00010101, 0b00010001, 0b00011001, 0b00001110},
{0b00000100, 0b00001100, 0b00010100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00011111},
{0b00001110, 0b00010001, 0b00010001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00011111},
{0b00001110, 0b00010001, 0b00000001, 0b00001110, 0b00000001, 0b00000001, 0b00010001, 0b00001110},
{0b00010000, 0b00010000, 0b00010100, 0b00010100, 0b00011111, 0b00000100, 0b00000100, 0b00000100},
{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00000001, 0b00000001, 0b00000001, 0b00011110},
{0b00000111, 0b00001000, 0b00010000, 0b00011110, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00011111, 0b00000001, 0b00000001, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000},
{0b00001110, 0b00010001, 0b00010001, 0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00001110, 0b00010001, 0b00010001, 0b00001111, 0b00000001, 0b00000001, 0b00000001, 0b00000001},
{0b00000000, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00000000},
{0b00000000, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00001000},
{0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00001000, 0b00000100, 0b00000010, 0b00000001},
{0b00000000, 0b00000000, 0b00000000, 0b00011110, 0b00000000, 0b00011110, 0b00000000, 0b00000000},
{0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00000010, 0b00000100, 0b00001000, 0b00010000},
{0b00001110, 0b00010001, 0b00010001, 0b00000010, 0b00000100, 0b00000100, 0b00000000, 0b00000100},
{0b00001110, 0b00010001, 0b00010001, 0b00010101, 0b00010101, 0b00010001, 0b00010001, 0b00011110},
{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00010001, 0b00010001, 0b00010001},
{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010001, 0b00010001, 0b00010001, 0b00011110},
{0b00000111, 0b00001000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00001000, 0b00000111},
{0b00011100, 0b00010010, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010010, 0b00011100},
{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00011111},
{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00010000},
{0b00001110, 0b00010001, 0b00010000, 0b00010000, 0b00010111, 0b00010001, 0b00010001, 0b00001110},
{0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00010001, 0b00010001, 0b00010001, 0b00010001},
{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00011111},
{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00010100, 0b00001000},
{0b00010001, 0b00010010, 0b00010100, 0b00011000, 0b00010100, 0b00010010, 0b00010001, 0b00010001},
{0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00011111},
{0b00010001, 0b00011011, 0b00011111, 0b00010101, 0b00010001, 0b00010001, 0b00010001, 0b00010001},
{0b00010001, 0b00011001, 0b00011001, 0b00010101, 0b00010101, 0b00010011, 0b00010011, 0b00010001},
{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00010000},
{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00010011, 0b00001111},
{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010100, 0b00010010, 0b00010001, 0b00010001},
{0b00001110, 0b00010001, 0b00010000, 0b00001000, 0b00000110, 0b00000001, 0b00010001, 0b00001110},
{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001010, 0b00000100},
{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00010101, 0b00001010},
{0b00010001, 0b00010001, 0b00001010, 0b00000100, 0b00000100, 0b00001010, 0b00010001, 0b00010001},
{0b00010001, 0b00010001, 0b00001010, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00011111, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00010000, 0b00011111},
{0b00001110, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001110},
{0b00010000, 0b00001000, 0b00001000, 0b00000100, 0b00000100, 0b00000010, 0b00000010, 0b00000001},
{0b00001110, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00001110},
{0b00000100, 0b00001010, 0b00010001, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00011111},
{0b00001000, 0b00000100, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00010010, 0b00010010, 0b00010010, 0b00001111},
{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00011100, 0b00010010, 0b00010010, 0b00011100},
{0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00010000, 0b00010000, 0b00010000, 0b00001110},
{0b00000000, 0b00000001, 0b00000001, 0b00000001, 0b00000111, 0b00001001, 0b00001001, 0b00000111},
{0b00000000, 0b00000000, 0b00000000, 0b00011100, 0b00010010, 0b00011110, 0b00010000, 0b00001110},
{0b00000000, 0b00000011, 0b00000100, 0b00000100, 0b00000110, 0b00000100, 0b00000100, 0b00000100},
{0b00000000, 0b00001110, 0b00001010, 0b00001010, 0b00001110, 0b00000010, 0b00000010, 0b00001100},
{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00011100, 0b00010010, 0b00010010, 0b00010010},
{0b00000000, 0b00000000, 0b00000100, 0b00000000, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00000000, 0b00000010, 0b00000000, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00001100},
{0b00000000, 0b00010000, 0b00010000, 0b00010100, 0b00011000, 0b00011000, 0b00010100, 0b00010000},
{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00001100},
{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00010101, 0b00010001, 0b00010001, 0b00010001},
{0b00000000, 0b00000000, 0b00000000, 0b00010100, 0b00011010, 0b00010010, 0b00010010, 0b00010010},
{0b00000000, 0b00000000, 0b00000000, 0b00001100, 0b00010010, 0b00010010, 0b00010010, 0b00001100},
{0b00000000, 0b00011100, 0b00010010, 0b00010010, 0b00011100, 0b00010000, 0b00010000, 0b00010000},
{0b00000000, 0b00001110, 0b00010010, 0b00010010, 0b00001110, 0b00000010, 0b00000010, 0b00000001},
{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00001100, 0b00001000, 0b00001000, 0b00001000},
{0b00000000, 0b00000000, 0b00001110, 0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00011110},
{0b00000000, 0b00010000, 0b00010000, 0b00011100, 0b00010000, 0b00010000, 0b00010000, 0b00001100},
{0b00000000, 0b00000000, 0b00000000, 0b00010010, 0b00010010, 0b00010010, 0b00010010, 0b00001100},
{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00010001, 0b00010001, 0b00001010, 0b00000100},
{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00001010},
{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00001010, 0b00000100, 0b00001010, 0b00010001},
{0b00000000, 0b00000000, 0b00010001, 0b00001010, 0b00000100, 0b00001000, 0b00001000, 0b00010000},
{0b00000000, 0b00000000, 0b00000000, 0b00011111, 0b00000010, 0b00000100, 0b00001000, 0b00011111},
{0b00000010, 0b00000100, 0b00000100, 0b00000100, 0b00001000, 0b00000100, 0b00000100, 0b00000010},
{0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00001000, 0b00000100, 0b00000100, 0b00000100, 0b00000010, 0b00000100, 0b00000100, 0b00001000},
{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00011110, 0b00010100, 0b00000000, 0b00000000}
};
unsigned int speed, StringLength;
unsigned short i, l, k, row, scroll, temp, shift_step=1;
unsigned short m;
char message[]="SHARIFU RAJABU SCROLLING TEXT ON DOT MATRIX";
char index;
void main()
{
TRISA = 0x00;
TRISB = 0x00;
PORTB = 0x00;
StringLength = strlen(message) ;
do
{
for (k=0; k<StringLength; k++)
{
for (scroll=0; scroll<(8/shift_step); scroll++)
{
for (row=0; row<8; row++)
{
temp = CharData[index-32][row];
Buffer[row][4] = (Buffer[row][4] <> (8-Shift_Step));
Buffer[row][3] = (Buffer[row][3] <> (8-Shift_Step));
Buffer[row][2] = (Buffer[row][2] <> (8-Shift_Step));
Buffer[row][1] = (Buffer[row][1] <> (8-Shift_Step));
Buffer[row][0] = (Buffer[row][0] <> ((8-shift_step)-scroll*shift_step));
}
speed = 15;
for(l=0; l<speed;l++)
{
m = 1;
for (i=0; i<8; i++)
{
Send_Data(i);
PORTB = m;
m = m << 1;
Delay_us(1000);
} // i
} // l
} // scroll
} // k
} while(1);
}
is it possible to change the PIC16f1847 to pic16f877a?
is it possible to change the PIC to 16f877a?
no you can’t because 16F877 has not enough RAM space.
for (i=0; i<8; i++)
{
Send_Data(i);
LATB = m;
m = m << 1;
Delay_ms(20);
}
in the above code why you sent i value to the Send_Data() function
by send i value to the Send_Data() function , i am got no output.
why u not sent Buffer[ ][ ] value to the Send_Data() function.
sir please i need your help
please sent the code to mail id ramalingaqmr0@gmail.com
sorry for poor engilish
sir,
I want this project changing the cirxuit16f877 pic,how?
SIR, I AM REALLY INTERESTED IN THE PROJECT BUT I CAN HAVE THE EXACT PIC 18F1847. I WILL BE INDEED GREAT IF YOU CAN HELP ME WITH THE EQUIVALENT.
dear sir\
i want to use pic16f877a and my project is not work properly please help me and you can send to me protues simulation and micro c code
very helpful……but need some improvement…….????????
sir,
I need a 16×32 led dot matrix basic code using shift resister code.
plz help me.
manik talukder
Sir ..i want fonts in .h file
Great project , i make and i love it , how increasing speed of scrolling ? What I have to change the firmware to increase speed, what value should be changed ?
Great project with good explanation. i have been able to implement it using pic16f88 and can view the default message. However, i would like to interface it with a keyboard directly without using a pc. I would appreciate your help. thanks.
Hello MUIGAI can i have ur sample codes of interfacing using PIC16f88…
Hie ALEN.Can you please help me on how to design and implement an led matrix display.it will be much helpfull if you provide me with the circuit diagrams and source code in mikroC.Thank you
Can I also extend this to say 8×96 display for my led message sign?
Hello Every one!
It is very useful knowledge about dot matrix displays but I want to developed a project basically a schedule board in which i want to use 128 dot matrix(8 for rows & 16 for columns) so i want to ask that can i use the same logic to control such a large number of LED dot matrix? Is it a reliable technique? or Is there any alternate method?
hy every-body
is there any one can help me to find solution for commanding 4 led-matrix with pic16F family
i have already done the commandement of one led matrix,now i want to improve my level
i will very recognise to any one helps me
Is it posseble to program the Pic 16F1847 with pickit2 i cante find them in the list with supportet pic
ps sorry for the bat englisch
which microcontroller we can use instead of 16f1847.
Could u please send me a sample code for 40*240. Only for shift a word, any word. It will be very helpful for me.
how to store the message in the microcontroller inspite of inserting it through pc???
i want to build this plz hlp me….
hi
the hex file is 14.4kb and Program Memory for PIC16F1847 is 14kb
is it possible program this micro?
Hello,
I can get another pattern of modifying the function :
Buffer[row][4] = (Buffer[row][4] <> (8-Shift_Step));
Best regards
Sébastien
Which is the programmer that you used to program this microcontroller?
I am using PICKit2.
Does the 3rd and 4th ice should connect to ra1 and ra2?
Does the 11th and 12th pins of 3rd,4th and 5th ic’s should be connected to ra2 and ra1?
In the circuit diagram the first two 74hc595 IC’s 11th and 12th pins are connected to st_cp(ra2) and sh_cp(ra1) pins.does the 3rd,4th and 5th ic’s 11th and 12th pins also have to be connected to ra2 and ra1?
hi
tanks for your best project. how i can used more than 8 matrix LED. because when i want expansion this project to 13 matrix LED but the project not working.! please guide me
regards
Sam
when ever i burn your project hex code onto my 16f1847 mcu using pic2 programmer i’m only getting [00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00] continually at hyper terminal. can you plz help me to short out wher is the problem.my mail id is prabhat4mail@gmail.com
hi…sir pls send me the code using pic16f877A:-) thanks ang God bless..here’s my email raffy_102488@yahoo.com
I want to make different animation with message with your 8X40 Led Dot matrix.Then what will be the program and hw to modify it?
The message I want to print in the Led matrix is “Mahadi \ Mobile num.,address etc”.
I want that “Mahadi” should scroll from left, scroll from up and down after it stay in the led matrix display for few second and bliking.
After that the message “Mobile phn num and address” should scroll from left. And that way it will continue.
Plz send me the Program code to my email address.
(mahadihasan102@gmail.com)
plz help me.I waiting for it.
I want to make different animation with message with your 8X40 Led Dot matrix.Then what will be the problem and hw to modify it?
The message I want to print in the Led matrix is “Mahadi \ Mobile num.,address etc”.
I want that “Mahadi” should scroll from left, scroll from up and down after it stay in the led matrix display for few second and bliking.
After that the message “Mobile phn num and address” should scroll from left. And that way it will continue.
Plz send me the source code to my email address.
(mahadihasan102@gmail.com)
Is the same logic apply, for UP and Down Scrolling?
Hi bro plz send me full project with circuit,Code and description
My email address
dhavalpanchal14590@gmail.com
I’m trying to recompile your c file but it is giving. is there anything to change in the program……plz help me Rajendra Bhatt.my email id is prabhat4mail@gmail.com
What error are you getting?
Alawode Basit.Can you plz send the program to my mail id….my mail id is prabhat4mail@gmail.com
PLZ help me, when ever i’m trying your project i’m getting “[00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]” this only at the termite as output. where is the problem?
Please send me the hex file for 8*80 led matrix and my email is maheshjshetty@gmail.com
Let’s say i want to print the character degree, how can i do that?
thank you!
marC:)
hello!
Alawode Basit. Pls could you send me the code for 8*80.i too have it as my project.please mail me to navjn22@gmail.com.
thanks in advance!
Hello!
Someone could send 8×48 ledmatrix program!
Thank you!
lajos1969@citromail.hu
nice work sir,can you send me code for pic18f4520 in micro c or let me know what changes should i make in given code
Can you send the program to my mail id….my mail id is
prabhat4mail@gmail.com
please help with the code since it is not working after recompiling.
Sir,
in proteus, it’s not working.I tried it with PIC16f877a with some code modification(avoid UART).can u help me?
dear sir
i want to use pic16f877a and This project is about constructing a mono-color LED matrix display board that consists 320 LEDs arranged in 8 rows and 40 columns. The heart of this project is PIC16F877 microcontroller please
can you help me
Please help! Hex given is working properly but if I compile it (without any changes) then it does not work. Is there any correction to be made in the code? Also i have observe that on compiling it gives warning that variable Flag & Rxbyte are eliminated by optimizer ( i tried dissabling the optimizer but no luck) and boundrate 115942 error 0.64%. what to do. Please give me working code. My email id is nikhilpnp@yahoo.com
Excelente proyecto. Felicitaciones
thanks a lot for this great tutorial. U’r a blessing to so many lives, families, nations.. U can’t tell how farl this tutorial can go in helping people.. Please keep up the good work [+ I wish I could gift a reward to u]
PRAGATHEESWARN.V, sorry for the late response, I”ll send it soon.
Alawode Basit.can you send the program to my mail id….my mail id prakatheeshece@gmail.com
it can be scrolled from left to right or vice versa at the same time., please guide
can i use file .hex PIC16F1847 for PIC16F84A-04/P sir ? please help me… thx
hello sir,
onley ican fined PIC16F88-PDIP micro chip in my place.please guide me to match the pinout with the circuit diagram.if possible send me more information.( desilva_7@yahoo.com)
thanks,
@Alawode Basit. Thank you very much. I have seen it. Am gonna try it out.
@ Ola,ok. I’ve done just that. Check your mail.
@ Alawode Basit, thanks so much for the reply. I have checked my mail but its not there. Pls maybe you should help me through this one ( olaide4real1@yahoo.com) . Thanks.
Ola. check your mail, I’ve done that
Alawode Basit. Pls could you send me the code for 8*80. My gmail is olaide4real86@gmail.com. Thanks.
@ de silva, of course, any other pic chip can be used. Just make sure that the pic supports uart and make sure you alter the configuration part of the code so that it will match that of the chip you are using. Check you chip’s datasheet for configuration information.
Hello Basit Could you send me the codes for the 8×80 inclusive of the UART to kkaalan0000@yahoo.com, can i use it for GSM receive message??
Alen sir.can you please help me on this project.am interested but am stuck on early stage
@ Olayide, i think the code should work for 8×96 display, you just need to alter the code a bit. I altered mine such that it worked for 8×80 display which i think it will also work for yours. Thanks.
very nice project thanks…sir how can we attach gsm module with this project can u plz modified code for gsm based led notice board.
I modified the code for 8×80 display and it worked perfectly. Thanks.
Nice work. May God bless you with your Knowledge. pls can this code work for 8*96 display. thanks
can i use any other pic chip for this project.
hello sir
how can I make usb relay control board (software)
Hi Raj, I’ve tried it out and I must comment that its really great. But, i found out that there is similarity between this and the one of lab 15 where you declare Displaybuffer[8][16] and here, you declare Buffer[8][5] where the [5] is of type byte. Also, the scrolling code looks technically the same.
I want to ask why you didn’t declare the buffer as Buffer[8][40] and also can the same procedure be used for more than 5 8×8 displays? Thanks.
Thank you Raj
Nice work. I’ll try this out. Can I also extend this to say 8×96 display?
hi i need proteus simulation of this. will u send me ??
nice very nice project
how can we use HINDI langveg ?
Pingback: LED Matrix Scrolling Marquee using PIC MCU and Shift Registers | Arduino collector blog
Ammmmmazing…..
I need your email add. I want to talk with u for another project, please feed back at prime.2000@yahoo.com
Great job. I like it very much
whthout programmer can i use this?
Pingback: LED Matrix Scrolling Marquee using PIC MCU and Shift Registers | Make, Electronics projects, electronic Circuits, DIY projects, Microcontroller Projects - makeelectronic.com
i don’t want to use this with my pc? only with 5vdc adapter is it possible without UART?
thank you!
marC:)
Yes, you can. When you don’t use UART it plays the prestored message.
plz sir snd me the coding of message display on dot matrix plz plz
Awesome project!!! 🙂
congradulation!! 🙂
marC:)