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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3879|回復: 6
打印 上一主題 下一主題
收起左側

輝芒微單片機FT62F083RB觸摸滑輪滑條滑塊程序資料原創

  [復制鏈接]
跳轉到指定樓層
樓主
    輝芒微單片機FT62F083RB觸摸滑輪滑條滑塊這是最近亞馬遜很火的產品,輕輕滑動就能實現調光調色,顯得很高大尚,產品智能化檔次提升了。下面就將我最近研究的分享出來。
滑輪介紹:它是一個圓盤,由4個touch觸摸按鍵組成,它將4個touch銅泊均勻分布在一個圓形的盤上,此時這個圓形分為32等份,即32個按鍵,我們手觸到哪個位置就會有相對應的位置。然后將觸摸到的值解碼出來,去做你想做得事。
滑條介紹:它是一個長方形條,也是由4個touch觸摸按鍵組成,這一個長條將它分為16等分,即16個按鍵,我們手觸到哪個位置就會有相對應的位置。然后將觸摸到的值解碼出來就行了。
注意事項:1、PCB layout時要注意均勻分布,否則解碼出來的效果會不靈敏
                2、在調觸摸閥值時,一定要在實際環境中調試,千萬不要飛線之類的,pcb板要求要標準化。即你實際應用時是什么結構,你調試時就要用什么結構,若你調試時是用裸板,你應用時裝了外殼,那是無法使用的。否則你調試時環境和使用不一樣,效果完全不一樣了。
3、程序算法上,要注意正反轉判斷及手觸摸位盡量不能太精密,因為圓盤太小,手指太大,它會占用2個鍵值,此時你若太精密,就導致它會誤判現象。來點實際的,現在把代碼上上來,因為電腦是正版繁體系統,故注釋都是亂碼,望見諒。里面有視頻效果,真實的。



