关于#AS608#的问题,如何解决?

#这是个基于STC89c52的AS608指纹锁项目
添加指纹模块老是不行,id写完后,只在Lcd1602上显示Enter fp Please,AS608模块没反应呀!怎么都没反应

void FPM10A_Add_Finger()
{
    unsigned char key;
    
    unsigned char show_id[3]={0,0,0};
    ClrScreen();
    while(1)//扫描
    {
        dis_str(0,0,"Input ID Please");
        key=number();
        if(key=='D')//返回键
            break;
        if(key=='A')//id加1
        {
            if(finger_id==999)
                finger_id=0;
            else
                finger_id++;
        }
        if(key=='B')//id减1
        {
            if(finger_id==0)
                finger_id=999;
            else
                finger_id--;
        }
        show_id[0]=finger_id/100;
        show_id[1]=finger_id%100/10;
        show_id[2]=finger_id%10;
        dis_str(0,1,"ID:");
        Write_command(0x80|(0x40+4));
        Write_dat(show_id[0]+'0');
        Write_command(0x80|(0x40+5));
        Write_dat(show_id[1]+'0');
        Write_command(0x80|(0x40+6));
        Write_dat(show_id[2]+'0');
        if(key=='C')
        {
            ClrScreen();
            dis_str(0,0,"Enter fp Please");
            do
            {
                FPM10A_Get_Image();
                FPM10A_Receive_Data(12);
                if(FPM10A_RECEICE_BUFFER[9]==0)//判断接收码,第9位为接收位
                {
                    Delay_Ms(100);
                    FPM10A_Gen_Char_To_Buffer1();
                    FPM10A_Receive_Data(12);
                    if(FPM10A_RECEICE_BUFFER[9]==0)
                        dis_str(0,1,"successful");
                    buzz_times(1);
                    Delay_Ms(1000);
                    dis_str(0,1,"Please confirm");
                    do
                    {
                        FPM10A_Get_Image();
                        FPM10A_Receive_Data(12);
                        if(FPM10A_RECEICE_BUFFER[9]==0)//判断接收码,第9位为接收位
                        {
                            Delay_Ms(100);
                            FPM10A_Gen_Char_To_Buffer2();
                            FPM10A_Receive_Data(12);
                            FPM10A_Reg_Model();
                            FPM10A_Receive_Data(12);
                            FPM10A_Cmd_Save_Finger(finger_id++);
                            FPM10A_Receive_Data(12);
                            if(FPM10A_RECEICE_BUFFER[9]==0)
                                dis_str(0,1,"successful");
                            buzz_times(1);
                            Delay_Ms(2000);
                            break;
                        }
                    }while(key != 'D');
                    break;
                }
        
            }while(key != 'D');
            Delay_Ms(1000);
            ClrScreen();//清屏
        }
    }
}

img

就一直这个样,录不了指纹。
已经阻碍我2天了。-_-

根据你提供的代码,可能有以下几个原因导致指纹录入失败:

FPM10A 模块无法正常连接:首先应该检查 FPM10A 模块的接线是否正确,包括指纹模块的 VCC、GND 和 TXD、RXD 等引脚连接是否正确。另外,确认 FPM10A 模块是否正常工作,可以尝试在代码中添加一些调试语句,查看模块是否能够正常接收到数据。

指纹采集失败:在录入指纹时,需要保证指纹图像的质量,否则可能会导致指纹信息不完整或无法识别。可以尝试将 FPM10A 模块移动到不同的位置,尽可能使得指纹图像清晰明确。另外,在采集指纹图像前,可以先将手指自然地放置在指纹识别模块上,并保持稳定,以便更好地捕获指纹信息。

编程错误:在程序中可能存在一些代码逻辑错误,例如函数调用的顺序不正确或者参数传递错误等。可以通过打印调试信息的方式,逐步定位程序中的错误并进行修复。

针对以上问题,你可以尝试以下几个解决方法:

检查 FPM10A 模块的接线是否正确,确认模块能否正常连接。

尝试调整指纹采集位置,使得指纹图像更加清晰明确。

添加调试语句,查看程序中是否存在逻辑错误,并进行相应的修复。

希望这些方法能够帮助你解决问题。

网上找了开源的,烧了一下,成了,硬件肯定没问题。我测了一下, 这句 if(FPM10A_RECEICE_BUFFER[9]==0)它判断不出来,查了手册,应答位就是第十位啊,问题到底在哪呀! -_-