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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32 FDC2214手勢識別參考程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:595546 發(fā)表于 2019-8-8 15:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include "stm32f10x.h"
  2. #include "sys.h"
  3. #include "led.h"
  4. #include "Beep.h"
  5. #include "delay.h"
  6. #include "stdio.h"
  7. #include "usart.h"
  8. #include "key.h"
  9. #include <fdc2214.h>
  10. #include <oled.h>
  11. #include <niming.h>
  12. #include <text.h>
  13. #include <Menu.h>
  14. #include <SortArr.h>
  15. #include "time5.h"
  16. unsigned char EntryFigerTimes=0;//錄入54321時(shí),所需記錄的次數(shù)
  17. unsigned char EntryFistTimes =0;//錄入石頭剪刀布時(shí),所需記錄的次數(shù)
  18. //相應(yīng)標(biāo)志位
  19. unsigned char Interrupt_Flg=1,InterruptFlg=0;//按下按鍵 產(chǎn)生的相應(yīng)標(biāo)志位
  20. unsigned char Train_Figer_Entry_Flg=0,Train_Fist_Entry_Flg=0;//進(jìn)入猜拳訓(xùn)練 劃拳訓(xùn)練 相應(yīng)標(biāo)志位
  21. unsigned char Judge_Figer_Flg=0,Judge_Fist_Flg=0;//進(jìn)入猜拳判決 劃拳判決 相應(yīng)標(biāo)志位
  22. //數(shù)組排序次數(shù)
  23. unsigned char SortTimes=0;//錄入結(jié)束后,對數(shù)組進(jìn)行排序的次數(shù)
  24. //電容值存放數(shù)據(jù)
  25. float temp0=0,temp1=0,temp2=0,temp3=0;//四路通道值存放的變量
  26. float Total_Value;//四路通道總值
  27. //待存錄入數(shù)組
  28. float ArrayData[10]={0};//錄入手勢時(shí),四路通道總值要存放的數(shù)組(在錄入手勢時(shí)采集了十次數(shù)據(jù),并且采用濾波算法)
  29. float ArrayA[8]={0};//錄入54321時(shí) 存放54321數(shù)據(jù)的數(shù)組
  30. float ArrayB[8]={0};//錄入石頭剪刀布時(shí) 存放石頭剪刀布數(shù)據(jù)的數(shù)組
  31. //按鍵數(shù)據(jù)
  32. int Page_New=0;//OLED菜單頁面
  33. int ConfirmKey=0;//確認(rèn)鍵(確認(rèn)鍵按下: 1)
  34. int KeyUpDownFlg=0;//記錄上下按鍵相對變化,正常按上鍵加1,按下鍵減1
  35. int  KeyRightLeftFlg=0;//按鍵右與左(兩個(gè)按鍵采用一個(gè)變量 右鍵: 1 左鍵: -1)
  36. //加載中 次數(shù)
  37. long int Loding_Times=0;//加載中 相應(yīng)判斷次數(shù)

  38. void GetFouChVal(void);//讀取四路通道值的函數(shù)
  39. int main()
  40. {
  41.           delay_init();                                                 //延時(shí)函數(shù)初始化        
  42.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //設(shè)置中斷優(yōu)先級分組2
  43.     uart_init(115200);                                     //串口初始化為115200
  44.     TIM5_init(79,7199);                              //10ms中斷
  45.           Beep_Init();                                     //蜂鳴器初始化
  46.     IIC_Start();                                     //IIC初始化
  47.     Oled_Init();                                     //oled初始化
  48.     LED_Init();                                             //led初始化
  49.     //Key_Init();                                      //初始化五向按鍵和開關(guān)按鍵,可使用Key_Scan()函數(shù)得到返回值
  50.     //key_exti_test();                                 //按鍵檢測
  51.           while(FDC2214_Init());                           //fdc2214初始化 成功:0 失敗:1
  52.     Beep=0;delay_ms(10);Beep=1;                      //蜂鳴器提示
  53.     UI_TILTLE();                                     //標(biāo)題
  54.         while(1)
  55. {
  56.                     Loding_Times=0;   //加載中函數(shù)的加載次數(shù)
  57. //在頁面0 顯示四路通道值
  58.      //if(Page_New==0)
  59.      //{
  60.          Oled_Printf_U32(28,3,(unsigned long int)temp0,0);
  61.          Oled_Printf_U32(28,4,(unsigned long int)temp1,0);
  62.          Oled_Printf_U32(28,5,(unsigned long int)temp2,0);
  63.          Oled_Printf_U32(28,6,(unsigned long int)temp3,0);
  64.      //}
  65. /**
  66. **在按鍵按下時(shí) oled菜單界面進(jìn)行相應(yīng)的切換
  67. **并且相應(yīng)標(biāo)志位被重新賦值
  68. **/
  69.     /*if(Interrupt_Flg==1)//按一次方向按鍵'Interrupt_Flg'變量會(huì)被置1
  70.     {
  71.                                 if(Page_New==0)
  72.                                 {
  73.                                         ConfirmKey=0;
  74.                                 }
  75.         
  76.                                 OLED_Page_Show(KeyRightLeftFlg, KeyUpDownFlg,ConfirmKey);//此函數(shù)為oled菜單顯示函數(shù)(參數(shù)分別為: 按鍵左右值 按鍵上下值 以及確認(rèn)鍵)
  77.                           ConfirmKey=0;
  78.                           Interrupt_Flg=0;
  79.                           InterruptFlg =0;                  
  80.                           KeyUpDownFlg =0;
  81.                           KeyRightLeftFlg=0;
  82.     }

  83.     InterruptFlg=0;//此標(biāo)志位為 錄入手勢時(shí)所需的標(biāo)志位

  84. /**
  85. ** 在進(jìn)入'Figer'訓(xùn)練界面時(shí)'Train_Figer_Entry_Flg'標(biāo)志位被置1
  86. ** 在此訓(xùn)練期間,不會(huì)跳出此循環(huán) 除非強(qiáng)制返回或錄入結(jié)束
  87. ** 相應(yīng)標(biāo)志位在此處被賦值
  88. **/
  89.                 /*while(Train_Figer_Entry_Flg)
  90.                 {   SortTimes=0;
  91.         Loading();
  92.                         
  93.        if(InterruptFlg==1)
  94.                     {
  95.           EntryFiger();
  96.           InterruptFlg=0;
  97.         }
  98.                                 
  99.                 ConfirmKey=0;
  100.         KeyUpDownFlg=2;
  101.         Interrupt_Flg=1;
  102.                 KeyRightLeftFlg=-1;
  103.     }
  104. /**
  105. **'Figer'訓(xùn)練期間如果強(qiáng)制返回則代表錄入失敗
  106. ** 相應(yīng)所存放數(shù)據(jù)的數(shù)組被清零
  107. **/
  108. /*  if(EntryFigerTimes!=0)
  109.     {
  110.                 unsigned char i;
  111.                         
  112.         for(i=0;i<6;i++)
  113.         {
  114.           ArrayA[i]=0;
  115.         }
  116.                                 
  117.         EntryFigerTimes=0;//錄入手勢時(shí)的次數(shù)
  118.                                 KeyUpDownFlg=0;
  119.     }
  120. /**
  121. ** 在進(jìn)入'JudgeNum'判決界面時(shí)'Judge_Figer_Flg'標(biāo)志位被置1
  122. ** 因?yàn)樵阡浫胧謩輹r(shí)不需要按照順序,所以此處用到冒泡排序算法
  123. ** oled顯示相應(yīng)結(jié)果
  124. **/
  125.          /* if(Judge_Figer_Flg==1)
  126.                 {
  127.         if(SortTimes==0)//錄入一次數(shù)據(jù)只排序一次
  128.         {
  129.            SortArr(ArrayA,6);//冒泡排序算法
  130.            JudgmentFigerRange();//對手勢范圍進(jìn)行整定
  131.         }
  132.         switch(JudgmentFiger())
  133.          {
  134.            case 0: OLED_ShowCN(52,4,35);OLED_ShowCN(52,5,35); break;
  135.            case 1: OLED_ShowStr(52,4,"1",2); break;
  136.            case 2: OLED_ShowStr(52,4,"2",2); break;
  137.                         case 3: OLED_ShowStr(52,4,"3",2); break;
  138.                         case 4: OLED_ShowStr(52,4,"4",2); break;
  139.            case 5: OLED_ShowStr(52,4,"5",2); break;
  140.            default: break;
  141.          }
  142.                                        
  143.         SortTimes=1;
  144.     }
  145. /**
  146. ** 在進(jìn)入'Fist'訓(xùn)練界面時(shí)'Train_Fist_Entry_Flg'標(biāo)志位被置1
  147. ** 在此訓(xùn)練期間,不會(huì)跳出此循環(huán) 除非強(qiáng)制返回或錄入結(jié)束
  148. ** 相應(yīng)標(biāo)志位在此處被賦值
  149. **/
  150. /*        while(Train_Fist_Entry_Flg)
  151.     {
  152.         Loading();
  153.         SortTimes=0;
  154.         if(InterruptFlg==1)
  155.         {
  156.           EntryFist();
  157.           InterruptFlg=0;
  158.         }
  159.                         
  160.         ConfirmKey=0;
  161.         KeyUpDownFlg=2;//訓(xùn)練結(jié)束,回到上級菜單時(shí),光標(biāo)直接跳到猜拳判決處
  162.         Interrupt_Flg=1;
  163.                 KeyRightLeftFlg=-1;
  164.     }
  165. /**
  166. **'Fist'訓(xùn)練期間如果強(qiáng)制返回則代表錄入失敗
  167. ** 相應(yīng)所存放數(shù)據(jù)的數(shù)組被清零
  168. **/
  169.   /*   if(EntryFistTimes!=0)
  170.     {
  171.                                 unsigned char i;
  172.                                 for(i=0;i<4;i++)
  173.                                 {
  174.             ArrayB[i]=0;
  175.                                 }
  176.                                 
  177.         EntryFistTimes=0;//錄入手勢時(shí)的次數(shù)
  178.                                 KeyUpDownFlg=0;
  179.      }
  180. /**
  181. ** 在進(jìn)入'JudgeFist'判決界面時(shí)'Judge_Fist_Flg'標(biāo)志位被置1
  182. ** 因?yàn)樵阡浫胧謩輹r(shí)不需要按照順序,所以此處用到冒泡排序算法
  183. ** oled顯示相應(yīng)結(jié)果
  184. **/
  185. /*   if(Judge_Fist_Flg==1)
  186.      {
  187.         if(SortTimes==0)//錄入一次數(shù)據(jù)只排序一次
  188.         {
  189.            SortArr(ArrayB,4);
  190.            JudgmentFistRange();
  191.          }
  192.          switch(JudgmentFist())
  193.          {
  194.            case 0: OLED_ShowCN(48,5,35); OLED_ShowCN(64,5,35);break;//空格
  195.            case 1: OLED_ShowCN(48,5,30); OLED_ShowCN(64,5,31);break;//石頭
  196.            case 2: OLED_ShowCN(48,5,32); OLED_ShowCN(64,5,33);break;//剪刀
  197.            case 3: OLED_ShowCN(48,5,34); OLED_ShowCN(64,5,35);break;//布
  198.            default: break;
  199.          }
  200.         SortTimes=1;

  201.                 }*/
  202.   }
  203. }
  204. /**
  205. **可在此函數(shù)中直接采集四路通道值
  206. **/

  207. void GetFouChVal()
  208. {
  209.                 temp0= Cap_Calculate(0);
  210.     temp1= Cap_Calculate(1);
  211.     temp2= Cap_Calculate(2);
  212.     temp3= Cap_Calculate(3);
  213.     Total_Value=(temp0+temp1+temp2+temp3)/10000;
  214. }
  215. /**
  216. **定時(shí)器5中斷函數(shù) 10ms
  217. **在定時(shí)器中采集四路通道值,并計(jì)算總值
  218. **/
  219. void TIM5_IRQHandler(void)         
  220. {
  221.          
  222.         if(TIM5->SR&0X0001)//溢出中斷
  223.         {        
  224.                 temp0= Cap_Calculate(0);
  225.     temp1= Cap_Calculate(1);
  226.     temp2= Cap_Calculate(2);
  227.     temp3= Cap_Calculate(3);
  228.     Total_Value=(temp0+temp1+temp2+temp3)/10000;
  229.                
  230.         }                                                   
  231.   TIM5->SR&=~(1<<0);
  232. }
