标题:
16个按钮扫描亮灯单片机程序问题
[打印本页]
作者:
1746722427
时间:
2021-3-11 11:18
标题:
16个按钮扫描亮灯单片机程序问题
小白写子函数写不下去了,网上找的仿真图,每个按键亮对应位置的段码灯,有大哥指导一下思路吗?
#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
#define key P1
#define dmg1 P2
#define dmg2 P3
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
uchar Keys()
{
uchar Keym;
key=0xf0;
if(key!=0xf0)
{
delay(10);
if(key!=0xf0)
{
key=0xfe;
if(key!=0xfe)
{
Keym=key;
delay(10);
while(key!=0xfe);
return Keym;
}
}
key=0xfd;
if(key!=0xf0)
{
delay(10);
if(key!=0xfd)
{
Keym=key;
delay(10);
while(key!=0xfd);
return Keym;
}
}
key=0xfb;
if(key!=0xfb)
{
delay(10);
if(key!=0xfb)
{
Keym=key;
delay(10);
while(key!=0xfb);
return Keym;
}
}
key=0xf7;
if(key!=0xf7)
{
delay(10);
if(key!=0xf7)
{
Keym=key;
delay(10);
while(key!=0xf7);
return Keym;
}
}
}
return 0xff;
}
uchar Keyz()
{
uchar i;
switch(Keys())
{
case 0x7e:return dmg1;break;
case 0x7d:return dmg1;break;
case 0x7b:return dmg1;break;
case 0x77:return dmg1;break;
case 0xbe:return dmg1;break;
case 0xbd:return dmg1;break;
case 0xbb:return dmg1;break;
case 0xb7:return dmg1;break;
case 0xde:return dmg2;break;
case 0xdd:return dmg2;break;
case 0xdb:return dmg2;break;
case 0xd7:return dmg2;break;
case 0xee:return dmg2;break;
case 0xed:return dmg2;break;
case 0xeb:return dmg2;break;
case 0xe7:return dmg2;break;
}
}
0cd071db22d968bd7e10cc5cdc054d8.png
(68.8 KB, 下载次数: 113)
下载附件
2021-3-11 11:20 上传
作者:
lovezjf234
时间:
2021-3-11 15:12
矩阵键盘巡检,不知道要问什么问题,
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1