TTP229BSF电容式触摸键盘-测试16键程序-C51:串口通信PC显示值

 一、配置

(1) TTP229BSF设置

TP0=0,TP2 = 0,TP7 = 0,其余默认为

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 }
测试程序

猜你喜欢

转载自www.cnblogs.com/cnlntr/p/12198250.html