找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1359|回复: 3
收起左侧

请教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;                                                                        
    }                                       

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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