找回密码
 立即注册
楼主: 神农鼎

16个触摸按键,16个8段LED数码管大电流自动涮新,STC8H4K64TL

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-05-26 14:18:57

0

主题

5

回帖

58

积分

注册会员

积分
58
发表于 2023-11-20 08:37:14 | 显示全部楼层
这板子能在什么地方买到吗,买一块来学习学习。

点评

建议帮用立创软件做个开源的,我们不会那新东西  详情 回复 发表于 2023-11-20 09:40
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:403
  • 最近打卡:2026-05-10 15:24:05

849

主题

1万

回帖

2万

积分

管理员

积分
23234
发表于 2023-11-20 09:40:03 | 显示全部楼层
jy007*** 发表于 2023-11-20 08:37
这板子能在什么地方买到吗,买一块来学习学习。

建议帮用立创软件做个开源的,我们不会那新东西
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:874
  • 最近打卡:2026-05-10 07:29:21

126

主题

2078

回帖

4812

积分

论坛元老

积分
4812
发表于 2023-12-7 17:44:08 | 显示全部楼层
只有STC,才把有关触控的源码献出来!
不像某些单片机厂家,只提供一个Lib,而Lib根本就不好用。
好像显得很神秘的样子。
为STC点赞!
回复

使用道具 举报 送花

已绑定手机

3

主题

5

回帖

39

积分

新手上路

积分
39
发表于 2025-2-7 18:47:09 来自手机 | 显示全部楼层
谁能提供单独一个触摸按键控制一个LED的简单案例
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:380
  • 最近打卡:2025-11-12 11:13:25

13

主题

114

回帖

281

积分

中级会员

积分
281
发表于 2025-2-25 16:53:48 | 显示全部楼层
        for(read_cnt=0; read_cnt<40; read_cnt++)                //¶Á40´Î¼ü, ½«´ËÖµ×÷Ϊδ´¥ÃþʱµÄ0µã, ÒªÇóÉϵçʱ²»Òª´¥Ãþ°´¼ü
        {
        //        TSCTRL = (1<<7) + (1<<6) +3;        //¿ªÊ¼É¨Ãè, 4´Îƽ¾ù, ¶ÁÊý´óԼΪÎÞÆ½¾ùµÄÒ»°ë
                TSCTRL = (1<<7) + (1<<6) +1;        //¿ªÊ¼É¨Ãè, 2´Îƽ¾ù, ¶ÁÊý´óԼΪÎÞÆ½¾ùµÄÒ»°ë
        //        TSCTRL = (1<<7) + (1<<6);                //¿ªÊ¼É¨Ãè, ֻת»»1´Î, ÎÞÆ½¾ù
                B_ReadKeyOk = 0;
                for(i=0; i<100; i++)
                {
                        if(B_ReadKeyOk)        break;
                        delay_ms(1);
                }
        }
        for(i=0; i<16; i++)                TK_zero[i] = TK_cnt[i];        //±£´æ0µã

有个疑问需要请教一下,例程里面的169行代码这里的TK_cnt[i]这个数值由哪里赋值呢?
例程上下我都看了,按照逻辑,是在上电的时候,扫描按键,把数值赋值给数组。但是例程里面找不到对应的赋值。
这个是MCU内部自动赋值的吗?
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-06-28 11:57:34
已绑定手机

1

主题

1

回帖

11

积分

新手上路

