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 / Topics / Matrix display

Matrix display

|

Microcontroller › 8051 › Matrix display

  • This topic has 8 replies, 2 voices, and was last updated 14 years, 11 months ago by dagakshay.
Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • May 12, 2011 at 7:59 pm #927
    FARRUKH
    Participant

    I’ve assigned to make a project of two 2×2 matrix operation circuit i.e addition,subtraction,etc and I’ve completed its LCD interfacing and able to display 1st matrix.But I want to know that how can I save that matrix so that I can take another matrix from keypad and proceed the operations i.e addition,subtraction & multplication.
     

    May 13, 2011 at 7:43 am #6183
    dagakshay
    Participant

    hello Farrukh.

     

    just declare Two array in RAM/ use can also use External EEPROM… or use comtrollers like AVR which has inbuilt EEPROM… the part you asking is more of algoritum side… first discuss on algo later you can make codes …whats your algo to do that…

    May 13, 2011 at 4:22 pm #6188
    FARRUKH
    Participant

    I’m using 8051 microcontroller and my programming is in C

    I want to save matrix in same controller in array form

    May 14, 2011 at 3:36 am #6193
    dagakshay
    Participant

    just create a 2 dimensinal array as you do in c langauge…. i am not getting what difficulty you facing here

    May 14, 2011 at 7:33 am #6195
    FARRUKH
    Participant

    I’m tryring to create an array but getting some errors

    May 14, 2011 at 10:02 am #6197
    dagakshay
    Participant

    post the error… i do that and i never got an eroor doing so. aslo past the code line in which you declared the 2d array…

    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;
    }

    May 16, 2011 at 4:56 am #6209
    dagakshay
    Participant

    no code discription, no ckt, no code comments, before ypu you gettign error in code you dint even posted those error. how you tell me farrukh how to solve your problem and how to understand your code?

    May 16, 2011 at 4:58 am #6210
    dagakshay
    Participant

    post the error and if possible a bit of code comments and descriptions

  • Author
    Posts
Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.
Log In

RSS Recent Posts

  • AI algorithm for bots April 17, 2026
  • SDCC Array Access In Timer 0 Interrupt Handler April 16, 2026
  • EasyEda program has a major bug April 16, 2026
  • ANOTHER OLD PROJECT REDO April 16, 2026
  • How to set the OSCAL in a PIC 12F675 April 16, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media 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 WTWH Media
Privacy Policy | Advertising | About Us

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