Пример #1
0
void VFD_Draw_Num(unsigned char c, unsigned char position)
{
	int dignum;

	if(position < 1 || position > 4)
	{
		dprintk(2, "num position error! %d\n", position);
		return;
	}
	if(c >  9)
	{
		dprintk(2, "unknown num!\n");
		return;
	}

	dignum =10 - position / 3;
	if(position % 2 == 1)
	{
		if(NumLib[c][1] & 0x01)
			VFD_Seg_Dig_Seg(dignum, SEGNUM1, VfdSegAddr[dignum].CurrValue1 | 0x80);
		else
			VFD_Seg_Dig_Seg(dignum, SEGNUM1, VfdSegAddr[dignum].CurrValue1 & 0x7F);
    		VfdSegAddr[dignum].CurrValue2 = VfdSegAddr[dignum].CurrValue2 & 0x40;//sz
    		VFD_Seg_Dig_Seg(dignum, SEGNUM2, (NumLib[c][1] >> 1) | VfdSegAddr[dignum].CurrValue2);
	}
	else if(position % 2 == 0)
Пример #2
0
void VFD_Clear_All(void)
{
	int i;
	for(i = 0; i < 13; i++)
	{
		VFD_Seg_Dig_Seg(i + 1,SEGNUM1,0x00);
		VfdSegAddr[i + 1].CurrValue1 = 0x00;
		VFD_Seg_Dig_Seg(i + 1,SEGNUM2,0x00);
		VfdSegAddr[i + 1].CurrValue2 = 0;
	}
	sec_0 = 0;
}
Пример #3
0
void VFD_Draw_ASCII_Char(char c, unsigned char position)
{
	if(position < 1 || position > 8)
	{
		dprintk(2, "char position error! %d\n", position);
		return;
	}
	if(c >= 65 && c <= 95)
		c = c - 65;
	else if(c >= 97 && c <= 122)
		c = c - 97;
	else if(c >= 42 && c <= 57)
		c = c - 11;

	else
	{
		dprintk(2, "unknown char!\n");
		return;
	}
	VFD_Seg_Dig_Seg(position, SEGNUM1, ASCII[(unsigned char)c][0]);
	VFD_Seg_Dig_Seg(position, SEGNUM2, ASCII[(unsigned char)c][1]);

    VFD_Show_Content();
}