基於51微控制器的簡易計算器

2021-06-17 18:18:44 字數 2209 閱讀 6736

矩陣鍵盤有16個按鍵,滿足對簡易計算器的計算實現,顯示部分採用lcd1602,第一行顯示計算的數值符號,第二行顯示計算結果。

最大能計算7位數*7位數的值,可以計算負數,小數點結果保留有三位,在每次按下計算符號後,接著只能按下數字,再按下符號鍵無效,也就是每次計算只能按乙個計算符號,如輸入錯誤需按n清零鍵,或者復位微控制器。

圖3-1所示為簡易計算器的電路原理圖。p3口用於鍵盤輸入,接4*4矩陣鍵盤,鍵值與鍵盤的對應表如表----所示,p0口和p2口用於顯示,p2口用於顯示數值的高位,po口用於顯示數值的低位。

/*-------------對lcd1602的操作-----------*/

bit busy(void)//判斷忙碌

void write_inst (uchar cmd)//寫命令

void write_com(uchar com)//寫位址

void write_date(uchar dat) //寫資料

void init()

//初始化

/*------------鍵盤掃瞄-----------*/

void keyscan()//鍵盤掃瞄

}while(p3!=0xfe);

if(key==0||key==1||key==2)

if(flag==0)

if(flag==1)

write_date(table2[key]);

}else}}

p3=0xfd;

if(p3!=0xfd)

}while(p3!=0xfd);

if(key==4||key==5||key==6)

if(flag==0)

if(flag==1)

write_date(table2[key]);

}else}}

p3=0xfb;

if(p3!=0xfb)

}while(p3!=0xfb);

if(key==8||key==9||key==10)

if(flag==0)

if(flag==1)

write_date(table2[key]);

}else}}

p3=0xf7;

if(p3!=0xf7)

}while(p3!=0xf7);

switch(key)

break;

case 13:

else if(flag==1)

} break;

case 14:

write_date(0x3d);

a=0;b=0;flag=0;fh=0;k=0;

}else if(fh==2)

if((a-b)*(-1)>0)

write_date(0x2d);

write_date(0x3d);

a=0;b=0;flag=0;fh=0;k=0;

}else if(fh==3)

write_date(0x3d);

a=0;b=0;flag=0;fh=0;k=0;

}else if(fh==4)  

if((a/b)<=0)

write_date(0x30);   

write_date(0x3d);                              

a=0;b=0;flag=0;fh=0;k=0;

}} break;

case 15:

} break;}}

}void main()

}

基於51微控制器的計算器

繼續寫一下寒假做的51小專案,這一次是基於at89c51的計算器,帶乙個八位密碼鎖功能。具體實現了計算器的加減乘除功能,並且自帶八位密碼鎖,輸入密碼後按 確定,錯誤輸入三次密碼就會鎖定,重啟後解除鎖定,密碼可以在密碼表中設定。顯示部分採用了1602顯示屏。這一次在使用ad畫pcb時,考慮到計算器要脫...

基於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...

基於51微控制器的智慧型計算器

其實,說智慧型也不算智慧型,就是在計算器上加上了日曆 時鐘和溫度顯示而已。具體用到的也是51很基礎的模組,乙個鍵盤,乙個1602,溫度顯示那塊用到了ds18b20,硬體除錯的部分也很少,主要是 的書寫。功能簡介 1 開啟電源時,顯示歡迎字樣 2 計算器功能 3 日曆及時鐘功能 4 溫度實時測量 然後...