前言:
最近使用AS608模块做智能门禁系统,发现厂家代码无法直接烧录到STC89C52中,网上有AS608相关代码,但是还另外融合了多个其他模块,对新手很不友好,所以手打了一个只有AS608模块+LCD1602的51程序,希望对新手有帮助。
代码现象:
1.指纹的录入:
指纹的录入
可能有杠精就要说了,你这样谁知道是否录入指纹?
我们可以通过上位机进行验证:FingerID中那个3就是我们视频中录入的
2.指纹的验证:
指纹的验证
硬件连接:
上位机的使用:
代码实现的原理:
1.AS608的指令格式:
最重要的是一定要通过上位机先修改指纹模块的波特率为9600
2.51单片机怎么向AS608发送指令
用到的发送指令代码如下:
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
extern xdata uchar UART_RX_SBUF[50]; //串口接收字符串
extern uint UART_Rx_Num; //单次总共接收数据大小
ulong AS608Addr = 0XFFFFFFFF; //默认模块地址
const char *EnsureMessage(uchar ensure);
/**
* @brief 串口发送一个字节
* @param Data 十六进制数,长度:一个字节
* @retval 无
*/
void SendData(uchar Data)
{
SBUF=Data;
while(TI==0);
TI=0;
}
/**
* @brief AS608命令包,数据包,结束包的包头
* @param 无
* @retval 无
*/
void SendHead(void)
{
SendData(0xEF);
SendData(0x01);
}
/**
* @brief 发送地址
* @param 无
* @retval 无
* @Descrip >>单片机右移操作符为算术右移:无符号,正数高位补0,负数补1
* 两位16进制为一个字节
*/
void SendAddr(void)
{
SendData(AS608Addr>>24);//0xffffff(ff)
SendData(AS608Addr>>16);//0x00ffff(ff)
SendData(AS608Addr>>8); //0x0000ff(ff)
SendData(AS608Addr); //0x000000(ff)
}
/**
* @brief 发送包标识
* @param 无
* @retval 无
* @Descrip 01为命令包,02为数据包,08为结束包
*/
void SendFlag(uchar flag)
{
SendData(flag);
}
/**
* @brief 发送包长度
* @param 无
* @retval 无
*/
void SendLength(int length)
{
SendData(length>>8);
SendData(length);
}
/**
* @brief 发送指令码
* @param 无
* @retval 无
*/
void Sendcmd(uchar cmd)
{
SendData(cmd);
}
/**
* @brief 发送校验和
* @param 无
* @retval 无
*/
void SendCheck(uint check)
{
SendData(check>>8);
SendData(check);
}
3.怎么用指令实现指纹的录入和验证
结语:
这些都是使用AS608中的重要内容,希望对想使用AS608模块的人有所帮助
若想获取以上程序的代码,可添加我微信15113224982获取,不免费,一瓶可乐的价格