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

正文內(nèi)容

單片機課程設(shè)計-計算器(編輯修改稿)

2025-07-23 12:47 本頁面
 

【文章內(nèi)容簡介】 x80 + x。 //x=0為一行的第一個 else //第二行 address =0xc0+ x。 write_(address)。 //設(shè)置數(shù)據(jù)指針位置,調(diào)用LCD寫命令函數(shù)}LCD顯示函數(shù):void LCD_dsp_char( unsigned x,unsigned char y,unsigned char dat)//單個字符顯示函數(shù){ LCD_set_xy( x, y )。 //調(diào)用LCD顯示位置設(shè)置函數(shù),設(shè)置顯示位置 write_data(dat)。 //寫入待顯示數(shù)據(jù),調(diào)用LCD寫數(shù)據(jù)函數(shù)}void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s)//字符串顯示函數(shù){ LCD_set_xy( X, Y )。 //調(diào)用LCD顯示位置設(shè)置函數(shù) while (*s) //當(dāng)字符串未到達(dá)結(jié)尾(39。\039。)時,循環(huán)輸出單個字符 { write_data(*s)。 s ++。 //指向下一個字符 } } 鍵盤掃描處理子程序 N Y 鍵盤掃描處理子程序流程圖,當(dāng)調(diào)用了鍵盤掃描處理子程序后,首先,為P1口賦值,然后等待,判斷P1口的值是否變化,若變化,根據(jù)變化后的值,來判斷按下的鍵值為多少;若P1口的值未發(fā)生變化,則循環(huán)掃描P1口的值,直到有按鍵按下導(dǎo)致P1口的值發(fā)生變化。在掃描到按鍵值后,將按鍵值保存在全局變量n中,以便其他函數(shù)使用、處理該值。在我編寫的程序中,例如下列程序段,我定義了一個臨時變量temp來比較該值與給定值,來判斷是否有鍵按下從而導(dǎo)致P1口的值發(fā)生變化。void key_scan(void) //鍵盤掃描處理子程序{ unsigned char temp。 //定義臨時變量temp保存P1的值 P1=0xfe。 //為P1賦值,選中第一行 if(P1!=0xfe) //P1發(fā)生變化 { delay(200)。 //延時200us if(P1!=0xfe) //再次判斷(消抖) { temp=P1amp。0xf0。 //判斷是哪一列 switch(temp) { case 0xe0:n=39。c39。break。//第一列 case 0xd0:n=39。039。break。//第二列 case 0xb0:n=39。=39。break。//第三列 case 0x70:n=39。+39。break。//第四列 } } while(P1!=0xfe)。 //等待,直到按鍵松掉 } ……} 運算子程序接收操作數(shù)a,b,fha=a+bfh=’+’? Ya=abfh=’’? fh=’*’?a=a*ba=a/bfh=’/’? a9999?輸出錯誤提示信息輸出計算結(jié)果 運算子程序流程圖,在取得操作數(shù)一、操作數(shù)二、運算符后,判斷操作符的性質(zhì),然后根據(jù)操作符來進行加減乘除的計算,將計算結(jié)果保存在a中,并判斷計算結(jié)果的值是否超過四位數(shù),若超過,則在屏幕上輸出錯誤提示信息,否則在屏幕上輸出正確結(jié)果。a中的值可以直接作為下次計算的第一個操作數(shù),即下次輸入的是運算符加減乘除的話,之后輸入的就是第二個操作數(shù),否則,需要清零再輸入兩個數(shù)進行下輪計算。在我的程序中,我設(shè)置了較多的標(biāo)志位,比如fuhao為負(fù)號標(biāo)志,xsd為小數(shù)點標(biāo)志,dh為等號標(biāo)志,flag為操作數(shù)標(biāo)志。以下是我的計算子程序的節(jié)選。switch(fuhao) //判斷操作符是哪個 { case 39。+39。: a=a+b。 break。 //加 case 39。39。: a=ab。 break。 //減 case 39。*39。: a=a*b。 break。 //乘 case 39。/39。: a=a/b。 break。 //除 } //計算 if(a9999) //判斷結(jié)果是否超過四位數(shù) { sprintf(temp,%s,Error)。 LCD_dsp_string(0,1,temp)。 //若結(jié)果超過四位數(shù)則輸出錯誤信息 n=17。 do { key_scan()。 }while(n==17)。 //等待按鍵 write_(0x01)。 //清屏 a=b=0。 //操作數(shù)清零 fuhao=0。 //操作符清空 flag=0。 //第一個操作數(shù) i=0。 j=0。 dh=0。 //等號清空 xsd=0。 //小數(shù)點清空 fh=0。 //將各個標(biāo)志位恢復(fù)初始化 } …… }第四章 系統(tǒng)調(diào)試與分析 調(diào)試過程與結(jié)果本次課程設(shè)計中,我使用了Proteus作為硬件仿真軟件,Keil作為軟件編寫編譯軟件,通過兩者的協(xié)調(diào),來實現(xiàn)仿真模擬。在Keil中編寫并編譯好程序后,導(dǎo)入到Proteus中,然后開啟仿真,使單片機運行,LCD上顯示出提示信息。按下任意鍵后LCD清屏。 歡迎界面 清屏在第一次計算中,我輸入了9999+1的運算式,按照正常的要求,輸出結(jié)果應(yīng)為‘E’,然而,我的輸出卻是一個錯誤的計算結(jié)果,經(jīng)過檢查后,我發(fā)現(xiàn)了程序中的錯誤,是操作數(shù)的定義出現(xiàn)了問題,我定義的操作數(shù)是無符號字符型,所以導(dǎo)致在計算過程中發(fā)生了溢出,最后生成了錯誤的計算結(jié)果。然后我修改了程序,將操作數(shù)的定義改為了單精度浮點型,然后再次運行。 錯誤輸出 正確輸出警告信息進行第二次運算。在這次運算中,我再次輸入了上次的運算式,結(jié)果不負(fù)所望,輸出為‘E’。經(jīng)過修改,結(jié)果已經(jīng)正確。最后,我猜測,在我改進程序之前,由于操作數(shù)的數(shù)據(jù)類型弄錯了,所以可能導(dǎo)致其他運算的結(jié)果可能也是錯誤的。進行第三次運算。輸入第一個操作數(shù),,同時,在我的設(shè)計中,將清零鍵與小數(shù)點鍵設(shè)置成了同一個鍵,以滿足4*4鍵盤要求。在同一個操作數(shù)中按下兩次ON/C鍵的話,會使屏幕清屏,數(shù)據(jù)清零。然后輸入操作符,我輸入的是乘號。然后輸入第二個操作數(shù),,輸入等號后,在LCD的第二行輸出了計算結(jié)果,經(jīng)過驗算,發(fā)現(xiàn)結(jié)果正確
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦

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

【總結(jié)】電》