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