基于51單片機(jī)1602液晶顯示簡(jiǎn)易計(jì)算器設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)1602液晶顯示簡(jiǎn)易計(jì)算器設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)1602液晶顯示簡(jiǎn)易計(jì)算器設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)1602液晶顯示簡(jiǎn)易計(jì)算器設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)1602液晶顯示簡(jiǎn)易計(jì)算器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include<reg52.h>#include<math.h>#define uint unsigned int #define uchar unsigned char#define PI 3.141592sbit RS = P20; sbit RW = P21; sbit EN = P22;sbit led=P24;sbit speek=P37;uchar table0="Welcome to use"uchar table1="made by Ms. Li" uchar table2="error"uc

2、har count;void main(void)uchar error=0,i,first=0,dot1,dot2,dot1_num,dot2_num,minus1,minus2;/錯(cuò)誤標(biāo)志、第一次清屏標(biāo)志、小數(shù)點(diǎn)標(biāo)志以及小數(shù)點(diǎn)個(gè)數(shù) 負(fù)號(hào)標(biāo)志、負(fù)號(hào)個(gè)數(shù) uchar Sin,Cos,Tan,ln;uchar Key_num,last_key_num; /鍵號(hào)uchar flag=0,equal_flag; /運(yùn)算符、等于符double num1=0,num2=0,num=0,result=0,save_result; /第一個(gè)數(shù)、第二個(gè)數(shù)、計(jì)算結(jié)果uchar first_num=0,Ans=0

3、,second_num=0;InitLcd();EA=1;ET0=1;TMOD=0X01;TH0=(65536-500)/256;TL0=(65536-500)%256;write_com(0x80+0x40+15); write_Dat('0'); write_com(0x80); while(1)while(key_scan()=0xff);TR0=1;if(first=0)first=1; write_com(0x01); Key_num=key_scan();switch(key_scan()case 1:if(last_key_num!=Key_num)write_D

4、at('l');write_Dat('n');ln=1;break;case 2:if(last_key_num!=Key_num)write_Dat('s');write_Dat('i');write_Dat('n');Sin=1;break;case 3:if(last_key_num!=Key_num)write_Dat('c');write_Dat('o');write_Dat('s');Cos=1;break;case 4:if(last_key_num!=

5、Key_num)write_Dat('t');write_Dat('a');write_Dat('n');Tan=1;break;case 5:if(last_key_num!=Key_num)write_Dat('');flag=5;break;case 6:write_Dat('7');num=7;break;case 7:write_Dat('8');num=8;break;case 8:write_Dat('9');num=9;break;case 9:if(last_key

6、_num!=Key_num)write_Dat('+');flag=1; break;case 10:if(last_key_num!=Key_num)write_Dat('T');flag=6;break;case 11:write_Dat('4');num=4;break;case 12:write_Dat('5');num=5;break;case 13:write_Dat('6');num=6;break;case 14:if(last_key_num!=Key_num)write_Dat('-&#

7、39;);flag=2;break;case 15:if(last_key_num!=Key_num)if(equal_flag=1)write_com(0x01);write_com(0x80);write_Dat('A');write_Dat('n');write_Dat('s');write_Dat('=');save_result=result;elseif(Key_num!=1&&Key_num!=2&&Key_num!=3&&Key_num!=4&&Key

8、_num!=22&&Key_num!=23&&Key_num!=25)write_Dat('A');write_Dat('n');write_Dat('s');if(flag=0)num1=save_result;first_num=1;elsenum2=save_result;second_num=1;break;case 16:write_Dat('1');num=1;break;case 17:write_Dat('2');num=2;break;case 18:write_D

9、at('3');num=3;break;case 19:if(last_key_num!=Key_num)write_Dat('*');flag=3;break;case 21:write_Dat('0');num=0;break;case 22:if(last_key_num!=Key_num)if(flag=0)minus1+;if(minus1=1)write_Dat('-');else minus2+; if(minus2=1) write_Dat('-'); break;case 23:if(last_k

10、ey_num!=Key_num)if(flag=0)dot1+;if(dot1=1)write_Dat('.');else dot2+; if(dot2=1) write_Dat('.'); break;case 24:if(last_key_num!=Key_num)write_Dat('/');flag=4;break;case 25:if(last_key_num!=Key_num)write_Dat('=');equal_flag=1;break;if(Key_num!=1&&Key_num!=2&

11、&Key_num!=3&&Key_num!=4&&Key_num!=15&&Key_num!=22&&Key_num!=23&&Key_num!=25)/第一個(gè)數(shù)if(flag=0)num1=num1*10+num;num=0;if(dot1!=0)dot1_num+;first_num=1;if(flag!=0)num2=num2*10+num;num=0;if(dot2!=0)dot2_num+;second_num=1;if(equal_flag=1&&first_num=1)if(d

12、ot1!=0) num1=num1/pow(10,dot1_num); dot1=0;if(dot2!=0) num2=num2/pow(10,dot2_num); dot2=0;if(minus1!=0)num1=num1*(-1);if(minus2!=0) num2=num2*(-1);if(second_num!=0)switch(flag)case 1:result=num1+num2;break;case 2:result=num1-num2;break;case 3:result=num1*num2;break;case 4:if(num2!=0) result=num1/num

13、2; else write_com(0x80+0x40+10); for(i=0;i<5;i+) write_Dat(table2i); error=1; break;case 5:result=pow(num1,num2);break;case 6: result=pow(num1,1/num2);break; else if(second_num=0&&Sin=0&&Cos=0&&Tan=0&&ln=0) result=num1;else if(second_num=0&&(Sin=1|Cos=1|Tan

14、=1|ln=1)if(Sin=1) result=sin(num1/180*PI)+0.005; if(Cos=1) result=cos(num1/180*PI)+0.005;if(Tan=1) result=tan(num1/180*PI)+0.005; if(ln=1) if(num1>0) result=log(num1)+0.005;elsewrite_com(0x80+0x40+10); for(i=0;i<5;i+) write_Dat(table2i); error=1; if(error!=1) display(result);if(Key_num=20)/清零n

15、um1=num2=result=0;flag=equal_flag=0;error=0;first=0;dot1_num=dot2_num=0;minus1=0;minus2=0;first_num=0,second_num=0;Sin=Cos=Tan=ln=0;write_com(0x01);write_com(0x80+0x40+15);write_Dat('0');last_key_num=Key_num;while(key_scan()!=0xff);void time0() interrupt 1TH0=(65536-600)/256; TL0=(65536-600)

16、%256;count+;speek=!speek;if(count>50)TR0=0;count=0;void delay(uint x) uchar y;while(x-)for(y=0;y<120;y+);void write_com(unsigned char c)RS=0;RW=0;EN=1;delay(5);P0=c;EN=0;void write_Dat(unsigned char c)RS=1;RW=0;EN=1;delay(5);P0=c;EN=0;void InitLcd()write_com(0x38); /display mode write_com(0x06

17、); /顯示光標(biāo)移動(dòng)位置 write_com(0x0c); /顯示開(kāi)及光標(biāo)設(shè)置 write_com(0x01); /顯示清屏uchar key_scan()uchar key_num=0xff;uint temp;P3=0x03;P1=0xe0;temp=(P3<<8)|P1;if(temp&0x03e0)!=0x03e0)delay(10); if(temp&0x03e0)!=0x03e0)P3=0x03;/第一行P1=0xfe;temp=(P3<<8)|P1;switch(temp)case 0x03de:key_num=1; break;case

