一、配置
(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 }