找回密码
 立即注册
查看: 104|回复: 6

stc触摸按键配置软件没反应不能显示数值

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-03-15 18:48:24
已绑定手机

5

主题

19

回帖

67

积分

注册会员

积分
67
发表于 2026-3-14 14:47:32 | 显示全部楼层 |阅读模式
触摸数据不显示,而且点击获取设置和接受数据没反应,我测试串口通讯软件是正常的,我用的单片机是stc8h4k32tl。
31.png
32.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2026-04-02 08:56:15
已绑定手机

104

主题

4229

回帖

9395

积分

荣誉版主

无情的代码机器

积分
9395
发表于 2026-3-14 17:38:53 | 显示全部楼层
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-03-15 18:48:24
已绑定手机

5

主题

19

回帖

67

积分

注册会员

积分
67
发表于 2026-3-15 18:57:11 来自手机 | 显示全部楼层
ercircle 发表于 2026-3-14 17:38
用此贴里的软件和固件
触摸按键相关资源汇总 - 段码LCD/80mA大电流LED数码管自动刷新显示/RTC实时时钟/触 ...

上次试的时候视频打不开,这次看了视频,原来还要在单片机里下载程序啊,我以为写配置就搞定了,我再试试。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-03-15 18:48:24
已绑定手机

5

主题

19

回帖

67

积分

注册会员

积分
67
发表于 2026-3-15 21:48:54 | 显示全部楼层
无法读取数值。

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCAI.com ---------------------------------------------*/
/* --- BBS: www.STCAIMCU.com  -----------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
/*---------------------------------------------------------------------*/

#include "STC8H.h"
#include <intrins.h>

/*************        功能说明        **************

只检测P1.0(TK00)触摸引脚
每秒通过串口返回触摸值

******************************************/

typedef         unsigned char        u8;
typedef         unsigned int        u16;
typedef         unsigned long        u32;

/*************        本地变量声明        **************/
u16        xdata TK_cnt[16];         // 触摸计数值
u8        read_cnt = 0;                // 读取计数
u8        TK_TimeOut = 0;                // 超时计数
u16        send_delay = 0;                // 发送延时

/*************        函数声明        **************/
void UART1_Init(void);
void UART_Send(u8 dat);
void Send_Num(u16 num);
void Delay_ms(u16 ms);

/******************** 主函数 **************************/
void main(void)
{
        u8        i;
       
        P_SW2 |= 0x80;                // 允许访问XFR
       
        // IO初始化
        P0M1 = 0x00;   P0M0 = 0x00;
        P1M1 = 0x01;   P1M0 = 0x00;   // P1.0高阻输入(触摸)
        P2M1 = 0x00;   P2M0 = 0x00;
        P3M1 = 0x00;   P3M0 = 0x03;   // P3.0,P3.1推挽输出(串口)
        P4M1 = 0x00;   P4M0 = 0x00;
        P5M1 = 0x00;   P5M0 = 0x00;
       
        UART1_Init();
       
        // 发送开始信息
        UART_Send('S');
        UART_Send('T');
        UART_Send('C');
        UART_Send('8');
        UART_Send('H');
        UART_Send(' ');
        UART_Send('T');
        UART_Send('K');
        UART_Send('0');
        UART_Send(' ');
        UART_Send('T');
        UART_Send('e');
        UART_Send('s');
        UART_Send('t');
        UART_Send('\r');
        UART_Send('\n');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('=');
        UART_Send('\r');
        UART_Send('\n');
       
        // 触摸按键初始化(官方标准配置)
        TSCHEN1 = 0x01;                // 使能TK00(P1.0)
        TSCHEN2 = 0x00;                // 禁用其他通道
       
        TSCFG1  = (7<<4) + 3;        // 官方标准值
        TSCFG2  = 2;                // 官方标准值
        TSCTRL = 0xA0;                // 开始自动扫描, 无平均
        IE2 |= 0x80;                // 使能触摸中断
        EA = 1;                        // 开总中断
       
        // 等待触摸稳定
        for(i=0; i<100; i++) Delay_ms(10);
       
        // 发送寄存器状态用于调试
        UART_Send('R');
        UART_Send('e');
        UART_Send('g');
        UART_Send('s');
        UART_Send(':');
        UART_Send(' ');
        UART_Send('T');
        UART_Send('S');
        UART_Send('C');
        UART_Send('H');
        UART_Send('E');
        UART_Send('N');
        UART_Send('1');
        UART_Send('=');
        Send_Num(TSCHEN1);
       
        UART_Send(' ');
        UART_Send('T');
        UART_Send('S');
        UART_Send('C');
        UART_Send('F');
        UART_Send('G');
        UART_Send('1');
        UART_Send('=');
        Send_Num(TSCFG1);
       
        UART_Send(' ');
        UART_Send('T');
        UART_Send('S');
        UART_Send('C');
        UART_Send('T');
        UART_Send('R');
        UART_Send('L');
        UART_Send('=');
        Send_Num(TSCTRL);
        UART_Send('\r');
        UART_Send('\n');
       
        while(1)
        {
                Delay_ms(1);
                send_delay++;
               
                // 每秒发送一次触摸值
                if(send_delay >= 1000)
                {
                        send_delay = 0;
                       
                        // 发送触摸值
                        Send_Num(TK_cnt[0]);
                        UART_Send('\r');
                        UART_Send('\n');
                }
        }
}

