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