Seven Segment Display Function

 

#include "seven_segment_display.h"

#define TIMER_RATE  TMRS12_RATE_1MS

#define OUTPUT      0xFF

 

 //data  Port M2

 //clock Port M3

 

void delay(unsigned int time_in_ms)

{

  int time;

 

  time = TMRS12_GetTime();

 

  while((TMRS12_GetTime()-time) < time_in_ms);  // wait for specified time

}

 

 

void ClockPulse( void)

{  

   unsigned int i = 0;

  

   

   PTM = PTM | BIT3HI;            //set port M2 to HI (clock line)

   for (i=0; i<100; i++);       //wait for at least 1ms

 

   PTM = PTM & BIT3LO;          //set port M2 to LO (clock line)

   for (i=0; i<100; i++);       //wait for at least 1ms   

}

 

 

 

void DataHigh( void)

{

    PTM = PTM | BIT2HI;         // set data line high

    ClockPulse();                  // pulse clock

}

 

void DataLow ( void)

{

    PTM = PTM & BIT2LO;           // set data line low

    ClockPulse();                  // pulse clock

}

 

void ClearDisplay( void)

{

    int i;

   

    for(i = 0; i<8; i++)     // set all segments of display to high (clear)

        DataHigh();

 

}

 

void DisplayInit( void)

{

    DDRM = DDRM | BIT2HI;    // initialize M2 and M3 to be outputs

    DDRM = DDRM | BIT3HI;            

}

 

 

 

void Display(int Number)     // display appropriate number

{

    ClearDisplay();

 

 

    if (Number == 11)

    {

        DataHigh();

        DataHigh();

        DataHigh();

        DataHigh();

       

        DataLow();

        DataHigh();

        DataHigh();

        DataHigh();             

    }

   

       

    if (Number == 9)

    {

        DataLow();

        DataLow();

        DataLow();

        DataLow();

       

        DataHigh();

        DataLow();

        DataLow();

        DataHigh();

    }

   

    if (Number == 8)

    {

        DataLow();

        DataLow();

        DataLow();

        DataLow();

       

        DataHigh();

        DataLow();

        DataLow();

        DataLow(); 

    }

 

     if (Number == 7)   

    {

        DataHigh();

        DataLow();

        DataLow();

        DataLow();

       

        DataHigh();

        DataLow();

        DataHigh();

        DataHigh();

       

    }

 

    if (Number == 6)

    {

        DataLow();

        DataLow();

        DataLow();

        DataHigh();

       

        DataHigh();

        DataLow();

        DataLow();

        DataLow();

    }

   

 

 

    if (Number == 5)    

    {

       

        DataLow();

        DataLow();

        DataLow();

        DataHigh();

       

        DataHigh();

        DataLow();

        DataLow();

        DataHigh();

    } 

   

    if (Number == 4)

    {

        DataLow();

        DataLow();

        DataHigh();

        DataLow();

       

        DataHigh();

        DataLow();

        DataHigh();

        DataHigh();        

    }

   

   

    if (Number == 3)   

    {

        DataLow();

        DataHigh();

        DataLow();

        DataLow();

       

        DataHigh();

        DataLow();

        DataLow();

        DataHigh();

    } 

   

   

    if(Number == 2)    

    {

        DataLow();

        DataHigh();

        DataLow();

        DataLow();

       

        DataHigh();

        DataHigh();

        DataLow();

        DataLow();

    }

    

   

    if (Number == 1)  

    {

        DataHigh();

        DataHigh();

        DataHigh();

        DataLow();

       

        DataHigh();

        DataLow();

        DataHigh();

        DataHigh();

    }

       

    if (Number == 0)   

    {

        DataHigh();

        DataLow();

        DataLow();

        DataLow();

       

        DataHigh();

        DataLow();

        DataLow();

        DataLow();

    }

   

    printf("in display function: %i \r\n", Number);

}

 

 

Back to Pseudo Code

Back to the Starting Line