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

2015.01.20 17:26:35

// 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

}


Copyright ⓒ 첨단 & automationasia.net



상호명(명칭) : ㈜첨단 | 등록번호 : 서울,아54000 | 등록일자 : 2021년 11월 1일 | 제호 : 오토메이션월드 | 발행인 : 이종춘 | 편집인 : 임근난 | 본점 : 서울시 마포구 양화로 127, 3층, 지점 : 경기도 파주시 심학산로 10, 3층 | 발행일자 : 2021년 00월00일 | 청소년보호책임자 : 김유활 | 대표이사 : 이준원 | 사업자등록번호 : 118-81-03520 | 전화 : 02-3142-4151 | 팩스 : 02-338-3453 | 통신판매번호 : 제 2013-서울마포-1032호 copyright(c)오토메이션월드 all right reserved