用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;
long a,b,c; //a,μúò???êy b,μú?t??êy c,μ?êy
float a_c,b_c;
uchar flag,fuhao;//flag±íê?ê?·?ód????·??ü°′??£?fuhao±í?÷°′??μ?ê?????????·?
//flag=1±íê?????·??ü°′??£?flag=0±íê?????·??ü??ód°′??£?
//fuhao=1?a?󷨣?fuhao=2?a??·¨£?fuhao=3?a3?·¨£?fuhao=4?a3y·¨?£
uchar code table=;
uchar code table1=;
void delay(uchar z) // ?ó3ùoˉêy
void write_com(uchar com)//?üá?×óoˉêy
void write_date(uchar date)//êy?y×óoˉêy
void init()
void keyscan() // ?ü?ìé¨?è3ìdò
} while(p1!=0xfe);
if(num==0||num==1||num==2)//è?1?°′??μ?ê?'7','8'?ò'9
if(flag==0)//??ód°′1y????·??ü
//°′??êy×?′?′¢μ?a
else//è?1?°′1y????·??ü
//°′??êy×?′?′¢μ?b
}else//è?1?°′??μ?ê?'/' 3y·¨
i=table1[num]; //êy?y??ê?×?×?±?
write_date(0x30+i);//??ê?êy?y?ò2ù×÷·?o?
} p1=0xfd;
if(p1!=0xfd)
} while(p1!=0xfd);//μè′y°′?üêí·?
if(num==4||num==5||num==6&&num!=7)//è?1?°′??μ?ê?'4','5'?ò'6'
if(flag==0)//??ód°′1y????·??ü
else//è?1?°′1y????·??ü
}else//è?1?°′??μ?ê?'?á'
i=table1[num]; //êy?y??ê?×?×?±?
write_date(0x30+i);//??ê?êy?y?ò2ù×÷·?o?
} p1=0xfb;
if(p1!=0xfb)
} while(p1!=0xfb);
if(num==8||num==9||num==10)//è?1?°′??μ?ê?'1','2'?ò'3'
if(flag==0)//??ód°′1y????·??ü
else//è?1?°′1y????·??ü
}else if(num==11)//è?1?°′??μ?ê?'-'
i=table1[num]; //êy?y??ê?×?×?±?
write_date(0x30+i);//??ê?êy?y?ò2ù×÷·?o?
} p1=0xf7;
if(p1!=0xf7)
} while(p1!=0xf7);
switch(num)
//°′??μ?ê?"??á?"
break;
case 13:
else if(flag>=1)//è?1?°′1y????·??ü
} break;
case 14:
write_date(0x3d); //?ùd′"="
a=0;b=0;flag=0;fuhao=0;
}else if(fuhao==2) //??·¨????
if(a-b<0) write_date(0x2d);
write_date(0x3d); //?ùd′"="
a=0;b=0;flag=0;fuhao=0;
}else if(fuhao==3) //3?·¨????
write_date(0x3d); a=0;b=0;flag=0;fuhao=0;
}else if(fuhao==4)//3y·¨????
if(i==1)
if(i==2)
if(i==3)
a=0;b=0;flag=0;fuhao=0;
}else
}} break;
case 15: break; //?ó?ü éè???ó±ê??fuhao=1;
}}//p1!=0xf7
}void main()
}
矩陣按鍵,lcd顯示
昨天在組長幫助下完成了計算器的數值簡單顯示,組長還幫我分析了程式存在的問題
今天在實驗室寫程式的時候,在計算器運算的除法方面有問題,很困惑,所以找了組長幫忙看看程式,他告訴我,我的除法程式1,只考慮了特殊情況;2,結果被重複顯示。
在組長的幫助下,我修改好了程式,經測試後,程式可以正常執行。
收穫:1,對c語言關鍵字及其用途有了更深的理解與把握。
2,寫程式不能急於求成,要一步一步地改。
基於51微控制器的計算器
繼續寫一下寒假做的51小專案,這一次是基於at89c51的計算器,帶乙個八位密碼鎖功能。具體實現了計算器的加減乘除功能,並且自帶八位密碼鎖,輸入密碼後按 確定,錯誤輸入三次密碼就會鎖定,重啟後解除鎖定,密碼可以在密碼表中設定。顯示部分採用了1602顯示屏。這一次在使用ad畫pcb時,考慮到計算器要脫...
基於51微控制器的簡易計算器
矩陣鍵盤有16個按鍵,滿足對簡易計算器的計算實現,顯示部分採用lcd1602,第一行顯示計算的數值符號,第二行顯示計算結果。最大能計算7位數 7位數的值,可以計算負數,小數點結果保留有三位,在每次按下計算符號後,接著只能按下數字,再按下符號鍵無效,也就是每次計算只能按乙個計算符號,如輸入錯誤需按n清...
基於51微控制器的智慧型計算器
其實,說智慧型也不算智慧型,就是在計算器上加上了日曆 時鐘和溫度顯示而已。具體用到的也是51很基礎的模組,乙個鍵盤,乙個1602,溫度顯示那塊用到了ds18b20,硬體除錯的部分也很少,主要是 的書寫。功能簡介 1 開啟電源時,顯示歡迎字樣 2 計算器功能 3 日曆及時鐘功能 4 溫度實時測量 然後...