freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

計算器畢業(yè)論文--基于單片機的電子計算器設(shè)計-資料下載頁

2025-10-30 01:42本頁面

【導(dǎo)讀】計算器一般是指“電子計算器”,該名詞由日文傳入中國。計算器是能進行數(shù)學(xué)運。作簡單、價格低廉,因而廣泛運用于商業(yè)交易中,也是必備的辦公用品。檢測技術(shù)日益更新。在實時檢測和自動控制的單片機應(yīng)用系統(tǒng)中,單片機往往作為。軟硬件結(jié)合,來加以完善。因此,單片機的應(yīng)用已經(jīng)越來越貼近生活,用單片機來。實現(xiàn)一些電子設(shè)計也變得容易起來。計算器在人們的日常中是比較的常見的電子產(chǎn)??墒撬€在發(fā)展之中,以后必將出現(xiàn)功能更加強大的計算器,基于這樣的。該設(shè)計系統(tǒng)是以AT89C51為單片機,P0口作為輸入端,外接4X4的鍵盤。通過鍵盤掃描來對輸入數(shù)的控制,在P1口、P2口接了驅(qū)動電路,用來保證LED的工作正常。計算器將完成的功能有加,減,計算器是能進行數(shù)學(xué)運算的手持機器,擁有集成電路芯片,結(jié)構(gòu)簡單,功能較弱,一些可選外圍設(shè)備及電子配件通過人工或機器設(shè)備組成。行各種數(shù)據(jù)的采集、運算和控制。液晶顯示讀取數(shù)據(jù),軟件部分是由C語言來編寫的。在LCD1602上顯示出來。

  

