Introduction
An electronic notice board is a digital replacement for traditional notice boards used in institutions, offices, and public places. By using a microcontroller such as the 8051, we can create an efficient and programmable electronic notice board. This article explores the design, components, and implementation of an electronic notice board using the 8051 microcontroller.
Components Required
8051 Microcontroller: The core processing unit for the project.
LED Display or LCD Module: To display the messages.
UART Interface: For serial communication.
Power Supply: To provide necessary voltage to the circuit.
Resistors, Capacitors, and other Passive Components: For building the supporting circuitry.
Programming Cable and Software: For uploading the code to the microcontroller.
Working Principle
The electronic notice board displays messages received via serial communication. The 8051 microcontroller processes these messages and updates the display accordingly. Users can send messages from a computer or other devices using a UART interface.
Circuit Design
Microcontroller (8051): The heart of the project, connected to the display module and the UART interface.
LED/LCD Display: Interfaced with the microcontroller to show the received messages.
UART Interface: Facilitates communication between the microcontroller and the input device (e.g., a computer).
Power Supply: Ensures stable voltage and current for the circuit components.
Circuit Diagram
Here's a simplified connection outline:
8051 Microcontroller Pins:
P1: Connected to Data Lines of the Display.
P2: Control Lines for the Display.
RXD/TXD: Connected to the UART interface for receiving and transmitting data.
Software Implementation
Initializing UART: Set up the UART for serial communication.
Reading Data: Continuously check for incoming messages via UART.
Display Update: Update the LED/LCD display with the new message.
#include <reg51.h>
// Define pins for LCD
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
// Function prototypes
void UART_Init(void);
void UART_TxChar(char ch);
char UART_RxChar(void);
void LCD_Init(void);
void LCD_Cmd(unsigned char cmd);
void LCD_Char(unsigned char char_data);
void LCD_String(char *str);
void delay(unsigned int time);
void main(void) {
char msg[32];
int i = 0;
UART_Init(); // Initialize UART
LCD_Init(); // Initialize LCD
while (1) {
msg[i] = UART_RxChar(); // Read character from UART
if (msg[i] == '\r') { // Check for carriage return
msg[i] = '\0'; // Null terminate the string
i = 0; // Reset index for next message
LCD_Cmd(0x01); // Clear the LCD
LCD_String(msg); // Display the message
} else {
i++;
}
}
}
// UART initialization function
void UART_Init(void) {
TMOD = 0x20; // Timer 1 in mode 2
TH1 = 0xFD; // 9600 baud rate
SCON = 0x50; // 8-bit data, 1 stop bit, 1 start bit
TR1 = 1; // Start timer
}
// UART transmit character function
void UART_TxChar(char ch) {
SBUF = ch; // Load character into buffer
while (TI == 0); // Wait until transmission is complete
TI = 0; // Clear transmit interrupt flag
}
// UART receive character function
char UART_RxChar(void) {
while (RI == 0); // Wait until data is received
RI = 0; // Clear receive interrupt flag
return SBUF; // Return received character
}
// LCD initialization function
void LCD_Init(void) {
LCD_Cmd(0x38); // 2 lines, 5x7 matrix
LCD_Cmd(0x0C); // Display ON, cursor OFF
LCD_Cmd(0x06); // Increment cursor
LCD_Cmd(0x01); // Clear display
delay(10); // Wait for initialization
}
// LCD command function
void LCD_Cmd(unsigned char cmd) {
P1 = cmd; // Send command to data pins
RS = 0; // Command mode
RW = 0; // Write operation
EN = 1; // Enable pulse
delay(1);
EN = 0;
}
// LCD data function
void LCD_Char(unsigned char char_data) {
P1 = char_data; // Send data to data pins
RS = 1; // Data mode
RW = 0; // Write operation
EN = 1; // Enable pulse
delay(1);
EN = 0;
}
// Function to display string on LCD
void LCD_String(char *str) {
int i;
for (i = 0; str[i] != '\0'; i++) {
LCD_Char(str[i]);
}
}
// Delay function
void delay(unsigned int time) {
int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 1275; j++);
}
Conclusion
Building an electronic notice board using the 8051 microcontroller is a straightforward and practical project that introduces fundamental concepts of microcontroller programming and serial communication. This project can be expanded by adding features like wireless communication using Bluetooth or Wi-Fi modules and improving the display interface with more advanced graphical displays.
This guide should give you a good start on building your electronic notice board project. Happy coding!
Want us to guide you through your project or make the project for you ?
Create Various Projects
Check out our Free Arduino Projects Playlist - Arduino Projects
Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects
Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects
Check out our Free IoT Projects Playlist - IoT Projects
Check out our Free Home Automation Projects Playlist - Home Automation Projects
Check out our Free NodeMCu Projects Playlist - NodeMCu Projects
Comments