找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2349|回复: 10
收起左侧

请教TM1628芯片读按键问题,附单片机代码

[复制链接]
ID:472504 发表于 2023-3-29 13:23 | 显示全部楼层 |阅读模式
按网上天微例程不能读取按键,键值KEY[]一直是0xFF。请问读键时单片机接DIO的口要不要设为输入口,向1628送控制命令和传显示数据时再把单片机DIO驱动口设为输出口?
/****************读取按键值并存储*******************/                                   
void read_key(void)                //读取5字节按键值并存入数组KEY[],从低字节、低位开始               
{                                                                              
  unsigned char i,j;                                                            
  send_command(0x42);         //发送读按键命令                                    
  DIO=1;                              //释放DIO数据总线                                                     
  for(j=0;j<5;j++)                 //连续读取5个字节                                                
  {                                                                              
    for(i=0;i<8;i++)                                                              
    {
      CLK=0;                                                        
      KEY[j]=KEY[j]>>1;                                                            
      CLK=1;                                                                        
      if(DIO==1)                                                                    
      {                                                                             
        KEY[j]=KEY[j]|0x80;                                                         
      }                                                                             
      nop;                                                                          
    }                                                                              
    nop;                                                                          
    nop;                                                                          
  }                                                                              
  CLK=0;                                                                        
  DIO=0;                                                                        
  STB=1;                                                                        
}  


回复

使用道具 举报

ID:996773 发表于 2023-3-29 16:10 | 显示全部楼层
传送显示数据和读键是两码事,也就是说不显示也可以利用读键,发送完读键指令

后立刻要把单片机io数据口定义高电平,1628就可以数据输出了,就可以读键,这点很重要

很多人卡在这里
回复

使用道具 举报

ID:472504 发表于 2023-3-29 16:28 | 显示全部楼层
hi等你 发表于 2023-3-29 16:10
传送显示数据和读键是两码事,也就是说不显示也可以利用读键,发送完读键指令

后立刻要把单片机io数据口 ...

send_command(0x42);         //发送读按键命令                                    
DIO=1;                               //释放DIO数据总线  

我发完0x42后已经把DIO设为1了,但还是读不到按键。请问读按键时单片机DIO脚要设为输入口吗?
回复

使用道具 举报

ID:624769 发表于 2023-3-29 20:44 | 显示全部楼层
时序错了,你这样永远读到的 0xff
应该这样:
    for(i=0;i<8;i++)                                                              
    {
      CLK=0;
      KEY[j] >>= 1;  
      if(DIO)  KEY[j] |= 0x80;   
      CLK=1;                                                                        
    }                                       

回复

使用道具 举报

ID:1143321 发表于 2025-1-23 10:20 | 显示全部楼层
楼主我遇到跟您一样的问题,按照天微例程配的时序,读取按键值一直是0xff,请问您怎么解决的?
回复

使用道具 举报

ID:1143321 发表于 2025-1-23 10:21 | 显示全部楼层
楼主您好,我遇到您同样的问题,按照天微例程配置的时序,按键读取全是0xff,请问您如何解决的?
回复

使用道具 举报

ID:1109793 发表于 2025-1-23 13:08 | 显示全部楼层
除了地板层说的时序问题,还有读之前要先STB = 0;
回复

使用道具 举报

ID:1109793 发表于 2025-1-23 17:59 | 显示全部楼层
xiaobendan001 发表于 2025-1-23 13:08
除了地板层说的时序问题,还有读之前要先STB = 0;

手上只有1638,刚测试了一下,CLK = 1;的位置是可以放IF前边的,能正常读取。
只是CLK = 0;和CLK = 1;之间要有足够长的延时。11.0592的主频下,右移操作的延时是不够用的。需要增加一点才行。
回复

使用道具 举报

ID:1078008 发表于 2025-2-9 16:26 | 显示全部楼层
一样的问题,楼上说的方法都试过了,返回值依然固定为0xff。
一、显示正常,因此推测读指令0X42是可以正常发送的(否则显示是否应该不正常?)
二、STC单片机,P30口,已设置为准双向口。
三、读取前P30已经置1。

推测因为时序或者信号问题,TM1628应该没有正常发送键值,没有拉低数据线的电平,因为读取值固定为1,则返回0xff。目前问题未解决。
回复

使用道具 举报

ID:1078008 发表于 2025-2-10 12:05 | 显示全部楼层
已解决,官方代码有问题导致时序不对。 send_command(0x42);这个函数里面,发送完0X42后把STB拉高了。应该在读回键值之后再拉高。
回复

使用道具 举报

ID:1109793 发表于 2025-2-10 12:43 | 显示全部楼层
wjccui 发表于 2025-2-9 16:26
一样的问题,楼上说的方法都试过了,返回值依然固定为0xff。
一、显示正常,因此推测读指令0X42是可以正常 ...

会不会芯片有问题,或者按键接法不对?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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