找回密码
 立即注册

QQ登录

只需一步,快速开始

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

键盘扫描程序用P3口有问题,P3口有什么不同么?

[复制链接]
跳转到指定楼层
楼主
ID:57254 发表于 2013-11-29 00:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 我很丑 于 2013-11-29 02:17 编辑

下面是4x4键盘扫描程序,按一个键后用一个共阳数码管显示一个值,用P1口接键盘正常显示,程序和接口都改到P3后只有第一行正常显示,按其它行都不变,这个是什么原因?
如果把P3作为显示输出,就是把下面程序中的P2都改成P3也是显示不正常.


#include<reg52.h>
unsigned char code duanma[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管显示0123456789abcdef
void delay(unsigned int t)    //延时函数 晶振12M时约1m秒
{
unsigned int j;
for(;t>0;t--)
for(j=0;j<124;j++);
}

void main(void)
{
unsigned char key;
while(1)
{
  P1=0xf0;         //11110000
  if(P1!=0xf0)     //是否有键按下
  {
   delay(50);     //去抖
   if(P1!=0xf0)   
   {
    key=P1&0xf0;
    P1=key|0x0f;
   }
  }
  
  switch(P1)
  {
   case 0xee:P2=duanma[3];break;
   case 0xde:P2=duanma[2];break;
   case 0xbe:P2=duanma[1];break;
   case 0x7e:P2=duanma[0];break;
   case 0xed:P2=duanma[7];break;
   case 0xdd:P2=duanma[6];break;
   case 0xbd:P2=duanma[5];break;
   case 0x7d:P2=duanma[4];break;
   case 0xeb:P2=duanma[11];break;
   case 0xdb:P2=duanma[10];break;
   case 0xbb:P2=duanma[9];break;
   case 0x7b:P2=duanma[8];break;
   case 0xe7:P2=duanma[15];break;
   case 0xd7:P2=duanma[14];break;
   case 0xb7:P2=duanma[13];break;
   case 0x77:P2=duanma[12];break;
  }
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2013-11-29 13:57 | 只看该作者
p3的第2功能没有使用吧
回复

使用道具 举报

板凳
ID:57254 发表于 2013-11-29 15:09 | 只看该作者
没有使用,只是作为IO口用.
回复

使用道具 举报

地板
ID:57254 发表于 2013-11-29 15:30 | 只看该作者
我用的是89C52换过89C54也是一样的现象,是不是这个P3口用于IO作用还应该加什么命令啊?
回复

使用道具 举报

5#
ID:57254 发表于 2013-11-29 18:55 | 只看该作者
{:soso_e127:}找到毛病了,应该是开发板上面电路的问题,单独用面包板搭电路就好了.
回复

使用道具 举报

6#
ID:57254 发表于 2013-11-29 19:30 | 只看该作者
本帖最后由 我很丑 于 2013-11-29 19:32 编辑

找到毛病了,开发板线路的问题,断开板上的RXD就好了.
回复

使用道具 举报

7#
ID:1 发表于 2013-11-30 19:33 | 只看该作者
小问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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