苏嵌 项目实战
学习日志 姓名:高瑞 日期:2018.7.16
今日学习任务 在proteus环境下进行LED灯 蜂鸣器 按键相关仿真
今日任务完成情况
掌握了如何在proteus环境下进行点亮一排LED灯 一盏LED灯 1 2两盏灯交替点亮 流水灯的仿真
掌握如何使蜂鸣器震荡仿真 使用delay函数调整震荡频率
掌握4个独立键盘 控制4盏灯
掌握4*4的矩阵键盘 控制LED灯
今日开发中出现的问题汇总
在单片机流水灯的仿真中 第一盏灯点亮就不会熄灭
可以在循环之前设置初始状态 令P1=0xff
即可在第二次循环前 将8盏灯都熄灭达到要求
今日未解决问题
今日开发收获
单片机的仿真最重要的就是仔细 单片机的操作流程比较多 每做错一步都不会出现最后的结果
所以仔细认真是必要的
当仿真出现问题最重要的就是检查源程序
自我评价
努力
其他
#include <reg51.h>
sbit Beep=P2^3;
int key,i;
/*unsigned char code CharCode[]=
{
0xc0, 0xf9, 0xa4,0xb0,0x99, 0x92,0x82,0xf8,
0x80, 0x90, 0x88, 0x83, 0xc6,0xa1,0x86,0x8e
}; */
void delay(int x)
{
while(x--)
{
for(i=0;i<200;i++);
}
}
int main()
{
while (1)
{
key = 0;
Beep=1;
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);
break;
case 2:
Beep = 0;
delay(20);
break;
case 3:
Beep= 0;
delay(40);
break;
case 4:
Beep = 0;
delay(80);
break;
case 5:
Beep = 0;
delay(100);
break;
case 6:
Beep= 0;
delay(120);
break;
case 7:
Beep = 0;
delay(150);
break;
case 8:
Beep = 0;
delay(180);
break;
}
}
return 0;
}
|