復(fù)制代碼

全部資料51hei下載地址:
Gesture-KEIL.7z (225.37 KB, 下載次數(shù): 76)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:818753 發(fā)表于 2020-9-24 09:26 | 只看該作者
請問不同的液晶怎么改代碼呀
回復(fù)

使用道具 舉報(bào)

板凳
ID:927138 發(fā)表于 2021-5-30 17:31 | 只看該作者
請問,有實(shí)物圖嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:99858 發(fā)表于 2022-3-8 15:52 | 只看該作者
問下為什么我的板子時(shí)間長了,數(shù)值會(huì)出現(xiàn)漂移,有好的解決辦法嗎?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人免费观看男女羞羞视频 | 一区二区在线 | 成人深夜福利 | 国产精品69毛片高清亚洲 | 四虎影视一区二区 | 人人看人人搞 | 久久免费精品 | 久久久人成影片免费观看 | 国产99视频精品免费播放照片 | 波多野吉衣久久 | 亚洲a视| 少妇久久久 | 国产精品海角社区在线观看 | 亚洲精品一区二区 | 国产精品不卡 | 一区二区三区免费在线观看 | 色av一区二区三区 | 天天操夜夜操 | 久久99精品久久久97夜夜嗨 | 久久99精品久久久久久 | 色天堂影院| 日韩国产一区二区三区 | 久久精品a级毛片 | 国产精品揄拍一区二区 | 9porny九色视频自拍 | 亚洲一区 中文字幕 | 亚洲国产欧美91 | 欧美2区| 欧美日韩国产一区二区三区 | 国产精品久久午夜夜伦鲁鲁 | 99久久免费精品国产男女高不卡 | 亚洲精久久 | 三级视频国产 | 99久久婷婷国产综合精品 | 婷婷色在线播放 | 国产精品久久久久久模特 | 日韩欧美视频在线 | 福利一区在线观看 | 亚州精品天堂中文字幕 | 91资源在线观看 | 日韩电影一区 |