基于STC12C5A60S2系列1T 8051单片机的厦门icman(晶尊微)触摸芯片SC04B实现一个触摸按键单击长按都增加数值另一个触摸按键单击长按都减少数值的功能

STC12C5A60S2系列1T 8051单片机管脚图

在这里插入图片描述在这里插入图片描述

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置

在这里插入图片描述

STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍

在这里插入图片描述在这里插入图片描述

触摸按键模块简介

概述

在这里插入图片描述

特性

在这里插入图片描述

应用

在这里插入图片描述

封装

在这里插入图片描述

管脚

在这里插入图片描述

管脚说明

在这里插入图片描述在这里插入图片描述

初始化时间

在这里插入图片描述

灵敏度设置

在这里插入图片描述

自校正

在这里插入图片描述

触摸反应时间

在这里插入图片描述

输出逻辑

在这里插入图片描述在这里插入图片描述

睡眠模式

在这里插入图片描述

应用电路

在这里插入图片描述

额定值

在这里插入图片描述

电气特性

在这里插入图片描述

封装尺寸图 (SOP-16)

在这里插入图片描述

触摸按键材料及形状

在这里插入图片描述

触摸感应盘的尺寸

在这里插入图片描述

触摸触摸 PAD 和触摸面板的连接方式

在这里插入图片描述

触摸面板的选择

在这里插入图片描述在这里插入图片描述

直流稳压器

在这里插入图片描述

稳压器件的放置

在这里插入图片描述

高噪声条件下的注意事项

在这里插入图片描述

使用主机的 5V 电源

在这里插入图片描述

电源线的布线设计

在这里插入图片描述

地线的布线设计

在这里插入图片描述

触摸应用电路外围元器件的布线设计

在这里插入图片描述

PAD 与 IC 的感应盘输入引脚之间的连线

在这里插入图片描述

铺地规则

在这里插入图片描述在这里插入图片描述在这里插入图片描述

触摸按键实物连接图

在这里插入图片描述

基于STC12C5A60S2系列1T 8051单片机的厦门icman(晶尊微)触摸芯片SC04B实现一个触摸按键单击长按都增加数值另一个触摸按键单击长按都减少数值的功能编程

main.c

#include "STC12C5A60S2.h"  
#include "Timer0.h"
#include "Key.h"
#include "Digitron.h"
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint
 void main()//主函数
{
   
  Timer0Init();//定时器0的16位定时模式1用12分频定时2ms初始化函数 晶振为12MHz
  DigitronBootDisplay();//数码管开机显示函数
  while(1)//主循环
 {
   
   KeyScanResult();//按键扫描结果函数
  }
 } 

Key.c

#include "Key.h"
#include "Timer0.h"
#define	uchar unsigned char	//定义无符号字符
#define	uint  unsigned int	//定义无符号整形
#define KeyPressDeshakeTime 15//自定义按键按下消抖时间为20ms	
#define KeyLongPressDelayTime 100//自定义按键长按延时时间为200ms
//uchar ClearKeyPressFlag = 0;//定义清零按键按下标志位变量为0
//uchar SetKeyFlag = 0;//定义设置按键标志位变量为0
//uchar SetKeyPressCountFlag = 1;//定义设置按键按下计数标志位变量为1
//uchar SetKeyShortPressLcokFlag = 0;//定义设置按键短按按下锁定标志位变量为0
uchar AddKeyPressLcokFlag = 0;//定义增加按键锁定标志位变量为0
uchar AddKeyShortPressLcokFlag = 0;//定义增加按键短按按下锁定标志位变量为0
uchar AddKeyLongPressLcokFlag = 0;//定义增加按键长按按下锁定标志位变量为0
uchar DecKeyPressLcokFlag = 0;//定义减少按键锁定标志位变量为0
uchar DecKeyShortPressLcokFlag = 0;//定义减少按键短按按下锁定标志位变量为0
uchar DecKeyLongPressLcokFlag = 0;//定义减少按键长按按下锁定标志位变量为0
//uchar SetKeyShortPressCount = 0;//定义设置按键短按按下计数变量为0
//uchar SetKeyShortPressFlag = 0;//定义设置按键短按按下标志位变量为0
//uchar SetKeyShortPressCountFlag = 1;//定义设置按键短按按下计数标志位变量为1
//uchar SetKeyLongPressLcokFlag = 0;//定义设置按键长按按下锁定标志位变量为0
//uchar SetKeyLongPressCount = 0;//定义设置按键长按按下计数变量为0
//uchar SetKeyLongPressFlag = 0;//定义设置按键长按按下标志位变量为0
//uint  SetKeyLongPressCountFlag = 1;//定义设置按键长按按下计数标志位变量为0
uint  KeyPressDelayTime = 0;//定义按键按下延时时间变量为0
uint  KeyLiftDelayTime = 0;//定义按键弹起延时时间变量为0
uint  KeyPressNumber = 0;//定义按键按下数值变量为0
uint  KeyType = 0;//定义按键类型变量为0
//  uint KeyScan ()//带按键返回值的按键扫描函数
  void KeyScan ()//按键扫描函数
{
     	  
 
   if((AddKey == 0) && (AddKeyPressLcokFlag == 0))//增加按键按下
 {
   	  
	DecKeyPressLcokFlag = 1;//减少按键按下锁定标志位变量置1 防止增加按键按下时 有减少按键按下 从而实现增加减少按键互不干扰
	KeyPressDelayTime++;//按键按下延时时间变量自加
	if((AddKeyShortPressLcokFlag == 0) && (AddKeyLongPressLcokFlag == 0))//增加按键短按按下锁定标志位变量为0与增加按键长按按下锁定标志位变量为0 一是为了增加按键第1次能短按 二是为了增加按键第1次短按后 如果不松手一直按着 会激活增加按键短按锁定标志位置1 跳出增加按键短按 进入增加按键长按 三是为了增加按键长按后松手 防止进入短按 从而实现短按与长按互不干扰 
  {
   	 
	 if(KeyPressDelayTime > KeyPressDeshakeTime)//判断按键按下延时时间变量是否大于按键按下消抖时间
   {
   
      KeyPressDelayTime = 0;//按键按下延时时间变量清0 为了跳出设置按键短按延时 进入设置按键长按延时
	  AddKeyShortPressLcokFlag = 1;//增加按键短按按下锁定标志位变量置1 跳出增加按键短按 进入增加按键长按 防止增加按键长按时进入短按 从而实现短按与长按互不干扰
	 }
    }
	 if(KeyPressDelayTime > KeyLongPressDelayTime)//判断按键按下延时时间变量是否大于按键长按延时时间
   {
   
      KeyPressDelayTime = 0;//按键按下延时时间变量清0 重启下一步按键按下延时操作
	  AddKeyShortPressLcokFlag = 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值