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

標題: BS83B12A-3觸摸芯片與STM32通過IIC通信讀取觸摸芯片的按鍵值源碼 [打印本頁]

作者: tzlwhh    時間: 2018-11-19 18:31
標題: 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)



作者: leiguang    時間: 2018-11-19 20:06
good job
作者: cyj1232    時間: 2019-6-4 15:01
學習學習
作者: Colin_Jian    時間: 2019-6-19 09:37
最近剛好有個項目要用到這個觸摸芯片,下來參考參考
作者: sky505    時間: 2019-7-5 13:46
學習,學習!
作者: albertsou    時間: 2020-3-15 17:38
這個程序有人驗證過嗎?我怎么試了不行呀,holtek的又不能仿真,在里//iic中斷里面放了些燈,看起來又有中斷產生。STM32這邊求與大神討論。
作者: dbzbzbwx    時間: 2020-5-22 10:23
不錯的東西
作者: dbzbzbwx    時間: 2020-5-22 10:23
有人驗證過嗎?講講
作者: Haisi    時間: 2021-3-9 14:44
error: '_simtof' undeclared (first use in this function)
'project' - Total 1 error(s), 1 warning(s)




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区三区四区在线播放 | 九九久久精品 | 午夜成人免费视频 | 日日爽夜夜爽 | 91在线视频| 天天操天天干天天 | 狠狠躁日日躁夜夜躁2022麻豆 | 91精品亚洲 | 风间由美一区二区三区 | www.国产.com | 久久99精品久久久久久琪琪 | 色婷婷一区二区三区四区 | 欧美不卡一区二区三区 | 久久伊人热 | 日本不卡一区二区 | 日韩成人一区二区 | www.一区| 91精品久久久久久久久 | 狠狠干天天干 | 国产精品高潮呻吟 | 亚洲综合在线播放 | 亚洲一区在线看 | 日韩a级片 | 久久在线| 欧美日韩精品一区二区在线播放 | 黄色一级片网站 | www.一级片 | 日韩在线视频一区 | 日日夜夜精品免费 | 欧美一二| 在线日韩av | 天天插天天狠天天透 | 一级特黄色片 | 国产免费一区二区三区免费视频 | 美女免费视频网站 | 免费在线观看黄 | 69福利视频 | 亚洲精品一区二区三 | 中文字幕在线不卡 | 亚洲一区二区三区在线视频 | 久久av免费|