久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4210|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

FDC2214手勢識別一二問三四最終版STM32程序源碼 2018TI d題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:438665 發(fā)表于 2018-12-3 19:53 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
制作出來的實物圖如下:


例程序:main函數(shù):
  1. #include "bsp.h"
  2. #include "bsp_fdc2214.h"
  3. #include "bsp_iic.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "dislay.h"
  7. #include "key.h"
  8. #include "timer.h"
  9. long ChValue[4] = {0};
  10. int Ch0[5];
  11. int Ch1[5];
  12. int Ch2[5];
  13. int Ch3[5];
  14. 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];
  15. int i;
  16. long sum;
  17. /*******************************************************************************
  18. * 函數(shù)名        : main
  19. * 描述            : 主函數(shù)
  20. * 輸入?yún)?shù)  : 無
  21. * 返回參數(shù)  : 無
  22. *******************************************************************************/
  23. int t0,t1,t2,t3;
  24. int S0,S1,S2,S3;
  25. float P,P4,P5,P6,P7,PT,PT0,PT1,PT2,Q,P8,P9,P10,P11,P12,P13;
  26. int flag,mode;
  27. char H1=0,H2=0,H3=0,H4=0;
  28. void TIM3_Int_Init(u32 arr,u16 psc)
  29. {
  30.         TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  31.         NVIC_InitTypeDef NVIC_InitStructure;
  32.         
  33.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);  ///使能TIM3時鐘
  34.         
  35.   TIM_TimeBaseInitStructure.TIM_Period = arr;         //自動重裝載值
  36.         TIM_TimeBaseInitStructure.TIM_Prescaler=psc;  //定時器分頻
  37.         TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計數(shù)模式
  38.         TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  39.         
  40.         TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3
  41.         
  42.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允許定時器3更新中斷
  43.         TIM_Cmd(TIM3,ENABLE); //使能定時器3
  44.         
  45.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定時器3中斷
  46.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //搶占優(yōu)先級0
  47.         NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //子優(yōu)先級1
  48.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  49.         NVIC_Init(&NVIC_InitStructure);        
  50. //        TIM_Cmd(TIM3, DISABLE);
  51. }
  52. int main()
  53. {
  54.         u8 a=0;
  55.         int i;
  56.         s32 temp;
  57.         delay_init();
  58.         uart_init(115200);
  59.         IIC_Init();
  60.         LCD_Init();
  61.         TIM3_Int_Init(10000-1,84-1);        //定時器時鐘84M,分頻系數(shù)84,所以84M/8400=1Mhz的計數(shù)頻率,us
  62.         KEY_Init();
  63.         POINT_COLOR=RED;      //畫筆顏色:紅色
  64.         InitMultiFDC2214();
  65.         while(1)
  66.         {
  67.                 a = HL_Scan();
  68.                 LCD_ShowxNum(30,100,a,2,16,0);
  69.                 delay_ms(20);                  
  70.                 flag++;
  71.     if(flag==30)
  72.                 {
  73.                         S0=(Ch0[4]+Ch0[3]+Ch0[2]+Ch0[1]+Ch0[0])/5;
  74.                         S1=(Ch1[4]+Ch1[3]+Ch1[2]+Ch1[1]+Ch1[0])/5;
  75.                         S2=(Ch2[4]+Ch2[3]+Ch2[2]+Ch2[1]+Ch2[0])/5+40;
  76.                         S3=(Ch3[4]+Ch3[3]+Ch3[2]+Ch3[1]+Ch3[0])/5;
  77.       H4  = (S0+S1+S2+S3); LCD_ShowString(100,50,200,16,16,"OK . OK    ");;
  78.                 }        
  79.      if(flag > 50){flag = 30;LCD_Clear(WHITE);}
  80.                  
  81.      if(((S0-Ch0[0])>23)&&((S1-Ch1[0])<20)&&((S2-Ch2[0])<100)&&(S3-Ch3[0])>70)
  82.                  {  if(a==2)if((S0-Ch0[0])<35)
  83.                          { LCD_ShowString(30,80,200,16,16,"NUMBER ONE    ");}                 
  84.                          if((S0-Ch0[0])>30)
  85.                          {
  86.                                  if(a==2)LCD_ShowString(30,80,200,16,16,"NUMBER TWO    ");
  87.                                  if(a==3)
  88.                                  {                        LCD_Clear(WHITE);LCDSHOWChinese(80,150,2,128,0,1);//剪刀
  89.                                               LCD_Clear(WHITE);
  90.                                  }}
  91.                  }                 
  92.                  if(((S0-Ch0[0])>38)&&((S1-Ch1[0])>10)&&((S2-Ch2[0])<250)&&((S3-Ch3[0])>70))
  93.                  {   
  94.                          if(a==2){if(((S3-Ch3[0])<450))//可去掉等號
  95.                                   {  LCD_ShowString(30,80,200,16,16,"NUMBER THREE ");}        
  96.                             if(((S3-Ch3[0])>480)&&((S1-Ch1[0])>30))
  97.                                   {  LCD_ShowString(30,80,200,16,16,"NUMBER FOUR  ");}
  98.                                    
  99.                         }                                       
  100.                  }
  101.                  if(((S0-Ch0[0])>38)&&((S1-Ch1[0])>30)&&((S2-Ch2[0])>100)&&((S3-Ch3[0])>30))
  102.                  {   if(a==2)LCD_ShowString(30,80,200,16,16,"NUMBER  FIVE ");
  103.                                  if(a==3)
  104.                                  { LCDSHOWChinese(80,150,1,128,0,2);//布
  105.                                          LCD_Clear(WHITE);
  106.                                          }         
  107.                  }
  108.      if(((S0-Ch0[0])<20)&&((S1-Ch1[0])<=10)&&((S2-Ch2[0])<30)&&(S3-Ch3[0])<30)
  109.                  {
  110.                          LCD_ShowString(30,80,200,16,16,"NOTHING .     ");
  111.                          LCD_Clear(WHITE);        
  112.                  }
  113.                  if(((S0-Ch0[0])<20)&&((S1-Ch1[0])<=10)&&((S2-Ch2[0])<70)&&(S3-Ch3[0])>300)
  114.                  { if(a==3)
  115.                          {
  116.                            LCDSHOWChinese(80,150,2,128,0,0);//石頭         
  117.                                  LCD_Clear(WHITE);
  118.                          }}         
  119.                  while(a>3&&a<=15)
  120.                  {
  121.                          a = HL_Scan();
  122.                    LCD_ShowxNum(30,100,a,2,16,0);
  123.                          sum = (ChValue[0]+ChValue[1]+ChValue[2]+ChValue[3]);                 
  124.                          if(a==4||a==5||a==6||a==7)
  125.                          {
  126.                                  if(a==5)
  127.                                  {
  128.                                          LCDSHOWChinese(70,150,3,128,0,10);//采樣                A
  129.                                          P4 = (float)sum/H4*10;//石頭
  130.                                          PH0[4]=PH0[3];PH0[3]=PH0[2];PH0[2]=PH0[1];PH0[1]=PH0[0];PH0[0]=P4;
  131.                                          P4 = (PH0[0]+PH0[1]+PH0[2]+PH0[3]+PH0[4]+PH0[5]+PH0[6]+PH0[7]+PH0[8]+PH0[9])/5;
  132.                                          LCD_ShowxNum(30,210,P4,5,16,0);
  133.                                  }else if(a==6)
  134.                                  {
  135.                                          LCDSHOWChinese(70,150,3,128,0,10);//采樣                A
  136.                                          P5 = (float)sum/H4*10;//布;
  137.                                          PH1[4]=PH1[3];PH1[3]=PH1[2];PH1[2]=PH1[1];PH1[1]=PH1[0];PH1[0]=P5;
  138.                                          P5 = (PH1[0]+PH1[1]+PH1[2]+PH1[3]+PH1[4])/5;
  139.                                          LCD_ShowxNum(30,210,P5,5,16,0);
  140.                                  }else if(a==7)
  141.                                  {
  142.                                          LCDSHOWChinese(70,150,3,128,0,10);//采樣                A
  143.                                          P6 = (float)sum/H4*10;//剪刀
  144.                                          PH2[9]=PH2[8];PH2[8]=PH2[7];PH2[7]=PH2[6];PH2[6]=PH2[5];PH2[5]=PH2[4];
  145.                                          PH2[4]=PH2[3];PH2[3]=PH2[2];PH2[2]=PH2[1];PH2[1]=PH2[0];PH2[0]=P6;
  146.                                          P6 = (PH2[0]+PH2[1]+PH2[2]+PH2[3]+PH2[4]+PH2[5]+PH2[6]+PH2[7]+PH2[8]+PH2[9])/10;
  147.                                          LCD_ShowxNum(30,210,P6,5,16,0);
  148.                                  }else LCDSHOWChinese(70,150,2,128,0,11);//準(zhǔn)備
  149.                          }
  150.                          if(a==8||a==9||a==10||a==11||a==12 ||a==13)
  151.                          {
  152.                                  if(a==9)
  153.                                  {
  154.                                          LCDSHOWChinese(70,150,3,128,0,12);//采樣B                                 
  155.                                          P9 = (float)sum/H4*10;//1111
  156.                                          PH9[9]=PH9[8];PH9[8]=PH9[7];PH9[7]=PH9[6];PH9[6]=PH9[5];PH9[5]=PH9[4];
  157.                                          PH9[4]=PH9[3];PH9[3]=PH9[2];PH9[2]=PH9[1];PH9[1]=PH9[0];PH9[0]=P9;
  158.                                          P9 = (PH9[0]+PH9[1]+PH9[2]+PH9[3]+PH9[4]+PH9[5]+PH9[6]+PH9[7]+PH9[8]+PH9[9])/10;
  159.                                          LCD_ShowxNum(30,210,P9,5,16,0);
  160.                                  }
  161.                                  else if(a==10)
  162.                                  {
  163.                                          LCDSHOWChinese(70,150,3,128,0,12);//采樣B                                         
  164.                                          P10 = (float)sum/H4*10;//2222
  165.                                          PH10[9]=PH10[8];PH10[8]=PH10[7];PH10[7]=PH10[6];PH10[6]=PH10[5];PH10[5]=PH10[4];
  166.                                          PH10[4]=PH10[3];PH10[3]=PH10[2];PH10[2]=PH10[1];PH10[1]=PH10[0];PH10[0]=P10;
  167.                                          P10 = (PH10[0]+PH10[1]+PH10[2]+PH10[3]+PH10[4]+PH10[5]+PH10[6]+PH10[7]+PH10[8]+PH10[9])/10;
  168.                                          LCD_ShowxNum(30,210,P10,5,16,0);
  169.                                  }
  170.                                  else if(a==11)
  171.                                  {
  172.                                          LCDSHOWChinese(70,150,3,128,0,12);//采樣        B                        
  173.                                          P11 = (float)sum/H4*10;//3333
  174.                                          PH11[9]=PH11[8];PH11[8]=PH11[7];PH11[7]=PH11[6];PH11[6]=PH11[5];PH11[5]=PH11[4];
  175.                                          PH11[4]=PH11[3];PH11[3]=PH11[2];PH11[2]=PH11[1];PH11[1]=PH11[0];PH11[0]=P11;
  176.                                          P11 = (PH11[0]+PH11[1]+PH11[2]+PH11[3]+PH11[4]+PH11[5]+PH11[6]+PH11[7]+PH11[8]+PH11[9])/10;
  177.                                          LCD_ShowxNum(30,210,P11,5,16,0);
  178.                                  }
  179.                                  else if(a==12)
  180.                                  {
  181.                                          LCDSHOWChinese(70,150,3,128,0,12);//采樣        B                                                
  182.                                          P12 = (float)sum/H4*10;//3333
  183.                                          PH12[9]=PH12[8];PH12[8]=PH12[7];PH12[7]=PH12[6];PH12[6]=PH12[5];PH12[5]=PH12[4];
  184.                                          PH12[4]=PH12[3];PH12[3]=PH12[2];PH12[2]=PH12[1];PH12[1]=PH12[0];PH12[0]=P12;
  185.                                          P12 = (PH12[0]+PH12[1]+PH12[2]+PH12[3]+PH12[4]+PH12[5]+PH12[6]+PH12[7]+PH12[8]+PH12[9])/10;
  186.                                          LCD_ShowxNum(30,210,P12,5,16,0);
  187.                                  }
  188.                                  else if(a==13)
  189.                                  {
  190.                                          LCDSHOWChinese(70,150,3,128,0,12);//采樣                        B         
  191.                                          P13 = (float)sum/H4*10;//3333
  192.                                          PH13[9]=PH13[8];PH13[8]=PH13[7];PH13[7]=PH13[6];PH13[6]=PH13[5];PH13[5]=PH13[4];
  193.                                          PH13[4]=PH13[3];PH13[3]=PH13[2];PH13[2]=PH13[1];PH13[1]=PH13[0];PH13[0]=P13;
  194.                                          P13 = (PH13[0]+PH13[1]+PH13[2]+PH13[3]+PH13[4]+PH13[5]+PH13[6]+PH13[7]+PH13[8]+PH13[9])/10;
  195.                                          LCD_ShowxNum(30,210,P13,5,16,0);
  196.                                  }
  197.                                  else LCDSHOWChinese(70,150,2,128,0,11);//準(zhǔn)備
  198.                      }
  199.                          if(a==14)//劃拳判決
  200.                          {
  201.                                  Q = (float)sum/H4*10;
  202.                                  PH6[9]=PH6[8];PH6[8]=PH6[7];PH6[7]=PH6[6];PH6[6]=PH6[5];PH6[5]=PH6[4];
  203.                                  PH6[4]=PH6[3];PH6[3]=PH6[2];PH6[2]=PH6[1];PH6[1]=PH6[0];PH6[0]=Q;
  204.                                  Q = (PH6[0]+PH6[1]+PH6[2]+PH6[3]+PH6[4]+PH6[5]+PH6[6]+PH6[7]+PH6[8]+PH6[9])/10;
  205.          LCD_ShowxNum(30,180,Q,5,16,0);                                         
  206. /*                                 &&\((S0-Ch0[0])>23)&&(S0-Ch0[0])<35&&((S1-Ch1[0])<20)&&((S2-Ch2[0])<100)&&(S3-Ch3[0])>100
  207.                                  &&\
  208.                                  ((S0-Ch0[0])>35)&&((S1-Ch1[0])<20)&&((S2-Ch2[0])<100)&&(S3-Ch3[0])>100
  209.                                  &&\
  210.                                  ((S0-Ch0[0])>38)&&((S1-Ch1[0])>5)&&((S1-Ch1[0])<12)&&((S2-Ch2[0])<250)&&((S3-Ch3[0])>100)
  211.                                  &&\
  212.                                  ((S0-Ch0[0])>38)&&((S1-Ch1[0])>12)&&((S2-Ch2[0])<250)&&((S3-Ch3[0])>100))
  213.                                  */
  214.                                  if((Q>=P9-2)&&(Q<P9+2))
  215.                                  {         
  216.                              LCD_ShowString(30,80,200,16,16,"NUMBER ONE    ");
  217.                                  }else if((Q>=P10-2)&&(Q<=P10+2))
  218.                                  {                                 
  219.                              LCD_ShowString(30,80,200,16,16,"NUMBER TWO    ");
  220.                                  }else if((Q>=P11-10)&&(Q<= P11+10))
  221.                                  {                                 
  222.                              LCD_ShowString(30,80,200,16,16,"NUMBER THREE ");
  223.                                  }else if((Q>=P12-4)&&(Q<=P12+4))
  224.                                  {                                 
  225.                              LCD_ShowString(30,80,200,16,16,"NUMBER FOUR  ");
  226.                                  }else if((Q>P13-5)&&(Q<P13+5))
  227.                                  {                                 
  228.                              LCD_ShowString(30,80,200,16,16,"NUMBER FIVE    ");
  229.                                  }else LCD_Clear(WHITE);
  230.                         }                 
  231.                          if(a==15)//判決
  232.                          {
  233.                                  P = (float)sum/H4*10;
  234.                                  PH5[9]=PH5[8];PH5[8]=PH5[7];PH5[7]=PH5[6];PH5[6]=PH5[5];PH5[5]=PH5[4];
  235.                                  PH5[4]=PH5[3];PH5[3]=PH5[2];PH5[2]=PH5[1];PH5[1]=PH5[0];PH5[0]=P;
  236.                                  P = (PH5[0]+PH5[1]+PH5[2]+PH5[3]+PH5[4]+PH5[5]+PH5[6]+PH5[7]+PH5[8]+PH5[9])/10;
  237.                                  LCD_ShowxNum(30,180,P,5,16,0);                                          
  238.                                  if((P>P4-5)&&(P<P4+5))
  239.                                  {         
  240.                              LCDSHOWChinese(80,150,2,128,0,0);//石頭        
  241.                                  }else if((P>P5-10)&&(P<P5+10))
  242.                                  {                                 
  243.                              LCDSHOWChinese(80,150,1,128,0,2);//布
  244.                                  }else if((P>P6-5)&&(P<P6+5))
  245.                                  {                                 
  246.                              LCD_Clear(WHITE);LCDSHOWChinese(80,150,2,128,0,1);//剪刀
  247.                                  }else LCD_Clear(WHITE);
  248.                         }        }                                          
  249.                                      delay_ms(10);
  250.         }               
  251. }
  252. void TIM3_IRQHandler(void)
  253. {
  254.         if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中斷
  255.         {        
  256.                   for ( i = 0; i < 4;i++)
  257.                 {
  258.                                 ChValue[i] = FDC2X14ReadCH(i+1);         
  259.                                 if(i == 0)
  260.                                 {
  261.                                         ChValue[i] =(ChValue[i]-11700000)/100;
  262.           Ch0[4] = Ch0[3];Ch0[3] = Ch0[2];Ch0[2] = Ch0[1];
  263.                                         Ch0[1] = Ch0[0];Ch0[0] = ChValue[i];
  264.                                         ChValue[i] = (Ch0[4]+Ch0[3]+Ch0[2]+Ch0[1]+Ch0[0])/5;
  265.                                 }
  266.                                 if(i == 1)
  267.                                 {
  268.                                         ChValue[i] =(ChValue[i]-11700000)/100;
  269.                                         Ch1[4] = Ch1[3];Ch1[3] = Ch1[2];
  270.                                         Ch1[2] = Ch1[1];Ch1[1] = Ch1[0];Ch1[0] = ChValue[i];
  271.                                         ChValue[i] = (Ch1[4]+Ch1[3]+Ch1[2]+Ch1[1]+Ch1[0])/5;
  272.                                 }
  273.                                 if(i == 2)
  274.                                 {
  275.                                         ChValue[i] =(ChValue[i]-4000000)/100-2400;
  276.                                         Ch2[4] = Ch2[3];Ch2[3] = Ch2[2];
  277.                                         Ch2[2] = Ch2[1];Ch2[1] = Ch2[0];Ch2[0] = ChValue[i];
  278.                                         ChValue[i] = (Ch2[4]+Ch2[3]+Ch2[2]+Ch2[1]+Ch2[0])/5;
  279.                                 }
  280.                                 if(i == 3)
  281.                                 {
  282.                                         ChValue[i] =(ChValue[i]-4700000)/100;
  283.                                         Ch3[4] = Ch3[3];Ch2[3] = Ch3[2];
  284.                                         Ch3[2] = Ch3[1];Ch3[1] = Ch3[0];Ch3[0] = ChValue[i];
  285.                                         ChValue[i] = (Ch3[4]+Ch3[3]+Ch3[2]+Ch3[1]+Ch3[0])/5;
  286.                                 }
  287.                                 printf("CH%d,",i);printf(" %ld ",ChValue[i]);
  288.                                 if (i < 3) printf(", ");else printf("\r\n");
  289.                         }
  290.                  TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  
  291.         }        
  292. }
