EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Replies / #includesbit rs =

#includesbit rs =

|

Microcontroller › 8051 › Matrix display › #includesbit rs =

May 14, 2011 at 1:37 pm #6200
FARRUKH
Participant

#include<reg51.h>
sbit rs = P3^0;
sbit rw = P3^1;
sbit en = P3^2;
sbit busy = P2^7;
#define TRUE 1
#define FALSE 0

void lcdready();
void clearscreen();
void lcdcmd(unsigned char value);
void lcddata(unsigned char value);
void lcdinitialize(void);
void lcddisplay(char str[], unsigned int k);
unsigned int keydetect (void);
char numdetect(char i);
void operate(char i);
void numprint(long float i);

sbit col0 = P1^0;
sbit col1 = P1^1;
sbit col2 = P1^2;
sbit col3 = P1^3;

unsigned char num1;
unsigned int j=16;
unsigned char str[]=”enter 2nd matrix”;
int c=0;
int d=0;

char sign=0;
char co,lo=0;

void main()
{
char i;
int p=0;
unsigned int j=16;

unsigned char str[] = “enter 1st matrix”;
unsigned char a[2][2];
int k,m;

lcdinitialize();
lcddisplay(str, j);

while(1)

{
i=keydetect ();
p++;

if(i!=0){
numdetect(i);
a[0][0]=num1;
if(p==1){
k=a[0][0];
lcddata(k);}
}
}

return ;
}

void lcdready()
{
busy = 1;
rs = 0;
rw = 1;
en = 0;
en = 1;
while(busy==1)
{
en = 0;
en = 1;
}
return;
}
void lcdcmd(unsigned char value)
{
lcdready();
P2 = value;
rs = 0;
rw=0;
en=1;
en=0;
return;
}

void lcddata(unsigned char value)
{
lcdready();

P2 = value;
rs = 1;
rw=0;
en=1;
en=0;
return;
}
void lcdinitialize(void)
{
lcdcmd(56);
lcdcmd(14); // display on, cursor blinking
lcdcmd(1);
lcdcmd(6);
lcdcmd(0x80); //line 1, position 0
}

void lcddisplay(char str[], unsigned int k)
{
unsigned int i;
for(i=0; i<k; i++)
lcddata(str);
}

unsigned int keydetect (void){

unsigned char key=0;
char i;
for (i=0; i<4; i++){
P1 &= ~(0x80>>i);

if(col0 == 0){
key = P1;
while(col0 == 0);

return key;
}
if(col1 == 0){
key = P1;
while(col1 == 0);

return key;
}
if(col2 == 0){
key = P1;
while(col2 == 0);

return key;
}
if(col3 == 0){
key = P1;
while(col3 == 0);

return key;
}

P1 |= (0x80>>i);

}
return 0;
}

char numdetect(char var)

{

switch (var)

{

case 0xEE:

lcddata(‘7’);
num1 =7;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0; }
break;

case 0xED:
lcddata(‘8’);
num1=8;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xEB:
lcddata(‘9’);
num1=9;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xDE:
lcddata(‘4’);
num1=4;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xDD:
lcddata(‘5’);
num1=5;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xDB:
lcddata(‘6’);
num1=6;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xBE:
lcddata(‘1’);
num1=1;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xBD:
lcddata(‘2’);
num1=2;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0xBB:
lcddata(‘3’);
num1=3;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;}
break;

case 0x7D:
lcddata(‘0’);
num1=0;
lcdcmd(0x14);
c++;
if(c==2){
lcdcmd(0xC0);
c=0;
break;

case 0x7E:
clearscreen();

num1=-1;
break;
case 0x7B:
lcddisplay(str,j);
num1=-1;
break;

}

return num1;

}
}

void clearscreen( void )
{
unsigned int i;
lcdcmd(0x01);

return;
}

RSS feed: Recent Posts Recent Posts

  • Advice for an ESP32 Soil Tensiometer project with 5V sensors September 9, 2026
  • Marantz SR4500 – CS49400 DSP reverse-engineering / custom active crossover September 9, 2026
  • How does an air tag work? September 9, 2026
  • Cheap ways to link 5 Keithley units and 4 BNC units? September 8, 2026
  • Sony KV-29VL40 - 4 Blink error - IC001 Pin 17 high September 8, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 Arrowfly LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of Arrowfly
Privacy Policy | Advertising

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise