找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4425|回复: 2
打印 上一主题 下一主题
收起左侧

stm32读取ZLG7290按键键值实验源码

[复制链接]
跳转到指定楼层
楼主
stm32使用I2C读取zlg7290芯片键值连击次数实验,建议周立功芯片晶振选用4M。附件中存有程序添加入正点原子实验源码用keill5跑程序。



单片机源程序如下:
  1. #include "ZLG7290.h"
  2. #include "sys.h"
  3. #include "myiic.h"
  4. #include "delay.h"
  5. #include "led.h"

  6. void delayMS(unsigned char i)
  7. {
  8. unsigned char j,k;
  9. for(k=0;k<i;k++)
  10.    for(j=0;j<60;j++);
  11. }

  12. //初始化
  13. void ZLG7290_Init(void)
  14. {
  15.     IIC_Init();
  16. }

  17. /*********************************************************************************************************
  18. ** 函数名称        :        ZLG7290_GetKey
  19. ** 功能描述        :        读取键值
  20. ** 调用模块:         IRcvStr、delayMS
  21. ********************************************************************************************************/
  22. u8        ZLG7290_GetKey(u8        recv)
  23. {
  24.         u8 data;
  25. //        recv=0;
  26.         data=IRcvStr(zlg7290,1,&recv,1);
  27.         delayMS(10);
  28.         return data;
  29. }
  30. //读取连击数
  31. u8 read_key(u8 lj)
  32. {

  33.                 u8 dataa;
  34.         dataa=IRcvStr(zlg7290,2,&lj,1);   
  35.                 delayMS(10);
  36.         return dataa;       
  37.                
  38.                        
  39. }
  40. /*********************************************************************************************************
  41. ** 函数名称        :         ZLG7290_SendData
  42. ** 功能描述        :         发送数据
  43. ** 输 入        :        SubAdd         :        输入子地址
  44. **                                  Data        :        输入数据     
  45. ** 输 出        :        0         :        Fail
  46. **                         1         :         OK
  47. ** 调用模块        :         ISendStr、delayMS
  48. ********************************************************************************************************/
  49. //u8        ZLG7290_SendData(u8 SubAdd,u8 Data)
  50. //{
  51. //        if(SubAdd>0x17)
  52. //                return 0;
  53. //        ISendStr(zlg7290,SubAdd,&Data,1);
  54. //        delayMS(10);
  55. //                return 1;
  56. //}

  57. /*********************************************************************************************************
  58. ** 函数名称        :         ZLG7290_SendBuf
  59. ** 功能描述        :         向显示缓冲区发送数据
  60. ** 输 入        :        SubAdd         :        输入子地址
  61. **                                  *buf        :        输入数据的首地址
  62. **                                num         :        发送个数
  63. ** 调用模块        :         ISendStr、delayMS
  64. ********************************************************************************************************/
  65. //void        ZLG7290_SendBuf( u8 SubAdr, u8 *buf, u8 num)
  66. //{
  67. //        ISendStr(zlg7290, SubAdr, buf, num);
  68. //        delayMS(10);
  69. //}

  70. /*********************************************************************************************************
  71. ** 函数名称        :         ZLG7290_SendCmd
  72. ** 功能描述        :         发送命令(对子地址7、8)
  73. ** 输 入        :        Data1        :        命令1
  74. **                        Data2        :        命令2
  75. ** 调用模块        :        ISendStr、delayMS
  76. ********************************************************************************************************/
  77. //void        ZLG7290_SendCmd(u8 Data1,u8 Data2)
  78. //{
  79. //        u8        Data[2];
  80. //        Data[0]=Data1;
  81. //        Data[1]=Data2;
  82. //        ISendStr(zlg7290,0x07,Data,2);
  83. //        delayMS(10);
  84. //}

  85. /*********************************************************************************************************
  86. ** 函数名称        :        ZLG7290_Disp
  87. ** 功能描述        :        向显示缓冲区发送数据
  88. ** 输 入        :        * disp_buf  :        要发送数据的起始地址
  89. **                   num                        :        发送个数
  90. ** 调用模块        :         ZLG7290_SendCmd
  91. ********************************************************************************************************/
  92. ……………………

  93. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
周立功按键读取实验.zip (6.51 KB, 下载次数: 73)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:736501 发表于 2020-4-23 21:56 | 只看该作者
ZLG7290如何防止按键连续读取,实际中只需要读一次就行了
回复

使用道具 举报

板凳
ID:281433 发表于 2020-9-15 16:26 | 只看该作者
Jim168 发表于 2020-4-23 21:56
ZLG7290如何防止按键连续读取,实际中只需要读一次就行了

将读取连击数的函数内的返回值写成固定
u8 read_key(u8 lj)
{              u8 dataa;
        //dataa=IRcvStr(zlg7290,2,&lj,1);   //屏蔽
           dataa=1;   //写成固定
                delayMS(10);
        return dataa;                              
}
然后读取的连击都是1 表示实际中每次只按了一次按键
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表