编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
发新话题
打印

单片价键盘问题,熟悉的高手请指教啊。感谢了俄!!!

单片价键盘问题,熟悉的高手请指教啊。感谢了俄!!!

大家好我现在遇到一个键盘设计问题想找人讨论讨论,不知道那位对键盘设计熟悉啊。。。。。。

我的问题如下;

  我是用一个I/O口来扫描制作键盘,通过用数据线送8位数据给573锁存,573出来然后接8个按键,最后将8跟线合在一起送给一个I/O口,现在通过送数据来检测是否有键盘按下,8跟线中送一个为高电平。通过检测I/O口是否为高电平,若为高电平,则有键按下。当然按下的键是通过送的数据晓得的。用移位来自动送数据。现在问题是这个键盘程序设计有误,请教高手指导啊。。。。。。

int read_key(void)
{
   unsigned char i = 0;
unsigned char a = 1;
    unsigned char key = 0;
    LED_SEL_D4 = 1;//这是用于检测的I/O
    delayNs(10);
   for(i=0;i<8;i++)
   {
       LED_Sel_Seq(a);//这是给573送数据的子程序已经定义了
  if(LED_SEL_D4 == 1)
    {
   key = key | (0x01<<1);
    }
  
  a <<= 1;
}
return key;
}

TOP

引用:
我是用一个I/O口来扫描制作键盘,通过用数据线送8位数据给573锁存,573出来然后接8个按键,最后将8跟线合在一起送给一个I/O口,现在通过送数据来检测是否有键盘按下,8跟线中送一个为高电平。通过检测I/O口是否为高电平,若为高电平,则有键按下。当然按下的键是通过送的数据晓得的。用移位来自动送数据。现在问题是这个键盘程序设计有误,请教高手指导啊。。。。。。
不知所云,“573出来然后接8个按键”,你的按键是输入信号还是输出信号?把电路图贴出来
Yesterday is a history, tomorrow is a mystery, and now is a gift, that's why is called present.

TOP

谢谢指导。电路图传了,8个按键是输入,但是只用一个p1.5检测扫描,
附件: 只有本站会员才能下载或查看附件,请您 登录注册

TOP

这个不太懂啊

TOP

还是感谢你

TOP

按键右边串二极管干什么?
如果让我设计,我用8-3线编码器对键盘输入进行编码
Yesterday is a history, tomorrow is a mystery, and now is a gift, that's why is called present.

TOP

谢谢那个二级管画反了的,把它反过来。现在就是这样设计,但我写的程序不对请你看看,谢谢了。

TOP

你反接一个二极管我以为是稳压管,不过这里也不需要稳压。
你说是画反了,反过来也看不懂要二极管干什么,控制电流方向?

你的键盘电路设计的既不是最简单的,也不是最方便好用的
你的程序更是不知所云
引用:
int read_key(void)
{
        unsigned char i = 0;
        unsigned char key = 0;
        unsigned char mask = 1;
        
        LED_SEL_D4 = 1;//这是用于检测的I/O
        delayNs(10);

        for(i=0;i<8;i++)
        {
                LED_Sel_Seq(mask);//这是给573送数据的子程序已经定义了
                if(LED_SEL_D4 == 1)
                {
                        key |= mask;
                }
                mask <<= 1;
        }
        
        return key;
}
Yesterday is a history, tomorrow is a mystery, and now is a gift, that's why is called present.

TOP

感谢指导

TOP

发新话题