標(biāo)題:
單片機(jī)4*4矩陣鍵盤(pán)按鍵控制led燈的程序及仿真
[打印本頁(yè)]
作者:
51黑ff
時(shí)間:
2016-9-27 20:17
標(biāo)題:
單片機(jī)4*4矩陣鍵盤(pán)按鍵控制led燈的程序及仿真
通過(guò)1-8按鍵顯示逐個(gè)燈亮一個(gè)。9全滅。。10左移一位依次類(lèi)推。。。這是一個(gè)簡(jiǎn)單的單片機(jī)例子,下面是仿真原理圖:
0.png
(29.7 KB, 下載次數(shù): 110)
下載附件
2016-9-27 20:15 上傳
0.png
(61.5 KB, 下載次數(shù): 90)
下載附件
2016-9-27 20:15 上傳
所有資料打包下載:
4乘4按鍵控制燈.zip
(52.31 KB, 下載次數(shù): 79)
2016-9-27 20:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -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--);
}
復(fù)制代碼
作者:
lehigh
時(shí)間:
2016-12-1 23:19
感謝分享,學(xué)習(xí)到了
作者:
devlinFan
時(shí)間:
2017-5-14 12:42
謝謝分享
作者:
ffhbfy
時(shí)間:
2020-12-24 20:28
有沒(méi)有詳細(xì)解釋?zhuān)浚?hr noshade size="2" width="100%" color="#808080">
作者:
ffhbfy
時(shí)間:
2020-12-24 20:31
求大神解釋代碼
作者:
g'f'yeu'y
時(shí)間:
2021-4-19 14:45
代碼有注釋嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1