数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 548|回复: 10

[C51] AIP650读键值,总是0xA6,不知道问题出在哪里

[复制链接]
发表于 2025-7-11 13:58:56 | 显示全部楼层 |阅读模式
本帖最后由 lmn2005 于 2025-7-13 12:17 编辑

AIP650兼容于TM1650,但比TM1650便宜。不会因为便宜才存在BUG吧?

AIP650用于数码管显示,可以正常显示。但接入键控线路后,读取失败。
键控线路如下 :

读取键控值,总是得到0xA6,无论按哪个按键,键控值都一直不会变化。
读取键控值源码如下:
  1. void delay(unsigned  int i)
  2. {
  3.     for(; i>0; i--)
  4.         _nop_();;
  5. }

  6. unsigned char READ_KEY(void)//读键控
  7. {
  8.         unsigned char rekey,i;
  9.         AIP650_start();
  10.         AIP650_Write(0x49);//读按键指令
  11.         AIP650_ack();
  12.         DIO=1;
  13.         for(i=0;i<8;i++)
  14.         {
  15.                 CLK=0;
  16.                 rekey=rekey>>1;
  17.                 delay(30);
  18.                 CLK=1;
  19.                 delay(30);
  20.                 if(DIO)
  21.                         rekey=rekey|0x80;

  22.         }
  23.         AIP650_ack();
  24.         AIP650_stop();
  25.         return rekey;
  26. }
复制代码


哪位大佬玩过这个芯片的,请分析一下,究竟是哪里出错了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
 楼主| 发表于 2025-7-11 14:09:17 | 显示全部楼层
将读函数改为下面,读取的键值却一直为0x65


  1. unsigned char READ_KEY(void)//读键控
  2. {
  3.         unsigned char rekey,i;
  4.         AIP650_start();
  5.         AIP650_Write(0x49);//读按键指令
  6.         AIP650_ack();
  7.         DIO=1;
  8.         for(i=0;i<8;i++)
  9.         {
  10.                 CLK=0;
  11.                 rekey=rekey<<1;
  12.                 delay(30);
  13.                 CLK=1;
  14.                 delay(30);
  15.                 if(DIO)
  16.                         rekey++;
  17.         }
  18.         AIP650_ack();
  19.         AIP650_stop();
  20.         return rekey;
  21. }
复制代码


回复 支持 反对

使用道具 举报

发表于 2025-7-11 19:00:58 来自手机浏览器 | 显示全部楼层
本帖最后由 海上生明月丶 于 2025-7-11 19:02 编辑

可以读取的,以前读过,源码换电脑,不知道在哪个硬盘里了,两个芯片读取按键部分是不一样的,你是不是看的tm1650的手册

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2025-7-11 19:46:59 | 显示全部楼层
应该是程序时序不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-12 09:21:38 | 显示全部楼层
海上生明月丶 发表于 2025-7-11 19:00
可以读取的,以前读过,源码换电脑,不知道在哪个硬盘里了,两个芯片读取按键部分是不一样的,你是不是看的 ...

是的,是参考tm1650的手册的。
数码管显示一直在用这程序,以前没有试过用于键控的,所以关于键控这一块没有测试过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-12 09:22:05 | 显示全部楼层
17805352 发表于 2025-7-11 19:46
应该是程序时序不对

如果是时序不对的话,显示应该也受到影响
回复 支持 反对

使用道具 举报

发表于 2025-7-12 11:05:22 来自手机浏览器 | 显示全部楼层
lmn2005 发表于 2025-7-12 09:21
是的,是参考tm1650的手册的。
数码管显示一直在用这程序,以前没有试过用于键控的,所以关于键控这一块 ...

你找下aip650的数据手册看看吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-12 14:43:26 | 显示全部楼层
海上生明月丶 发表于 2025-7-12 11:05
你找下aip650的数据手册看看吧

aip650的数据手册,时序、命令等与TM1650一样
回复 支持 反对

使用道具 举报

发表于 2025-7-12 15:25:27 来自手机浏览器 | 显示全部楼层
lmn2005 发表于 2025-7-12 14:43
aip650的数据手册,时序、命令等与TM1650一样

是吗,我记得按键部分有不一样的啊,我记错了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
估计是芯片的问题,刚才试了另一个使用AIP650的板子,读取的键控数值是0x2e,用镊子模拟按键时,这个数值能变化。
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
本帖最后由 bg4rff 于 2025-7-14 11:20 编辑
lmn2005 发表于 2025-7-13 09:57
估计是芯片的问题,刚才试了另一个使用AIP650的板子,读取的键控数值是0x2e,用镊子模拟按键时,这个数值能 ...

读出来的数不是标准键值之一
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-20 16:21 , Processed in 0.140400 second(s), 8 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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