学习日志 |
苏嵌实训 姓名:傅圣泽 日期:2018.7.18 |
|
今日学习任务 |
编程实现一个计算器实现加减乘除功能 |
|
今日任务完成情况 (详细说明本日计划是否按计划完成,开发的代码量) |
复习与巩固了一些单片机知识,也学习到了一些新的东西。在不断尝试与摸索中,尽管困难重重,但在不断的实验下最终功能大体实现。 |
|
今日中发现问题汇总 |
在键盘输入时,对于如何区分并记录第一次和第二次输入的数据有着不小困难。 |
|
今日未解决问题 |
|
|
今日开发收获 |
在不断摸索与尝试中一步步的向前,尽管过程坎坷,但收获不小,对于c51单片机的实际应用能力有着较大的提升。同时也培养了耐心和细心。 |
|
自我评价
|
今天按照老师要求来完成任务。尽管过程有着不小挫折,在尝试与讨论中,最后基本实现的功能,但还有待加强基础知识以及实践能力。
|
|
作业 |
#include <reg51.h>
sbit wei = P2^1;
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 = 0xfe; P0 = table[n]; } else if (n >= 10 && n <= 99) { P2 = 0xfe; P0 = table[n / 10]; delay(); P2 = ~(1 << 1); P0 = table[n % 10]; delay(); } else if (n >= 100 && n <= 999) { P2 = 0xfe; P0 = table[n / 100]; delay(); P2 = ~(1 << 1); P0 = table[(n % 100) / 10]; delay(); P2 = ~(1 << 2); P0 = table[((n % 100) % 10)]; delay(); }
}
int main() { int i, xianshi = 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: //= xianshi = 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((xianshi == 1)&&(flag1 == 1)) { display(num1+num2); }
if((xianshi == 1)&&(flag2 == 1)) { display(num2-num1); }
if((xianshi == 1)&&(flag3 == 1)) { display(num1*num2); }
if((xianshi == 1)&&(flag4 == 1)) { display(num2/num1); } } return 0; }
|
苏嵌实训
猜你喜欢
转载自blog.csdn.net/woshinibaba6/article/details/81103818
今日推荐
周排行