网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月20日漏签0天
单片机吧 关注:211,641贴子:1,046,000
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 14回复贴,共1页
<<返回单片机吧
>0< 加载中...

谁能帮我看看这个矩阵键盘问题出在哪里了,瞅了两天了

  • 取消只看楼主
  • 收藏

  • 回复
  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P1^0;
uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,
0xe0,0xfe,0xf6,0xee,0x3e,};
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
} void display(uchar num)
{
P0=table[num];
dula=1;
dula=0;
} void matrixkeyscan()
{
uchar temp,key; P3=0xfe;
temp=P3;
temp=temp&0xf8;
if(temp!=0xf8)
{
delayms(10);
temp=P3;
if(temp!=0xf8)
{
temp=P3;
switch(temp)
{
case 0xf6:
key=0;
break;
case 0xee:
key=1;
break;
case 0xde:
key=2;
break;
case 0xbe:
key=3;
break;
}
while(temp!=0xf8)
{
temp=P3;
temp=temp&0xf8;
}
display(key);
}
} P3=0xfd;
temp=P3;
temp=temp&0xf8;
if(temp!=0xf8)
{
delayms(10);
temp=P3;
if(temp!=0xf8)
{
temp=P3;
switch(temp)
{
case 0xf5:
key=4;
break;
case 0xed:
key=5;
break;
case 0xdd:
key=6;
break;
case 0xbd:
key=7;
break;
}
while(temp!=0xf8)
{
temp=P3;
temp=temp&0xf8;
}
display(key);
}
} P3=0xfb;
temp=P3;
temp=temp&0xf8;
if(temp!=0xf8)
{
delayms(10);
temp=P3;
if(temp!=0xf8)
{
temp=P3;
switch(temp)
{
case 0xf3:
key=8;
break;
case 0xeb:
key=9;
break;
case 0xdb:
key=10;
break;
case 0xbb:
key=11;
break;
}
while(temp!=0xf8)
{
temp=P3;
temp=temp&0xf8;
}
display(key);
}
}
}
void main()
{
P0=0;
dula=1;
dula=0;
P2=0;
while(1)
{
matrixkeyscan();
}
}
不能正常显示,。


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
数码管的编码错误?重新写12个显示吗?


重庆蒙以教育科技有限公司
网课录制软件-蒙以录课,多路视频信号同时录制,录完后可以任意编辑专业的录制软件,可录制网络课程,会议,个人展示等多种视频。
2025-05-20 01:28广告
立即查看
2025-05-20 01:28:58
广告
  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
(⊙o⊙)…,编译正常,下载正常,数码管12个编码单独显示正常,4*3矩阵键盘,11111000不就是f8吗?最高位一直是1。P2是位选,直接控制。
扫描函数matrixkeyscan();有问题,不知道出在哪里。


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
那怎么改,我自己调试,没调出来,无想法了


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我也搞不懂啊,头大了。我照着书改的啊。我重新写了程序,先扫描列,在扫描行,只有六个键能显示,并且有两个键按两次能显示俩不同的数字。
我问您个别的问题。如果把11100100即e4送入P1口,那么11100100分别对应的是P0-1-2-3-4-5-6-7口还是对应的P7-6-5-4-3-2-1-0口。我可能搞错了。


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

以前LED,数码管,独立键盘,都是照着前一个使得,还自鸣得意,看到矩阵键盘高八位,低八位,才感到不对,我错了,啊啊啊啊啊啊啊。怪不得我写的程序跟板子附带的接法要求不同,但显示一样。捂脸狂奔出门····



  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
电路图上连接的地方用小黑点是不是啊?如果是的话,行线接的0~3,列接的4~7,8一直是做1处理的。


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是是是,我的意思是最高位7一直做1处理。我说错了,对不起啊,低三位0~1~2扫描行,3~4~5~6扫描四列,最高位7一直是赋值"1".
我的书上的例子是4*4,我买的板子上是4*3,改了一下程序,这不就不行了,先扫描行,没一正常显示的,先扫描列,只有2行3列显示东西。P0口直接位选,P2口通过锁存器进行段选,P3接矩阵键盘。12个按键在板子上,没有跟任何元件连接,通过排线直接接P3口。真想不出哪里出问题了。或许程序有问题吧


成都君德鑫力达科技发展
一款超级好用的在线单片机流程图,支持思维脑图文档云存储图表之间智能转化,自然语言生成图表
2025-05-20 01:28广告
立即查看
2025-05-20 01:22:58
广告
  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是不是P3^7不用赋值,比如说1111111即7f,赋给6~5~4~3~2~1~0,按七位来处理。
如果是这么个意思的话,似乎我知道问题出在哪里了。


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢您的多次解答。我找到问题在哪里了。我把P3^7接口的线拔掉了,OK了,按照编码顺序,基本显示正常了,第四个键跟最后一个键显示相同,不正常,,
呵呵呵,归根结底,还是上边的那个I/O口赋值顺序问题,我搞颠倒了。当初没明白过了,低八位,高八位,学中断的时候没体会透彻啊。




  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢啊,程序都帮忙写出来了,我的程序就是“7”的问题。今天再看看前几天的疑问,····捂脸啊,线转法看着挺少的,学习一下。
菜鸟继续学习·····



  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哈哈哈,解决了。谢谢了。


  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
很正常啊,很流畅,没有错误。我写的上边那个,一直调试不行。重新写了个先扫描列,在扫面行的,勉强能行,除了两个键反应迟钝外,下边电路图。



  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


2025-05-20 01:16:58
广告
  • 槑槑不呆呆
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不管他了,我也没办法了,以后的学习中说不定会豁然开朗,搞明白问题出在了哪里。
学习搞不懂的AD了。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 14回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示