基于51单片机的简单计算器制作。
2016-02-25 14:17
基于单片机的简单计算器设计与仿真 有需要的看一看,不收积分。
2015-11-20 16:46
LCD液晶显示的51单片机简单计算器概述方案矩阵键盘输入映射与设计原理软件设计软件设计思路软件代码概述LCD液晶显示的51单片机
2021-11-18 06:53
LCD液晶显示的51单片机简单计算器资料分享
2023-04-21 09:21
LCD液晶显示的51单片机简单计算器概述方案矩阵键盘输入映射与设计原理软件设计软件设计思路软件代码概述LCD液晶显示的51单片机
2021-11-11 20:51
2012-10-25 21:40
大家谁有基于单片机简单计算器的代码和仿真图,用四位数码管显示,能实现加减乘除,分享一下吧,谢谢!
2016-01-05 00:35
我是新手想做一个stc15f2k60s2d的简单计算器,想要按键想要按一下数字键显示一个数,再按数字键显示2位数依次类推,还有我做的运算部分结果不能在数码管上面显示。求大神帮忙解答一下,还有归零键是不是所有都置1呀,我已经卡了好几天了。
2018-02-13 15:36
这是源程序,怎么把按键按下后蜂鸣器响的程序加进去啊/*S1 S2 S3 S4分别是123+S5 S6 S7 S8分别是456-S9 S10 S11 S12分别是789*S13 S14 S15 S16分别是0 CLR = /*//* 实现两个数的运算,每个数的位数至少可以八位*/#includetypedef unsigned char uint8;typedef unsigned int uint16;***it rw=P2^5;***it rs=P2^6;***it e=P2^7;***it led=P3^7;***it been=P2^0;uint8 key,num;uint8 fuhao;//定义具体的那个符号,是加减还是乘除。uint8 flag;//定义有没有按下符号键,这个是统称long a,b,c,d;//定义运算数据的第一个和第二个及等于的数变量uint8 k; //定义小数点后面显示的位数uint8 biao;void delay1(unsigned int i) ;void beeping(){ been= 0; delay1(5); been= 1; delay1(5);} void delay1(unsigned int i){ char j; for(i; i > 0; i--)for(j = 200; j > 0; j--);}uint8 dat1[]={1,2,3,0x2b-0x30, 4,5,6,0x2d-0x30, 7,8,9,0x2a-0x30, 0,0x01-0x30,0x3d-0x30,0x2b-0x30 };//保存显示的数据void delay(uint16 i){while(i--);}void lcdwrc(uint8 c){delay(1000);rs=0;rw=0;e=0;P0=c;e=1;delay(1000);e=0;}void lcdwrd(uint8 dat){delay(1000);rs=1;rw=0;e=0;P0=dat;e=1;delay(1000);e=0;rs=0;}void lcdinit(){delay(1500);lcdwrc(0x38);delay(500);lcdwrc(0x38);delay(500);lcdwrc(0x38);delay(500);lcdwrc(0x38);lcdwrc(0x08);lcdwrc(0x01);lcdwrc(0x06);lcdwrc(0x0c);key=0;num=0;flag=0;fuhao=0;a=0;b=0;c=0;d=0;biao=0;led=0;}void keyscan(){P1=0xfe;//令第一行为0,然后判断是哪一列按下if(P1!=0xfe){delay(1000);if(P1!=0xfe){key=P1&0xf0;switch(key){case 0xe0: num=0;;break;//1case 0xd0: num=1;break;//2case 0xb0: num=2; break;//3case 0x70: num=3; break;//加}}while(P1!=0xfe);if(num==0||num==1||num==2) //确认第一行的数1,2,3{if(flag==0) //没有按下符号键{ led=1;a=a*10+dat1[num];}else{ led=0;b=b*10+dat1[num];}}if(num==3){led=0;flag=1;fuhao=1;//加号+}lcdwrd(0x30+dat1[num]);}P1=0xfd;//令第二行为0,判断是哪一列按下if(P1!=0xfd){delay(1000);if(P1!=0xfd){key=P1&0xf0;switch(key){case 0xe0: num=4;break;//4case 0xd0: num=5;break;//5case 0xb0: num=6;break;//6case 0x70: num=7;break;//减—}}while(P1!=0xfd);if(num==4||num==5||num==6){if(flag==0) //没有按下符号键{led=1;a=a*10+dat1[num];}else{led=0;b=b*10+dat1[num];}}else{flag=1;fuhao=2;//带表减号}lcdwrd(0x30+dat1[num]);}P1=0xfb; //令第三行为0,判断哪一列按下if(P1!=0xfb){delay(1000);if(P1!=0xfb){key=P1&0xf0;switch(key){case 0xe0: num=8; break;//7case 0xd0: num=9;break;//8case 0xb0: num=10;break;//9case 0x70: num=11;break;//乘*}}while(P1!=0xfb);if(num==8||num==9||num==10){if(flag==0) //没有按下符号键{led=1;a=a*10+dat1[num];}else{led=0;b=b*10+dat1[num];}}else{flag=1;fuhao=3;//带表乘号*}lcdwrd(0x30+dat1[num]);}P1=0xf7; //令第四行为0,判断哪一列按下if(P1!=0xf7){delay(1000);if(P1!=0xf7){key=P1&0xf0;switch(key){case 0xe0: num=12; break;//0case 0xd0: num=13; break;//清除rstcase 0xb0: num=14;break;//等号=case 0x70: num=15;break;//除/}}while(P1!=0xf7);switch(num){case 12: if(flag==0) //没有按下符号键{led=1;a=a*10+dat1[num];lcdwrd(0x30);}else{led=0;b=b*10+dat1[num];lcdwrd(0x30);}break;case 13: lcdwrc(0x01);//清屏指令a=0;b=0;flag=0;fuhao=0;break;case 15:flag=1;fuhao=4;lcdwrd(0x2f);//除号/break;case 14: if(fuhao==1)//加{lcdwrc(0x4f+0x80);lcdwrc(0x04);//设置光标左移,屏幕不移动c=a+b;while(c!=0) //一位一位显示{lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置c=c/10;//取前面的结果数据}lcdwrd(0x3d); //显示等于号=a=0;b=0;flag=0;fuhao=0;//全部清除为0}if(fuhao==2)//减{lcdwrc(0x4f+0x80);lcdwrc(0x04);//设置光标左移,屏幕不移动if(a>b)c=a-b;elsec=b-a;while(c!=0) //一位一位显示{lcdwrd(0x30+c%10);//显示结果的最后一位在0x4f的位置c=c/10;//取前面的结果数据}if(a
2017-03-21 21:39
基于单片机的智能计算器,里面有相关程序
2017-04-05 10:24