18、0x03be:key_num=2; break;case 0x037e:key_num=3; break;case 0x02fe:key_num=4; break;case 0x01fe:key_num=5; break;P3=0x03; /第二行P1=0xfd;temp=(P3<<8)|P1; switch(temp)case 0x03dd:key_num=6; break;case 0x03bd:key_num=7; break;case 0x037d:key_num=8; break;case 0x02fd:key_num=9; break;case 0x01fd:key_n

19、um=10; break;P3=0x03; /第三行P1=0xfb;temp=(P3<<8)|P1; switch(temp)case 0x03db:key_num=11; break;case 0x03bb:key_num=12; break;case 0x037b:key_num=13; break;case 0x02fb:key_num=14; break;case 0x01fb:key_num=15; break;P3=0x03; /第四行P1=0xf7;temp=(P3<<8)|P1; switch(temp)case 0x03d7:key_num=16; b

20、reak;case 0x03b7:key_num=17; break;case 0x0377:key_num=18; break;case 0x02f7:key_num=19; break;case 0x01f7:key_num=20; break;P3=0x03; /第五行P1=0xef;temp=(P3<<8)|P1; switch(temp)case 0x03cf:key_num=21; break;case 0x03af:key_num=22; break;case 0x036f:key_num=23; break;case 0x02ef:key_num=24; break

21、;case 0x01ef:key_num=25; break;return key_num;void display(double Data)uchar xs=0,fs=0,i;if(Data<0)fs=1;Data=Data*(-1);if(Data>(long)Data)xs=1;if(Data<10) /09if(xs=1)Data=Data*100;write_com(0x80+0x40+11);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/100+'

22、0');write_Dat('.');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(xs=0)write_com(0x80+0x40+14);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data+'0');else if(Data<100) /1099if(xs=1)Data=Data*100;write_com(0x80+0x4

23、0+10);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/1000+'0');write_Dat(long)Data/100%10+'0');write_Dat('.');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(xs=0)write_com(0x80+0x40+13); if(fs=1)write_Dat('

24、;-');elsewrite_Dat(' ');write_Dat(long)Data/10+'0');write_Dat(long)Data%10+'0');else if(Data<1000) /100999if(xs=1)Data=Data*100;write_com(0x80+0x40+9);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/10000+'0');write_Dat(long)Data/1

25、000%10 +'0');write_Dat(long)Data/100%10+'0');write_Dat('.');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(xs=0)write_com(0x80+0x40+12);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/100+'0');write_Dat

26、(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(Data<10000)/10009999if(xs=1)Data=Data*100;write_com(0x80+0x40+8);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/100000+'0');write_Dat(long)Data/10000%10+'0');write_Dat(long)Dat

27、a/1000%10 +'0');write_Dat(long)Data/100%10+'0');write_Dat('.');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(xs=0) write_com(0x80+0x40+11);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/1000+'0');writ

28、e_Dat(long)Data/100%10+'0');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(Data<100000)/1000099999if(xs=1)Data=Data*100;write_com(0x80+0x40+7);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/1000000+'0');write_Dat(l

29、ong)Data/100000%10+'0');write_Dat(long)Data/10000%10+'0');write_Dat(long)Data/1000%10 +'0');write_Dat(long)Data/100%10+'0');write_Dat('.');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(xs=0)write_com(0x80+0x40+10);if(fs=1)write_Dat('-');elsewrite_Dat(' ');write_Dat(long)Data/10000+'0');write_Dat(long)Data/1000%10+'0');write_Dat(long)Data/100%10+'0');write_Dat(long)Data/10%10+'0');write_Dat(long)Data%10+'0');else if(Data<1000000) /1000

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論