|
制作出來的實物圖如下:
實物圖.jpg (363.84 KB, 下載次數(shù): 50)
下載附件
2018-12-5 20:44 上傳
例程序:main函數(shù):
- #include "bsp.h"
- #include "bsp_fdc2214.h"
- #include "bsp_iic.h"
- #include "sys.h"
- #include "lcd.h"
- #include "dislay.h"
- #include "key.h"
- #include "timer.h"
- long ChValue[4] = {0};
- int Ch0[5];
- int Ch1[5];
- int Ch2[5];
- int Ch3[5];
- float PH0[10],PH1[10],PH2[10],PH3[10],PH4[10],PH5[10],PH6[10],PH7[10],PH8[10],PH9[10],PH10[10],PH11[10],PH12[10],PH13[10];
- int i;
- long sum;
- /*******************************************************************************
- * 函數(shù)名 : main
- * 描述 : 主函數(shù)
- * 輸入?yún)?shù) : 無
- * 返回參數(shù) : 無
- *******************************************************************************/
- int t0,t1,t2,t3;
- int S0,S1,S2,S3;
- float P,P4,P5,P6,P7,PT,PT0,PT1,PT2,Q,P8,P9,P10,P11,P12,P13;
- int flag,mode;
- char H1=0,H2=0,H3=0,H4=0;
- void TIM3_Int_Init(u32 arr,u16 psc)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ///使能TIM3時鐘
-
- TIM_TimeBaseInitStructure.TIM_Period = arr; //自動重裝載值
- TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定時器分頻
- TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計數(shù)模式
- TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
-
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3
-
- TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允許定時器3更新中斷
- TIM_Cmd(TIM3,ENABLE); //使能定時器3
-
- NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定時器3中斷
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //搶占優(yōu)先級0
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //子優(yōu)先級1
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- // TIM_Cmd(TIM3, DISABLE);
- }
- int main()
- {
- u8 a=0;
- int i;
- s32 temp;
- delay_init();
- uart_init(115200);
- IIC_Init();
- LCD_Init();
- TIM3_Int_Init(10000-1,84-1); //定時器時鐘84M,分頻系數(shù)84,所以84M/8400=1Mhz的計數(shù)頻率,us
- KEY_Init();
- POINT_COLOR=RED; //畫筆顏色:紅色
- InitMultiFDC2214();
- while(1)
- {
- a = HL_Scan();
- LCD_ShowxNum(30,100,a,2,16,0);
- delay_ms(20);
- flag++;
- if(flag==30)
- {
- S0=(Ch0[4]+Ch0[3]+Ch0[2]+Ch0[1]+Ch0[0])/5;
- S1=(Ch1[4]+Ch1[3]+Ch1[2]+Ch1[1]+Ch1[0])/5;
- S2=(Ch2[4]+Ch2[3]+Ch2[2]+Ch2[1]+Ch2[0])/5+40;
- S3=(Ch3[4]+Ch3[3]+Ch3[2]+Ch3[1]+Ch3[0])/5;
- H4 = (S0+S1+S2+S3); LCD_ShowString(100,50,200,16,16,"OK . OK ");;
- }
- if(flag > 50){flag = 30;LCD_Clear(WHITE);}
-
- if(((S0-Ch0[0])>23)&&((S1-Ch1[0])<20)&&((S2-Ch2[0])<100)&&(S3-Ch3[0])>70)
- { if(a==2)if((S0-Ch0[0])<35)
- { LCD_ShowString(30,80,200,16,16,"NUMBER ONE ");}
- if((S0-Ch0[0])>30)
- {
- if(a==2)LCD_ShowString(30,80,200,16,16,"NUMBER TWO ");
- if(a==3)
- { LCD_Clear(WHITE);LCDSHOWChinese(80,150,2,128,0,1);//剪刀
- LCD_Clear(WHITE);
- }}
- }
- if(((S0-Ch0[0])>38)&&((S1-Ch1[0])>10)&&((S2-Ch2[0])<250)&&((S3-Ch3[0])>70))
- {
- if(a==2){if(((S3-Ch3[0])<450))//可去掉等號
- { LCD_ShowString(30,80,200,16,16,"NUMBER THREE ");}
- if(((S3-Ch3[0])>480)&&((S1-Ch1[0])>30))
- { LCD_ShowString(30,80,200,16,16,"NUMBER FOUR ");}
-
- }
- }
- if(((S0-Ch0[0])>38)&&((S1-Ch1[0])>30)&&((S2-Ch2[0])>100)&&((S3-Ch3[0])>30))
- { if(a==2)LCD_ShowString(30,80,200,16,16,"NUMBER FIVE ");
- if(a==3)
- { LCDSHOWChinese(80,150,1,128,0,2);//布
- LCD_Clear(WHITE);
- }
- }
- if(((S0-Ch0[0])<20)&&((S1-Ch1[0])<=10)&&((S2-Ch2[0])<30)&&(S3-Ch3[0])<30)
- {
- LCD_ShowString(30,80,200,16,16,"NOTHING . ");
- LCD_Clear(WHITE);
- }
- if(((S0-Ch0[0])<20)&&((S1-Ch1[0])<=10)&&((S2-Ch2[0])<70)&&(S3-Ch3[0])>300)
- { if(a==3)
- {
- LCDSHOWChinese(80,150,2,128,0,0);//石頭
- LCD_Clear(WHITE);
- }}
- while(a>3&&a<=15)
- {
- a = HL_Scan();
- LCD_ShowxNum(30,100,a,2,16,0);
- sum = (ChValue[0]+ChValue[1]+ChValue[2]+ChValue[3]);
- if(a==4||a==5||a==6||a==7)
- {
- if(a==5)
- {
- LCDSHOWChinese(70,150,3,128,0,10);//采樣 A
- P4 = (float)sum/H4*10;//石頭
- PH0[4]=PH0[3];PH0[3]=PH0[2];PH0[2]=PH0[1];PH0[1]=PH0[0];PH0[0]=P4;
- P4 = (PH0[0]+PH0[1]+PH0[2]+PH0[3]+PH0[4]+PH0[5]+PH0[6]+PH0[7]+PH0[8]+PH0[9])/5;
- LCD_ShowxNum(30,210,P4,5,16,0);
- }else if(a==6)
- {
- LCDSHOWChinese(70,150,3,128,0,10);//采樣 A
- P5 = (float)sum/H4*10;//布;
- PH1[4]=PH1[3];PH1[3]=PH1[2];PH1[2]=PH1[1];PH1[1]=PH1[0];PH1[0]=P5;
- P5 = (PH1[0]+PH1[1]+PH1[2]+PH1[3]+PH1[4])/5;
- LCD_ShowxNum(30,210,P5,5,16,0);
- }else if(a==7)
- {
- LCDSHOWChinese(70,150,3,128,0,10);//采樣 A
- P6 = (float)sum/H4*10;//剪刀
- PH2[9]=PH2[8];PH2[8]=PH2[7];PH2[7]=PH2[6];PH2[6]=PH2[5];PH2[5]=PH2[4];
- PH2[4]=PH2[3];PH2[3]=PH2[2];PH2[2]=PH2[1];PH2[1]=PH2[0];PH2[0]=P6;
- P6 = (PH2[0]+PH2[1]+PH2[2]+PH2[3]+PH2[4]+PH2[5]+PH2[6]+PH2[7]+PH2[8]+PH2[9])/10;
- LCD_ShowxNum(30,210,P6,5,16,0);
- }else LCDSHOWChinese(70,150,2,128,0,11);//準(zhǔn)備
- }
- if(a==8||a==9||a==10||a==11||a==12 ||a==13)
- {
- if(a==9)
- {
- LCDSHOWChinese(70,150,3,128,0,12);//采樣B
- P9 = (float)sum/H4*10;//1111
- PH9[9]=PH9[8];PH9[8]=PH9[7];PH9[7]=PH9[6];PH9[6]=PH9[5];PH9[5]=PH9[4];
- PH9[4]=PH9[3];PH9[3]=PH9[2];PH9[2]=PH9[1];PH9[1]=PH9[0];PH9[0]=P9;
- P9 = (PH9[0]+PH9[1]+PH9[2]+PH9[3]+PH9[4]+PH9[5]+PH9[6]+PH9[7]+PH9[8]+PH9[9])/10;
- LCD_ShowxNum(30,210,P9,5,16,0);
- }
- else if(a==10)
- {
- LCDSHOWChinese(70,150,3,128,0,12);//采樣B
- P10 = (float)sum/H4*10;//2222
- PH10[9]=PH10[8];PH10[8]=PH10[7];PH10[7]=PH10[6];PH10[6]=PH10[5];PH10[5]=PH10[4];
- PH10[4]=PH10[3];PH10[3]=PH10[2];PH10[2]=PH10[1];PH10[1]=PH10[0];PH10[0]=P10;
- P10 = (PH10[0]+PH10[1]+PH10[2]+PH10[3]+PH10[4]+PH10[5]+PH10[6]+PH10[7]+PH10[8]+PH10[9])/10;
- LCD_ShowxNum(30,210,P10,5,16,0);
- }
- else if(a==11)
- {
- LCDSHOWChinese(70,150,3,128,0,12);//采樣 B
- P11 = (float)sum/H4*10;//3333
- PH11[9]=PH11[8];PH11[8]=PH11[7];PH11[7]=PH11[6];PH11[6]=PH11[5];PH11[5]=PH11[4];
- PH11[4]=PH11[3];PH11[3]=PH11[2];PH11[2]=PH11[1];PH11[1]=PH11[0];PH11[0]=P11;
- P11 = (PH11[0]+PH11[1]+PH11[2]+PH11[3]+PH11[4]+PH11[5]+PH11[6]+PH11[7]+PH11[8]+PH11[9])/10;
- LCD_ShowxNum(30,210,P11,5,16,0);
- }
- else if(a==12)
- {
- LCDSHOWChinese(70,150,3,128,0,12);//采樣 B
- P12 = (float)sum/H4*10;//3333
- PH12[9]=PH12[8];PH12[8]=PH12[7];PH12[7]=PH12[6];PH12[6]=PH12[5];PH12[5]=PH12[4];
- PH12[4]=PH12[3];PH12[3]=PH12[2];PH12[2]=PH12[1];PH12[1]=PH12[0];PH12[0]=P12;
- P12 = (PH12[0]+PH12[1]+PH12[2]+PH12[3]+PH12[4]+PH12[5]+PH12[6]+PH12[7]+PH12[8]+PH12[9])/10;
- LCD_ShowxNum(30,210,P12,5,16,0);
- }
- else if(a==13)
- {
- LCDSHOWChinese(70,150,3,128,0,12);//采樣 B
- P13 = (float)sum/H4*10;//3333
- PH13[9]=PH13[8];PH13[8]=PH13[7];PH13[7]=PH13[6];PH13[6]=PH13[5];PH13[5]=PH13[4];
- PH13[4]=PH13[3];PH13[3]=PH13[2];PH13[2]=PH13[1];PH13[1]=PH13[0];PH13[0]=P13;
- P13 = (PH13[0]+PH13[1]+PH13[2]+PH13[3]+PH13[4]+PH13[5]+PH13[6]+PH13[7]+PH13[8]+PH13[9])/10;
- LCD_ShowxNum(30,210,P13,5,16,0);
- }
- else LCDSHOWChinese(70,150,2,128,0,11);//準(zhǔn)備
- }
- if(a==14)//劃拳判決
- {
- Q = (float)sum/H4*10;
- PH6[9]=PH6[8];PH6[8]=PH6[7];PH6[7]=PH6[6];PH6[6]=PH6[5];PH6[5]=PH6[4];
- PH6[4]=PH6[3];PH6[3]=PH6[2];PH6[2]=PH6[1];PH6[1]=PH6[0];PH6[0]=Q;
- Q = (PH6[0]+PH6[1]+PH6[2]+PH6[3]+PH6[4]+PH6[5]+PH6[6]+PH6[7]+PH6[8]+PH6[9])/10;
- LCD_ShowxNum(30,180,Q,5,16,0);
- /* &&\((S0-Ch0[0])>23)&&(S0-Ch0[0])<35&&((S1-Ch1[0])<20)&&((S2-Ch2[0])<100)&&(S3-Ch3[0])>100
- &&\
- ((S0-Ch0[0])>35)&&((S1-Ch1[0])<20)&&((S2-Ch2[0])<100)&&(S3-Ch3[0])>100
- &&\
- ((S0-Ch0[0])>38)&&((S1-Ch1[0])>5)&&((S1-Ch1[0])<12)&&((S2-Ch2[0])<250)&&((S3-Ch3[0])>100)
- &&\
- ((S0-Ch0[0])>38)&&((S1-Ch1[0])>12)&&((S2-Ch2[0])<250)&&((S3-Ch3[0])>100))
- */
- if((Q>=P9-2)&&(Q<P9+2))
- {
- LCD_ShowString(30,80,200,16,16,"NUMBER ONE ");
- }else if((Q>=P10-2)&&(Q<=P10+2))
- {
- LCD_ShowString(30,80,200,16,16,"NUMBER TWO ");
- }else if((Q>=P11-10)&&(Q<= P11+10))
- {
- LCD_ShowString(30,80,200,16,16,"NUMBER THREE ");
- }else if((Q>=P12-4)&&(Q<=P12+4))
- {
- LCD_ShowString(30,80,200,16,16,"NUMBER FOUR ");
- }else if((Q>P13-5)&&(Q<P13+5))
- {
- LCD_ShowString(30,80,200,16,16,"NUMBER FIVE ");
- }else LCD_Clear(WHITE);
- }
- if(a==15)//判決
- {
- P = (float)sum/H4*10;
- PH5[9]=PH5[8];PH5[8]=PH5[7];PH5[7]=PH5[6];PH5[6]=PH5[5];PH5[5]=PH5[4];
- PH5[4]=PH5[3];PH5[3]=PH5[2];PH5[2]=PH5[1];PH5[1]=PH5[0];PH5[0]=P;
- P = (PH5[0]+PH5[1]+PH5[2]+PH5[3]+PH5[4]+PH5[5]+PH5[6]+PH5[7]+PH5[8]+PH5[9])/10;
- LCD_ShowxNum(30,180,P,5,16,0);
- if((P>P4-5)&&(P<P4+5))
- {
- LCDSHOWChinese(80,150,2,128,0,0);//石頭
- }else if((P>P5-10)&&(P<P5+10))
- {
- LCDSHOWChinese(80,150,1,128,0,2);//布
- }else if((P>P6-5)&&(P<P6+5))
- {
- LCD_Clear(WHITE);LCDSHOWChinese(80,150,2,128,0,1);//剪刀
- }else LCD_Clear(WHITE);
- } }
- delay_ms(10);
- }
- }
- void TIM3_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中斷
- {
- for ( i = 0; i < 4;i++)
- {
- ChValue[i] = FDC2X14ReadCH(i+1);
- if(i == 0)
- {
- ChValue[i] =(ChValue[i]-11700000)/100;
- Ch0[4] = Ch0[3];Ch0[3] = Ch0[2];Ch0[2] = Ch0[1];
- Ch0[1] = Ch0[0];Ch0[0] = ChValue[i];
- ChValue[i] = (Ch0[4]+Ch0[3]+Ch0[2]+Ch0[1]+Ch0[0])/5;
- }
- if(i == 1)
- {
- ChValue[i] =(ChValue[i]-11700000)/100;
- Ch1[4] = Ch1[3];Ch1[3] = Ch1[2];
- Ch1[2] = Ch1[1];Ch1[1] = Ch1[0];Ch1[0] = ChValue[i];
- ChValue[i] = (Ch1[4]+Ch1[3]+Ch1[2]+Ch1[1]+Ch1[0])/5;
- }
- if(i == 2)
- {
- ChValue[i] =(ChValue[i]-4000000)/100-2400;
- Ch2[4] = Ch2[3];Ch2[3] = Ch2[2];
- Ch2[2] = Ch2[1];Ch2[1] = Ch2[0];Ch2[0] = ChValue[i];
- ChValue[i] = (Ch2[4]+Ch2[3]+Ch2[2]+Ch2[1]+Ch2[0])/5;
- }
- if(i == 3)
- {
- ChValue[i] =(ChValue[i]-4700000)/100;
- Ch3[4] = Ch3[3];Ch2[3] = Ch3[2];
- Ch3[2] = Ch3[1];Ch3[1] = Ch3[0];Ch3[0] = ChValue[i];
- ChValue[i] = (Ch3[4]+Ch3[3]+Ch3[2]+Ch3[1]+Ch3[0])/5;
- }
- printf("CH%d,",i);printf(" %ld ",ChValue[i]);
- if (i < 3) printf(", ");else printf("\r\n");
- }
- TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
- }
- }
復(fù)制代碼
全部資料51hei下載地址:
手勢識別一二問三四最終版.rar
(547.78 KB, 下載次數(shù): 75)
2018-12-4 04:25 上傳
點(diǎn)擊文件名下載附件
全部代碼 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|