標(biāo)題:
BS83B12A-3觸摸芯片與STM32通過(guò)IIC通信讀取觸摸芯片的按鍵值源碼
[打印本頁(yè)]
作者:
tzlwhh
時(shí)間:
2018-11-19 18:31
標(biāo)題:
BS83B12A-3觸摸芯片與STM32通過(guò)IIC通信讀取觸摸芯片的按鍵值源碼
BS83B12A-3觸摸芯片與STM32通過(guò)IIC通信讀取觸摸芯片的按鍵值,BS83B12A-3的程序,stm32F103C8T6的程序,壓縮包里面都有
0.png
(6.68 KB, 下載次數(shù): 101)
下載附件
2018-11-19 18:33 上傳
單片機(jī)源程序如下:
#include "BS83B12A-3.h"
#include "USER_PROGRAM/USER_PROGRAM.CEX"
#include "BS83B12A_LIBV413/BS83B12A_LIBV413.CEX"
#define u8 unsigned char
#define u16 unsigned int
#define RxNum 5
#define TxNum 5
volatile unsigned char IICRxCnt=0,IICTxCnt=0;//iic接收、發(fā)送數(shù)據(jù)計(jì)數(shù)器
volatile unsigned char IICRxData[RxNum],IICTxData[TxNum];//接收、發(fā)送緩存 數(shù)量為5
volatile bit IICRxOK=0,IICTxOK=0;//接收、發(fā)送完成標(biāo)志位
//宏定義各個(gè)LED對(duì)應(yīng)的管腳
#define LEDCOM _pb4 //LED公共管腳
#define LED0 _pa4
//函數(shù)庫(kù)的初始化 相當(dāng)于不用函數(shù)庫(kù)時(shí)while(1)前面的初始化
void USER_PROGRAM_INITIAL()
{
//IIC_Init
_pac2 = 1; //SCL
_pac0 = 1; //SDA
_sima = 0xA0;
_simc0 = 0xC2;
//_rnic=1;
_simf = 0;
_sime = 1;
_emi = 1; // 總中斷使能
IICTxData[0]='0';
IICTxData[1]='1';
IICTxData[2]='2';
IICTxData[3]='\r';
IICTxData[4]='\n';
//各個(gè)管腳設(shè)置為輸出
_pbc4=0;
_pac4 =0;
LEDCOM=0;
LED0 =0;
}
//函數(shù)庫(kù)的主循環(huán) 相當(dāng)于不用函數(shù)庫(kù)時(shí)while(1)里面的循環(huán)
void USER_PROGRAM()
{
u8 temp;
GET_KEY_BITMAP();//將函數(shù)庫(kù)掃描的結(jié)果復(fù)制到DATA_BUF里
//DATA_BUF[0]的bit7-bit0 代表觸摸按鍵KEY8-KEY1
switch(DATA_BUF[0])
{
case 0x01:temp=0x31;break;
case 0x02:temp=0x32;break;
case 0x04:temp=0x33;break;
case 0x08:temp=0x34;break;
default:temp=0x30;break;
}
if(IICRxOK)
{
//將接收到 后三個(gè)字節(jié)返回,第一個(gè)字節(jié)為觸摸結(jié)果字節(jié)
IICTxData[0]=temp;
IICTxData[1]='-';
IICTxData[2]=IICRxData[2];
IICTxData[3]=IICRxData[3];
IICTxData[4]=IICRxData[4];
if(IICRxData[2] ==0X35)
{
LED0 = 1;
}
else
LED0 = 0;
IICRxOK=0;
}
}
//iic中斷
DEFINE_ISR(IIC_ISR, 0x10)
{
_clrwdt();
if(_haas) //地址匹配
{
_pc1=1;
if(_srw==0) //從機(jī)讀
{
_htx= 0;
_txak=0;
_acc=_simd;
}
else//從機(jī)寫
{
_htx = 1;
_simd =IICTxData[0];//從機(jī)寫第一個(gè)數(shù)據(jù)
IICTxCnt=1;
}
}
else//數(shù)據(jù)
{
if(_htx)//接收還是發(fā)送 1-發(fā)送 0-接收
{
if(_rxak)//從機(jī)未收到ack不再發(fā)送
{
_htx = 0;
_txak = 0;
_acc = _simd;
}
else //從機(jī)收到ack繼續(xù)發(fā)送
{
switch(IICTxCnt)//按順序把待發(fā)送的數(shù)據(jù)發(fā)送出去
{
case 1:_simd =IICTxData[1];break;
case 2:_simd =IICTxData[2];break;
case 3:_simd =IICTxData[3];break;
case 4:_simd =IICTxData[4];break;
}
IICTxCnt++;
if(IICTxCnt>=TxNum)
{
IICTxOK=1;//發(fā)送完成
IICTxCnt=0;
}
}
}
else//接收
{
_txak = 0;
IICRxData[IICRxCnt++]=_simd;//接收5個(gè)數(shù)據(jù)
if(IICRxCnt>=RxNum)
{
IICRxOK=1;//接收完成
IICRxCnt=0;
}
}
}
_simf = 0;
}
復(fù)制代碼
所有資料51hei提供下載:
STM32f103IICANDBS83B12A-13.rar
(326.23 KB, 下載次數(shù): 129)
2018-11-19 18:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
leiguang
時(shí)間:
2018-11-19 20:06
good job
作者:
cyj1232
時(shí)間:
2019-6-4 15:01
學(xué)習(xí)學(xué)習(xí)
作者:
Colin_Jian
時(shí)間:
2019-6-19 09:37
最近剛好有個(gè)項(xiàng)目要用到這個(gè)觸摸芯片,下來(lái)參考參考
作者:
sky505
時(shí)間:
2019-7-5 13:46
學(xué)習(xí),學(xué)習(xí)!
作者:
albertsou
時(shí)間:
2020-3-15 17:38
這個(gè)程序有人驗(yàn)證過(guò)嗎?我怎么試了不行呀
,holtek的又不能仿真,在里//iic中斷里面放了些燈,看起來(lái)又有中斷產(chǎn)生。STM32這邊求與大神討論。
作者:
dbzbzbwx
時(shí)間:
2020-5-22 10:23
不錯(cuò)的東西
作者:
dbzbzbwx
時(shí)間:
2020-5-22 10:23
有人驗(yàn)證過(guò)嗎?講講
作者:
Haisi
時(shí)間:
2021-3-9 14:44
error: '_simtof' undeclared (first use in this function)
'project' - Total 1 error(s), 1 warning(s)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1