|
FT6336UA觸摸驅(qū)動(dòng)用于FT6336觸摸芯片軟件調(diào)試參考
單片機(jī)源程序如下:
- #include "FT6336.h"
- #include "lcd.h"
- #include "delay.h"
- #include "tp_iic.h"
- //---------------------------------------------------------------------------------------------------
- //#define LED_EN PBout(12)//RST信號(hào)
- void FT6336_init(void)
- {
- CT_IIC_Init();
- }
- u8 FT6336_read_firmware_id(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_FIRMARE_ID);
- }
- u8 FT6336_read_device_mode(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_DEVICE_MODE);
- }
- u8 FT6336_read_td_status(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TD_STATUS);
- }
- //第一觸點(diǎn)
- u8 FT6336_read_touch1_event(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_EVENT)>>4;
- }
- u8 FT6336_read_touch1_id(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_ID)>>4;
- }
- //左下角為坐標(biāo)零點(diǎn),水平Y(jié)軸,垂直X軸
- //Y軸范圍0~479
- //X軸范圍0~479
- //touch1和touch2排列順序?yàn)榘疵娣e排列,而ID號(hào)為按下的時(shí)間先后標(biāo)號(hào),該標(biāo)號(hào)可代表按下的手指
- //在第一點(diǎn)按下后ID記為0,事件為8,而抬起后ID與坐標(biāo)保持最后數(shù)值,事件為4,此時(shí)第二個(gè)點(diǎn)數(shù)據(jù)一直為FF
- //在第一點(diǎn)按下前提下按第二個(gè)點(diǎn),ID記為1,事件為8,抬起后全恢復(fù)FF,而當(dāng)?shù)诙䝼(gè)點(diǎn)的接觸面積大于第一個(gè)點(diǎn)時(shí),
- //它將保持ID與坐標(biāo)前提下與第一個(gè)點(diǎn)更換存儲(chǔ)地址,第一個(gè)點(diǎn)抬起后,第二個(gè)點(diǎn)的依舊ID為1
- //按下第三個(gè)點(diǎn)時(shí),將與其它兩個(gè)點(diǎn)進(jìn)行面積對(duì)比后,直接拋棄面積最小的點(diǎn)
- u16 FT6336_read_touch1_x(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_X,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
- u16 FT6336_read_touch1_y(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH1_Y,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
- //第二觸點(diǎn)
- u8 FT6336_read_touch2_event(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_EVENT)>>4;
- }
- u8 FT6336_read_touch2_id(void)
- {
- return CT_IIC_read_addr_byte(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_ID)>>4;
- }
- u16 FT6336_read_touch2_x(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_X,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
- u16 FT6336_read_touch2_y(void)
- {
- u8 read_buf[2];
- CT_IIC_read_addr_str(I2C_ADDR_FT6336,FT6336_ADDR_TOUCH2_Y,2,read_buf);
- return ((read_buf[0]&0x0f)<<8)|read_buf[1];
- }
復(fù)制代碼- #ifndef __FT6336_H
- #define __FT6336_H
- #include "sys.h"
- #define LED_EN PBout(12)
- #define I2C_ADDR_FT6336 0x38
- #define FT6336_ADDR_DEVICE_MODE 0x00
- #define FT6336_ADDR_TD_STATUS 0x02
- #define FT6336_ADDR_TOUCH1_EVENT 0x03
- #define FT6336_ADDR_TOUCH1_ID 0x05
- #define FT6336_ADDR_TOUCH1_X 0x03
- #define FT6336_ADDR_TOUCH1_Y 0x05
- #define FT6336_ADDR_TOUCH2_EVENT 0x09
- #define FT6336_ADDR_TOUCH2_ID 0x0B
- #define FT6336_ADDR_TOUCH2_X 0x09
- #define FT6336_ADDR_TOUCH2_Y 0x0B
- #define FT6336_ADDR_FIRMARE_ID 0xA6
- void FT6336_init(void);
- u8 FT6336_read_firmware_id(void);
- u8 FT6336_read_device_mode(void);
- u8 FT6336_read_td_status(void);
- u16 FT6336_read_touch1_x(void);
- u16 FT6336_read_touch1_y(void);
- u8 FT6336_read_touch1_event(void);
- u8 FT6336_read_touch1_id(void);
- u8 FT6336_read_touch2_event(void);
- u8 FT6336_read_touch2_id(void);
- u16 FT6336_read_touch2_x(void);
- u16 FT6336_read_touch2_y(void);
- #endif
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|