积分
11
发表于 2025-6-27 23:35:41 | 显示全部楼层
lyag*** 发表于 2025-2-25 16:53
for(read_cnt=0; read_cnt

您好,请问一下现在你的触摸按键可以成功实现了吗?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:297
  • 最近打卡:2026-05-07 16:48:48
已绑定手机

0

主题

35

回帖

1192

积分

金牌会员

积分
1192
发表于 2025-12-3 08:18:16 | 显示全部楼层
你好,这个触摸功能最多可以穿透多厚呢
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-12 16:52:35
已绑定手机

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2026-1-12 16:52:35 | 显示全部楼层
我特意注册了个账号进来吐槽。原来这个触摸原理就是利用引脚发送高频PWM然后占空比可调1/4,1/2,5/8/等。然后同时低电平时复用这个引脚做读数填充TSDAT寄存器。槽点有一下,1;既然这个触摸功能是专用芯片的,规格书怎么不做一份专用的?查一下资料都得翻半天。专属寄存器功能又说得云山雾罩的。槽点2.直接出一个例程专门,触摸功能怎么初始化,怎么读,怎么判断按下,点亮一个灯之类简单的,让人一看就能触类旁通了。

/**********************************************************************
//如有转载请注明出处
//代码原创:wannenggong 2022-11-10
//单片机型号:STC8H4K64TL,电源电压3.3V,使用外接RX8025T-32768信号源做外部晶振
//接线方式:P1.1口经1K电阻连接金属触摸片,P1.0口经470Ω电阻连接LED到正电源
//触摸按键工作模式:自动重复扫描
//实验目标:触摸按键时LED亮起,不触摸按键时LED熄灭
***********************************************************************/
#include "STC8H.h" //包含了u8、u16、u32的定义
#include <intrins.h>
sbit wng_led=P1^0;

//------------------------------------------
void key_init()
{
    P_SW2 |= 0x80;                                //允许访问XFR
    TSRT = 0x00;                                //不开启LED驱动分时功能
    TSCHEN1 = 0x02;                                //仅使能TK01(P1.1)
    TSCHEN2 = 0x00;                                //其他按键没有使用
    TSCFG1  = (7<<4) + 3;                //开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+1)), 放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
    TSCFG2  = 2;                                //配置触摸按键控制器的内部参考电压(AVCC的分压比), 0(1/4)  1(1/2)  2(5/8)  3(3/4)
        TSWUTC = 0x0c;                                //32768/(32*8*0x0c)=10Hz=100ms唤醒一次
        TSCTRL = 0xB0;                                //使用外部晶振
//        TSCTRL = 0xA0;                                //使用内部晶振
//----TSCTRL寄存器详解如下--------------
//B7:TSGO=1使能触摸按键
//B6:SINGLE=1单次扫描模式、=0自动重复扫描
//B5:TSWAIT=1完成一轮扫描后、TSIF 被硬件置 1,此时触摸按键控制器会暂停扫描,直到 TSIF 标志位被清 0后才开始下一轮的扫描
//B4:TSWUCS=0使用内部32K晶振
//B3:TSDCEN=0不使能16位比较器
//B2:TSWUEN=1使能低功耗唤醒功能
//B1B0:TSSAMP=11单次按键扫描4次
//--------------------------------------
    P_SW2 &= ~0x80;                   //禁止访问XFR
    //IE2 |= 0x80;
}
//----键值读取函数--------------------
u8 Read_Key_value(void)
{
    u8 j,wng_data;
    u16 i, wng_value=0;
    P_SW2 |= 0x80;               
    for(i=0; i<100; i++)
    {
        j = TSSTA2;
        if(j & 0x40)        //数据溢出
        {
            TSSTA2 |= 0x40; //写1清零
            wng_value=0xee;        //返回错误码0xee
        }

        if(j & 0x80)        //扫描完成
        {
            TSSTA2 |= 0x80; //写1清零
            wng_value=TSDAT;
            wng_data=wng_value>>12;        //获取高8位数据的高4位用于判断
        }
    }
    P_SW2 &= ~0x80;               

    return (wng_data);
}
//----按键函数------------------------------
void key01()
{
    u8 wng;
    wng=Read_Key_value();
    if(wng==0xee)
        return;
    else
    {
        if(wng<0x03)                //选取一个中值用来判断按键状态
            wng_led=0;
        else if(wng>0x03)
            wng_led=1;
    }

}
//------------------------------------------
void main(void)
{

    P1M1=0x00;
    P1M0=0x00;
    P3M1=0x00;
    P3M0=0x00;
    P5M1=0x00;
    P5M0=0x00;
    key_init();
    wng_led=1;
    while(1)
    {
        key01();
               
    }
}

看看人家写的,又清晰又容易懂。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:403
  • 最近打卡:2026-05-10 15:24:05

849

主题

1万

回帖

2万

积分

管理员

积分
23234
发表于 2026-1-12 17:36:43 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-01-26 22:03:52
已绑定手机

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2026-1-26 22:03:52 | 显示全部楼层
如果能说明触摸功能的物理模型,读的值究竟是什么,给的参数代表哪些物理量,对结果预估有什么影响,那就太好了。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-5-10 23:23 , Processed in 0.118642 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表