学习日志 姓名: 成盛 班级:通卓161
今日学习任务 | 单片机的概念及特点,各种单片机之间的区别 LED灯 、蜂鸣器、独立按键、矩阵按键、 |
今日任务完成情况 | LED流水灯及各种花式显示、蜂鸣器的响动及 如何实现不同的声音、按键控制 |
今日开发中出现的问题汇总 | 最小系统、按键的判断 |
今日未解决问题 | 无 |
今日开发收获 | 最小系统包括:电源电路、晶振电路、复位电路、单片机。 流水灯可以用移位实现。 如何控制蜂鸣器的声音。 |
自我评价 | 一般 |
其他 | 无 |
#include<reg51.h>
sbit Beep = P2^3;
int key;
void delay(int x)
{
int i;
while(x--)
{
for(i = 0; i < 100 ; i++);
}
}
int main()
{
while (1)
{
key = 0;
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(100); Beep = 1; delay(13);
break;
case 2:
Beep = 0; delay(20); Beep = 1; delay(10);
break;
case 3:
Beep = 0; delay(345); Beep = 1; delay(15);
break;
case 4:
Beep = 0; delay(488); Beep = 1; delay(1);
break;
case 5:
Beep = 0; delay(555); Beep = 1; delay(14);
break;
case 6:
Beep = 0; delay(600); Beep = 1; delay(12);
break;
case 7:
Beep = 0; delay(73); Beep = 1; delay(14);
break;
case 8:
Beep = 0; delay(834); Beep = 1; delay(15);
break;
case 9:
Beep = 0; delay(93); Beep = 1; delay(14);
break;
case 10:
Beep = 0; delay(1044); Beep = 1; delay(19);
break;
case 11:
Beep = 0; delay(11); Beep = 1; delay(1);
break;
case 12:
Beep = 0; delay(124); Beep = 1; delay(1);
break;
case 13:
Beep = 0; delay(133); Beep = 1; delay(1);
break;
case 14:
Beep = 0; delay(1444); Beep = 1; delay(1);
break;
case 15:
Beep = 0; delay(1665); Beep = 1; delay(1);
break;
case 16:
Beep = 0; delay(1466); Beep = 1; delay(1);
break;
}
}
return 0;
}