|
想做一個簡易計算器,但是程序遇到點問題,只會寫掃描函數(shù) 顯示函數(shù)和運算函數(shù)不懂。求大神給個思路。下面是我寫的一點程序,希望大神能指點一下!附件中有原理圖!!!!!!!!!!!!
#include<reg51.h>
#include<intrins.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2; //138譯碼器控制數(shù)碼管位選
sbit LSB=P2^3;
sbit LSC=P2^4;
#define smg P0 //P0控制數(shù)碼管段選
#define key P1 //P1控制矩陣鍵盤
uint x,i,j;
void ys(x) //延時函數(shù)
{
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
uint code sz[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陰數(shù)組
void jzaj() //掃描函數(shù)
{
key=0x7f;
if(key!=0x7f)
{
ys(10);
if(key!=0x7f)
{
switch(key)
{
case(0x77):x=1;break;
case(0x7b):x=2;break;
case(0x7d):x=3;break;
case(0x7e):ysfh=1;break;
}
while(key!=0x7f);
}
}
key=0xbf;
if(key!=0xbf)
{
ys(10);
if(key!=0xbf)
{
switch(key)
{
case(0xb7):x=4;break;
case(0xbb):x=5;break;
case(0xbd):x=6;break;
case(0xbe):ysfh=2;break;
}
while(key!=0xbf);
}
}
key=0xdf;
if(key!=0xdf)
{
ys(10);
if(key!=0xdf)
{
switch(key)
{
case(0xd7):x=7;break;
case(0xdb):x=8;break;
case(0xdd):x=9;break;
case(0xde):ysfh=3;break;
}
while(key!=0xdf);
}
}
key=0xef;
if(key!=0xef)
{
ys(10);
if(key!=0xef)
{
switch(key)
{
case(0xe7):gl=1;break;
case(0xeb):x=0;break;
case(0xed):dy=1;break;
case(0xee):ysfh=4;break;
}
while(key!=0xef);
}
}
}
|
|