设计思路:
①:按下按钮1,左转向灯闪烁。
②:按下按钮2,右转向灯闪烁。
③;按键1,2同时按下,开启双闪(同频率)
仿真元器件清单:
AT89C51
BUTTON
CAP
CRYSTAL
RES
LED-BLUE
LED-YELLOW
SW-SPDT
实现程序:
#include<reg51.h>
#define time 20000
sbit LED_left1=P0^0;
sbit LED_left2=P0^1;
sbit LED_right1=P0^2;
sbit LED_right2=P0^3;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
void delay(unsigned int i)
{ while(i--);}
void main()
{
while(1)
{
P3_0=1;
P3_1=1;
// 定义p3输入口表达式,并置1
switch(P3)
{
case 0xfc:
// 1111 1100
LED_left1=0;LED_left2=0;
LED_right1=0;LED_right2=0;
break;
// 打开双闪
case 0xfd:
// 1111 1101
LED_right1=0;LED_right2=0;
LED_left1=1;LED_left2=1;
break;
// p3,0端口置0时,打开右转向灯,蓝灯
case 0xfe:
// 1111 1110
LED_left1=0;LED_left2=0;
LED_right1=1;LED_right2=1;
break;
// p3,1端口置1时,打开左转向灯,黄灯
case 0xff:
// 1111 1111
LED_left1=1;LED_left2=1;
LED_right1=1;LED_right2=1;
break;
// 关闭转向灯
}
delay(20000);
LED_left1=1;LED_left2=1;
LED_right1=1;LED_right2=1;
delay(20000);
}
}
Comments NOTHING