要点1:利用数组存储十次距离
技巧:注意juli_huixian_index的进出值的变化,在数据的出口地方进行新旧数据的处理。
void Juli_Pro()
{
static u8 juli_huixian_index ;
if(count_juli >= 200)
{
count_juli = 0;
if(ceju_start == 1)
{
ceju_start = 0;
juli_xianshi = Juli_Celiang();
juli_store[juli_store_index] = juli_xianshi;//index 从1---10循环
juli_huixian[juli_huixian_index] = juli_xianshi;
juli_huixian_index++;
}
// juli_xianshi = Juli_Celiang();
///
if(caozuo_0_1 == 0)
{
if(juli_huixian_index >= 2)
{
juli_before_after[0] = juli_huixian[juli_huixian_index - 2];
juli_before_after[1] = juli_huixian[juli_huixian_index - 1];
}
else if(juli_huixian_index == 1)
{
juli_before_after[0] = 0;
juli_before_after[1] = juli_huixian[0];
}
else
juli_before_after[0] = juli_before_after[1] = 0;
}
else if(caozuo_0_1 == 1)
{
if(juli_huixian_index >= 2)
{
juli_before_after[0] = (juli_huixian[(juli_huixian_index - 2)]+juli_huixian[juli_huixian_index - 1]);
juli_before_after[1] = juli_huixian[juli_huixian_index - 1];
}
else if(juli_huixian_index == 1)
{
juli_before_after[0] = 0+juli_huixian[0];
juli_before_after[1] = juli_huixian[0];
}
else
juli_before_after[0] = juli_before_after[1] = 0;
}
}
}
要点2:DAC电压输出
技巧1:0—5V与0—255对应起来即可,小数点需要添加0.02f
技巧2: DAC输出可以设置为50ms一次。
技巧3:OUT输出引脚的地址为0x40。光敏电阻0x41,旋钮电阻0x43
u8 volt_value;
void DA_Pro()
{
if( juli_xianshi <= mangqu_ctrl)
{
volt_value = 0;
}
else if( juli_xianshi > mangqu_ctrl)
{
volt_value = (u8)((juli_xianshi - mangqu_ctrl)*0.02f*255/5);
// volt_value = (u8)((juli_xianshi - mangqu_ctrl)*0.02f*51);
}
else if(volt_value >= 255)
volt_value = 255;
Write_da(0x40,(u8)(volt_value));
}
要点3:LED1闪烁
if(ceju_start == 1)//初始化测距状态
{
ceju_led_flag = 1;
count_time = 0;
count_400ms = 0;
}
if(ceju_led_flag == 1)
{
count_400ms_flag = 1;
}
if(count_400ms_flag == 1)
{
count_400ms++;
if(count_400ms < 200)
led_state &= ~0x01;
else if((count_400ms >= 200)&&(count_400ms < 400))
led_state |= 0x01;
else if(count_400ms >= 400)
{
count_400ms = 0;
count_time++;
}
}
if(count_time >= 10)
{
count_time = 0;
count_400ms_flag = 0;
ceju_led_flag = 0;
}
Device_Ctrl(0x80,led_state);
要点4:数码管刷新必须500ms!! 不能200 300
要点5: 在按键部分写入eeprom的时候,不需要EA=0;EA= 1,只要eeprom函数里面有延时10ms就可以了。