Implementing a 4-bit counter using an 8051 and Interfacing it to an LCD
Introduction
In this lab, you will learn how to write a simple C program for 80X51 micro-controller, compile it using C51 compiler, and emulate it on an emulator using PDS51. The program will be used to control a simple 4-bit up-down counter, capable of counting from 0 to 15. At each step the count should be displayed in decimal format on the LCD.
Assignment
In this lab :
Apparatus Required
Schematic
Program
#pragma SMALL DB OE
#include <reg51.h>
#include "io.h"
/* P0, P1, P2 and P3 are predefined port names and are bit addressable */
sbit reset = P0^4; /* bit 4 of Port 0 */
sbit up_down = P0^5;
sbit load = P0^6;
sbit Start_LCD = P0^7; /* bit 7 of Port 3 */
/* Delay function */
void delay() {
int i, j;
for(i=0; i<1000; i++)
for(j=0; j<100; j++)
i = i + 0;
}
/* Function to output the decimal value of the count on the LCD */
void PrintInt(unsigned char i) {
char ch[4];
/* Write code to convert the count to a string value and use the
PrintString function provided in io.c */
PrintString(ch);
}
void main(void) {
unsigned char count = 0;
InitIO(); /* Initialize the LCD */
while (1) {
if (Start_LCD == 1) {
ClearScreen();
PrintString("Ready...");
delay();
}
else if (reset == 1) {
/* Output 0 on the LCD */
}
else if (load == 1) {
/* Output the current value of Datain on the LCD */
}
else {
/* Check the Up/Down pin for 1 or 0 count up or down
accordingly. Display each value on the LCD */
}
}
}
Procedure
Note: Port 0 should not be used for output
because it does cannot sufficiently drive the LCD.
P:\\Peart\cs122
C:\Temp\count.c
c51 count.c
c51 io.c
This would generate object files: count.obj, io.obj
bl51 count.obj, io.obj to count.omf