标题:
单片机4*4矩阵键盘按键控制led灯的程序及仿真
[打印本页]
作者:
51黑ff
时间:
2016-9-27 20:17
标题:
单片机4*4矩阵键盘按键控制led灯的程序及仿真
通过1-8按键显示逐个灯亮一个。9全灭。。10左移一位依次类推。。。这是一个简单的单片机例子,下面是仿真原理图:
0.png
(29.7 KB, 下载次数: 110)
下载附件
2016-9-27 20:15 上传
0.png
(61.5 KB, 下载次数: 90)
下载附件
2016-9-27 20:15 上传
所有资料打包下载:
4乘4按键控制灯.zip
(52.31 KB, 下载次数: 79)
2016-9-27 20:17 上传
点击文件名下载附件
下载积分: 黑币 -5
原理图:
#include <reg52.h>
#include<intrins.h>
typedef unsigned char int8;
typedef unsigned int int16;
sbit KeyIn1 = P1^0;
sbit KeyIn2 = P1^1;
sbit KeyIn3 = P1^2;
sbit KeyIn4 = P1^3;
sbit KeyOut1 = P1^4;
sbit KeyOut2 = P1^5;
sbit KeyOut3 = P1^6;
sbit KeyOut4 = P1^7;
void delay(void);
void delay1s(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
}
main()
{ int8 i;
P0 = 0xFF;
while (1)
{
KeyOut1 = 0;
KeyOut2 = 1;
KeyOut3 = 1;
KeyOut4 = 1;
if(KeyIn1 == 0)
{
delay();
if(KeyIn1 == 0)
{ i=0 ;P0 = 0xfe; }
}
if(KeyIn2 == 0)
{
delay();
if(KeyIn2 == 0)
{ i=0 ; P0 = 0xe0;}
}
if(KeyIn3 == 0)
{
delay();
if(KeyIn3 == 0)
{ i=0 ; P0=0Xff; }
}
if(KeyIn4 == 0)
{
delay();
if(KeyIn4 == 0)
{i=1;P0=0XF0;}
}
while((KeyIn1 == 0)||(KeyIn2 == 0)||
(KeyIn3 == 0)||(KeyIn4 == 0));
KeyOut1 = 1;
KeyOut2 = 0;
KeyOut3 = 1;
KeyOut4 = 1;
if(KeyIn1 == 0)
{
delay();
if(KeyIn1 == 0)
{ i=0 ; P0 = 0xfc; }
}
if(KeyIn2 == 0)
{
delay();
if(KeyIn2 == 0)
{ i=0 ; P0 = 0xc0; }
}
if(KeyIn3 == 0)
{
delay();
if(KeyIn3 == 0)
{ i=1; P0=0XFE;}
}
if(KeyIn4 == 0)
{
delay();
if(KeyIn4 == 0)
{i=1;P0=0XE0;}
}
while((KeyIn1 == 0)||(KeyIn2 == 0)||
(KeyIn3 == 0)||(KeyIn4 == 0));
KeyOut1 = 1;
KeyOut2 = 1;
KeyOut3 = 0;
KeyOut4 = 1;
if(KeyIn1 == 0)
{
delay();
if(KeyIn1 == 0)
{ i=0 ; P0 = 0xf8; }
}
if(KeyIn2 == 0)
{
delay();
if(KeyIn2 == 0)
{ i=0 ; P0 = 0x80; }
}
if(KeyIn3 == 0)
{
delay();
if(KeyIn3 == 0)
{i=1;P0=0XFC;}
}
if(KeyIn4 == 0)
{
delay();
if(KeyIn4 == 0)
{i=1;P0=0XC0;}
}
while((KeyIn1 == 0)||(KeyIn2 == 0)||
(KeyIn3 == 0)||(KeyIn4 == 0));
KeyOut1 = 1;
KeyOut2 = 1;
KeyOut3 = 1;
KeyOut4 = 0;
if(KeyIn1 == 0)
{
delay();
if(KeyIn1 == 0)
{ i=0 ; P0 = 0xf0; }
}
if(KeyIn2 == 0)
{
delay();
if(KeyIn2 == 0)
{ i=0 ; P0 = 0x00;}
}
if(KeyIn3 == 0)
{
delay();
if(KeyIn3 == 0)
{i=1;P0=0XF8;}
}
if(KeyIn4 == 0)
{
delay();
if(KeyIn4 == 0)
{i=1;P0=0X80;}
}
while((KeyIn1 == 0)||(KeyIn2 == 0)||
(KeyIn3 == 0)||(KeyIn4 == 0));
switch(i)
{ case 0: P0=P0;break;
case 1: P0=_crol_(P0,1);delay1s(); break;
default:
P0=0XFF;
}
}
}
void delay(void)
{
int16 i=500;
while (i--);
}
复制代码
作者:
lehigh
时间:
2016-12-1 23:19
感谢分享,学习到了
作者:
devlinFan
时间:
2017-5-14 12:42
谢谢分享
作者:
ffhbfy
时间:
2020-12-24 20:28
有没有详细解释??
作者:
ffhbfy
时间:
2020-12-24 20:31
求大神解释代码
作者:
g'f'yeu'y
时间:
2021-4-19 14:45
代码有注释吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1