參考了這個博主的**寫的覺得條理很清楚 ,**的寫法基本也是按照這位博主的,只改了一些
矩陣按鍵代表計算器中的值
可以實現連續的加減乘除 **p0 傳送資料 p2實現動態數碼管的片選 p1接矩陣按鍵** +-
*/36
9清零25
8=14
70下面是**
在這裡插入**片
#include
#include
#define uc unsigned char
#define ut unsigned int
#define key_board p1
//矩陣按鍵
#define shu_ju p0
//給數碼管資料
#define pian_xuan p2
//控制動態數碼管
ut sum1=
0,sum2=0;
//算結果的
uc addflag=0;
//加法標誌
uc subflag=0;
//減法標誌
uc mulflag=0;
//乘法標誌
uc divflag=0;
//除法標誌
uc qpflag=0;
//在進行連加減乘除是 清空數碼管
uc code smgduan[16]
=;//顯示0~f的值 共陰數碼管
static uc duanxuan[8]
; uc keyflag=0;
//表示是否有按鍵的記錄
uc keyflag1=0;
//在計算函式裡控制
uc keyvalue;
void
delay
(ut t)
}void
kaishi()
}uc anjian()
//找出按鍵代表的值
if(key_board!=
0xf0
)//再次檢測
key_board=
0x0f
; cc=cc|key_board;
//得出位址
while
((aa<=50)
&&(key_board!=
0x0f))
//強制退出
return cc;
}void
keyfenzhi
(uc k)
keyflag1=1;
}void
k_k(ut yyy)
void
jiafa()
//加法函式
sum2=sum1;
}void
jianfa()
//減法函式
sum2=sum1;
}void
chengfa()
//乘法函式
sum2=sum1;
}void
chufa()
//除法函式
sum2=sum1;
}void
dengyu()
if(subflag)
if(mulflag)
if(divflag)
addflag=subflag=mulflag=divflag=0;
// 運算完成一次所有標誌清零
k_k(sum1)
; qpflag=1;
}void
shujuyiwei
(uc la)
duanxuan[0]
=la ;
}void
shujuchuli()
if(qpflag==1)
if(keyvalue<10)
}void
jisuan()
}}void
main()
jisuan()
;kaishi()
;//在8位數碼管顯示數字
}}
基於51微控制器的計算器
繼續寫一下寒假做的51小專案,這一次是基於at89c51的計算器,帶乙個八位密碼鎖功能。具體實現了計算器的加減乘除功能,並且自帶八位密碼鎖,輸入密碼後按 確定,錯誤輸入三次密碼就會鎖定,重啟後解除鎖定,密碼可以在密碼表中設定。顯示部分採用了1602顯示屏。這一次在使用ad畫pcb時,考慮到計算器要脫...
基於51微控制器的簡易計算器
矩陣鍵盤有16個按鍵,滿足對簡易計算器的計算實現,顯示部分採用lcd1602,第一行顯示計算的數值符號,第二行顯示計算結果。最大能計算7位數 7位數的值,可以計算負數,小數點結果保留有三位,在每次按下計算符號後,接著只能按下數字,再按下符號鍵無效,也就是每次計算只能按乙個計算符號,如輸入錯誤需按n清...
基於51微控制器的計算器程式
用51微控制器製作計算器 include t define uint unsigned int define uchar unsigned char sbit lcden p2 7 lcd1602?y?sbit rs p2 6 sbit rw p2 5 char i,j,temp,num,num 1...