苏嵌 项目实战
学习日志 姓名:高瑞 日期: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; } |