苏嵌 项目实战
学习日志 姓名: 高瑞 日期:2018.7.17
今日学习任务
键盘输入一个数字 比如123 按一下确认 用LED显示它的二进制 不一定是三位数 一位数两位数都行
今日任务完成情况
代码在昨天按键设计的基础上基本完成
今日开发中出现的问题汇总
有时候LED的显示会出现问题显示不出来
今日未解决问题
LED不能稳定显示要显示的二进制数
今日开发收获
使用switch case 用代码控制led灯
自我评价
继续努力 明天仔细听老师讲解
其他
#include<reg51.h>
#define LED P0
int main()
{
int a,b,c,key;
LED = 0xff;
key = 0;
P3 = 0xf0;
while(1)
{
key = 0;
P3 = 0xf0;
if(P3 != 0xf0)
{
switch(P3)
{
case 0xe0: c = 0; break;
case 0xd0: c = 1; break;
case 0xb0: c = 2; break;
case 0x70: c = 3; break;
}
P3 = 0x0f;//判断哪一行被按下
switch(P3)
{
case 0x0e: c += 0;P3 = 0x0f; break;
case 0x0d: c += 4;P3 = 0x0f; break;
case 0x0b: c += 8;P3 = 0x0f; break;
case 0x07: c += 12;P3 = 0x0f; break;
}
if(c==15)
LED=0xff;//清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 += 0;P3 = 0x0f; break;
case 0x0d: key += 4;P3 = 0x0f; break;
case 0x0b: key += 8;P3 = 0x0f; break;
case 0x07: key += 12;P3 = 0x0f; break;
}
a=key*100; //百位
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 += 0;P3 = 0x0f; break;
case 0x0d: key += 4;P3 = 0x0f; break;
case 0x0b: key += 8;P3 = 0x0f; break;
case 0x07: key += 12;P3 = 0x0f; break;
}
b=key*10; //十位
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 += 0;P3 = 0x0f; break;
case 0x0d: key += 4;P3 = 0x0f; break;
case 0x0b: key += 8;P3 = 0x0f; break;
case 0x07: key += 12;P3 = 0x0f; break;
}
LED = ~(0x00+key+a+b); //总和
}
return 0;
}
}