找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请问为什么从键盘矩阵按下的数 不能通过独立按键 进行加减

[复制链接]
跳转到指定楼层
楼主
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"

unsigned char k=0;                         //k=通过键盘矩阵得到的数
unsigned int p,count,a;                    //p=进位得到的数  count=加的次数  a=通过独立按键加减得到的数

void main()
{
        LCD_Init();
        LCD_ShowString(1,1,"Password:");
        LCD_ShowNum(2,1,k,4);      
        while(1)
        {
                k=MatrixKey();
                if(k)                                
                {
                        if(k<=10)                              
                        {
                                if(count<4)      
                                {
                                        p*=10;                              
                                        p+=k%10;               
                                        count++;      
                                }
                                LCD_ShowNum(2,1,p,4);                  //显示
                        }
                 }
                if(P3_0==0)
                {
                        a=k;
                        a++;
                        if(a>17)
                        {
                                a=1;
                        }
                        LCD_ShowNum(2,1,a,4);      
                }
                if(P3_1==0)
                {
                        a=k;
                        a--;
                        if(a<0)
                        {
                                a=16;
                        }
                        LCD_ShowNum(2,1,a,4);      
                }
         }
}

捕获.PNG (93.77 KB, 下载次数: 21)

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

使用道具 举报

沙发
ID:1109793 发表于 2024-6-11 08:02 | 只看该作者
当K有数据后,就一直在刷新显示,P30和P31并没有改变P的内容,他们产生的a的显示瞬间被P覆盖了吧。
回复

使用道具 举报

板凳
ID:161164 发表于 2024-6-11 13:38 | 只看该作者
阵列键盘没有按下时
k的值是0
所以按下P30会显示1
按下P31会显示5535
回复

使用道具 举报

地板
ID:1109793 发表于 2024-6-11 15:19 | 只看该作者
从++和--下边的if来看,你的意图是每按一次开关就加一或者减一到了17之后就变成1,实际上每次运行都是只在K的数字上加了一而已。而且即使++有效了,似乎也看不到,因为太快了,只要按着不松手,程序只经历了显示函数后又++了,这速度在液晶上面可能看不到。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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