学习日志 | 苏嵌项目实训 姓名:梁轩齐 日期:2018.7.12 | |
今日学习任务 | 回顾了一些单片机数码管以及行列式键盘的知识,并进行了一些程序的编写。 | |
今日任务完成情况
| 今天我们按计划回顾了一些单片机的知识,了解了一些基本程序的写法。编写了关于数码管以及行列式键盘的代码。任务基本完成。 | |
今日中发现问题汇总 | 对于单片机的知识,会有遗忘的问题,很多知识点都记不起来了,在写代码方面有些吃力,很难自主的编写一些代码。程序很难完成。有些简单的算法也很少有能短时间内完成,代码写的有些少,知识点遗忘过多,导致写代码不流畅,甚至出现不会写,无从下笔的情况。 | |
今日未解决问题 | 锁存器 | |
今日开发收获 | 对单片机知识有了大体的回顾,大概想起了关于单片机的一些知识体系,可以使用C语言来编写一些简单程序,也学到了一些新的知识点,学会了编程过程中的一些思路,可以进行一些简单的编程。 | |
自我评价
| 今天我按照开发任务规范来完成既定任务。在完成过程中发现了很多问题,也都及时的加以改正,在以后的时间里我一定会加以改正与完善,争取做到更好。今日开发中没有过多的团队合作。 | |
其他 | #include <reg51.h>
sbit wei = P2^2;
int key = 0, num1 = 0, num2 = 0;
//共阴数码管表 unsigned char code table[] = {0x3f, 0x06 , 0x5b , 0x4f , 0x66 , 0x6d, 0x7d , 0x07 , 0x7f , 0x6f };
void delay() { int x = 50, i;
while (x--) { for (i = 0; i < 15; i++); } }
void delay1() { int x = 100,i; while(x--) { for(i = 0;i < 100;i++); } }
void KeyScan() { P1 = 0xf0; //判断哪一列被按下 if(P1 != 0xf0) { switch(P1) { case 0xe0: key = 0; break; case 0xd0: key = 1; break; case 0xb0: key = 2; break; case 0x70: key = 3; break; } P1 = 0x0f;//判断哪一行被按下 switch(P1) { case 0x0e: key += 1; break; case 0x0d: key += 5; break; case 0x0b: key += 9; break; case 0x07: key += 13; break; } while (P1 != 0x0f); } }
void display(int n) { if (n >= 0 && n <= 9) { P2 = 0xfd; P0 = table[n]; } else if (n >= 10 && n <= 99) { P2 = 0xfd; P0 = table[n / 10]; delay(); P2 = 0xfb; P0 = table[n % 10]; delay(); } else if (n >= 100 && n <= 999) { P2 = 0xfd; P0 = table[n / 100]; delay(); P2 = 0xfb; P0 = table[(n % 100) / 10]; delay(); P2 = 0xf7; P0 = table[((n % 100) % 10)]; delay(); }
}
int main() { int display_flag = 0,display_flag1 = 0; int display_flag2 = 0,display_flag3 = 0,display_flag4 = 0; int flag1 = 0,flag2 = 0,flag3 = 0,flag4 = 0; int j = 10000; while (1) { key = 0; KeyScan(); //检测按键
switch(key) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: num1 = num1 * 10 + key; break; case 10: num1 = num1 * 10 + 0; break; case 11: //+ display_flag1 = 1; flag1 = 1; break; case 12: //- display_flag2 = 1; flag2 = 1; break; case 13: //* display_flag3 = 1; flag3 = 1; break; case 14: /// display_flag4 = 1; flag4 = 1; break; case 15: //= display_flag = 1; break; } if ((display_flag1 == 1)||(display_flag2 == 1)||(display_flag3 == 1)||(display_flag4 == 1)) { display(num1); delay1(); num2 = num1; num1 = 0; display_flag1 = 0; display_flag2 = 0; display_flag3 = 0; display_flag4 = 0; } if(display_flag == 0) { display(num2); }
if((display_flag == 1)&&(flag1 == 1)) { display(num1+num2); }
if((display_flag == 1)&&(flag2 == 1)) { display(num2-num1); }
if((display_flag == 1)&&(flag3 == 1)) { display(num1*num2); }
if((display_flag == 1)&&(flag4 == 1)) { display(num2/num1); } } return 0; } | |