矩陣鍵盤有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 溫度實時測量 然後...