用单片机制作简单计算器的源程序
时间:10-20
来源:互联网
点击:
发一个用51单片机做的简单计算器的程序./**********************按键处理*******************/void KeyDeal(unsigned char Key){ //unsigned char n,p;if(Key!=0) //判断 有无按键按下。{switch(Key){ //以下定义0~9的数字键。case 0x11: K=0; break;case 0x21: K=1; break;case 0x41: K=2; break;case 0x81: K=3; break;case 0x12: K=4; break;case 0x22: K=5; break;case 0x42: K=6; break;case 0x82: K=7; break;case 0x14: K=8; break;case 0x24: K=9; break;//以下+。-,*,/ 键case 0x44: K=10; break; //加case 0x84: K=11; break; //减case 0x18: K=12; break; //乘case 0x28: K=13; break; //除case 0x48: K=14; break; //等于case 0x88: K=15; break; //清除default: break;}if(K10) //数字键{ d[2]=d[1];d[1]=d[0];d[0]=K;c[2]=c[1];c[1]=c[0];c[0]=b[K];//以上数组数据赋值是保证数字按键入顺序移位。}if(K==10) //加{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=1;c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0; }if(K==11)//减{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=2;c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;} if(K==12)//乘{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=3;c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;}if(K==13)//除{ m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=4;c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;}if(K==14) //此处是按 =键 { n=d[2]*100+d[1]*10+d[0]; if (p==1) shu=m+n;if (p==2) shu=m-n; if (p==3) shu=m*n; if (p==4) shu=m/n;c[4]=b[shu/10000]; c[3]=b[shu%10000/1000];c[2]=b[shu%1000/100];c[1]=b[shu%100/10];c[0]=b[shu%10]; //C[]存的是 计算结果 。}if(K==15) // 此处是按 清除键 {d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;shu=0;c[4]=b[shu/10000]; c[3]=b[shu%10000/1000];c[2]=b[shu%1000/100];c[1]=b[shu%100/10];c[0]=b[shu%10]; }}}void main(){ while(1){Key = Keycan();//键盘扫描获取一次按键的编码0x11-0x88KeyDeal(Key); //对扫描到的键盘编码进行转换处理,变成数据键盘0-display();}
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)