Está en la página 1de 25

LAB 2: Implementation of sign board DOT matrix display with 8051

Aim Implementation of dot-matrix led based system using MCS-51 Objectives To design the hardware to interface the display to MCS51 microcontroller. To develop the application software using C language To simulate the program and verify the result Introduction This laboratory experiment will provide a basic concept on how to drive and control a dot matrix led using 8051 microcontroller. An 8x8 dot matrix is selected for this assignment. Dot matrix led display Dot-matrix led display comprises of an array of LEDs that are intersected in such a way that the negative terminal of each LED (cathode) in the same rows are connected and the positive terminal (anode) of each LED in the same column are linked together.

Fig.1 internal structure an

LED dot matrix

The figure above shows the basic schematic for a typical 8x8 led matrix The dot-matrix led displays are widely a used to display information on machines, clocks, train station departure, airport and sign boards etc. Choosing a microcontroller When embarking on a dot-matrix display project or assignment, the main consideration should focus on the type of microcontroller to use. The specification must to be considered in selecting the microcontrollers are the number of I/O pins available, the amount of current that each pin can source and finally the speed at which the microcontroller operates The 89c51 microcontroller has made the issue of control signal speed and I/O pins availability. The chip has a total number of 32 I/O pins and operates at a speed greater than 10MHz. Design the hardware to interface display to the MCS-51 microcontroller. In the hardware design, six 8x8 dot-matrix LEDs were used and 74HC595 used for serial to parallel shift registering in order to use less I/O pins of the microcontroller. By using the 74HC595, only 3 I/O lines to drive 8 LEDs. The below figure shows the hardware design in proteus software.

C language code using keil uvision

#include <reg52.h> unsigned char cnter, i; unsigned int n_counter; #define array_number (array1) unsigned char code array1[]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xFE,0x11,0x11,0x11,0xFE, //A 0x00,0xff,0x02,0x02,0x04,0x02,0xfF, 0x00,0x81,0x81,0xFF,0x81,0x81,0x00, 0x00,0xff,0x02,0x04,0x08,0x10,0xff, //0x00,0xFF,0x01,0x02,0x04,0x18,0x20,0x3F, 0x00,0x7F,0x80,0x80,0x80,0x80,0x7F, //M

0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0x89,0x89,0x89,0x89,0x76, 0x00,0x7F,0x80,0x80,0x80,0x80,0x7F, 0x00,0x7E,0x81,0x81,0x91,0x91,0xF1, 0x00,0x00,0xFE,0x11,0x11,0x11,0xFE, 0x00,0x81,0x81,0x81,0x7F,0x01,0x01,

0x00,0x81,0x81,0x81,0x7F,0x01,0x01, 0x00,0xFF,0x89,0x89,0x89,0x89,0x89, 0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x7F,0x80,0x80,0x80,0x80,0x7F, 0x00,0x7E,0x81,0x81,0x81,0x81,0x7E, 0x00,0x8E,0x91,0x91,0x91,0x91,0x7E, 0x00,0x8F,0x89,0x89,0x89,0x89,0xF1, //0x00,0x41,0x21,0x11,0x09,0x05,0x03, 0x0,0x81,0x41,0x21,0x11,0x9,0x5,0x3, 0x00,0x76,0x89,0x89,0x89,0x89,0x76, 0x00,0x7E,0x81,0x81,0x81,0x81,0x7E, 0x00,0xE1,0x91,0x91,0x91,0x91,0x8E,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x88,0x84,0x82,0xFF,0x80,0x80, 0x0,0x42,0x91,0x91,0x91,0x91,0x6E, 0x0,0x0,0x0,0x0,0x6C,0x0,0x0,0x0, 0x0,0xF2,0x91,0x91,0x91,0x91,0x8E, 0x0,0x4E,0x91,0x91,0x91,0x91,0x7E, //

0x0,0x4E,0x91,0x91,0x91,0x91,0x7E, 0x0,0x0,0x0,0x0,0x66,0x0,0x0,0x0, 0x0,0x60,0x50,0x48,0x44,0xFF,0x40,

// //: //4

0x0,0x81,0x41,0x21,0x11,0x9,0x5,0x3, //7 0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0,0xF2,0x91,0x91,0x91,0x91,0x8E,0x0, 0x0,0x81,0x41,0x21,0x11,0x9,0x5,0x3, 0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1, 0x0,0x7E,0x81,0x81,0x81,0x81,0x7E,0x0, 0x0,0x81,0x41,0x21,0x11,0x9,0x5,0x3, 0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1,

0x0,0xF2,0x91,0x91,0x91,0x91,0x8E,0x0,
0x0,0x7E,0x81,0x81,0x81,0x81,0x7E,0x0, 0x0,0x80,0x84,0x82,0xFF,0x80,0x80,0x0, 0x0,0xF2,0x91,0x91,0x91,0x91,0x8E,0x0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00, };

sbit SD

= P1^1;

sbit SH_CK = P1^0; sbit ST_CK = P1^2; sbit SD1 = P1^6;

sbit SH_CK1 = P1^5; sbit ST_CK1 = P1^7; sbit SD11 = P3^6;

sbit SH_CK11 = P3^5; sbit ST_CK11 = P3^7; sbit SD2 = P3^1;

sbit SH_CK2 = P3^0;

sbit ST_CK2 = P3^2;


sbit SD22 = P2^6;

sbit SH_CK22 = P2^5; sbit ST_CK22 = P2^7; sbit SD222 = P2^1;

sbit SH_CK222 = P2^0;

sbit SH_CK222 = P2^0; sbit ST_CK222 = P2^2; void Ser_IN(unsigned char Data); void Ser_IN(unsigned char Data) { unsigned char i; for(i = 0; i < 8; i++) { SH_CK = 0; SD = Data & 0x80; Data <<= 1; SH_CK = 1; } }

void chip_OUT(void)
{ ST_CK = 0; ST_CK = 1;

Simulation using proteus software

Clock code

Conclusion The implementation of the microcontroller based sign board dot matrix led display. There were many challenges face while doing this lab assignment. First challenge was on how to display a single character on the dot-matrix, which was achieved after a very long battle. The second challenge was scrolling the characters using timer, it was also achieved over a very long battle where the second challenge was more challenging than the first challenge. The finally challenge was how to display clock on the dot-matrix led, and that was successful achieved. Moreover, regarding the hardware implementation, a single dot matrix led was used due to time and cost constrain. Apparently, all the lab objectives were successfully achieved and all learned were moderately applied. Reference a. Mazidi.M.A., Mazidi J.G., 2000,8051 Microcontroller and Embedded Systems,Upper Saddle River, N.J. Pearson Edu. Inc.

Pictures The hardware was implemented, a single dot matrix led was used due to time and cost constrain.

También podría gustarte