6579|9

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

51单片机矩4X4阵键盘的第一排按键没反应。 [复制链接]

大家好。
想请问一个问题。我在看郭天祥的视频,看到第五讲,矩阵键盘这一部份。。
写了程序(程序跟郭天祥写的是一样的)下载到实验板上。。但4X4矩阵键盘的第一排的4个键按了都没有反应。其他三排都有反应。请问这是怎么回事呢?键盘本身是没有问题的,因为我用了另外一块实验去试了一下。
请大家帮帮我啊。。谢谢
下面是电路图


这是全部代码。


  1. #include
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. sbit key1=P3^4;
  7. uchar code table[]={
  8. 0x3f,0x06,0x5b,0x4f,
  9. 0x66,0x6d,0x7d,0x07,
  10. 0x7f,0x6f,0x77,0x7c,
  11. 0x39,0x5e,0x79,0x71,0};
  12. uchar num, temp,num1;
  13. void delay(uint z)
  14. {
  15.         uint x,y;
  16.         for(x=z;x>0;x--)
  17.                 for(y=110;y>0;y--);
  18. }
  19. uchar keyscan();
  20. void display(uchar aa);
  21. void main()
  22. {
  23.         num=17;
  24.         dula=1;
  25.         P0=0;
  26.         dula=0;
  27.         wela=1;
  28.         P0=0xc0;
  29.         wela=0;
  30.        
  31.         while(1)
  32.                 {
  33.                         display(keyscan());
  34.                 }
  35. }
  36. void display(uchar aa)
  37. {
  38.                         dula=1;
  39.                         P0=table[aa-1];
  40.                         dula=0;               
  41. }
  42. uchar keyscan()
  43. {
  44.     char i;
  45.     for(i = 0; i< 4; i++)
  46.     {
  47.         switch(i)
  48.         {
  49.             case 0: P3 = 0xfe;
  50.                 break;
  51.             case 1: P3 = 0xfd;
  52.                 break;
  53.             case 2: P3 = 0xfb;
  54.                 break;
  55.             case 3: P3 = 0xf7;
  56.                 break;
  57.         }
  58.             temp=P3;
  59.             temp=temp&0xf0;
  60.             while(temp!=0xf0)
  61.             {
  62.                     delay(5);
  63.                     temp=P3;
  64.                     temp=temp&0xf0;
  65.                     while(temp!=0xf0)
  66.                     {
  67.                             temp=P3;
  68.                         switch(temp)
  69.                             {
  70.                                     case 0xee:num=1;
  71.                                             break;
  72.                                     case 0xde:num=2;
  73.                                             break;
  74.                                     case 0xbe:num=3;
  75.                                             break;
  76.                                     case 0x7e:num=4;
  77.                                             break;
  78.                     case 0xed:num=5;
  79.                                         break;
  80.                                 case 0xdd:num=6;
  81.                                         break;
  82.                                 case 0xbd:num=7;
  83.                                         break;
  84.                                 case 0x7d:num=8;
  85.                                         break;
  86.                     case 0xeb:num=9;
  87.                                         break;
  88.                                 case 0xdb:num=10;
  89.                                         break;
  90.                                 case 0xbb:num=11;
  91.                                         break;
  92.                                 case 0x7b:num=12;
  93.                                         break;
  94.                     case 0xe7:num=13;
  95.                                         break;
  96.                                 case 0xd7:num=14;
  97.                                         break;
  98.                                 case 0xb7:num=15;
  99.                                         break;
  100.                                 case 0x77:num=16;
  101.                                         break;
  102.                             }
  103.                 temp = P3 & 0xf0;
  104.                         while(temp!=0xf0)
  105.                 {
  106.                     temp = P3 & 0xf0;
  107.                 }
  108.                     }
  109.             }                        
  110.     }
  111. return num;
  112. }

复制代码


最新回复

-------- 把下载线 拔了就可以了         下载用了P3.0和P3.1   因为通信时一直为高电平所以  这是这块板子为什么要设计 二根USB线的原因  详情 回复 发表于 2011-10-24 16:57
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
电路板有没有问题啊 焊接有没有问题 应该是硬件问题吧
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
硬件应该没问题吧。我跟同学借了一块实验来试了下,也不行。是不是程序哪里出现问题了。
谁能写段程序给我看看。就根据那实验电路图来控制下矩阵键盘的第一排。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
没电路图看代码没用
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
板子坏了?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 gelu1040 的回复:
没电路图看代码没用

http://hiphotos.baidu.com/youjustdunk/pic/item/beb81efbaa632935d8f9fd0e.jpg
这个是电路图,我己经贴在上面了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 

电路图地址
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 

电路图
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
看不到电路图,楼主给贴上吧
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

10
 
--------


把下载线 拔了就可以了         下载用了P3.0和P3.1   因为通信时一直为高电平所以  这是这块板子为什么要设计 二根USB线的原因
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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