数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 159|回复: 8

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

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

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
 楼主| 发表于 昨天 14:09 | 显示全部楼层
将读函数改为下面,读取的键值却一直为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. }
复制代码


回复 支持 反对

使用道具 举报

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

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

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 昨天 19:46 | 显示全部楼层
应该是程序时序不对
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 9 小时前 | 显示全部楼层
17805352 发表于 2025-7-11 19:46
应该是程序时序不对

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-12 18:48 , Processed in 0.093600 second(s), 6 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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