復(fù)制代碼

全部資料51hei下載地址:
手勢識別一二問三四最終版.rar (547.78 KB, 下載次數(shù): 75)

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-12-4 04:26 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

板凳
ID:581352 發(fā)表于 2019-8-1 10:51 | 只看該作者
可以把TFT和STM32的管腳連接分享出來嗎?最好原理圖
回復(fù)

使用道具 舉報

地板
ID:953892 發(fā)表于 2021-7-18 11:18 | 只看該作者
求樓主分享電路連接圖
回復(fù)

使用道具 舉報

5#
ID:438665 發(fā)表于 2022-8-4 02:00 | 只看該作者
neinein 發(fā)表于 2019-8-1 10:51
可以把TFT和STM32的管腳連接分享出來嗎?最好原理圖

抱歉,TFT就是正常的stm32最小板,具體的話可以參照代碼
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产成人国产三级 | 久久久精品一区二区 | 亚洲va国产日韩欧美精品色婷婷 | 能免费看的av | 久久久久久亚洲精品 | 久久久亚洲 | 日日夜夜天天干 | 最近最新中文字幕 | 欧美一区二区在线播放 | 亚洲一区二区免费视频 | 免费激情av | 日韩a视频 | 国产精品免费视频一区 | 男人天堂视频在线观看 | 国内自拍视频在线观看 | 在线观看亚洲 | 亚洲va中文字幕 | 99亚洲精品| 请别相信他免费喜剧电影在线观看 | 产真a观专区| 伊人网站在线观看 | 天天久久| www久久久| 丝袜 亚洲 另类 欧美 综合 | 最新日韩在线 | 国产精品99免费视频 | 久久99精品久久久久久噜噜 | 亚洲精品日本 | 国产不卡在线观看 | 欧美一区二区三区视频 | 无码一区二区三区视频 | 成人免费一区二区 | 午夜成人在线视频 | 一级h片 | 亚洲精品久久久久久久不卡四虎 | 国产一区免费 | 色婷婷综合网站 | 亚洲精品中文在线观看 | 色在线免费视频 | 亚洲视频在线观看 | 九九久久精品 |