标题:
STC15单片机按键松开会乱码,想问一下这种情况怎么解决
[打印本页]
作者:
吴语吖
时间:
2019-3-3 20:40
标题:
STC15单片机按键松开会乱码,想问一下这种情况怎么解决
#include <STC15F2K60S2.H>
#include <intrins.h>
#include "GPIO.h"//里面是延时函数和初始化
uc bs[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/**********************
按键扫描
**********************/
ui keys_scanning ()
{
ui key_x,key_y,key;
P1=0xf0;
delay(1);
if(P1 != 0xf0)
{
delay(1);
P1=0xf0;
delay(1);
if(P1!=0xf0)
{
switch(P1)
{
case 0xe0:key_x=0;break;
case 0xd0:key_x=1;break;
case 0xb0:key_x=2;break;
case 0x70:key_x=3;break;
}
P1=0x0f;
delay(1);
switch(P1)
{
case 0x07:key_y=0;break;
case 0x0b:key_y=1;break;
case 0x0d:key_y=2;break;
case 0x0e:key_y=3;break;
}
}
else
{
key=0;
}
}
key = key_x*4+key_y;
return(key);
}
/**********************
数码管显示
**********************/
void display(unsigned int shuzi)
{
P0=0x00;
P3=bs[shuzi/1000%10];
P0=0x10;
delay(1);
P0=0x00;
P3=bs[shuzi/100%10];
P0=0x20;
delay(1);
P0=0x00;
P3=bs[shuzi/10%10];
P0=0x40;
delay(1);
P0=0x00;
P3=bs[shuzi%10];
P0=0x80;
delay(1);
}
/**********************
主函数
**********************/
void main()
{
IO_Itin();
while(1)
{
display(keys_scanning());
delay(5);
}
}
复制代码
作者:
yzwzfyz
时间:
2019-3-4 08:01
如何你能不用delay来做,差不多就好了。
作者:
wulin
时间:
2019-3-4 09:03
按键扫描改这样试试
/**********************
按键扫描
**********************/
ui keys_scanning ()
{
ui key_x,key_y,key;
P1=0xf0;
_nop_();
if(P1!=0xf0)
{
delay(10);
if(P1!=0xf0)
{
switch(P1)
{
case 0xe0:key_x=0;break;
case 0xd0:key_x=1;break;
case 0xb0:key_x=2;break;
case 0x70:key_x=3;break;
}
P1=0x0f;
_nop_();
switch(P1)
{
case 0x07:key_y=0;break;
case 0x0b:key_y=1;break;
case 0x0d:key_y=2;break;
case 0x0e:key_y=3;break;
}
key = key_x*4+key_y+1;//1~16
return(key);
}
}
else return 0x00;
}
复制代码
作者:
吴语吖
时间:
2019-3-5 22:37
wulin 发表于 2019-3-4 09:03
按键扫描改这样试试
多谢大佬,已解决
作者:
乐点点
时间:
2019-3-5 23:35
用数码管的话要消影
作者:
xixi2006
时间:
2019-3-5 23:41
看看是怎样解决的。
作者:
正规007
时间:
2019-3-6 10:59
wulin 发表于 2019-3-4 09:03
按键扫描改这样试试
很好,就是要这样做
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1