上節講了LED驅動芯片的介紹,這次給大家推薦一款觸摸芯片,我要介紹的是來自合泰的BS814A-2這款觸摸芯片,他與上節將的通訊時一樣的,它也是IIC通訊協議進行通訊的,具體如何使用請查閱它的DataSheep!
附上電路圖
由于STC8G1K17它內部只有一組硬件IIC,這組已經被LED驅動芯片使用了,所以這次就的使用模擬IIC程序來進行通訊了,IIC的通訊協議這里不再強調了,需要了解的請轉到http://www.raoushi.com/bbs/dpj-210572-1.html
以下為單片機源程序
- #include "main.h"
- #define TOU_SDA P34
- #define TOU_CLK P35
- extern uint8_t Read_Touch(void);
- KEY_t KEY =
- {
- Read_Touch,
- };
- //檢測是否被觸摸,被觸摸及讀取觸摸數據
- static uint8_t Read_TouchData(void)
- {
- uint8_t i;
- uint8_t Touch_dat=0x00;
-
- TOU_SDA = 1;
- TOU_CLK = 1;
- if(TOU_SDA==0)
- {
- TOU_CLK = 0;
- for(i=0;i<8;i++)
- {
- Delay.delayus(80); //稍作延時 45us
- TOU_CLK = 1;
- Touch_dat >>= 1;
- Delay.delayus(40); //22.5us后讀取數據,在數據的中間讀取數據
- if(TOU_SDA) //讀取數據
- Touch_dat |= 0x80;
- Delay.delayus(40); //稍作延時 22.5us
- TOU_CLK = 0;
- }
- TOU_SDA = 1; //釋放總線
- TOU_CLK = 1; //釋放總線
- }
- return Touch_dat;
- }
- //將都到的觸摸數據進行解析
- static uint8_t Read_Touch(void)
- {
- uint8_t Touch_DAT;
-
- Touch_DAT = Read_TouchData();
- switch(Touch_DAT)
- {
- case 0x8F:return 0;break; //沒有按鍵按下,返回0
- case 0x9E:return 1;break; //KEY1按鍵按下,返回1
- case 0x9D:return 2;break; //KEY2按鍵按下,返回2
- case 0x9B:return 3;break; //KEY3按鍵按下,返回3
- case 0x97:return 4;break; //KEY4按鍵按下,返回4
- default:return 0;break;
- }
- }
復制代碼
上圖2個文件下載:
觸摸驅動程序.zip
(1.1 KB, 下載次數: 37)
2021-7-31 21:07 上傳
點擊文件名下載附件
|