单片机独立键盘按键系列代码问题
时间: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]++;
}
}
}
但是无法实现,求大神解答问题出在哪里?
#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
出现了这个问题 按照你的改过之后
- for(i=0;i<16;i++;)
- {
- P0=0;
- if(key1==0)
- {
- i=0;
- P0=table[i];
- i++;
- }
}
楼上正解,还有你的按键扫描都不带去抖的吗?这样你的信号太容易误触发了,你按一下没准会跑好几圈。
消抖是么 一直不太明白消抖是用来干什么的
#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
需要啊 大神 困惑我好多天啊