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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

BS83B12A-3觸摸芯片與STM32通過IIC通信讀取觸摸芯片的按鍵值源碼

  [復制鏈接]
跳轉到指定樓層
樓主
BS83B12A-3觸摸芯片與STM32通過IIC通信讀取觸摸芯片的按鍵值,BS83B12A-3的程序,stm32F103C8T6的程序,壓縮包里面都有


單片機源程序如下:
  1. #include "BS83B12A-3.h"
  2. #include "USER_PROGRAM/USER_PROGRAM.CEX"
  3. #include "BS83B12A_LIBV413/BS83B12A_LIBV413.CEX"

  4. #define u8 unsigned char
  5. #define u16 unsigned int


  6. #define RxNum 5
  7. #define TxNum 5

  8. volatile unsigned char  IICRxCnt=0,IICTxCnt=0;//iic接收、發送數據計數器
  9. volatile unsigned char  IICRxData[RxNum],IICTxData[TxNum];//接收、發送緩存  數量為5
  10. volatile  bit   IICRxOK=0,IICTxOK=0;//接收、發送完成標志位

  11. //宏定義各個LED對應的管腳
  12. #define LEDCOM _pb4  //LED公共管腳
  13. #define LED0   _pa4

  14. //函數庫的初始化 相當于不用函數庫時while(1)前面的初始化
  15. void USER_PROGRAM_INITIAL()
  16. {
  17.         
  18.         //IIC_Init
  19.         _pac2  = 1;                        //SCL
  20.         _pac0  = 1;                        //SDA
  21.         _sima  = 0xA0;
  22.         _simc0 = 0xC2;

  23.         //_rnic=1;
  24.         
  25.          _simf = 0;
  26.          _sime = 1;
  27.         _emi  = 1;                        //  總中斷使能         
  28.         
  29.         IICTxData[0]='0';
  30.         IICTxData[1]='1';
  31.         IICTxData[2]='2';
  32.         IICTxData[3]='\r';
  33.         IICTxData[4]='\n';
  34.         
  35.         //各個管腳設置為輸出
  36.         _pbc4=0;
  37.         _pac4 =0;
  38.         LEDCOM=0;        
  39.         LED0 =0;
  40. }   


  41. //函數庫的主循環 相當于不用函數庫時while(1)里面的循環
  42. void USER_PROGRAM()
  43. {
  44.         
  45.         u8 temp;
  46.         
  47.         GET_KEY_BITMAP();//將函數庫掃描的結果復制到DATA_BUF里
  48.         //DATA_BUF[0]的bit7-bit0 代表觸摸按鍵KEY8-KEY1
  49.         switch(DATA_BUF[0])
  50.         {
  51.                 case 0x01:temp=0x31;break;
  52.                 case 0x02:temp=0x32;break;
  53.                 case 0x04:temp=0x33;break;
  54.                 case 0x08:temp=0x34;break;
  55.                 default:temp=0x30;break;        
  56.                
  57.         }
  58.         
  59.         if(IICRxOK)
  60.         {
  61.                 //將接收到 后三個字節返回,第一個字節為觸摸結果字節
  62.                 IICTxData[0]=temp;
  63.                 IICTxData[1]='-';
  64.                 IICTxData[2]=IICRxData[2];
  65.                 IICTxData[3]=IICRxData[3];
  66.                 IICTxData[4]=IICRxData[4];
  67.                 if(IICRxData[2] ==0X35)
  68.                 {
  69.                           LED0 = 1;        
  70.                 }
  71.                 else
  72.                         LED0 = 0;

  73.                 IICRxOK=0;
  74.         }

  75. }


  76. //iic中斷
  77. DEFINE_ISR(IIC_ISR, 0x10)
  78. {
  79.         _clrwdt();

  80.         if(_haas) //地址匹配                                
  81.         {        
  82.                 _pc1=1;        
  83.                 if(_srw==0)        //從機讀
  84.                 {
  85.                         _htx= 0;
  86.                         _txak=0;
  87.                         _acc=_simd;
  88.                 }
  89.                 else//從機寫
  90.                 {
  91.                         _htx = 1;                                
  92.                         _simd =IICTxData[0];//從機寫第一個數據
  93.                         IICTxCnt=1;
  94.                 }
  95.         }
  96.         else//數據
  97.         {
  98.                 if(_htx)//接收還是發送  1-發送  0-接收
  99.                 {                                                               
  100.                         if(_rxak)//從機未收到ack不再發送
  101.                         {                                                        
  102.                                 _htx  = 0;
  103.                                 _txak = 0;   
  104.                                 _acc  = _simd;
  105.                         }
  106.                         else //從機收到ack繼續發送
  107.                         {        
  108.                                 switch(IICTxCnt)//按順序把待發送的數據發送出去
  109.                                 {
  110.                                         case 1:_simd =IICTxData[1];break;        
  111.                                         case 2:_simd =IICTxData[2];break;
  112.                                         case 3:_simd =IICTxData[3];break;
  113.                                         case 4:_simd =IICTxData[4];break;
  114.                                 }
  115.                                 IICTxCnt++;
  116.                                 if(IICTxCnt>=TxNum)
  117.                                 {
  118.                                         IICTxOK=1;//發送完成
  119.                                         IICTxCnt=0;        
  120.                                 }
  121.                         }
  122.                 }
  123.                 else//接收
  124.                 {
  125.                         _txak = 0;
  126.                         IICRxData[IICRxCnt++]=_simd;//接收5個數據
  127.                         if(IICRxCnt>=RxNum)
  128.                         {
  129.                                 IICRxOK=1;//接收完成
  130.                                 
  131.                                 IICRxCnt=0;
  132.                         }
  133.                 }
  134.         }
  135.         _simf = 0;
  136. }
