Moving Message Display Using Dot Matrix-Microcontroller and Assembly Language-Project Report, Thesis of Microcontrollers

This is project report by a student to fulfil requirement of course Microcontroller and Assembly Language at Ankit Institute of Technology and Science. It contains Dot, Matrices, Display, Panels, Serial, Port, Microcontroller, PNP, Multiplexers, Dual, Color

Typology: Thesis

2011/2012

Uploaded on 07/03/2012

booby
booby 🇮🇳

3.8

(15)

21 documents

1 / 15

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
MOVING MESSAGE
DISPLAY USING DOT
MATRICES
2010
Docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Partial preview of the text

Download Moving Message Display Using Dot Matrix-Microcontroller and Assembly Language-Project Report and more Thesis Microcontrollers in PDF only on Docsity!

MOVING MESSAGE

DISPLAY USING DOT

MATRICES

ACKNOWLEDGEMENTS

We thank Almighty Allah who gave us the knowledge and courage to work on this

project. We are also thankful to our advisors Dr. Haroon Rasheed and Dr. Nasir Rehman who

guided us through every step during the completion of this process. We are also indebted to Mr.

Haseeb, without whose help, this project would not have been a reality. And finally, we would

like to thank our parents. Their love and prayers have always paved the path of success for us.

HARDWARE

The basic hardware used in this project consists of

1. AT89C55WD Microcontroller (an 8051 family microcontroller)

2. MAX232 for serial communication

3. 74LS138 Multiplexers

4. 74LS373 Latches

5. N4918 PNP transistors for current amplification

A brief description of hardware is as follows.

1. AT89C55WD MICROCONTROLLER

AT89C55WD MICROCONTROLLER

**2. 74LS138 MULTIPLEXERS

  1. 74LS373 LATCHES**

MODULES AND DISCRIPTION

Although, it seems as a simple project but actually there are many technicalities involved. So, for the purpose of simplification and ease in troubleshooting, we divided the project into different modules.

  1. Control Module
  2. Multiplexers Module
  3. Latches Module
  4. Dot Matrix Module
  5. Current Amplification Module Description of the modules is as follows: 1. Control Module:

The first module includes the microcontroller, serial communication utility and connections to the other modules. This main module may be considered as the brain of whole project which controls all the activities. That is why it is regarded as control module.

2. Multiplexers Module

The second module performs the function of multiplexing. The multiplexing scheme for 64 dot matrices is as follows (only for one color).

3. Latches Module

Each multiplexer is connected to the enable pins of 8 latches. Inputs of latches are connected to port number 3.

PROBLEMS AND RECOMENDATIONS

Due to limited time and resources, we have employed only 8 dot matrices. If you want to connect more dot matrices, the code size may become greater than the built in memory of microcontroller. So, you will have to use external memory.

If the cathodes are not shorted, we will have to use a large number of latches (each latch to control the set of eight cathodes). Since, only one dot matrix is used to display data at a time, it was a better idea to short the respective cathodes.

To save space and financial resources, the amplifier module is connected after the shorted cathodes. If we employ amplifiers before anodes, we shall have to use a large number of amplifiers. That is one of the reason we shorted the cathodes and then we employed only one amplifier module after these cathodes.

While making PCB design, do not keep power plane and lines of PCB very close to each other of you are not an expert in making PCB.

While making dual layer PCB, first print the PCB design on both sides of the PCB and then drill the holes. If you print on one side of PCB and then drill holes and then print second side on PCB, then PCB design will not print correctly on the second side.

APPENDIX – 1

The code for printing PIEAS on dot matrices.

#include <reg51.h> #define SIZE 5

void smalldelay(void) { unsigned char counter; for (counter = 0; counter < 15; counter++); }

main() { unsigned char i, counter, dotbits[8][2 * SIZE], display[SIZE] = "PIEAS"; P0 = 0; P1 = 0; P2 = 0; P3 = 0; for( i = 0; i < SIZE; i++) { switch(display[i]) { case 'A': dotbits[0][i] = 0 ; dotbits[1][i] = 126 ; dotbits[2][i] = 126 ; dotbits[3][i] = 0 ; dotbits[4][i] = 126 ; dotbits[5][i] = 126 ; dotbits[6][i] = 126 ; dotbits[7][i] = 126 ; break; case 'E': dotbits[0][i] = 0; dotbits[1][i] = 127 ; dotbits[2][i] = 127 ; dotbits[3][i] = 0; dotbits[4][i] = 127 ; dotbits[5][i] = 127 ; dotbits[6][i] = 127 ; dotbits[7][i] = 0; break; case 'I': dotbits[0][i] = 0; dotbits[1][i] = 231 ; dotbits[2][i] = 231 ; dotbits[3][i] = 231 ; dotbits[4][i] = 231 ; dotbits[5][i] = 231 ; dotbits[6][i] = 231 ; dotbits[7][i] = 0 ; break; case 'P': dotbits[0][i] = 0; dotbits[1][i] = 126; dotbits[2][i] = 126; dotbits[3][i] = 0; dotbits[4][i] = 127; dotbits[5][i] = 127; dotbits[6][i] = 127; dotbits[7][i] = 127; break; case 'S': dotbits[0][i] = 0 ; dotbits[1][i] = 127 ; dotbits[2][i] = 127 ; dotbits[3][i] = 0 ;

APPENDIX – 2

The code for displaying PIEAS (one character at a time on 2 colored dot matrices)

#include <AT89X55.h> void delay(){ unsigned int x; for (x = 0; x < 330; x++); } main() { int a; short int pin; P0 = 15; P1 = 0; P2 = 0; P3 = 0; pin = 0; while(1){ if (pin == 0){P0 = 15; pin = 1;} else { P0 = 11; pin = 0;} P1 = 0; P2 = 0; P3 = 255; for (a = 0; a < 20; a++){ P2 = 1; P1 = 227; delay(); P2 = 2; P1 = 219; delay();P2 = 4; P1 = 219; delay(); P2 = 8; P1 = 227; delay(); P2 = 16; P1 = 251; delay(); P2 = 32; P1 = 251; delay();P2 = 64; P1 = 251; delay();P2 = 128; P1 = 251; delay(); } P1 = 0; P2 = 0; P3 = 255; for (a = 0; a < 20; a++){ P2 = 1; P1 = 195; delay(); P2 = 2; P1 = 231; delay();P2 = 4; P1 = 231; delay(); P2 = 8; P1 = 231; delay(); P2 = 16; P1 = 231; delay(); P2 = 32; P1 = 231; delay();P2 = 64; P1 = 231; delay();P2 = 128; P1 = 195; delay(); } P1 = 0; P2 = 0; P3 = 255; for (a = 0; a < 20; a++){ P2 = 1; P1 = 129; delay(); P2 = 2; P1 = 253; delay();P2 = 4; P1 = 253; delay(); P2 = 8; P1 = 129; delay(); P2 = 16; P1 = 129; delay(); P2 = 32; P1 = 253; delay();P2 = 64; P1 = 253; delay();P2 = 128; P1 = 129; delay(); } P1 = 0; P2 = 0; P3 = 255; for (a = 0; a < 20; a++){ P2 = 1; P1 = 195; delay(); P2 = 2; P1 = 189; delay();P2 = 4; P1 = 189; delay(); P2 = 8; P1 = 195; delay(); P2 = 16; P1 = 189; delay(); P2 = 32; P1 = 189; delay();P2 = 64; P1 = 189; delay();P2 = 128; P1 = 189; delay();