找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

矩阵键盘问题?

查看数: 5405 | 评论数: 15 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-11-30 20:12

正文摘要:

#include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]= {          0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x ...

回复

ID:102056 发表于 2016-12-1 20:58
咆哮的阿杰 发表于 2016-11-30 23:40
switch(Tmp)
        {
                 case 1: KeyNO = 0; break;

以实测,程序没有问题!
ID:151540 发表于 2016-12-1 20:41
ID:151540 发表于 2016-12-1 20:41
把程序重新好好地找找错误
ID:151481 发表于 2016-12-1 20:05
确认按键是否弹起
ID:149713 发表于 2016-12-1 13:13
不是单片机的附带资料里都会有这些资料吗~
ID:70330 发表于 2016-12-1 08:32
P1 = 0xf0;//给口赋值
                if(P1 != 0xf0)说明P1口的值改变了,有键按下,P1口值才会改变
                        Keys_Scan();//调用键盘扫描函数
ID:149853 发表于 2016-11-30 23:40
   switch(Tmp)
        {
                 case 1: KeyNO = 0; break;
                case 2: KeyNO = 1; break;
                case 4: KeyNO = 2; break;
                case 8: KeyNO = 3; break;
                default: KeyNO = 16;
        }
我怎么觉得你这段程序有问题呢?高位给0,低位给1。
然后我按下一个键,这个键对应的行和列都是0吧,也就是说,低位只有一个数为0,
那么tmp怎么会出现1,2,4,8呢。
除非楼主的单片机键盘是按下去接到了高电平
ID:102056 发表于 2016-11-30 21:29
king@ 发表于 2016-11-30 21:28
学什么看相应的内容,不懂提问,百度,

尽力学习理解
ID:102056 发表于 2016-11-30 21:28
zl2168 发表于 2016-11-30 21:09
你在本网站提了许多问题,我给你推荐的张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus ...

学什么看相应的内容,不懂提问,百度,
ID:111634 发表于 2016-11-30 21:09
本帖最后由 zl2168 于 2016-11-30 21:11 编辑

你在本网站提了许多问题,我给你推荐的张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,有100个案例,几乎覆盖了你所有的问题,难道还不值得你去看看这本书吗?
一个一个问,多吃力啊!还大多得不到满意解答,何必呢?
ID:102056 发表于 2016-11-30 21:08
zl2168 发表于 2016-11-30 20:56
下面这段程序是什么意思?有谁能详细跟我解释一下吗?
P1 = 0xf0;//列线置低电平
                 if(P1 ...

明白!多谢!
ID:111634 发表于 2016-11-30 21:06
本帖最后由 zl2168 于 2016-11-30 21:08 编辑

实例62  4×4矩阵式键盘
与你的几乎一模一样
Proteus仿真一下,确认有效。
实例62 4×4矩阵式键盘.rar (44.79 KB, 下载次数: 15)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行书中电路和程序设计有详细说明,程序语句条条有注解。


ID:111634 发表于 2016-11-30 21:04
我给你推荐的案例程序语句条条有注解,便于阅读理解,便于自学。
ID:111634 发表于 2016-11-30 20:56
本帖最后由 zl2168 于 2016-11-30 21:01 编辑

下面这段程序是什么意思?有谁能详细跟我解释一下吗?
P1 = 0xf0;//列线置低电平
                 if(P1 != 0xf0)//若P1不等于0xf0(前输出数据),表明有键按下(有键按下时会改变P1口状态)
                         Keys_Scan();//调用键扫描子函数


ID:151313 发表于 2016-11-30 20:42
确认按键是否弹起

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

Powered by 单片机教程网

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