復制代碼

所有資料51hei提供下載:
STM32f103IICANDBS83B12A-13.rar (326.23 KB, 下載次數: 129)


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

使用道具 舉報

來自 2#
ID:708859 發表于 2020-3-15 17:38 | 只看該作者
這個程序有人驗證過嗎?我怎么試了不行呀,holtek的又不能仿真,在里//iic中斷里面放了些燈,看起來又有中斷產生。STM32這邊求與大神討論。
回復

使用道具 舉報

板凳
ID:423221 發表于 2018-11-19 20:06 | 只看該作者
good job
回復

使用道具 舉報

地板
ID:139989 發表于 2019-6-4 15:01 | 只看該作者
學習學習
回復

使用道具 舉報

5#
ID:564787 發表于 2019-6-19 09:37 | 只看該作者
最近剛好有個項目要用到這個觸摸芯片,下來參考參考
回復

使用道具 舉報

6#
ID:558925 發表于 2019-7-5 13:46 | 只看該作者
學習,學習!
回復

使用道具 舉報

7#
ID:758073 發表于 2020-5-22 10:23 | 只看該作者
不錯的東西
回復

使用道具 舉報

8#
ID:758073 發表于 2020-5-22 10:23 | 只看該作者
有人驗證過嗎?講講
回復

使用道具 舉報

9#
ID:356290 發表于 2021-3-9 14:44 | 只看該作者
error: '_simtof' undeclared (first use in this function)
'project' - Total 1 error(s), 1 warning(s)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日产毛片| a级片在线 | 亚洲一区在线看 | 亚洲综合激情网 | 欧美性猛交xxxx | 国产日韩欧美在线观看 | 国产精品一区二区在线播放 | 能看毛片的网站 | 国产精品久久久久久久久借妻 | 日韩三级精品 | 99视频网 | av看片| 在线观看av免费 | 成人欧美一区二区三区白人 | 黄色一级生活片 | 成人欧美一区二区三区黑人孕妇 | 亚洲黄色在线视频 | 一级片网址 | 99九九久久 | 我要看一级黄色片 | 青娱乐99 | 九九在线观看高清免费 | 自拍偷拍福利视频 | 美丽的姑娘观看在线播放 | 天天综合色 | 欧美日韩国产中文字幕 | 日韩网站免费观看 | 久久精品美女 | 欧美性色网 | av九九| 日韩黄色在线视频 | 秋霞啪啪片 | 美女无遮挡网站 | 欧美三级韩国三级日本三斤在线观看 | 中文字幕精品在线 | 国产日韩欧美一区 | 在线视频a| 91av在线播放| 欧美成人小视频 | 四虎视频在线观看 | 国产精品免费一区二区三区 |