总算写核算器了,其实核算器老早就写好了的,仅仅那会一向在忙考试还有实验室项目,所以没能空出时刻来写博客。现在寒假在家,总算能够静心的学点东西了。
这个程序的全体思路很简略,主要是一些细节的处理。
思路是,先矩阵键盘扫描,监测运算符号按下,存储两个运管用,核算结果,整个进程的实时显现。
先是矩阵键盘扫描,我曾经一向用的郭天祥教的办法,这种办法很好了解,可是缺陷是代码太长了,所以我上网去找一种简略的矩阵键盘扫描。(比较于静心苦想,有时候去网上找办法也是不错的)
void keyscan()
{
uchar h,l;
if(keypress())
{
P3=0X0F;
_nop_();
h=P3;
h&=0X0F;//读取按键地点‘行’
P3=0XF0;
_nop_();
_nop_();
l=P3;
l&=0XF0;//读取按键地点‘列’
key=h+l;//最终相加作为SWITCH CASE的挑选
//这种扫描进程很清楚明晰是吧
while(keypress());
}
}
我的keyscan()函数就出来了。。。
把每次按键的数存入数组,然后一向显现数组成员就能够到达实时显现输入数字的作用了。
void jisuan(int n,int l,uchar yusuan)
{
int a=0,b=0,c=0,result;
uchar x;
for(x=0;x
{
a+=(Input[x]-0)*pow(10,n-x-1);
}
for(x=n+1;x
{
b+=(Input[x]-0)*pow(10,l-x-1);
}
// write_num(0,1,a);
// write_num(0,2,b);
switch(yusuan)
{
}
}
这个便是核算函数了,里边的
a+=(Input[x]-0)*pow(10,n-x-1);
b+=(Input[x]-0)*pow(10,l-x-1);
这是用来核算输入数值的,这个应该能够了解
最终是主函数:
void main()
{
Lcd_Init();
// write_string(0,3,”check ok”);
while(1)
{
keyscan();
write_string(0,0,Input);
if(key==16)
{
l=i;
if(n>0&&n!=i-1)
{
switch(Input[n])
{
}
}
else
{
write_string(0,1,”ERROR”);
}
}
delayms(1);
}
while(1);
}
简易核算器的51程序就此结束了