// Function Name: display_init // Author: Drew Schuster // Called by: main // Purpose: Initializes the display // Calling convention: display_init(); // Conditions at exit: Display will be initialized, text can now be displayed // Date Started: March 14th // Update History: See Github repository at https://github.com/dr3wster/We-are-Wireless-Audio void display_init(void) { //Reset pin for the LED display PINSEL6 &= 0xFFFFFCFF; FIO3DIR = 1 << 4 ; //pin configured as output FIO3SET =1<<4; //pin goes High //Let's setup the volume input pins! P3[2-4] PINSEL6 &= 0xFFFFFC0F ; // Configure all 3 pins as I/O while (clock_1s ==0); clock_1s=0; FIO3CLR =1<<4 ; // pin goes Low. while (clock_1s ==1); while (clock_1s ==0); clock_1s=0; //set nReset to high FIO3SET =1<<4; //pin goes High while (clock_1s==1); while (clock_1s==0); clock_1s=0; sendchar3(0x55); in = getkey3(); if (in != 6) { //We have a problem, ack was not received properly! } /*Initialization complete*/ //Set a black background sendchar3(0x42); sendchar3(0x00); sendchar3(0x00); in = getkey3(); }
//接收反馈数据缓冲 int FINGERPRINT_Recevice_Data(int ucLength) { int i=0; int ch; int timeout = 0; while(1) { if(timeout++ >= 1000000000) { return -1; } ch = getkey3(); if(ch != -1) { UART_RECEVICE_BUFFER[i] = ch; i++; if(i==ucLength){ break; } } } return UART_RECEVICE_BUFFER[9]; }
/*------------------ FINGERPRINT命令字 --------------------------*/ //接收反馈数据缓冲 int FINGERPRINT_Recevice_Data(int ucLength) { int i=0; int ch; int timeout = 0; while(1) { if(timeout++ >= 1000000000) { return -1; } ch = getkey3(); if(ch != -1) { UART_RECEVICE_BUFFER[i] = ch; i++; if(i==ucLength){ break; } } } return UART_RECEVICE_BUFFER[9]; } //读模块系统基本参数 int ZAZ_SetSysPara(void) { int i; for(i=0;i<6;i++) //发送包头 { SER_PutChar3(ZAZ_Pack_Head[i]); } for(i=0;i<8;i++){ SER_PutChar3(ZAZ_Set_Syspara[i]); } FINGERPRINT_Recevice_Data(12); return 0; } int * ZAZ_ReadSysPara(void) { int i; int ret[17]; for(i=0;i<6;i++) //发送包头 { SER_PutChar3(ZAZ_Pack_Head[i]); } for(i=0;i<6;i++) //发送命令 0x1d { SER_PutChar3(ZAZ_Read_SysPara[i]); } FINGERPRINT_Recevice_Data(28); for(i=0;i<17;i++){ ret[i]= UART_RECEVICE_BUFFER[i+9]; } return ret; } static int FINGERPRINT_Cmd_Get_Img(void) { int i; for(i=0;i<6;i++) //发送包头 { SER_PutChar3(ZAZ_Pack_Head[i]); } for(i=0;i<6;i++) //发送命令 0x1d { SER_PutChar3(ZAZ_Get_Img[i]); } return 0; } //录入指纹图像 int ZAZ_GetImag(void) { int ret; do{ FINGERPRINT_Cmd_Get_Img(); //获得指纹图像 ret=FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 }while(ret!=ZAZ_OK); return ret; } static void FINGERPRINT_Img_To_Buffer(int BufferID) { unsigned long temp = 0; int i; ZAZ_Img_To_Buffer[4]=BufferID; for(i=0;i<5;i++) //计算校验和 temp = temp + ZAZ_Img_To_Buffer[i]; ZAZ_Img_To_Buffer[5]=(temp & 0xFF00) >> 8; //存放校验数据 ZAZ_Img_To_Buffer[6]= temp & 0x00FF; for(i=0;i<6;i++) //发送包头 SER_PutChar3(ZAZ_Pack_Head[i]); for(i=0;i<7;i++) SER_PutChar3(ZAZ_Img_To_Buffer[i]); } //图像生成特征存于BufferID中 int ZAZ_GenChar(int BufferID) { int ret=0; FINGERPRINT_Img_To_Buffer(BufferID); //发送命令 将图像转换成 特征码 存放在 CHAR_buffer ret=FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 return ret; } //将BUFFER1 跟 BUFFER2 中的特征码合并成指纹模版 int ZAZ_RegModel(void) { int i; int ret=0; for(i=0;i<6;i++) //包头 { SER_PutChar3(ZAZ_Pack_Head[i]); } for(i=0;i<6;i++) //命令合并指纹模版 { SER_PutChar3(ZAZ_Reg_Model[i]); } ret=FINGERPRINT_Recevice_Data(12); //接收12个长度的反馈码 return ret; } //接收后续数据包 // /***start: 2 adder: 4 pid: 1 length: 2 data: 128 sum: 2 共139个字节 发送7个数据包 1个结束数据包****/ static int Subsequent_Recevice_Data() { int ch; static int n=0; int cnt; int DATA_LONG=0; int Subsequent_RECEVICE_HEAD[6]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF}; int Subsequent_PID[2]={0x02,0x08}; int NUM=0; BUFFER_NUM=0; while(1){ ch=getkey3(); if(ch!=-1){ Subsequent_RECEVICE_BUFFER[BUFFER_NUM] = ch; // SER_PutChar2(Subsequent_RECEVICE_BUFFER[BUFFER_NUM]); if(BUFFER_NUM >= 1111){ break; } BUFFER_NUM++; } } while(1){ if((Subsequent_RECEVICE_BUFFER[NUM]==Subsequent_RECEVICE_HEAD[0])&&(Subsequent_RECEVICE_BUFFER[NUM+1]==Subsequent_RECEVICE_HEAD[1])&&(Subsequent_RECEVICE_BUFFER[NUM+2]==Subsequent_RECEVICE_HEAD[2])&&(Subsequent_RECEVICE_BUFFER[NUM+3]==Subsequent_RECEVICE_HEAD[3])&&(Subsequent_RECEVICE_BUFFER[NUM+4]==Subsequent_RECEVICE_HEAD[4])&&(Subsequent_RECEVICE_BUFFER[NUM+5]==Subsequent_RECEVICE_HEAD[5])){ NUM+=6; if(Subsequent_RECEVICE_BUFFER[NUM]==Subsequent_PID[0]){ Subsequent_RECEVICE_LENGTH[0]=Subsequent_RECEVICE_BUFFER[++NUM]; Subsequent_RECEVICE_LENGTH[1]=Subsequent_RECEVICE_BUFFER[++NUM]; DATA_LONG=Subsequent_RECEVICE_LENGTH[0]; DATA_LONG=DATA_LONG << 8 | Subsequent_RECEVICE_LENGTH[1]; DATA_LONG -= 2; cnt=0; while(cnt < DATA_LONG){ Subsequent_RECEVICE_DATA[n]=Subsequent_RECEVICE_BUFFER[++NUM]; n++; cnt++; } Subsequent_RECEVICE_SUM[0]=Subsequent_RECEVICE_BUFFER[++NUM]; Subsequent_RECEVICE_SUM[1]=Subsequent_RECEVICE_BUFFER[++NUM]; }else if(Subsequent_RECEVICE_BUFFER[NUM]==Subsequent_PID[1]){ Subsequent_RECEVICE_LENGTH[0]=Subsequent_RECEVICE_BUFFER[++NUM]; Subsequent_RECEVICE_LENGTH[1]=Subsequent_RECEVICE_BUFFER[++NUM]; DATA_LONG=Subsequent_RECEVICE_LENGTH[0]; DATA_LONG=DATA_LONG << 8 | Subsequent_RECEVICE_LENGTH[1]; DATA_LONG -= 2; cnt=0; while(cnt < DATA_LONG){ Subsequent_RECEVICE_DATA[n]=Subsequent_RECEVICE_BUFFER[++NUM]; n++; cnt++; } Subsequent_RECEVICE_SUM[0]=Subsequent_RECEVICE_BUFFER[++NUM]; Subsequent_RECEVICE_SUM[1]=Subsequent_RECEVICE_BUFFER[++NUM]; break; } } NUM++; } return 0; }