久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
簡易單片機計算器,最基礎的
[打印本頁]
作者:
lsy1219257111
時間:
2024-1-17 16:32
標題:
簡易單片機計算器,最基礎的
剛學到,求助多功能計算器的設計
代碼:
#include "reg51.h"
#include "math.h"
#define ON 10
#define ADD 11
#define SUB 12
#define MUL 13
#define DIV 14
#define EQU 15
#define BLANK 10
#define ERROR 11
#define MINUS 12
sbit SPEAKER = P3^7;
long Result,VarTmp;
unsigned char code LED[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0x86,0xbf};
unsigned char code KeyTable[]={ON,0,EQU,ADD,1,2,3,SUB,4,5,6,MUL,7,8,9,DIV};
unsigned char DisplayNo ,Operate,MS,DisplayBuffer[8];
bit Over,NoError=1,FirstInput=1;
unsigned int BeepTime,DelayTime;
void delayms(unsigned int ms)
{ DelayTime=ms;
while(DelayTime);
}
unsigned char Key()
{ unsigned char Row,Col,k;
P1=0x0f;
k=P1&0x0f;
if(k==0x0f) return -1;
delayms(20);
k=P1&0x0f;
if(k==0x0f) return -1;
BeepTime=300;
for(Row=0;Row<4;Row++)
{ P1=0x7f>>Row;
k=P1&0x0f;
if(k!=0x0f)
{ Col=0;
while(k&(1<<Col)) Col++;
break;
} }
while((P1&0x0f)!=0x0f);
k= Row+Col*4;
return KeyTable[k];
}
void ClrDisplayBuffer()
{ unsigned char i;
for(i=0;i<7;i++)
DisplayBuffer[ i]=BLANK;
DisplayBuffer[7]=0;
}
void ModifyDisplayBuffer(long num)
{ unsigned char i;
if(num>9999999||num<-9999999)
{ ClrDisplayBuffer();
DisplayBuffer[0]=ERROR;
NoError=0;
return;
}
ClrDisplayBuffer();
if(num<0)
{ num=labs(num);
DisplayBuffer[0]=MINUS;
}
i=7;
do
{ DisplayBuffer[ i]=num%10;
num/=10;
i--;
}while(num!=0);
}
void Calculate()
{ switch(Operate)
{ case ADD:
Result=Result+VarTmp;
ModifyDisplayBuffer(Result);
break;
case SUB:
Result=Result-VarTmp;
ModifyDisplayBuffer(Result);
break;
case MUL:
Result=Result*VarTmp;
ModifyDisplayBuffer(Result);
break;
case DIV:
if(VarTmp!=0)
{ Result=Result/VarTmp;
ModifyDisplayBuffer(Result);
}
else
{ ClrDisplayBuffer();
DisplayBuffer[0]=ERROR;
NoError=0;
}
break;
} }
void KeyProcess(unsigned char k)
{ if(k==ON)
{ Result=0, VarTmp=0,Operate=0,Over=0,NoError=1,FirstInput=1;
ClrDisplayBuffer();
}
if(!NoError) return;
if(k<10)
{ if(Over) Over=0,VarTmp=0,Result=0,Operate=0,FirstInput=1;
VarTmp=VarTmp*10+k;
if(VarTmp>9999999) VarTmp=VarTmp/10;
if(Operate) FirstInput=0;
ModifyDisplayBuffer(VarTmp);
}
if(k>10&&k<15)
{ if(Over)
{ Over=0,VarTmp=0,FirstInput=1, Operate=k;
return;
}
if(Operate&&FirstInput==0)
{ Calculate();
VarTmp=0,FirstInput=1;
}
if(Operate==0)
{ Result=VarTmp;
VarTmp=0;
}
Operate=k;
}
if(k==EQU)
{ if(Operate&&FirstInput==0)
{ Calculate();
Over=1;
} } }
void main()
{ unsigned char k;
TMOD=1;
TR0=1;
ET0=1;
EA=1;
ClrDisplayBuffer();
while(1)
{ k=Key();
if(k!=-1)
KeyProcess(k);
} }
void Display() interrupt 1
{ TL0=64536%256;
TH0=64536/256;
if(DelayTime)DelayTime--;
if(BeepTime)
{ BeepTime--;
SPEAKER=~SPEAKER;
}
P2=0;
P0=LED[DisplayBuffer[DisplayNo]];
P2=1<<DisplayNo;
if(++DisplayNo==8)
DisplayNo=0;
}
1705480153567.jpg
(210.4 KB, 下載次數: 90)
下載附件
2024-1-17 16:29 上傳
Proteus圖
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黑人中文字幕一区二区三区
|
欧美一区二区在线
|
欧美午夜一区二区三区免费大片
|
国产精品久久久
|
欧美激情综合网
|
国产精品久久一区二区三区
|
欧美成人精品一区二区男人看
|
国产精品美女一区二区
|
毛片免费在线观看
|
亚洲欧美在线观看
|
国产乱码精品1区2区3区
|
天天弄
|
亚洲精品国产成人
|
日韩精品视频在线
|
久久久www成人免费无遮挡大片
|
国产剧情一区
|
国产一级片久久久
|
在线播放一区二区三区
|
国产精品福利视频
|
国产亚洲精品久久19p
|
色久伊人
|
日日草夜夜草
|
日韩精品一区二区三区老鸭窝
|
色爱综合网
|
亚洲成人一区二区三区
|
精品一区电影
|
欧美一级在线
|
久久久久久成人
|
亚洲精选一区二区
|
亚洲欧美视频
|
久久精品国产一区二区电影
|
亚洲欧美日韩一区二区
|
亚洲一区二区在线视频
|
精品久久久久久久久久久下田
|
丁香婷婷综合激情五月色
|
亚洲人在线播放
|
亚洲欧美日韩精品久久亚洲区
|
亚洲高清av
|
日本不卡一区二区
|
久久久亚洲综合
|
亚洲成人a v
|