用52单片机和振动传感器,一共用三个按键,分别为:S1,S2,S3。这三个键的功能分别是:按下S1,进入到工作状态中,当振动传感器首次受到外界的振动时,蜂鸣器就会鸣响10秒,若第二次再... 用52单片机和振动传感器,一共用三个按键,分别为:S1,S2,S3。这三个键的功能分别是:按下S1,进入到工作状态中,当振动传感器首次受到外界的振动时,蜂鸣器就会鸣响10秒,若第二次再发生振动,蜂鸣器就会长响一分钟。按下S2,工作状态就会解除。按下S3,蜂鸣器就会鸣响30秒。
这是单片机实物图
enum { eInit, eWork, eAlarm1, eAlarm2 } eState = eInit;
while ( 1 )
{
switch( eState )
{
case eInit:
if ( KeyS1 )
{
eState = eWork;
}
else if ( KeyS2 )
{
}
else if ( KeyS3 )
{
ibeep = 30;
}
break;
case eWork:
if ( KeyJD )
{
ibeep = 10; // 蜂鸣器鸣响时间
eState = eAlarm1;
}
else if ( KeyS1 )
{
}
else if ( KeyS2 )
{
eState = eInit; // 解除工作状态
}
else if ( KeyS3 )
{
ibeep = 30;
}
else
{
}
break;
case eAlarm1:
if ( KeyJD )
{
ibeep = 60;
eState = eAlarm2;
}
else if ( KeyS1 )
{
}
else if ( KeyS2 )
{
eState = eInit;
}
else if ( KeyS3 );
{
ibeep = 30;
}
break;
case eAlarm2:
if ( KeyJD )
{
ibeep = 60;
eState = eAlarm2;
}
else if ( KeyS1 )
{
}
else if ( KeyS2 )
{
eState = eInit;
}
else if ( KeyS3 );
{
ibeep = 30;
}
break;
}
if ( ibeep > 0 )
{
// 响铃1秒钟;
-- ibeep;
}
}搞不懂你的外部接口,你说的这些用状态机做,虽然有点繁琐,但好在条理清楚,比较好改好调。