單片機源程序如下:
  1. #include "common.h"
  2. #include "syscfg.h"
  3. #include "touch.h"
  4. #define  uchar   unsigned char
  5. #define  uint      unsigned int
  6. extern volatile unsigned char WSPosition1;
  7. extern volatile unsigned char WSPosition2;
  8. extern   uint8_t                      fmd_channels;
  9. volatile  uint16_t                 readKeyNum;     
  10. uint16_t  lastkey=0;
  11. BOOL      f_lowpower=0;                                          
  12. uint16_t   TouchTimeCount;
  13. #define SENSIBILITY        2
  14. volatile  int lastKey;
  15. volatile  int currKey;
  16. volatile int delta;
  17. volatile int currOrient = 0;
  18. volatile unsigned char pwmDuty = 0;
  19. bit        flag;
  20. uchar pwm;
  21. void interrupt ISR(void)
  22. {
  23. if(T4UIE && T4UIF)                        
  24. {
  25. T4UIF = 1;                           
  26. TouchTimeCount++;
  27. }
  28. }
  29. void SysInit(void)
  30. {
  31. OSCCON = 0B01110001;               


  32. INTCON = 0;                                                  
  33. PORTB = 0B00000010;               
  34. TRISB = 0B11111101;               
  35. WPUB = 0B00000000;            
  36. ANSELA = 0B00000000;   
  37. }
  38. void WDT_Initial(void)
  39. {
  40. CLRWDT();                                             
  41. MISC0  = 0B00000000;           
  42. if(WAKEUPFREQUENCY==16)
  43. {
  44. WDTCON = 0B00001100;
  45. }
  46. else if(WAKEUPFREQUENCY==8)
  47. {
  48. WDTCON = 0B00001110;
  49. }
  50. else
  51. {
  52. WDTCON = 0B00010000;
  53. }         


  54. }
  55. void Time4Initial(void)
  56. {
  57. PCKEN |=0B00001000;      
  58. TIM4CR1        =0B00000101;
  59. TIM4IER        =0B00000001;
  60. TIM4SR        =0B00000000;
  61. TIM4EGR        =0B00000000;
  62. TIM4CNTR=0;
  63. TIM4PSCR=0B00000111;
  64. TIM4ARR        =124;
  65. INTCON |= 0B11000000;   
  66. }
  67. void Time1Initial(void)
  68. {
  69. PCKEN |= 0B00000010;   
  70. CKOCON=0B00100000;
  71. TCKSRC = 0B00000000;
  72. TIM1CR1 =0B10000101;  
  73. TIM1SMCR=0B00000000;
  74. TIM1IER = 0B00000000;
  75. TIM1SR1 =0B00000000;
  76. TIM1SR2 =0B00000000;
  77. TIM1EGR =0B00000000;
  78. TIM1CCMR1 =0B00000000;
  79. TIM1CCMR2 =0B00000000;
  80. TIM1CCMR3 =0B00000000;
  81. TIM1CCMR4 =0B01101000;
  82. TIM1CCER1 =0B00000000;
  83. TIM1CCER2 =0B00010000;
  84. AFP0=0B00001100;
  85. AFP1=0B00000000;  
  86. TIM1CNTRH = 0B00000000;               
  87. TIM1CNTRL = 0B00000000;
  88. TIM1PSCRH = 0B00000000;
  89. TIM1PSCRL = 0B00000000;
  90. TIM1ARRH = 0;               
  91. TIM1ARRL = 213;
  92. TIM1RCR = 0B00001111;           
  93. TIM1CCR1H =0;               
  94. TIM1CCR1L =14;
  95. TIM1CCR2H =0;               
  96. TIM1CCR2L = 14;
  97. TIM1CCR3H = 0;               
  98. TIM1CCR3L = 14;
  99. TIM1CCR4H =0;               
  100. TIM1CCR4L = 14;
  101. TIM1BKR = 0B11000000;           
  102. TIM1DTR = 0B00000111;           
  103. TIM1OISR =0B00000000;
  104. LEBCON =0B00000000;
  105. }
  106. void delay(uint16_t ii)
  107. {
  108. uint16_t x,y;
  109. for(x=0;x<500;x++)
  110. for(y=ii;y>0;y--);
  111. }
  112. unsigned char dealWithPositionValue(void)
  113. {
  114. unsigned char key = 0;
  115. currKey = WSPosition1;
  116. if(currKey!=0)
  117. {
  118. if(currKey != lastKey)
  119. {
  120. if((currKey != 16) && (lastKey != 16))
  121. {
  122. delta = currKey - lastKey;
  123. if((delta > 0) && (delta <= SENSIBILITY))
  124. {
  125. key = 1;
  126. }
  127. else if((delta < 0) && (delta >= (-SENSIBILITY)))
  128. {
  129. key = 2;
  130. }
  131. else
  132. {
  133. key = 0;
  134. }
  135. }
  136. else if((currKey == 16))
  137. {
  138. if(lastKey >= (16-SENSIBILITY))
  139. {
  140. key = 1;
  141. }
  142. else if(lastKey <= SENSIBILITY)
  143. {
  144. key = 2;
  145. }
  146. else
  147. {
  148. key = 0;
  149. }
  150. }
  151. else if((lastKey == 16))
  152. {
  153. if(currKey >= (16-SENSIBILITY))                        
  154. {
  155. key = 2;
  156. }
  157. else if(currKey <= SENSIBILITY)
  158. {
  159. key = 1;
  160. }
  161. else
  162. {
  163. key = 0;
  164. }
  165. }
  166. lastKey = currKey;        
  167. }

  168. }
  169. return key;
  170. }
  171. void main(void)
  172. {
  173. SysInit();
  174. Time4Initial();
  175. Time1Initial();
  176. TouchInital();
  177. WDT_Initial();
  178. while(1)
  179. {      
  180. CLRWDT();
  181. if(currOrient == 1)
  182. {
  183. if((currKey>3)&&(currKey<=6))
  184. {

  185. if(TIM1CCR4L>=42)
  186. {
  187. TIM1CCR4L= 42;
  188. }
  189. else
  190. {
  191. TIM1CCR4L++;
  192. delay(10);
  193. }
  194. }
  195. else if((currKey>6)&&(currKey<=9))
  196. {
  197. if(TIM1CCR4L>=84)
  198. {
  199. TIM1CCR4L= 84;
  200. }
  201. else
  202. {
  203. TIM1CCR4L++;
  204. delay(10);
  205. }
  206. }
  207. else if((currKey>9)&&(currKey<=12))
  208. {
  209. if(TIM1CCR4L>=126)
  210. {
  211. TIM1CCR4L= 126;
  212. }
  213. else
  214. {
  215. TIM1CCR4L++;
  216. delay(10);
  217. }
  218. }
  219. else if((currKey>12)&&(currKey<=14))
  220. {
  221. if(TIM1CCR4L>=168)
  222. {
  223. TIM1CCR4L= 168;
  224. }
  225. else
  226. {
  227. TIM1CCR4L++;
  228. delay(10);
  229. }
  230. }
  231. else if((currKey>14)&&(currKey<=16))
  232. {
  233. if(TIM1CCR4L>=210)
  234. {
  235. TIM1CCR4L= 210;
  236. }
  237. else
  238. {
  239. TIM1CCR4L++;
  240. delay(10);
  241. }
  242. }
  243. }
  244. else if(currOrient == 0)
  245. {
  246. flag=0;
  247. }
  248. else if(currOrient == 2)
  249. {
  250. if((currKey>0)&&(currKey<=3))
  251. {
  252. if(TIM1CCR4L>8)
  253. {
  254. TIM1CCR4L--;
  255. delay(10);
  256. }
  257. else
  258. {
  259. TIM1CCR4L= 8;
  260. }
  261. }
  262. else if((currKey>3)&&(currKey<=6))
  263. {
  264. if(TIM1CCR4L>42)
  265. {
  266. TIM1CCR4L--;
  267. delay(10);        
  268. }
  269. else
  270. {
  271. TIM1CCR4L= 42;

  272. }
  273. }
  274. else if((currKey>6)&&(currKey<=9))
  275. {
  276. if(TIM1CCR4L>84)
  277. {
  278. TIM1CCR4L--;
  279. delay(10);        
  280. }
  281. else
  282. {
  283. TIM1CCR4L= 84;
  284. }
  285. }
  286. else if((currKey>9)&&(currKey<=12))
  287. {
  288. if(TIM1CCR4L>126)
  289. {
  290. TIM1CCR4L--;
  291. delay(10);        
  292. }
  293. else
  294. {
  295. TIM1CCR4L= 126;
  296. }
  297. }
  298. else if((currKey>12)&&(currKey<=14))
  299. {
  300. if(TIM1CCR4L>168)
  301. {
  302. TIM1CCR4L--;
  303. delay(10);
  304. }
  305. else
  306. {

  307. TIM1CCR4L= 168;
  308. }
  309. }
  310. }
  311. if(TouchTimeCount>=(1000/SCANNINGTIME))                           
  312. {
  313. TouchTimeCount = 0;

  314. readKeyNum = TouchKeyScan();         
  315. currOrient = dealWithPositionValue();
  316. }
  317. }
  318. }
