基於51微控制器的計算器程式

2021-08-11 14:12:36 字數 2809 閱讀 4852

用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 溫度實時測量 然後...