一、配置

(1) TTP229BSF設置
TP0=0,TP2 = 0,TP7 = 0,其余默認為1
2線串行輸入——CMOS低電平有效輸出
有效按鍵最大輸入時間設定為80s
(2) STC89C52設置
11.0592MHz時鍾
P10口接鍵盤SCL(雙線串行數據傳輸輸入時鍾)
P11口接鍵盤SDO(雙線串行數據傳輸輸出)
sbit scl=P1^0;
sbit sdo=P1^1;
二、時序圖


三、程序源碼
1 #include<reg51.h> 2 #include<intrins.h> 3 sbit scl=P1^0; 4 sbit sdo=P1^1; 5 6 void delay10us(unsigned int n) 7 { 8 while(n--); 9 } 10 11 void delay(unsigned z) 12 { 13 unsigned int x,y; 14 for(x = z; x > 0; x--) 15 for(y = 114; y > 0 ; y--); 16 } 17 18 unsigned char ttp229_write(void) 19 { 20 unsigned char i; 21 unsigned char temp=0; 22 sdo=0; 23 delay10us(10);//115.02us 24 sdo=1; 25 delay10us(2); //36us 26 for(i=0;i<16;i++) 27 { 28 scl=0; 29 if(!sdo) temp += i; 30 scl=1; //132KHz 31 } 32 return temp; 33 } 34 35 36 void UART_init() 37 { 38 TMOD = 0x20;//T1工作模式2 8位自動重裝 39 TH1 = 0xfd; 40 TL1 = 0xfd; //比特率9600 41 TR1 = 1; //啟動T1定時器 42 SM0 = 0; 43 SM1 = 1; //串口工作方式1 10位異步 44 REN = 1; //串口允許接收 45 EA = 1; //開總中斷 46 ES = 1; //串口中斷打開 47 } 48 49 void main() 50 { 51 UART_init(); 52 while(1) 53 { 54 delay(500);//500ms 55 SBUF = ttp229_write(); 56 } 57 }
