找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3010|回复: 6
打印 上一主题 下一主题
收起左侧

我自己写了一个矩阵键盘编码程序,大神帮忙给看看哪里错了吧

[复制链接]
跳转到指定楼层
楼主
ID:70526 发表于 2014-12-27 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit d0=P3^0;
sbit d1=P3^1;
sbit d2=P3^2;
sbit d3=P3^3;
sbit d4=P3^4;
sbit d5=P3^5;
sbit d6=P3^6;
sbit d7=P3^7;
sbit le0=P0^1;
sbit le1=P0^2;
uchar code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay()   //延时10ms程序
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void delay3()   //误差 0us
{
    unsigned char a,b;
    for(b=111;b>0;b--)
        for(a=12;a>0;a--);
}

int scankey(){
int i,jg;
uchar cc;
while(1){
cc=0xfe;
for(i=0;i<4;i++){
   P1=cc;
   if(d4==0){
           delay();
        if(d4==0){
         jg=i*4+1;
         while(!d4);
         delay();
         while(!d4);
         return(jg);
        }
   }

   if(d5==0){
           delay();
        if(d5==0){
         jg=i*4+2;
         while(!d5);
         delay();
         while(!d5);
         return(jg);
        }
   }

   if(d6==0){
           delay();
        if(d6==0){
         jg=i*4+3;
         while(!d6);
         delay();
         while(!d6);
         return(jg);
        }
   }

   if(d7==0){
           delay();
        if(d7==0){
         jg=i*4+3;
         while(!d7);
         delay();
         while(!d7);
         return(jg);
        }
   }
   cc=_crol_(cc,1);
  }
}
}

void display(int hh){
int sw,gw;
sw=hh/10;
gw=hh%10;

le1=1;
le0=0;
P1=a[gw];
delay3();
P1=0x00;
le0=1;
le1=0;

P1=a[sw];
delay3();
P1=0x00;
}

main(){
int ss=0;
while(1){
  ss=scankey();
  display(ss);
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:70976 发表于 2014-12-27 22:00 | 只看该作者
是不能编译 还是 上机器执行结果不正确?
回复

使用道具 举报

板凳
ID:70526 发表于 2014-12-27 22:09 | 只看该作者
daniu 发表于 2014-12-27 22:00
是不能编译 还是 上机器执行结果不正确?

编译一点问题都没有,上机就是不显示
回复

使用道具 举报

地板
ID:70526 发表于 2014-12-27 22:09 | 只看该作者
daniu 发表于 2014-12-27 22:00
是不能编译 还是 上机器执行结果不正确?

编译一点问题都没有,上机就是不显示
回复

使用道具 举报

5#
ID:67992 发表于 2014-12-27 22:13 | 只看该作者
先把矩阵键盘代码屏蔽,弄好显示正常再说。
回复

使用道具 举报

6#
ID:73833 发表于 2015-4-1 20:48 | 只看该作者
你这程序,一旦主程序调用scan key()后就进入死循环了啀,你那显示函数白写了

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:73833 发表于 2015-4-1 20:48 | 只看该作者
你这程序,一旦主程序调用scan key()后就进入死循环了啀,你那显示函数白写了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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