久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1426|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC8單片機(jī)+TL6101觸摸+pcf85176液晶顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:369412 發(fā)表于 2023-10-20 16:38 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
LT6101 觸摸面板


#include  <STC8.h>
#include  <DEFINE.h>
#include  <intrins.h>
#include  <stdio.h>
#include  <delay.h>
#include  <uart.h>
#include  <PCF85176.h>
#include  <LT6101A.h>
//================================================================

/********************************************************
功能描述 :PCF85176 (85176+TP) 芯片測(cè)試程序
設(shè)        計(jì)        人:ZQS
版           本 :1.0
說           明 :觸摸測(cè)試及顯示
完成時(shí)間 :2023.06.20
********************************************************/
sbit KEY = P5^0;                // 按鍵數(shù)據(jù)輸入口

#define SET_KEY_IN  P5n_pure_input(1<<0)   //輸入口


#define     RSTFLAG    (*(unsigned char volatile xdata *)0xfE99)

#define                LIMIT 55

xdata s16 keyTime[24];//= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;



u8 LT_INDEX,LT_FIVE_OK;
xdata u16 LT_New_VAL[5][25];
        
xdata s16 LT_OLD_VAL[25] ;//= {0} ;        // 觸摸按鍵24個(gè)點(diǎn)

idata s16 LT_OVER_VAL[25] ;

idata s16 LT_NNEW_VAL[25] ;

xdata u8 buf[60];






/******************** 主函數(shù) **************************/
void main(void)
{
        
        u16 i,dd;
        u16 maxIndex,maxVal;
               
        delay(200);

  //SET_KEY_IN;
        RSTCFG=0X50;  //開啟硬件復(fù)位
        Init_Uart();
        
        INIT_LT6101();        // 初始化后是從機(jī)模式
        delay(200);
         
        LCD_TEST();
        
        Get_LT6101_BaseVal(LT_OLD_VAL);        // 每次上電時(shí)讀到5組各通道數(shù)據(jù)平均值保存在LT_OLD_VAL[]
        
          sprintf(buf, "run        ************ \r\n");
                 buftx(buf);        
        
        LT_INDEX = 0;
        LT_FIVE_OK = 0;
        
        for(i=0;i<TL_CHANNEL_NUM;i++)  keyTime[ i]=0;

while(1)
        {                        
               
                //RESET();
                if(LT_FIVE_OK == 0)                // 連續(xù)讀5組各通道數(shù)據(jù),保存到LT_New_Val[5][10]內(nèi)
                {               
                        for(i=0;i<5;i++)
                        {
                                Get_LT6101_Val(LT_INDEX);        
                                LT_INDEX++;
                                delay(20);
                        }
                        LT_FIVE_OK = 1;
                }        
               
        else
                {
                        if(LT_INDEX>=5)        LT_INDEX = 0 ;        //新的數(shù)據(jù)替換最早一次采集的數(shù)據(jù)
                        Get_LT6101_Val(LT_INDEX);
                        LT_INDEX++;               
                        for(i=0;i<TL_CHANNEL_NUM;i++)
                        {
                                //5次數(shù)據(jù)的平均值
                                LT_NNEW_VAL[ i]=(LT_New_VAL[0][ i]+LT_New_VAL[1][ i]+LT_New_VAL[2][ i]+LT_New_VAL[3][ i]+LT_New_VAL[4][ i])/5;
                                //跟基準(zhǔn)數(shù)據(jù)的差值        

                                         
                                       
                                  if  (LT_NNEW_VAL[ i] < LT_OLD_VAL[ i])                                                
                                                    LT_OVER_VAL[ i] =0;
                                        else  LT_OVER_VAL[ i]= (LT_NNEW_VAL[ i] - LT_OLD_VAL[ i]);
                                       
                                keyTime[ i] = 0 ;                                 
                                         
                                         
                        
                                         
                        }

//               
        ////////////////////////////////////////////////////////////        
               
                        maxIndex = 0;
                        maxVal = LT_OVER_VAL[0];
                        for(i=1;i<TL_CHANNEL_NUM;i++)//計(jì)算所有按鍵中,差值最大的值
                        {
                                if(maxVal<LT_OVER_VAL[ i])
                                {
                                        maxIndex = i;
                                        maxVal = LT_OVER_VAL[ i];
                                }
                        }
//                        sprintf(buf, "1111111111111111 \r\n");
//                  buftx(buf);        
                                                               
                if(maxIndex==0)//差值最大的是第0通道按鍵
                        {
                                if(LT_OVER_VAL[0]>(LT_OVER_VAL[1]+LIMIT))
                                        keyTime[0]=1;
                                else        
                                        keyTime[0]=0;        
                        }               
                        
                        else if(maxIndex==(TL_CHANNEL_NUM-1))//差值最大的是最后通道按鍵
                        {
                                if(LT_OVER_VAL[TL_CHANNEL_NUM-1]>(LT_OVER_VAL[TL_CHANNEL_NUM-2]+LIMIT))
                                
                                        keyTime[TL_CHANNEL_NUM-1] = 1;
                                else        
                                        keyTime[TL_CHANNEL_NUM-1] = 0;
                        }
                                
                else
                        {  //最大差值的通道,同時(shí)就算其左右2邊按鍵的差值,防止干擾導(dǎo)致的數(shù)據(jù)
                                if(LT_OVER_VAL[maxIndex]>((LT_OVER_VAL[maxIndex-1]+LT_OVER_VAL[maxIndex+1])/2+LIMIT))
                                        keyTime[maxIndex] = 1;
                                else        
                                        keyTime[maxIndex] = 0;
                        }
                                

                        
                for(dd=0;dd<TL_CHANNEL_NUM;dd++)        // 按鍵序號(hào)確認(rèn)
                        {        
                                
                                if(keyTime[dd])        // 有觸摸則在LCD顯示序號(hào)                                
                                {
                        
                                       
               dis_num(17 ,dd+1);                        
                                 delay(100);                                                               
                                }
                                                               
                else                // 無觸摸,清空顯示
                                {               
                                       

                                        delay(100);
                                       
                                       
                                }
                                                                        
                        }

                }
        }

}


原理圖: 無
仿真: 無
代碼: STC8G2K16_LT6106+PCF85176.7z (1.48 MB, 下載次數(shù): 17)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美综合精品另类天天更新 | 国产98色在线 | 日韩 | 午夜免费 | 天天综合久久 | 中文字幕不卡在线观看 | 鸳鸯谱在线观看高清 | 欧美亚洲网站 | 久久区二区 | 久久国产精品视频 | 国产精品一区二区久久精品爱微奶 | 国产一区二区三区四区在线观看 | 3级毛片 | 久久久在线视频 | 国产精品无码久久久久 | 91精品中文字幕一区二区三区 | 国产一二区视频 | 亚洲国产精品人人爽夜夜爽 | 日韩成人免费视频 | 日韩美女爱爱 | 久草免费在线视频 | 国产伦精品 | 毛片久久久 | 久久成人精品 | 国产精品自产拍 | 国产日产久久高清欧美一区 | 久久精品免费一区二区三 | 久久久精| 欧美一区二区久久 | 91视频官网 | 欧美日韩成人在线 | 99热热 | 九九精品视频在线 | 国产精品久久久久久久粉嫩 | 亚洲激情一区二区三区 | 中文字幕日韩在线 | 男女视频免费 | 色婷婷av久久久久久久 | 久草视频网站 | 久久专区 | 特一级毛片 | 中文字幕在线一 |