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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2635|回復: 0
打印 上一主題 下一主題
收起左側

STM8模擬 IIC 觸摸芯片按鍵值讀取程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:389674 發(fā)表于 2018-9-4 09:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

單片機型號:STM8AF5286UC
SCL PB4
SDA PB5

/////////////////////////////觸摸按鍵端口和引腳配置//////////////////////////////
#define  Touch_IIC_PORT   GPIOB  // 觸摸按鍵引腳配置 SCL PB4;SDA PB5;INT PB3
#define  Touch_IIC_SDA    GPIO_PIN_5
#define  Touch_IIC_SCL    GPIO_PIN_4
#define  Touch_Key_Int    GPIO_PIN_3 //PB3 觸摸按鍵INT輸入

#define CON_ADDR 0x81 // {A[6:0] + RWB} = 81H

#define SDA_On   GPIO_WriteHigh(Touch_IIC_PORT,Touch_IIC_SDA)
#define SDA_Off  GPIO_WriteLow(Touch_IIC_PORT,Touch_IIC_SDA)

#define SCL_On   GPIO_WriteHigh(Touch_IIC_PORT,Touch_IIC_SCL)
#define SCL_Off   GPIO_WriteLow(Touch_IIC_PORT,Touch_IIC_SCL)


///////////////////////////////////////////////////////////////////////////////
unsigned int Touch_Data; //觸摸按鍵的值

unsigned int ReadKey(void)
{
unsigned char bitnum,temp,addr;
unsigned int key2byte;
unsigned char bit_temp;
addr=CON_ADDR;
key2byte=0xffff;

SDA_Off; // 拉低 SDA 端口送出 START 信號
for(temp=0;temp<4;temp++){} //延時
//發(fā)送 8 位地址字節(jié) (A[6:0]+RWB)
for(bitnum=0;bitnum<8;bitnum++)
{
SCL_Off;
temp=addr&0x80;
if(temp==0x80)
{SDA_On;}
else
{SDA_Off;}
addr=addr<<1;
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
}
SDA_On; //釋放 SDA 端口,將 SDA 設置為輸入端口
SCL_Off;
GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_IN_PU_NO_IT  );//SDA輸入
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時



bit_temp=GPIO_ReadInputPin(Touch_IIC_PORT,Touch_IIC_SDA) ;
//if(bit_temp==0x01) //讀 ack 回應
//ERR=0; //ack 信號沒有讀到,指示通信有誤
//讀 16 位按鍵數(shù)據(jù)字節(jié)(D[15:0])
for(bitnum=0;bitnum<16;bitnum++)
{
SCL_Off;
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
bit_temp=GPIO_ReadInputPin(Touch_IIC_PORT,Touch_IIC_SDA) ;
if(bit_temp==0x01)
{
key2byte=key2byte<<1;
key2byte=key2byte|0x01;
}
else
{
key2byte=key2byte<<1;
}
}
     GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_OUT_PP_HIGH_FAST );//SDA輸出

SCL_Off;
SDA_On;
for(temp=0;temp<40;temp++){} //延時
SCL_On; //發(fā)送 NACK 信號
for(temp=0;temp<40;temp++){} //延時
SCL_Off;
SDA_Off;
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
SDA_On;
key2byte=key2byte^0xffff;
return(key2byte);
}
void IO_config(void)
{


   GPIO_Init(Touch_IIC_PORT,Touch_Key_Int,GPIO_MODE_IN_PU_NO_IT );     //INT輸入
   GPIO_Init(Touch_IIC_PORT,Touch_IIC_SCL,GPIO_MODE_OUT_PP_HIGH_FAST );//SCL輸出
   GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_OUT_PP_HIGH_FAST );//SDA輸出
   //GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_IN_PU_NO_IT  );//SDA輸入


}
int main(void)
{


    /*設置內部高速時鐘16M為主時鐘*/

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);



  IO_config();

     while(1)
     {
        if (GPIO_ReadInputPin(Touch_IIC_PORT,Touch_Key_Int) == 0)
      {
         Touch_Data=ReadKey();
         if(Touch_Data==0x0400)
         {BAR1_Y_ON();}
         else  if(Touch_Data==0x0800)
          {BAR2_Y_ON();}
         else  if(Touch_Data==0x1000)
          {BAR3_Y_ON();}
         else
         {;}
      }
      else
      {

       BAR1_Y_OFF();BAR2_Y_OFF();BAR3_Y_OFF();
      }
     }

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产一区久久 | 亚洲欧美中文日韩在线v日本 | 久久免费精彩视频 | 在线免费看黄 | 国产成人福利在线观看 | 涩涩视频在线观看 | 黄色大片在线 | 精品国产一区二区三区久久久久久 | 免费国产一区 | 精品免费观看 | 国产精选一区 | 日韩一区二区av | 国产美女一区二区 | 成人黄色在线 | 久久精品色欧美aⅴ一区二区 | www中文字幕| 中文字幕免费观看 | 天天干天天爱天天 | 日日操夜夜干 | av中文字幕网 | 天天噜天天干 | 中国大陆高清aⅴ毛片 | 免费观看色| 精品国产欧美日韩不卡在线观看 | 成人激情视频网 | 国产精品精品久久久 | 91精品国产乱码久久久 | 超碰人人91 | 久久美女网 | 超碰在线久 | 免费一区二区在线观看 | 成人精品一区二区三区中文字幕 | 久久久91精品国产一区二区三区 | 日韩精品免费在线观看 | 国产精品久久久久久久久免费软件 | 伊人免费视频二 | 久草福利 | 九九热精 | 一区二区三区四区在线播放 | av在线一区二区 | 久久国产精品无码网站 |