在做一个检测电池充电电压是否上升的充电器,充电电压如果上升,则显示测试通过。开机界面为 PS1400 CHARGER,开始键按下时,界面显示{"V=X.XXV A=X.XXA"}电压电流。结束键按下时,重新显示 PS1400 CHARGER。在写键盘检测与电压电流刷新这遇到问题。如下
void main(void)
{
init();
lcd_init();
ad_init();
init_lcd();//显示开机界面 PS1400 CHARGER
while(1)
{
key_scan();
}
}
键盘扫描如下 K1为开始键。K2为停止键盘,K3为3A-4A继电器切换键
void key_scan(void)
{
static int bank2 a1,a2;
if(K1==0) //如果开始键被按下
{
write_cmd(0x01); // 清屏
write_cmd(0XC1); //第二行
for(k=0;k<14;k++) //显示{"V=0.00V A=0.00A"};
{
write_dat(table1[k]);
}
dis_ad(); //获取电压电流并在XX处显示 这有个问题,这个电压电流怎么能变成实时刷新?如果像我这样写的话,下边有3S的延时判断电压是否上升,时间太长,实时性就没了。。。。。
D2=1; //继电器闭合,开始充电
a1=get_ad(); //获取电压
delay(3000); //延时3S 3S延时!!
a2=get_ad();//延时3S,再次获得电压
if(a2-a1>1) //判断电压是否有上升,有上升,响铃,显示测试通过
{
LED=1; //如果电压上升,点亮LED指示灯
D2=0; //测试通过,断开继电器,结束充电
test_pass();//液晶1602显示TEST IS PASS!
}
else //电压无上升,显示测试未通过
{
test_npass(); //液晶1602显示TEST IS NOT PASS!
}
}
if(K2==0) //如果停止键K2被按下 则结束充电 回到开机界面 显示 PS1400 CHARGER
{
D2=0; //关闭继电器
write_cmd(0x01); // 清屏
delay(2);
init_lcd();//显示 PS1400 CHARGER
}
if(K3==0)
{
D1=!D1;
}
}
有的朋友说用定时器中断,我没有思路啊。不知该怎么在中断内实现。 |