微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机独立键盘按键系列代码问题

单片机独立键盘按键系列代码问题

时间:10-02 整理:3721RD 点击:
如以下代码,我想通过按下k1键来让数码管从数字2进行自增
但是无法实现,求大神解答问题出在哪里?
#include<reg52.h>
               
sbit key1=P2^0;
//sbit key2=P2^1;
char table1[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{

  if(key1==0)
  {
  P0=~table1[2]++;
  }
}

这肯定不对了啊,你自增的是数组的序号

Table[2 ++]

LESSON.C(14): error C187: not an lvalue
出现了这个问题 按照你的改过之后

  1. for(i=0;i<16;i++;)
  2. {
  3. P0=0;
  4.   if(key1==0)
  5.     {
  6.        i=0;
  7.        P0=table[i];
  8.         i++;
  9.     }

复制代码


}

楼上正解,还有你的按键扫描都不带去抖的吗?这样你的信号太容易误触发了,你按一下没准会跑好几圈。

消抖是么 一直不太明白消抖是用来干什么的

#include<reg52.h>
               
sbit k1=P2^0;
//sbit key2=P2^1;
char table1[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
char i;
for(i=0;i<16;i++)
{
P0=0;
if(k1==0)
{
i=0;
P0=~table1;
i++;
}
}
}
这么写完之后 数码管显示的数字一直是8 按下k1键数字也不自增啊

你的按键处理也不对,你这相当于按下去后,key一直是等于0的,然后单片机以很快的速度在一直执行显示循环,这肯定不行的

你说说你想要的功能,我帮你改改

好的 我就是想让每次按下k1之后 数码管的数值都自动加1; 假如现在数码管显示1 我按下k1显示2 ;我再按下k1 又显示三  就这样以此循环

可以实现么?

可以啊,现在还需要吗?最近有事没有登论坛

需要帮助的话加我QQ:1374660770

需要啊 大神  困惑我好多天啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top