|
那個寫的第一個矩陣按鍵按下P2^0亮。
第二個矩陣按鍵按下流水燈。
第三個矩陣按鍵按下蜂鳴器響
第四個矩陣按鍵按下數(shù)碼管顯示666程序
下面是程序,大神幫忙看看
#include"reg52.h"
#include"intrins.h"
typedef unsigned int u16; //typedef±èdefine¸ü°2è«
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit led=P2^0;
sbit beep=P1^5;
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
u16 num; //¶¨òåò»¸ö諾ֱäá¿
//¶¨òåÑóê±oˉêy
void delay_ms(u16 i)
{
int n;
while(i--)
{
for(n=0;n<125;n++)
{
;
}
}
}
//¾ØÕó°′¼üé¨Ãèoˉêy
void zhshaomiao()
{
u16 a;
P1=0x0f;
if(P1!=0X0F)delay_ms(6);//Ïû¶¶
{if(P1!=0X0F)
switch(P1) //è·¶¨áD
{
case(0X07):num=1;break;
case(0X0b):num=2;break;
case(0X0d):num=3;break;
case(0X0e):num=4;break;
}
P1=0XF0;
if(P1!=0XF0)
switch(P1) /*ÔúáDè·¶¨μÄÇé¿öÏÂè·¶¨DD£¬2¢è·¶¨×¼è·Î»Öã¬èç1ûêÇμú
ò»DDÔònum2»±ä£¬èôêÇμú¶tDDÔònum¼ó4£¬òà′ÎààíÆ*/
{
case(0X70):num=num;break;
case(0Xb0):num=num+4;break;
case(0Xd0):num=num+8;break;
case(0Xe0):num=num+12;break;
}
while((a<100)&&(P1!=0xf0)) //¼ì2aËéêÖ
{
delay_ms(1);
a++;
}
}
}
//μãááá÷Ë®μÆoˉêy
void liushuiled()
{
int i;
P2=0xfe;
delay_ms(20);
for(i=0;i<7;i++)
{
P2=_crol_(P2,1);
delay_ms(20);
}
for(i=0;i<7;i++)
{
P2=_cror_(P2,1);
delay_ms(20);
}
}
//êyÂë1üÏÔê¾666oˉêy
void suma666()
{
int i;
int a=2;
while(a--)
{
for(i=0;i<3;i++)
{
switch(i)
{
case(0):LSA=0;LSB=0;LSC=0;break;
case(1):LSA=1;LSB=0;LSC=0;break;
case(2):LSA=0;LSB=1;LSC=0;break;
}
P0=smgduan[6];
delay_ms(1);
}
}
}
//·äÃùÆ÷Ïìoˉêy
void fengming()
{
int a=5;
beep=~beep;
delay_ms(100);
}
void main()
{
while(1)
{
zhshaomiao();//ÅD¶ÏÄĸö°′¼ü°′ÏÂ
if(num==1)
{P0=0x00;P2=0xff;;led=0;}//Ïû3y֮ǰ°′¼üμÄó°Ïì2¢Ö′DD¸Ã°′¼ü°′ÏÂó|óDμĽá1û
else if(num==2)
{P0=0x00;P2=0xff;;liushuiled();}
else if(num==3)
{P0=0x00;P2=0xff;fengming();}
else if(num==4)
{P0=0x00;P2=0xff;;suma666();}
else
delay_ms(1);//èç1ûêÇÆäËû°′¼ü°′ÏÂÔòÑóê±1ms£¬Ïàμ±óú2»Ö′DD
}
} |
|