資源簡介
實現一簡易的加減法計算器的功能,要求該計算器能夠進行6位無符號數的加減計算(也可以乘除)

代碼片段和文件信息
#include?“reg52.h“
#include?“intrins.h“
#include?“lcd.h“
#define?KEY?P0
typedef?unsigned?int?u16;
typedef?unsigned?char?u8;
u8?code?smgduan[17]={0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};//顯示0~F的值
u8?dec1[6]={000000}dec2[6]={000000}defalut[6]?=?{000000};
unsigned?long?int?de1=0de2=0defmul=1;
u8?Disp[]?=?“?Pechin?Science?“;
u8?KeyValue; ?
sbit?LSA?=?P2^2;
sbit?LSB?=?P2^3;
sbit?LSC?=?P2^4;
void?delay(unsigned?int?i){
while(i--);
}
void?DigDisplay(u8?ju8?k){
?u8?i;
for(i=0;i {
switch(i) ?//位選,選擇點亮的數碼管,
{
case(0):
LSA=0;LSB=0;LSC=0;?break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0;?break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0;?break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0;?break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1;?break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1;?break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1;?break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1;?break;//顯示第7位
}?
if(j==1){
P1=smgduan[dec1[i]];
}else?if(j==2){
P1=smgduan[dec2[i]];
}else?if(j==3){
P1?=smgduan[defalut[i]];
}
delay(100);?//間隔一段時間掃描
P1=0x00;//消隱
}
}
u8?flag?=?0;//是否是第二次按下
void?keydown(){
char?a=0;
KEY=0x0f;
if(KEY!=0x0f)//讀取按鍵是否按下
{
delay(1000);//延時10ms進行消抖
if(KEY!=0x0f)//再次檢測鍵盤是否按下
{
flag?=?1;
//測試列
KEY=0X0F;
switch(KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d):?KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//測試行
KEY=0XF0;
switch(KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0):?KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(KEY!=0xf0)) ?//檢測按鍵松手檢測
{
delay(1000);
a++;
}
}
}
}
void?main(){
????u8?i=0j=0operator=0flag1=0n;
// LcdInit();
/* for(i=0;i<16;i++)
{
LcdWriteData(Disp[i]);
} ?*/
//u8?dec1[6]={000000}dec2[6];
// “A為+““B為減““C為等于“
?while(1){
??i?=?0;
??while(i<7){ //32+12?=?
??? keydown();
if(flag==1&&KeyValue!=10&&KeyValue!=11&&KeyValue!=12&&KeyValue!=13){??//只接收數據
flag?=?0;
dec1[i]=KeyValue;
?? ? i++;
}
DigDisplay(1i);//1代表被減數?2代表減數?3代表結果 i代表位數
while(KeyValue==10||KeyValue==11||KeyValue==12||KeyValue==13){
?if(flag==1){
? ?flag=0;
?if(KeyValue==10)? ?{operator?=?0;?dec1[i]=10;}
? ?if(KeyValue==11)? ?{operator?=?1;?dec1[i]=11;}
?if(KeyValue==12)? ?{operator?=?2;?dec1[i]=12;}
? ?if(KeyValue==13)? ?{operator?=?3;?dec1[i]=13;}
?
?}
?j=i+1?;
?DigDisplay(1j);
?
?
?keydown();
?if(flag==1){
?i=0;
? ?flag=0;
?dec2[i]=KeyValue;
?i++;
?flag1?=1;
?break;
?}
}
if(flag1==1){
break;
}
??}
??for(n?=j-1;n>0;n-
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????23733??2018-07-05?22:22??簡易計算器\New?Project.pdsprj
?????目錄???????????0??2018-07-05?23:52??簡易計算器\
?????文件????????8936??2018-07-05?23:52??簡易計算器\MCU_test
?????文件???????11704??2018-07-05?23:52??簡易計算器\MCU_test.LST
?????文件???????10668??2018-07-05?23:52??簡易計算器\MCU_test.M51
?????文件???????10997??2018-07-05?23:52??簡易計算器\MCU_test.OBJ
?????文件????????3966??2018-07-05?23:52??簡易計算器\MCU_test.c
?????文件????????4350??2018-07-05?23:52??簡易計算器\MCU_test.hex
?????文件??????????48??2018-07-05?23:52??簡易計算器\MCU_test.lnp
?????文件?????????695??2018-07-05?23:52??簡易計算器\MCU_test.plg
?????文件???????57495??2018-07-05?23:52??簡易計算器\MCU_test.uvopt
?????文件???????13255??2018-07-05?23:52??簡易計算器\MCU_test.uvproj
?????文件???????58895??2018-07-05?23:32??簡易計算器\MCU_test_uvopt.bak
?????文件???????13415??2018-07-05?00:00??簡易計算器\MCU_test_uvproj.bak
評論
共有 條評論