当前位置:首页 > 单片机 > 单片机
[导读]//文件touchbutton.h#ifndef_TOUCHBUTTON_H_#define_TOUCHBUTTON_H_//=========宏定义===========================================#defineDEF_WATCH_TKREFER//查看参考-用于测试//================================

//文件touchbutton.h#ifndef_TOUCHBUTTON_H_#define_TOUCHBUTTON_H_//=========宏定义===========================================#defineDEF_WATCH_TKREFER//查看参考-用于测试//===========================================================#defineV_REFER1//AD值超过此值更新参考值#defineV_PRESS7//AD值-参考大于此值认为按键按下-按键灵敏度#defineVT_KTc30//更新参考值所需要的次数//--------按键位置定义-----------#defineK_TKONSETB0//ON/OFF#defineK_TKBLSETB1//沸腾#defineK_TKPUSETB2//水泵#defineK_TKSTSETB3//恒温设定//#defineV_TKQK1(uint8)5//快速加减时间值typedefstructTCHBUT{uint8KTc1;//更新参考值确认时间uint8KRefer1;//按键1参考电压uint8KTc2;//更新参考值确认时间uint8KRefer2;//按键2参考电压/*uint8KTc3;//更新参考值确认时间uint8KRefer3;//按键2参考电压uint8KTc4;//更新参考值确认时间uint8KRefer4;//按键2参考电压uint8KTc5;//更新参考值确认时间uint8KRefer5;//按键2参考电压uint8KTc6;//更新参考值确认时间uint8KRefer6;//按键2参考电压uint8KTc7;//更新参考值确认时间uint8KRefer7;//按键2参考电压//uint8KTc8;//更新参考值确认时间//uint8KRefer8;//按键2参考电压*/uint8KTVal1;uint8KTVal2;//uint8KTVal3;//uint8KTVal4;}tTCHBut;externxdatatTCHButtCHBut;#defineKTc1tCHBut.KTc1#defineKRefer1tCHBut.KRefer1#defineKTc2tCHBut.KTc2#defineKRefer2tCHBut.KRefer2#defineKTc3tCHBut.KTc3#defineKRefer3tCHBut.KRefer3#defineKTc4tCHBut.KTc4#defineKRefer4tCHBut.KRefer4#defineKTc5tCHBut.KTc5#defineKRefer5tCHBut.KRefer5#defineKTc6tCHBut.KTc6#defineKRefer6tCHBut.KRefer6#defineKTc7tCHBut.KTc7#defineKRefer7tCHBut.KRefer7//#defineKTc8tCHBut.KTc8//#defineKRefer8tCHBut.KRefer8#defineKTVal1tCHBut.KTVal1#defineKTVal2tCHBut.KTVal2#defineKTVal3tCHBut.KTVal3#defineKTVal4tCHBut.KTVal4//=======按键检测==============typedefstructBUTTON2{uint8TKNOW;//当前几次按键的状态uint8TKLST;//uint8TKLST1;//uint8TKLST2;//uint8TKLST3;uint8TKSTB;//去抖后按键状态uint8TKSTBL;//上次去抖后按键状态uint8TKAVL;//下降沿有效值uint8TKAVLP;//上升沿有效值uint8TKeyStatu;//读按键的当前值uint8TKLONG;//长按键计数//uint8TTconQK;//快速调节计数111555101010}tButton2;externtButton2tKey2;#defineTKNOWtKey2.TKNOW#defineTKLSTtKey2.TKLST#defineTKLST1tKey2.TKLST1//#defineKLST2tKey.TKLST2//#defineKLST3tKey.TKLST3#defineTKSTBtKey2.TKSTB#defineTKSTBLtKey2.TKSTBL#defineTKAVLtKey2.TKAVL#defineTKAVLPtKey2.TKAVLP#defineTKeyStatutKey2.TKeyStatu#defineTKLONGtKey2.TKLONG#defineTTconQKtKey2.TTconQK#defineV_TKLOV1200//1S确认为长按#defineV_TKLOV220//15//150MS置一次按键标志//=========================================typedefstructKFlag2//按键处理标志位定义{uint8Flg1:1;uint8Flg2:1;uint8Flg3:1;uint8Flg4:1;uint8Flg5:1;uint8Flg6:1;uint8Flg7:1;uint8Flg8:1;}tKFlg2;externtKFlg2KF2;//#defineF_TRdKeyOKKF2.Flg1//读按键有效#defineF_TKLOKF2.Flg2//长按有效//#defineF_TKQK1KF2.Flg4//#defineF_TKQK2KF2.Flg5#defineF_TKEYOKKF2.Flg6//===========================================//================================externvoidReadTKRefer(uint8CH_AD,uint8*a);externvoidCheckTouch1(void);externvoidCheckTouch2(void);externvoidCheckTKey(void);#endif//文件touchbutton.c#include"global.h"#include"touchbutton.h"//#include"touchbutton.h"/***********************************************触摸PWM 500K当按按键时 电压值抬高 ***********************************************/tButton2 tKey2 ;tKFlg2 KF2 ;xdata tTCHBut tCHBut ;//#defineLKEY_ENB//长按键使能//***************************************// 函数名称:ReadTKRefer// 函数功能:读触摸按键参考// 入口参数:CH_AD 按键AD通道 // 出口参数:*a 对应该按键的AD参考值//***************************************void ReadTKRefer(uint8 CH_AD,uint8 *a){uint8R_Save[3];uint8R_Save2[3];uint16 R_SaveSum = 0 ;    uint8 Tcon = 0 ;    uint8 Tmp1 ;    uint8 i ;    for(i=40;i>0;i--)    {        AdcSwitch(CH_AD) ;   //读按键1电压        Tmp1 = ADDH ;            RMov3Data_Byte(R_Save,Tmp1) ;    Tmp1 = C3MidVal(R_Save); //处理位数最大3位  取中值处理        RMov3Data_Byte(R_Save2,Tmp1) ;    Tmp1 = C3MidVal(R_Save2); //处理位数最大3位  取中值处理                R_SaveSum += Tmp1 ;            Tcon ++ ;        if(Tcon >= (1<<3))        {            *a = R_SaveSum>>3 ;             Tcon = 0 ;            R_SaveSum = 0 ;            }    }}//***************************************// 函数名称:CheckTouch1// 函数功能:检测触摸按键// 入口参数:无// 出口参数:无//***************************************void CheckTouch1(void) {    uint8 a[3];    uint8 Tmp1 ;    uint8 TmpAD ; //临时参考值    AdcSwitch(V_ADCH_tch1) ;   //读按键电压    a[0] = ADDH ;    _nop_();_nop_();_nop_();_nop_();_nop_();    AdcSwitch(V_ADCH_tch1) ;   //读按键电压    a[1] = ADDH ;    _nop_();_nop_();_nop_();_nop_();_nop_();    AdcSwitch(V_ADCH_tch1) ;   //读按键电压    a[2] = ADDH ;   //----以下为三次AD值的取中间值处理-----    TmpAD = C3MidVal(a) ;#ifdefDEF_WATCH_TKREFER    KTVal1 = TmpAD ;  //当前按键AD值 -- 用于测试   ^^^^^^^^^^^^^^^^^^^^#endif    if(!(TKSTB & SETB0)) //此按键此时处于抬起状态 --更改参考值    {        if(TmpAD < KRefer1)        {            Tmp1 = KRefer1 - TmpAD ;        }        else        {            Tmp1 = TmpAD - KRefer1 ;        }                if(Tmp1 >= V_REFER) //更新参考门槛值        {            KTc1 -- ;            if(KTc1 == 0)            {                KTc1 = VT_KTc ;                if(KRefer1 == TmpAD) //KRefer1 = TmpAD ;                 {}                else if(KRefer1 < TmpAD)                {                    KRefer1 ++ ;  //更新参考 每次加减1                     }

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