2775|7

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:有关缓冲区的问题。各位大虾,帮帮忙吧,谢谢了~~~ [复制链接]

我现在用51系列单片机做的设计中,需要比较两个缓冲区中的值是否相同,这个要怎么比较呢??需要设置缓冲区?

最新回复

谢谢楼上了,非常感谢。  详情 回复 发表于 2009-9-22 10:14
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
说具体点,干什么的缓冲区,有多大
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
就是这样的,键盘扫描程序中,需要识别按键的值(至少要识别5个键值),所以我打算用双缓冲的办法去比较按下的键值,现在这两个buffer中的值我怎么样去读出然后确定是否真的按下了。
不知道我说明白了没的??
还是谢谢你哦~
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
你是独立键盘还是矩阵键盘(不过好像5个不能构成矩阵)。键盘扫描没必要用到双缓冲啊,你告诉我你那几个键的链接和按下时的电平,我帮你写段
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
需要8*8的矩阵键盘。只是说要按下5个键后,要准确的识别键值,然后再发音。 我现在才在做系统需要的流程图,然后再写代码。就是不知道两个缓冲区里的键值要怎么样进行比较、读取。很惆怅~~~谢谢你哦。哦,对了,用双缓冲的目的就是第一个缓冲中存第一次扫描到的键值,10ms的延时后将读取到的键值存入到第二个缓冲中,两个进行比较,确实在两个中都有的则发音,缓冲1中有,缓冲2里没有的,就关音。两个缓冲中的键值是否一样怎么实现呢?(我说明白了么?)
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
两个缓冲区,可以用数组表示。然后两个数组元素之间做异或运算,通过循环完成整个键值的运算。例如key1[n]和key2[n]做异或。然后按位分别查一下是否为一,如果为一,说明键位有变化,然后在判断键位是否有效就可以了。
 
 
 

回复

78

帖子

0

TA的资源

五彩晶圆(初级)

7
 
匆匆忙忙写的,如果有问题再找我吧,你先试试看,记住先把对应口线改了
#include
#define hang P0         //        行输入低电平为有键按下,高电平为无键按下
#define lie  P1          // 列输出低电平进行逐行扫描
#define        speaker P2_1 //蜂鸣器低电平有效


volatile unsigned int key_number1,key_number2;        

void delay_ms(unsigned int count)        // 延时时间count*1ms
{   unsigned int i;
    for(;count>0;count--)
    {
        for(i=0;i<110;i++);
        
    }
}

unsigned int keyscanf(void)// 返回值为键盘扫描值高8为为行码,低8位为列码
{          unsigned  char a,b,c,i;
             unsigned  int d        ;
                  a=0;
                  b=0;
          c=0XFE;
   for(i=0;i<8;i++)
      {         P1= c;
           if(P0!=0xff)//如果有键按下
          {        a=P0;
                    b=P1;
                   }
                c=c<<1;
          }
           d=(a<<8)+b;
             return d;
   }

main()
{ while(1)
     {key_number1=keyscanf() ;
         delay_ms(10);
         key_number2=keyscanf() ;
           if((key_number1==key_number2)&&(key_number1==0xfefe)) //假设按下低8行第8列的键蜂鸣器叫
           {  speaker=0;  //蜂鸣器叫                                                         //其他的你自己修改吧
           }
         }
}
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢楼上了,非常感谢。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表