復制代碼

PCB文件下載: PCB文件.7z (3.81 MB, 下載次數: 68)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:576203 發表于 2023-12-27 11:26 | 只看該作者
感謝樓主無私分享,最近看到有用ft62f211做的隔空觸摸調光模塊,和水位檢測。應該也是一樣原理。樓主有空了也實驗一下
回復

使用道具 舉報

板凳
ID:108987 發表于 2024-1-5 08:24 | 只看該作者
感謝樓主, 正找滑環觸摸芯片呢
回復

使用道具 舉報

地板
ID:71233 發表于 2024-1-8 08:10 | 只看該作者
輝芒微單片機很便宜,下載器貴不貴呢?
回復

使用道具 舉報

5#
ID:612257 發表于 2025-1-7 09:34 | 只看該作者
樓主,有應用過這個芯片的捕獲功能嗎?如果有的話希望可以發個資料作為參考模板,郵箱是1327209417@qq.com
回復

使用道具 舉報

6#
ID:612257 發表于 2025-1-7 09:35 | 只看該作者
樓主用過這個芯片的捕獲功能嗎
回復

使用道具 舉報

7#
ID:71233 發表于 2025-1-20 15:22 | 只看該作者
ft62f211可以用于做水位檢測嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品自拍视频网站 | 国产成人a亚洲精品 | 国产精品久久久久久婷婷天堂 | 国产欧美精品 | cao在线| 欧美极品视频在线观看 | 日本成人福利视频 | 久久亚洲综合 | 国产婷婷精品av在线 | 国产精品美女久久久av超清 | 中文字幕在线三区 | 91在线影院 | 日韩视频中文字幕 | 国产精品久久久久久久久久久久 | a免费观看| 免费网站国产 | 国产精品亚洲视频 | 永久av| 性生生活大片免费看视频 | 欧美不卡一区二区三区 | 少妇黄色 | 亚洲 中文 欧美 日韩 在线观看 | 有码在线| 中文字幕一区在线观看视频 | 久久精品欧美电影 | 国产yw851.c免费观看网站 | 亚洲综合视频 | 日韩一区二区在线播放 | 激情国产| 精品国产乱码久久久久久88av | 一区二区三区精品视频 | 久久国产区 | 特级黄一级播放 | 一区二区三区免费在线观看 | 国产精品99久久久久久动医院 | 韩国av一区二区 | 亚洲九色 | 国产精品一区二区三区在线 | 中文字幕人成乱码在线观看 | 91国产在线视频在线 | 日本不卡一区二区三区在线观看 |