Exemplo n.º 1
0
void
DisplayRain(void)
{
	Rainfall		cur_rainfall;
	uint32			red = 0U;
	uint8			i;
	static uint8	line_pos[SEG7_NUM] = {
		0x00, 0x01, 0x40, 0x08, 0x01, 0x40, 0x00, 0x40
	};
	static Rainfall before_rainfall = 0U;
	static uint8	drop_cnt = 0U;

	/* 現在の降雨量取得 */
	Rte_Call_RainfallInDR_GetRainfall(&cur_rainfall);

	/* 7SEG表示 */
	if (before_rainfall != cur_rainfall) {
		before_rainfall = cur_rainfall;
		drop_cnt = 0;
	}

	if (cur_rainfall == 0) {
		SEG7_Clear();
	}
	else {
		drop_cnt++;
		if (drop_cnt > (4U - before_rainfall)) {
			for (i = 0; i < SEG7_NUM; i++) {
				switch (line_pos[i]) {
				// 1段目
				case 0x01:
					line_pos[i] = 0x40;
					break;
				// 2段目
				case 0x40:
					line_pos[i] = 0x08;
					break;
				// 3段目
				case 0x08:
					line_pos[i] = 0x00;
					break;
				// 初期値
				default:
					line_pos[i] = 0x01;
					break;
				}
				SEG7_SET(i, line_pos[i]);
				drop_cnt = 0;
			}
		}
	}

	/* LED表示 */
	while (cur_rainfall > 0) {
		red += 1 << (cur_rainfall - 1);
		cur_rainfall--;
	}
	sil_wrw_iop((void *) LED_G_BASE, red);
}
Exemplo n.º 2
0
void
SEG7_Clear(void)
{
	uint8 i;
	for (i = 0U; i < SEG7_NUM; i++) {
		SEG7_SET(i, 0U);
	}
}
Exemplo n.º 3
0
void SEG7_Hex(alt_u32 Data, alt_u8 point_mask){
    alt_u8 mask = 0x01;
    alt_u8 seg_mask;
    int i;
    
    //
    seg_mask = 0;
    for(i=0;i<SEG7_NUM;i++){
        seg_mask = szMap[Data & 0x0F];
        Data >>= 4;
        if (point_mask & mask)
            seg_mask |= 0x80;
        mask <<= 1;     
        SEG7_SET(i, seg_mask);
    }        
}
Exemplo n.º 4
0
void SEG7_Decimal(alt_u32 Data, alt_u8 point_mask){
    alt_u8 mask = 0x01;
    alt_u8 seg_mask;
    int i;
    
    //
    seg_mask = 0;
    for(i=0;i<SEG7_NUM;i++){
        seg_mask = szMap[Data%10];
        Data /= 10;
        if (point_mask & mask)
            seg_mask |= 0x80;
        mask <<= 1;   
        SEG7_SET(i, seg_mask);
    }        
  
} 
Exemplo n.º 5
0
void SEG7_Number(void){
    int i;
    for(i=0;i<SEG7_NUM;i++){
        SEG7_SET(i, szMap[i]);
    }        
}
Exemplo n.º 6
0
void SEG7_Full(void){
    int i;
    for(i=0;i<SEG7_NUM;i++){
        SEG7_SET(i, 0xFF);
    }        
}
Exemplo n.º 7
0
void SEG7_Clear(void){
    int i;
    for(i=0;i<SEG7_NUM;i++){
        SEG7_SET(i, 0x00);
    }        
}