淮安信息学院毕业设计(论文) 第 36 页 共 36 页 附录
/*------------------ FINGERPRINT命令字 --------------------------*/
//FINGERPRINT_获得指纹图像命令 void FINGERPRINT_Cmd_Get_Img(void) {
unsigned char i;
for(i=0;i<6;i++) //发送包头
UART1_Send_Byte(FP_Pack_Head[i]);
for(i=0;i<6;i++) //发送命令 0x1d
UART1_Send_Byte(FP_Get_Img[i]); }
//将图像转换成特征码存放在Buffer1中
void FINGERPRINT_Cmd_Img_To_Buffer1(void) {
unsigned char i;
for(i=0;i<6;i++) //发送包头 {
UART1_Send_Byte(FP_Pack_Head[i]); }
for(i=0;i<7;i++) //发送命令将图像转换成特征码存CHAR_buffer1 { UART1_Send_Byte(FP_Img_To_Buffer1[i]); } }
//将图像转换成特征码存放在Buffer2中
void FINGERPRINT_Cmd_Img_To_Buffer2(void) {
unsigned char i;
for(i=0;i<6;i++) //发送包头 {
UART1_Send_Byte(FP_Pack_Head[i]);
淮安信息学院毕业设计(论文) 第 37 页 共 37 页 } for(i=0;i<7;i++) //发送命令将图像转换成特征码存放CHAR_buffer1 { UART1_Send_Byte(FP_Img_To_Buffer2[i]); } }
//将BUFFER1跟 BUFFER2 中的特征码合并成指纹模版 void FINGERPRINT_Cmd_Reg_Model(void) {
unsigned char i;
for(i=0;i<6;i++) //包头 {
UART1_Send_Byte(FP_Pack_Head[i]); }
for(i=0;i<6;i++) //命令合并指纹模版 {
UART1_Send_Byte(FP_Reg_Model[i]); } }
//删除指纹模块里的所有指纹模版
void FINGERPRINT_Cmd_Delete_All_Model(void) {
unsigned char i;
for(i=0;i<6;i++) //包头
UART1_Send_Byte(FP_Pack_Head[i]);
for(i=0;i<6;i++) //命令合并指纹模版
UART1_Send_Byte(FP_Delet_All_Model[i]); }
淮安信息学院毕业设计(论文) 第 38 页 共 38 页 //删除指纹模块里的指定指纹模版 void FINGERPRINT_Cmd_Delete_Model(unsigned int uiID_temp) {
volatile unsigned int uiSum_temp = 0; unsigned char i;
FP_Delete_Model[4]=(uiID_temp&0xFF00)>>8; FP_Delete_Model[5]=(uiID_temp&0x00FF);
for(i=0;i<8;i++)
uiSum_temp = uiSum_temp + FP_Delete_Model[i];
//UART0_Send_Byte(uiSum_temp);
FP_Delete_Model[8]=(uiSum_temp&0xFF00)>>8;
FP_Delete_Model[9]=uiSum_temp&0x00FF;
for(i=0;i<6;i++) //包头
UART1_Send_Byte(FP_Pack_Head[i]);
for(i=0;i<10;i++) //命令合并指纹模版
UART1_Send_Byte(FP_Delete_Model[i]); }
//获得指纹模板数量
void FINGERPRINT_Cmd_Get_Templete_Num(void) { unsigned int i;
unsigned char temp[14];
for(i=0;i<6;i++) //包头
UART1_Send_Byte(FP_Pack_Head[i]);
//发送命令 0x1d for(i=0;i<6;i++)
UART1_Send_Byte(FP_Templete_Num[i]);
淮安信息学院毕业设计(论文) 第 39 页 共 39 页 }
//搜索全部用户999枚
void FINGERPRINT_Cmd_Search_Finger(void) {
unsigned char i;
for(i=0;i<6;i++) //发送命令搜索指纹库 {
UART1_Send_Byte(FP_Pack_Head[i]); }
for(i=0;i<11;i++) {
UART1_Send_Byte(FP_Search[i]); }
}
//指纹添加新用户
unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user) { do {
FINGERPRINT_Cmd_Get_Img(); //获得指纹图像
FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 }
while ( UART1_FINGERPRINT_RECEVICE_BUFFER[9]!=0x0 ); //检测是否成功的按了指纹
FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像转换成特征码存放在Buffer1中 FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码
do{ FINGERPRINT_Cmd_Get_Img(); //获得指纹图像 FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 }
while( UART1_FINGERPRINT_RECEVICE_BUFFER[9]!=0x0 );
FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在
淮安信息学院毕业设计(论文) 第 40 页 共 40 页 Buffer2中 FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 FP_Cmd_Reg_Model();//转换成特征码 FINGERPRINT_Recevice_Data(12);
FINGERPRINT_Cmd_Save_Finger(ucH_user,ucL_user);
FINGERPRINT_Recevice_Data(12); return 0; }
//系统初始化 c54init: _c_int00
ld #0h,DP stm #2000h,SP ssbx INTM ssbx SXM
STM #0x7208,SWWSR STM #0,SWCR
STM #0xF800,BSCR STM #0,ST0
STM #0x2b00,ST1 STM #0xBfe4,PMST STM #0xFFFF,IFR STM #0x0488,IMR STM #0,CLKMD LDM CLKMD,A
clkcon:
;INTM=1 off interrupt ;Interrupt vector map Bf80
;Timer0 enabel interrupt
AND #0x01,A BC clkcon,ANEQ STM #0x43ff,CLKMD STM #0x0010,TCR1 STM #0x0010,TCR STM #12800,PRD STM #0x0020,TCR //中断向量表 .include c54.inc .sect \
;PLL MUL=(4+1) *20=100MHz ;timer1 stop ;TSS=1 Timer stop