51微控制器設計計算器

2021-10-06 02:15:05 字數 2031 閱讀 2986

參考了這個博主的**寫的覺得條理很清楚 ,**的寫法基本也是按照這位博主的,只改了一些

矩陣按鍵代表計算器中的值

可以實現連續的加減乘除 **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...