学习任务 | 回顾单片机各模块的知识,并进行了一些程序的编写。 |
完成情况 | 了解了一些基本程序的写法。编写了关于流水灯,蜂鸣器以及行列式键盘的代码。 |
问题汇总 | 重点是对单片机各管脚的编程控制方法,利用其实现各种功能。 |
未解决问题 | |
开发收获 | 学到了一些新的知识点,学会了编程过程中的一些思路。 |
自我评价 | 代码写的有些少,知识点遗忘过多,导致写代码不流畅,甚至出现不会写,无从下笔的情况。 |
#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(100);
break;
case 2:
Beep = 0;
delay(2);
Beep = 1;
delay(200);
break;
case 3:
Beep = 0;
delay(3);
Beep = 1;
delay(300);
break;
case 4:
Beep = 0;
delay(4);
Beep = 1;
delay(400);
break;
case 5:
Beep = 0;
delay(5);
Beep = 1;
delay(500);
break;
case 6:
Beep = 0;
delay(6);
Beep = 1;
delay(666);
break;
case 7:
Beep = 0;
delay(7);
Beep = 1;
delay(777);
break;
case 8:
Beep = 0;
delay(8);
Beep = 1;
delay(800);
break;
case 9:
Beep = 0;
delay(9);
Beep = 1;
delay(900);
break;
case 10:
Beep = 0;
delay(250);
Beep = 1;
delay(900);
break;
case 11:
Beep = 0;
delay(213);
Beep = 1;
delay(900);
break;
case 12:
Beep = 0;
delay(10);
Beep = 1;
delay(1000);
break;
case 13:
Beep = 0;
delay(20);
Beep = 1;
delay(1200);
break;
case 14:
Beep = 0;
delay(30);
Beep = 1;
delay(1300);
break;
case 15:
Beep = 0;
delay(40);
Beep = 1;
delay(1314);
break;
case 16:
Beep = 0;
delay(50);
Beep = 1;
delay(650);
break;
}
}
return 0;
}