8051 interfacing with LCD and display Counter
/*
developed by S4silver
license type - open source
created on - 11/12/2014
modified on - 11/14/2014
modification details - refactored
developer - Frank Hust Jincson
contact mail id - silverembeddedsolutions@gmail.com
web link - http://s4silver.blogspot.in/p/programmers-colony.html
*/
#include <REGX51.H>
sbit RS = P3^6;
sbit EN = P3^7;
unsigned int k,s,cnt=0;
void delay(unsigned char del)
{
unsigned int i,j;
for(i=0;i<del;i++)
for(j=0;j<200;j++);
}
void lcd_cmd(unsigned char cmd)
{
P1 = cmd;
RS=0;
EN=1;
delay(2);
EN=0;
}
void lcd_data(unsigned char dat)
{
P1 = dat;
RS=1;
EN=1;
delay(2);
EN=0;
}
void lcd_str(unsigned char *s)
{
while(*s)
{
lcd_data(*s++);
}
}
void lcdint_hex(unsigned int count)
{
unsigned char dat[]={0,0,0,0};
s=0;
lcd_cmd(0x88);
if(count==0)
{
lcd_data('0');
}
else
{
while(count>0)
{
dat[s++]= (count%10) + 48;
count=count/10;
}
while(s!=0)
{
--s;
lcd_data(dat[s]);
}
lcd_data(' ');
lcd_data(' ');
lcd_data(' ');
}
}
void main()
{
P1=0x00;
RS=0;
EN=0;
P2_7 = 1;
lcd_cmd(0x38); // 2 line 8 bit mode
lcd_cmd(0x01); // Reset LCD Display
lcd_cmd(0x06); // Shift Display Right
lcd_cmd(0x0C); // Display ON cursor Blinking
lcd_cmd(0x80); // First Line First Display
lcd_str("Count: ");
while(1)
{
if(P2_7==0)
{
cnt++;
for(k=0;k<30000;k++);
}
lcdint_hex(cnt);
}
}
/*
developed by S4silver
license type - open source
created on - 11/12/2014
modified on - 11/14/2014
modification details - refactored
developer - Frank Hust Jincson
contact mail id - silverembeddedsolutions@gmail.com
web link - http://s4silver.blogspot.in/p/programmers-colony.html
*/
#include <REGX51.H>
sbit RS = P3^6;
sbit EN = P3^7;
unsigned int k,s,cnt=0;
void delay(unsigned char del)
{
unsigned int i,j;
for(i=0;i<del;i++)
for(j=0;j<200;j++);
}
void lcd_cmd(unsigned char cmd)
{
P1 = cmd;
RS=0;
EN=1;
delay(2);
EN=0;
}
void lcd_data(unsigned char dat)
{
P1 = dat;
RS=1;
EN=1;
delay(2);
EN=0;
}
void lcd_str(unsigned char *s)
{
while(*s)
{
lcd_data(*s++);
}
}
void lcdint_hex(unsigned int count)
{
unsigned char dat[]={0,0,0,0};
s=0;
lcd_cmd(0x88);
if(count==0)
{
lcd_data('0');
}
else
{
while(count>0)
{
dat[s++]= (count%10) + 48;
count=count/10;
}
while(s!=0)
{
--s;
lcd_data(dat[s]);
}
lcd_data(' ');
lcd_data(' ');
lcd_data(' ');
}
}
void main()
{
P1=0x00;
RS=0;
EN=0;
P2_7 = 1;
lcd_cmd(0x38); // 2 line 8 bit mode
lcd_cmd(0x01); // Reset LCD Display
lcd_cmd(0x06); // Shift Display Right
lcd_cmd(0x0C); // Display ON cursor Blinking
lcd_cmd(0x80); // First Line First Display
lcd_str("Count: ");
while(1)
{
if(P2_7==0)
{
cnt++;
for(k=0;k<30000;k++);
}
lcdint_hex(cnt);
}
}
No comments:
Post a Comment