今日学习任务 |
单片机I/O接口,仿真软件的学习 |
今日任务完成情况 |
流水灯的实现,利用蜂鸣器发出不同的声音, 用按键控制灯的亮与不亮 |
今日开发中出现的问题汇总 |
仿真软件中的接口定义错误 |
今日未解决问题 |
无 |
今日开发收获 |
学会了单片机的I/O接口与外部设备的连接方式 |
自我评价 |
以前一部分没有听懂的学会了 |
其他 |
无 |
#include <reg51.h>
#define LED P0
sbit Beep = P2^3;
void delay(int x)
{
int i;
while(x--)
{
for(i=0;i<100;i++);
}
}
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit LED4 = P0^3;
int key;
int main()
{
while (1)
{
key = 0;
LED = 0xff;
P3 = 0xf0;//判断哪一列被按下
if(P3 != 0xf0)
{
switch(P3)
{
case 0xe0: key = 0; break;
case 0xd0: key = 1; break;
case 0xb0: key = 2; break;
case 0x70: key = 3; break;
}
P3 = 0x0f;//判断哪一行被按下
switch(P3)
{
case 0x0e: key += 1; break;
case 0x0d: key += 5; break;
case 0x0b: key += 9; break;
case 0x07: key += 13; break;
}
}
switch (key)
{
case 1:
Beep = 0;
delay(1);
Beep = 1;
delay(2);
break;
case 2:
Beep = 0;
delay(3);
Beep = 1;
delay(4);
break;
case 3:
Beep = 0;
delay(5);
Beep = 1;
delay(45);
break;
case 4:
Beep = 0;
delay(7);
Beep = 1;
delay(10);
break;
case 5:
Beep = 0;
delay(11);
Beep = 1;
delay(78);
break;
case 6:
Beep = 0;
delay(56);
Beep = 1;
delay(108);
break;
case 7:
Beep = 0;
delay(16);
Beep = 1;
delay(678);
break;
case 8:
Beep = 0;
delay(23);
Beep = 1;
delay(118);
break;
case 9:
Beep = 0;
delay(56);
Beep = 1;
delay(1078);
break;
case 10:
Beep = 0;
delay(45);
Beep = 1;
delay(567);
break;
case 11:
Beep = 0;
delay(234);
Beep = 1;
delay(45);
break;
case 12:
Beep = 0;
delay(234);
Beep = 1;
delay(456);
break;
case 13:
Beep = 0;
delay(1345);
Beep = 1;
delay(23);
break;
case 14:
Beep = 0;
delay(93);
Beep = 1;
delay(3452);
break;
case 15:
Beep = 0;
delay(2341);
Beep = 1;
delay(2341);
break;
case 16:
Beep = 0;
delay(50);
Beep = 1;
delay(500);
break;
}
}
return 0;
}