小菜花 发表于 2025-6-28 11:57:34

请教一下大佬们关于STC8H的触摸按键是如何配置使用的?

我按照数据手册配置好相关寄存器之后,从触摸按键中断返回TSDAT寄存器的值,但是使用串口输出显示的都是0,这是为什么呢?

乘风飞扬 发表于 2025-6-28 21:20:13

这个帖子里有例子跟配套的使用演示视频可参考:
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=3971&pid=51046

DebugLab 发表于 2025-6-29 12:34:20

初始化:
打开EAXFR
P_SW2|=EAXFR;
设置IO模式,触摸按键IO设置为高阻(以“AI8H4K64TLCD-触摸按键段式LCD实验板”为例,具体值需要根据硬件修改)
P0M0=0x00;
P0M1=0xFF;
P1M0=0x02;
P1M1=0xFC;
P2M0=0x00;
P2M1=0xFF;
P3M0=0x02;
P3M1=0xFC;
P4M0=0x00;
P4M1=0xFF;
P5M0=0x00;
P5M1=0xFF;
P6M0=0xE8;
P6M1=0x07;
P7M0=0x00;
P7M1=0xFF;
启动外部32768Hz晶振(也可使用内部32K时钟,如果使用外部晶振,前面的IO设置,晶振IO也要设置为高阻,如需要进入省电模式,还要关闭数字输入)
X32KCR=0xC0; //启动外部32768晶振,设置高增益
while(!(X32KCR&0x01)); //等待时钟稳定
设置触摸按键通道使能
TSCHEN1=0xFC; //TK00~TK07
TSCHEN2=0xFC; //TK08~TK15
设置LED分时扫描
TSRT=0x00;                //没有LED分时扫描
设置触摸按键配置寄存器
TSCFG1=0x73;      //开关电容工作频率 = fosc/(2*(TSCFG1+1)),放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
TSCFG2=0x03;      //配置触摸按键控制器的内部参考电压(AVCC的分压比),0(1/4)1(1/2)2(5/8)3(3/4)
设置触摸按键控制寄存器
TSCTRL=0x33;      //重复扫描模式,完成一轮扫描暂停,低功耗模式时钟为外部32768晶振,关闭数字比较器,关闭低功耗唤醒,4次平均,B7: TSGO,B6: SINGLE,B5: TSWAIT,B4: TSWUCS,B3: TSDCEN,B2: TSWUEN,B1 B0: TSSAMP
设置触摸按键控制寄存器,开始扫描
TSCTRL|=0x80;      //开始扫描
启用触摸中断
IE2|=0x80;                //启用触摸中断
启用总中断
EA=1;                        //启用总中断
中断:
具体功能看注释
void TKSU_Isr(void) interrupt TKSU_VECTOR
{
      unsigned char temp;
      temp=TSSTA2;
      if(temp&0x40)                                                                //数据溢出, 错误处理
      {
                TSSTA2|=0x40;                                                      //写1清零
      }
      else if(temp&0x80)                                                      //扫描完成
      {
                TS_Scan=temp&0x0f;
                if(TS_Map!=0xFF)                              //如果通道正确
                {
                        TS_Buf]=TSDAT;      //保存某个通道的读数
                        TS_Flag=1;
                }
      }
      TSSTA2|=0x80;                                                                //写1清零
}




页: [1]
查看完整版本: 请教一下大佬们关于STC8H的触摸按键是如何配置使用的?