【正文】 =1) //新一次運算開始 { lcdwrite_(0x01)。//清屏 newcalc=0。 lcd_setxy(0,0)。 } if(keynum1=7) //限制輸入位數(shù) { if(num==39。.39。) { lcdwrite_data(39。.39。)。//顯示小數(shù)點 } else lcdwrite_num1(num)。 num1[keynum1]=num。 keynum1++。 } } else if(num==39。+39。||num==39。39。||num==39。*39。||num==39。/39。||num==39。=39。||num==39。^39。||keysqrt==0) 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 35 { if(keynum1==0amp。amp。num1[0]==0) //若直接輸入運算符而沒有輸入數(shù)字則執(zhí)行連續(xù)運算 { here: ans1=ans。 sign=num。 lcdwrite_(0x01)。 delayms(5)。 lcd_setxy(0,0)。 lcdwrite_float(ans1)。 if(sqrtflag2!=1amp。amp。num!=39。N39。) lcdwrite_data(num)。 break。 } for(i=0。keynum10。i++) //計算按下的數(shù)字的大小 { if(num1[i]!=39。.39。) ans1=ans1*10+num1[i]。 else if(num1[i]==39。.39。) break。 keynum1。 } for(keynum1,i++,j=0。keynum10。j++,i++,keynum1) point=point*10+num1[i]。 for(。j0。j) point*=。 ans1=ans1+point。 sqrtflag1=0。 //清除開方標(biāo)志 sqrtflag2=0。//清除開方標(biāo)志 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 36 if(keysqrt==0) //計算開方 { delayms(5)。 if(keysqrt==0) { if(beepflag==1) //若開聲音則每一次按鍵均鳴叫 { beep=0。 delayms(100)。 beep=1。 } ans=sqrt(ans1)。 sqrtflag1=1。 lcdwrite_data(0xe8)。 while(keysqrt==0)。 delayms(10)。 while(keysqrt==0)。 break。 } } sign=num。 //記住運算符號 lcdwrite_data(num)。 break。 //輸入運算符號則退出第一運算數(shù)的輸入 } } while(1) { if(ac==1) break。 //若清零,則退出輸入 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 37 if(sqrtflag1==1) //若第一次按鍵為開方,則直接顯示結(jié)果 { break。 } if((keyscan()!=39。N39。)amp。amp。((num=0amp。amp。num=9)||num==39。.39。)) // 記錄按下的數(shù)字 { if(keynum2=7) { if(num==39。.39。) { lcdwrite_data(39。.39。)。//顯示小數(shù)點 } else lcdwrite_num1(num)。 num2[keynum2]=num。 keynum2++。 } } else if(num==39。=39。||keysqrt==0) { sqrtflag2=0。//清除開方標(biāo)志 if(keysqrt==0) //進入開方 { delayms(5)。 if(keysqrt==0) { sqrtflag2=1。 //開方標(biāo)志 lcdwrite_data(0xe8)。 //寫開方符號 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 38 if(beepflag==1) //若開聲音則每一次按鍵均鳴叫 { beep=0。 delayms(100)。 beep=1。 } while(keysqrt==0)。 delayms(10)。 while(keysqrt==0)。 } } point=0。 for(i=0。keynum20。i++) //計算按下的數(shù)字的大小 { if(num2[i]!=39。.39。) ans2=ans2*10+num2[i]。 else if(num2[i]==39。.39。) break。 keynum2。 } for(keynum2,i++,j=0。keynum20。j++,i++,keynum2) point=point*10+num2[i]。 for(。j0。j) point*=。 if(sqrtflag2!=1) lcdwrite_data(num)。 ans2=ans2+point。 break。 //輸入等于號則退出第二運算數(shù)的輸入 } 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 39 else if(num==39。+39。||num==39。39。||num==39。*39。||num==39。/39。||num==39。^39。) { point=0。 for(i=0。keynum20。i++) //計算按下的數(shù)字的大小 { if(num2[i]!=39。.39。) ans2=ans2*10+num2[i]。 else if(num2[i]==39。.39。) break。 keynum2。 } for(keynum2,i++,j=0。keynum20。j++,i++,keynum2) point=point*10+num2[i]。 for(。j0。j) point*=。 lcdwrite_data(num)。 ans2=ans2+point。 conflag=1。 break。 //進行連續(xù)計算 } } if(ac==1) { ac=0。 continue。 //清零后進行下一次運算 } if(sign==39。+39。) //計算結(jié)果 ans=ans1+ans2。 if(sign==39。39。) 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 40 ans=ans1ans2。 if(sign==39。*39。) ans=ans1*ans2。 if(sign==39。/39。) ans=ans1/ans2。 if(sign==39。^39。) //計算多次方 ans=pow(ans1,ans2)。 if(sqrtflag2==1) //計算開方 ans=sqrt(ans1)。 lcd_setxy(1,0)。 if((ans2==0amp。amp。sign==39。/39。)||(ans10amp。amp。sqrtflag2==1)) lcdwrite_string(math error)。//ans2=0 或被開方數(shù)小于 0 時提示錯誤 else lcdwrite_float(ans)。 //顯示結(jié)果 sqrtflag1=0,newcalc=1。 //為新的一次運算準(zhǔn)備 ans1=0。 ans2=0。 for(i=0。i8。i++) //清除按鍵緩存 num1[i]=0。 for(i=0。i8。i++) num2[i]=0。 if(conflag==1) { conflag=0。 goto here。 //跳轉(zhuǎn)到連續(xù)運算 } } } /*****初始化程序 *****/ 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 41 void maininit(void) { delayms(100)。 //等待液晶初始化 lcd_init()。 lcd_setxy(0,0)。 lcdwrite_data(39。039。)。 lcd_setxy(0,0)。 IT0=1。//下降沿觸發(fā) EX0=1。//開外部中斷 0 IT1=1。//下降沿觸發(fā) EX1=1。//開外部中斷 1 EA=1。 //開中斷 } /***清零中斷程序 ******/ void EX0_int() interrupt 0 { if(beepflag==1) //若開聲音則每一次按鍵均鳴叫 { beep=0。 delayms(100)。 beep=1。 } lcdwrite_(0x01)。 //顯示清屏 lcd_setxy(0,0)。 lcdwrite_data(39。039。)。 lcd_setxy(0,0)。 num=39。N39。 //數(shù)字初始化 keynum1=0,keynum2=0,sign=0。 ans1=0,ans2=0,ans=0,point=0。 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 42 conflag=0,newcalc=0。 ac=1。 } /***聲音中斷程序 ******/ void EX1_int() interrupt 2 { beepflag=~beepflag。 if(beepflag==1) //若開聲音則每一次按鍵均鳴叫 { beep=0。 delayms(100)。 beep=1。 } } /*****鍵盤掃描程序 *****/ uchar keyscan() { num=39。N39。 //若沒有按下任何按鍵,則返回 39。N39。 P1=0xfe。 //掃描第一行 temp=P1。 temp=tempamp。0xf0。 while(temp!=0xf0) //掃描列 { delayms(10)。 temp=P1。 temp=tempamp。0xf0。 while(temp!=0xf0) { temp=P1。 西安工程大學(xué)本科畢業(yè)設(shè)計(論文) 43 switch(temp) { case 0xee:num=7。 break。 case 0xde:num=8。 break。 case 0xbe:num=9。 break。 case 0x7e:num=39。/39。 break。 } while(temp!=0xf0) //等待松手 { temp=P1。 temp=tempamp。0xf0。 } } } P1=0xfd。 //掃描第二行 temp=P1。 temp=tempamp。0xf0。 while(temp!=0xf0) //掃描列 { delaym
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦

基于單片機的簡易計算器設(shè)計-資料下載頁

【總結(jié)】電》