/*************        触摸按键中断        **************/
void TKSU_Interrupt(void) interrupt 13
{
        u8        j;
        j = TSSTA2;
       
        if(j & 0x40)        // 数据溢出
        {
                TSSTA2 |= 0x40;        // 写1清零
        }
       
        if(j & 0x80)        // 扫描完成
        {
                j &= 0x0f;
                TK_cnt[j] = TSDAT;        // 保存触摸值
                TSSTA2 |= 0x80;                // 写1清零
                read_cnt++;                // 读次数+1
                TK_TimeOut = 0;
               
                // 调试:每次中断发送一个点
                // UART_Send('.');
        }
}

/*************        串口初始化        **************/
void UART1_Init(void)
{
        // 使用定时器1,模式2
        SCON = 0x50;                // 8位数据,可变波特率
        AUXR &= 0xBF;                // 定时器1时钟为Fosc/12
        AUXR &= 0xFE;                // 串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                // 清除定时器1模式位
        TMOD |= 0x20;                // 设定定时器1为8位自动重装方式
        TH1 = 0xFA;                // 115200波特率 @ 22.1184MHz
        TL1 = 0xFA;
        TR1 = 1;                // 启动定时器1
        TI = 1;                        // 设置发送中断标志
}

/*************        串口发送一个字节        **************/
void UART_Send(u8 dat)
{
        SBUF = dat;
        while(!TI);
        TI = 0;
}

/*************        发送16位数字        **************/
void Send_Num(u16 num)
{
        u8 buffer[6];
        u8 i = 0, j = 0;
       
        if(num == 0)
        {
                UART_Send('0');
                return;
        }
       
        while(num > 0)
        {
                buffer[i++] = (num % 10) + '0';
                num = num / 10;
        }
       
        for(j = i; j > 0; j--)
                UART_Send(buffer[j-1]);
}

/*************        延时函数        **************/
void Delay_ms(u16 ms)
{
        u16 i, j;
        for(i=0; i<ms; i++)
                for(j=0; j<1000; j++);
}


回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-03-15 18:48:24
已绑定手机

5

主题

19

回帖

67

积分

注册会员

积分
67
发表于 2026-3-15 22:21:24 | 显示全部楼层
还是不会有这个软件,程序下进去串口打开,发送正常,无法接受
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-03-15 18:48:24
已绑定手机

5

主题

19

回帖

67

积分

注册会员

积分
67
发表于 2026-3-15 22:33:39 | 显示全部楼层
这东西摸不着头脑,麻烦的很
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2026-04-02 10:07:54
已绑定手机

52

主题

2542

回帖

8922

积分

论坛元老

积分
8922
发表于 2026-3-16 12:14:38 | 显示全部楼层
彭*** 发表于 2026-3-15 22:21
还是不会有这个软件,程序下进去串口打开,发送正常,无法接受

下载配套的程序到单片机,打开串口后不要点其它功能,直接获取触摸数据。
因为不同系统芯片的频率设置参数存放位置不同,点击其它设置按钮后可能导致主频发生异常改动,导致后续通信不正常。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-3 02:15 , Processed in 0.113692 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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