学习日志 姓名: 徐雪 日期: 2017.07.16
今日学习任务 | 单片机的概念,组成结构 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
| 今日任务已按计划完成。在老师的指导下编写了 独立按键,矩阵按键,LED灯显示多样化以及蜂鸣器的实现等程序。
|
今日开发中遇到的问题汇总 | 管脚使用冲突 |
今日未解决问题 | 无 |
今日开发收获 | 1单片机的最小系统:电源,晶振,复位电路,MCU; 2按键分为独立按键,矩阵按键; 3判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
|
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) | 在规定时间完成了简单编程以及调试,与同学合作解决了软件安装问题。 |
其他 | 无 |
|
|
通过矩阵按键控制蜂鸣器
#include<reg51.h>
sbit Beep=P2^3;
void delay( int x)
{
int i;
while(x--)
{
for(i=0;i<100;i++);
}
}
void main()
{
int key;
while(1)
{
key=0;
Beep=1;
P3=0xf0;if(P3!=0)
{
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);break;}
case 2:{Beep=0;delay(5);break;}
case 3:{Beep=0;delay(10);break;}
case 4:{Beep=0;delay(15);break;}
case 5:{Beep=0;delay(20);break;}
case 6:{Beep=0;delay(25);break;}
case 7:{Beep=0;delay(30);break;}
case 8:{Beep=0;delay(35);break;}
case 9:{Beep=0;delay(40);break;}
case 10:{Beep=0;delay(45);break;}
case 11:{Beep=0;delay(50);break;}
case 12:{Beep=0;delay(55);break;}
case 13:{Beep=0;delay(60);break;}
case 14:{Beep=0;delay(65);break;}
case 15:{Beep=0;delay(70);break;}
case 16:{Beep=0;delay(75);break;}
}
}
}