닫기

[참고 자료] LED 제어와 시뮬레이션 예제 4

  • 등록 2015.01.20 17:26:35
URL복사

// fndled3.c

#include

#include

/* FND */

#define BUS_FND_COM_SEL*((unsigned char *)0x1008) // COM select

#define BUS_FND_WR_DATA*((unsigned char *)0x1004) // write data

void delay (int d){

int i;

for (i=0; i

}

// convert ascii code to FND font index

unsigned char ascii_to_fnd_font(unsigned char character)

{

unsigned char font_index;// FND font index

if(character == 0xFF)

{

// FND font index - 8 and dot point

font_index = 0x12;

}

else if(character == 0x2E)

{

font_index = 0x11;// FND font index - dot point

}

else if(character == 0x2D)

{

font_index = 0x10;// FND font index - dash

}

else if((character >= 0x30) && (character <= 0x39))

{

font_index = character - 0x30;// FND font index - number

}

else if((character >= 0x41) && (character <= 0x46))

{

// FND font index - big alphabet

font_index = character - 0x37;

}

else if((character >= 0x61) && (character <= 0x66))

{

// FND font index - small alphabet

font_index = character - 0x57;

}

else

font_index = 0x11;

return font_index;

}

int main(void)

{

unsigned char character;// ASCII character code

unsigned char font_index;// FND font index

/* FND font set : "0~9 A~f" */

unsigned char fnd_font[19] = { 0xBE, 0x82, 0x3B, 0xAB, 0x87,

0xAD, 0xBD, 0x8A, 0xBF, 0x8F, 0x9F, 0xB5, 0x3C,

0xB3, 0x3D, 0x1D };

/* --- MCUCR(MCU control register) --- */

// SRE(7) : External SRAM/XMEM Enable

MCUCR |= 0b10000000;

/* --- Display HEX number(0-9) to FND 4 digit --- */

character = '0';// set ASCII code- '0'

while(character <= '9')

{

BUS_FND_COM_SEL = 0b00001111;// COM select(COM4-1)

_delay_ms(2);

// ASCII code to FND font index

font_index = ascii_to_fnd_font(character);

// write FND font code

BUS_FND_WR_DATA = fnd_font[font_index];

_delay_ms(2);

character++;// set next HEX number

_delay_ms(500);

}

/* --- Display HEX number(A-F) to FND 4 digit --- */

character = 'A';// set ASCII code- 'A'

while(character <= 'F')

{

BUS_FND_COM_SEL = 0b00001111;// COM select(COM4-1)

_delay_ms(2);

// ASCII code to FND font index

font_index = ascii_to_fnd_font(character);

// write FND font code

BUS_FND_WR_DATA = fnd_font[font_index];

_delay_ms(2);

character++;// set next HEX number

_delay_ms(500);

}

BUS_FND_COM_SEL = 0b00000000;// turn off all digits

}






주요파트너/추천기업