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

正文內(nèi)容

基于單片機的計算器設(shè)計計算器畢業(yè)論文(已改無錯字)

2022-07-25 20:50:41 本頁面
  

【正文】 5功能多次測量次數(shù) 第一運算數(shù) 運算符號 第二運算數(shù) 運算結(jié)果 實際結(jié)果1 524 + 2 55914 3 562 * 2 1124 11244 67 / 5 8 (無輸入) 6 9 ^ 2 81 817 (無輸入) + 19 100 1008 (無輸入) (無輸入) 10 109 42 / 0 math error 錯誤10 64 (無輸入) math error 錯誤結(jié)果分析:對比運算結(jié)果和實際結(jié)果可知,進行一般的整形運算計算器能準確無誤計算出來,但是當進行浮點運算時候,會產(chǎn)生精度丟失或者是有尾數(shù)產(chǎn)生,這是因為單片機對的浮點運算功能差,而且在keil開發(fā)環(huán)境中,float型和double型浮點數(shù)的精度都是一樣的,其小數(shù)點的有效數(shù)字位數(shù)都是6~7位,這就決定了本設(shè)計的計算器的浮點數(shù)精度有限,只能通過小數(shù)點補償來減少浮點數(shù)運算誤差。另外,由連續(xù)運算、新一輪運算測試、錯誤提示測試的結(jié)果以及運算過程中的AC清零、聲音開關(guān)設(shè)置可見,本設(shè)計的計算器的功能基本能實現(xiàn)。但是,由實際操作可發(fā)現(xiàn)本設(shè)計存在以下不足:(1)某些按鍵不夠靈敏,導(dǎo)致需要按很多次才能輸入;(2)當運算式子超過屏幕范圍時,不能通過移動屏幕來完全顯示式子;(3)當連續(xù)出現(xiàn)錯誤操作時,如連續(xù)輸入減號,程序不能自動復(fù)位,會產(chǎn)生連續(xù)錯誤;(4)沒有刪除輸入功能,當輸入出錯時,只能通過清零后重新輸入;(5)沒有數(shù)據(jù)溢出提示功能。 第七章 總結(jié)與展望 經(jīng)過多次測量與調(diào)試,本計算器基本能實現(xiàn)設(shè)計要求中的功能。在設(shè)計的過程中,也遇到了不少的困難,例如在LCD上顯示任意位整數(shù),顯示任意位小數(shù),在輸入小數(shù)的時候小數(shù)點的處理問題,連續(xù)運算的結(jié)果保存與清空問題等等。最后通過不斷的查閱資料,請教別人,修改程序,下載調(diào)試等過程,終于把遇到的問題逐一解決了。雖然某些問題解決得不夠完美,但是都是經(jīng)過自己的思考和努力解決的,在此過程自己也學(xué)到了很多東西,例如學(xué)會了矩陣鍵盤的掃描技術(shù)、LCD接口技術(shù)、LCD的顯示技術(shù)、中斷技術(shù)等等,這些技術(shù)對熟練單片機的使用以及單片機項目開發(fā)是非常有幫助的。在設(shè)計的過程中的思考解決問題的思路和方法對以后的工作和生活都是非常有幫助的。單片機程序運行可靠,并且可以修改,通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是一些獨特的功能。通過使用單片機編寫的程序?qū)崿F(xiàn)高智能、高效率和更高的可靠性。本設(shè)計是由單片機實現(xiàn)的模擬計算器,它不僅能實現(xiàn)數(shù)據(jù)的加減乘除運算,而且還能使數(shù)據(jù)及其計算結(jié)果在數(shù)碼管上顯示出來,能夠?qū)崿F(xiàn)0256的數(shù)字四則運算。本設(shè)計是用單片機AT89C51來控制,采用LCD1602液晶顯示讀取數(shù)據(jù),軟件部分是由C語言來編寫的。利用鍵盤和LCD1602設(shè)計一個簡單的數(shù)學(xué)計算器,可以完成簡單的如加,減,乘,除的四則運算,并將運算結(jié)果在LCD1602上顯示出來。 致 謝本課題是在武傳艷導(dǎo)師的直接關(guān)懷和耐心指導(dǎo)下完成的。在整個設(shè)計期間,武老師嚴謹?shù)闹螌W(xué)態(tài)度、一絲不茍的工作作風、無私的奉獻品德、高度的責任感和實干的精神對我影響至深,使我受益終生,在此向武老師表示崇高的敬意和衷心的感謝。在論文完成之時,再次感謝導(dǎo)師在諸多學(xué)術(shù)上的指導(dǎo)和生活上的關(guān)懷,我會終生銘記導(dǎo)師的教誨,學(xué)習(xí)恩師的品格,在今后的人生道路上再接再厲,無愧于恩師的栽培,還要向在實驗和論文完成過程中給予我?guī)椭耐瑢W(xué)們表示衷心的感謝!最后,向幫助過我的各位老師和同學(xué)表示深深的謝意! 參考文獻[1],北京:北京航空航天大學(xué)出版社,2007 [2],北京:中國水利水電出社,2008[3],西安:中國電力出版社,2005[4],西安:西安電子科技大學(xué)出版社,2011 [5] [M], 北京:電子社,2004[6] [M],北京:高等教社,2003[7] [M],北京: 清華大學(xué)出版社2004[8] :入門、提高、開發(fā)、拓展全攻 略,北京:電子工業(yè)出版社,2009[9] ,第三版,北京:清華大學(xué)出版社,2005[10],第二版,北京:北京航天航空大學(xué)出版社,[11] 系列單片微型計算機及其應(yīng)用,第四版:東南大學(xué)出版社,[12],大連:大連交通大學(xué),[13]單片機應(yīng)用技術(shù)(C 語言):中國勞動社會保障出版社, [14]:電子工業(yè)出版社,[15],嵌入式應(yīng)用技術(shù)基礎(chǔ)教程,北京:清華大學(xué)出版社,[16] 微控制器原理及應(yīng)用,北京:北京航空航天大學(xué)出版社,[17],北京:北京航空航天大學(xué)出版社,[18],第四版:附錄程序清單includeincludeinclude uint temp,num。//鍵盤掃描數(shù)值uchar keynum1=0,keynum2=0,sign=0,i=0,j=0。 //按鍵計數(shù),符號標示uchar num1[8]={0},num2[8]={0}。 //按鍵存儲數(shù)組float ans1=0,ans2=0,ans=0,point=0。 //運算數(shù)據(jù)bit conflag=0。 //繼續(xù)運算標志位bit newcalc=0。 //新運算標志bit ac=0。 //清零標志,1為清零bit beepflag=0。 //蜂鳴器標志位bit sqrtflag1=0。 //開方1標志位bit sqrtflag2=0。 //開方2標志位bit powflag=0。sbit keybeep=P3^3。//蜂鳴器開關(guān)按鍵sbit beep=P3^7。 //蜂鳴器控制口sbit keysqrt=P3^4。//開方按鍵sbit keypow=P3^5。//任意次方按鍵uchar keyscan()。void maininit(void)。/****主程序***/void main(void){ maininit()。//初始化 while(1) //整個系統(tǒng)大循環(huán),讓計算器一直處于工作狀態(tài) { while(1) //第一運算數(shù)掃描 { if(ac==1) break。 //若清零,則退出輸入 if((keyscan()!=39。N39。)amp。amp。((num=0amp。amp。num=9)||num==39。.39。)) //記錄按下的數(shù)字 { if(newcalc==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) { 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。 //清除開方標志 sqrtflag2=0。//清除開方標志 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。 //若清零,則退出輸入 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。//清除開方標志 if(keysqrt==0) //進入開方 { delayms(5)。 if(keysqrt==0) { sqrtflag2=1。 //開方標志 lcdwrite_data(0xe8)。 //寫開方符號 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ù)的輸入 } else if(num==39。+39。||
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦

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

【總結(jié)】電》