学习日志 | 姓名:孙双 日期:2018/7/17 |
今日学习任务 | 用按键输入0~255的数,转化成二进制,用8个LED灯表示。
|
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 完成了代码,但功能上有缺陷。
|
今日开发中出现的问题汇总 | 将键盘上的数转化成二进制比较 困难 |
今日未解决问题 | 无 |
今日开发收获 | 学会了在矩阵按键上输入十进制数,也学会了将十进制数转化为二进制,并用LED灯表示。
|
自我评价
(是否按开发规范完成
既定任务,需要改进的地方,与他人合作效果等) | 有点难度,编程能力有待提高 |
其他 |
#include<reg51.h>
#include<math.h>
#include<reg51.h>
#include<reg51.h>
#include<stdio.h>
void Delay1ms(int ms)
{
int i;
while(ms--)
{
for(i = 0;i<100;i++);
}
}
main(void)
{
unsigned char Mask,ScanCode,Line,Col,i;
while(1)
{
P3 = 0xff;
Line = 1;
Mask = 0x01;
for(i = 0;i<4;i++)
{
Col = 0;
P3 = ~Mask;
ScanCode = P3&0xf0;
switch(ScanCode)
{
case 0xe0:Col = 1;
break;
case 0xd0:Col = 2;
break;
case 0xb0:Col = 3;
break;
case 0x70:Col = 4;
break;
default:Col = 0;
break;
}
if(Col>0)
{
switch(Line)
{
case 1:P0 = 0x01;
break;
case 2:P0 = 0x02;
break;
case 3:P0 = 0x04;
break;
case 4:P0 = 0x08;
break;
default:P0 = 0x00;
break;
}
switch(Col)
{
case 1:P0 |= 0x10;
break;
case 2:P0 |= 0x20;
break;
case 3:P0 |= 0x40;
break;
case 4:P0 |= 0x80;
break;
default:P0 = 0x00;
break;
}
while(1)
{
ScanCode = P3&0xf0;
if(ScanCode == 0xf0)
{
Delay1ms(60);
if(ScanCode == 0xf0)
{
break;
}
}
}
Delay1ms(250);
P0 = 0x00;
}
Mask<<=1;
Line++;
}
}
}