利用51单片机制作LCM显示的简单计算器程序 C的

我做好了4*4的矩阵键盘,和lcm对应上各个键值,现就差重要的计算程序。
各位大侠给点程序我参考下

楼主,我给你一个代码,你参考一下和验证一下!
用51单片机做的简单计算器的程序.

/**********************按键处理*******************/

void KeyDeal(unsigned char Key)

{

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(K<10) //数字键

{

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-0x88

KeyDeal(Key); //对扫描到的键盘编码进行转换处理,变成数据键盘0-

display();

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-14
只做过做过数码管的计算器
相似回答
大家正在搜