code:
/* s16 s12 s8 s4分別是123+
s15 s11 s7 s3分別是456-
s14 s10 s6 s2分別是789*
s13 s9 s5 s1分別是0 clr = /
*//* 實現兩個數的運算,每個數的位數至少可以八位 */
#includetypedef unsigned char uint8;
typedef unsigned int uint16;
sbit rw=p2^5;
sbit rs=p2^6;
sbit e=p2^7;
sbit led=p3^7;
sbit beep=p2^0;
uint8 key,num;
uint8 fuhao;//定義具體的那個符號,是加減還是乘除。
uint8 flag; //定義有沒有按下符號鍵,這個是統稱
long a,b,c,d; //定義運算資料的第乙個和第二個及等於的數變數
uint8 k; //定義小數點後面顯示的位數
uint8 biao;
uint8 dat1=;//儲存顯示的資料
void delay(uint16 i)
void lcdwrc(uint8 c)
void lcdwrd(uint8 dat)
void lcdinit()
void keyscan()
} while(p1!=0xfe);
if(num==0||num==1||num==2) //確認第一行的數1,2,3
else
} if(num==3)
lcdwrd(0x30+dat1[num]);
} p1=0xfd; //令第二行為0,判斷是哪一列按下
if(p1!=0xfd)
}while(p1!=0xfd);
if(num==4||num==5||num==6)
else
} else
lcdwrd(0x30+dat1[num]);
} p1=0xfb; //令第三行為0,判斷哪一列按下
if(p1!=0xfb)
}while(p1!=0xfb);
if(num==8||num==9||num==10)
else
} else
lcdwrd(0x30+dat1[num]);
} p1=0xf7; //令第四行為0,判斷哪一列按下
if(p1!=0xf7)
}while(p1!=0xf7);
switch(num)
else
break;
case 13:
lcdwrc(0x01); //清屏指令
a=0;
b=0;
flag=0;
fuhao=0;
break;
case 15:
flag=1;
fuhao=4;
lcdwrd(0x2f);//除號/
break;
case 14:
if(fuhao==1)//加
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}if(fuhao==2) //減
if(alcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}if(fuhao==3)//乘法
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}if(fuhao==3)//乘法
lcdwrd(0x3d); //顯示等於號=
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}if(fuhao==4)
}if(a/b<0) //如果a比b小的話那麼除的結果最高位是0
lcdwrd(0x3d); //顯示等號
a=0;
b=0;
flag=0;
fuhao=0;//全部清除為0
}break;
} }}void main()
}
基於51微控制器的計算器
繼續寫一下寒假做的51小專案,這一次是基於at89c51的計算器,帶乙個八位密碼鎖功能。具體實現了計算器的加減乘除功能,並且自帶八位密碼鎖,輸入密碼後按 確定,錯誤輸入三次密碼就會鎖定,重啟後解除鎖定,密碼可以在密碼表中設定。顯示部分採用了1602顯示屏。這一次在使用ad畫pcb時,考慮到計算器要脫...
51微控制器LCD1602實現計算器
整合 include include define kong1 p1 控制矩陣按鍵 kong0 p0 傳送命令傳送資料 uc code a long sum1,sum2 float sum3 用於除法 long sum4,sum5 用於除法 uc addflag,subflag,mulflag,di...
微控制器實現計算器功能
include sbit e p2 2 sbit rs p2 0 sbit rw p2 1 define gpio key p1 unsigned char keyvalue 17 鍵盤按鍵值 void keydown void 鍵盤掃瞄 void delay1ms unsigned int x v...