版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄:</b></p><p> 課題目標(biāo)··························
2、3;········2</p><p> 系統(tǒng)總體設(shè)計(jì)方案規(guī)劃與選定·················2</p><p> 硬件設(shè)計(jì)
3、83;··································2</p>
4、<p> 軟件設(shè)計(jì)··································&
5、#183;3 </p><p> 4.1 主程序流程圖···························4</p><p
6、> 4.2 鍵盤讀取程序流程圖·····················5</p><p> 4.3 顯示函數(shù)流程圖······
7、3;··················6</p><p> 4.4 數(shù)值轉(zhuǎn)換流程圖············
8、83;············6 </p><p> 調(diào)試···················
9、3;···················7</p><p> 新增功能及實(shí)現(xiàn)方法············
10、;············10</p><p> 小結(jié)與體會(huì)···················
11、83;············11</p><p> 參考文獻(xiàn)···················
12、183;··············12</p><p> 附錄(源程序代碼、電路圖等)···············12&
13、lt;/p><p><b> 1.課程目標(biāo)</b></p><p> 設(shè)計(jì)一個(gè)計(jì)算器,實(shí)現(xiàn)兩個(gè)4位數(shù)(含整數(shù)和小數(shù))的加減乘除,運(yùn)算功能數(shù)據(jù)輸入及運(yùn)算結(jié)果顯示與平時(shí)使用計(jì)算機(jī)相同。用8279接口實(shí)現(xiàn),4*5鍵盤及8位LED燈顯示。</p><p> 20個(gè)鍵包括0~9共10個(gè)數(shù)字鍵,‘+’,‘-’,‘*’,‘/’共4個(gè)運(yùn)算鍵,‘=’鍵,小數(shù)點(diǎn)
14、鍵以及清零鍵,剩余3個(gè)鍵可以自由發(fā)揮。系統(tǒng)復(fù)位后,應(yīng)在最右邊LED上顯示0。</p><p> 2.系統(tǒng)總體設(shè)計(jì)方案規(guī)劃與選定</p><p> 由于本學(xué)期學(xué)習(xí)了C51單片機(jī)的課程,此次的單片機(jī)選擇了AT89C51。同樣因?yàn)榍岸螘r(shí)間的實(shí)驗(yàn)使用過LED,所以這次顯示屏幕還是選擇了LED的顯示屏,方便操作和使用。接口部分課程規(guī)定要用8279,其功能十分強(qiáng)大,讀取鍵盤等都十分便利,利于LED
15、燈和鍵盤的擴(kuò)展,其中還使用了74HC138,74LS373配合電路的實(shí)現(xiàn)和連接。</p><p><b> 3.硬件設(shè)計(jì)</b></p><p> AT89C51通過8279擴(kuò)展鍵盤和LED燈,其中P0口作為單片機(jī)芯片與8279傳遞命令,狀態(tài),數(shù)據(jù)的端口,P2口通過P2.0的狀態(tài)來(lái)區(qū)分8279是狀態(tài)字傳送還是數(shù)據(jù)傳送。INT0口與8279的IRQ連接,當(dāng)有鍵按下時(shí)
16、會(huì)產(chǎn)生一個(gè)中斷,從而執(zhí)行中斷程序。</p><p> 8279中的SL0,SL1,SL2產(chǎn)用編碼模式,通過一個(gè)74HC138可以控制8條線,其中4條線分別和鍵盤行線相連接,作為掃描線。同時(shí)8279中的RL0~4作為鍵盤的列線,當(dāng)鍵盤上有鍵按下時(shí),可以通過掃描值和返回值得到鍵的準(zhǔn)確位置,從而根據(jù)位置執(zhí)行不同的函數(shù)。</p><p> 8279的OUTA,OUTB共8個(gè)端口通過一個(gè)74LS
17、373與LED相連,作為L(zhǎng)ED的數(shù)據(jù)線,而8個(gè)LED燈的片選端由8279的SL0,SL1,SL2控制。(詳細(xì)電路圖見附錄一)</p><p><b> 4.軟件設(shè)計(jì)</b></p><p><b> 4.1主程序流程圖</b></p><p><b> 是</b></p><
18、p> 4.2鍵盤讀取程序流程圖</p><p><b> ↓</b></p><p> 4.3顯示函數(shù)流程圖</p><p> 4.4數(shù)字轉(zhuǎn)換流程圖</p><p><b> 5.調(diào)試</b></p><p><b> 電路圖調(diào)試:</b&g
19、t;</p><p> 將程序放入單片機(jī)后,在實(shí)際運(yùn)行的時(shí)候發(fā)現(xiàn)顯示屏上出現(xiàn)了相同的亂碼,按下鍵盤不能改變顯示。在檢查了一遍連線后,我們對(duì)器件也進(jìn)行了一次檢查,發(fā)現(xiàn)我們?cè)谄鞑倪x擇時(shí)選擇了共陽(yáng)極的LED燈,于是我們上網(wǎng)查了共陰極LED的編號(hào)并改了過來(lái)。但在運(yùn)行時(shí)發(fā)現(xiàn)還是無(wú)法正常顯示,我們決定一步一步執(zhí)行來(lái)找到問題所在。我們?cè)诎聪麻_關(guān)時(shí),觀察開關(guān)兩端的電位變化發(fā)現(xiàn)無(wú)論開關(guān)按下與否,開關(guān)右側(cè)始終顯示高電平,導(dǎo)致鍵盤返
20、回值一直是零而無(wú)法產(chǎn)生中斷。我們嘗試將電阻去掉后發(fā)現(xiàn)鍵盤的電位變化正常了。</p><p> 我們?cè)俅芜\(yùn)行程序,發(fā)現(xiàn)鍵盤可以引起顯示的變化,但是顯示的全部都是亂碼,與我們?cè)O(shè)想的不一樣。我們首先檢查了一遍鍵碼表,發(fā)現(xiàn)沒有問題后我們?cè)俅螜z查了連線,看各個(gè)端口的連接是否有問題。通過反復(fù)檢查和8279功能鍵的比對(duì),我們發(fā)現(xiàn)OUTA,OUTB這兩個(gè)口在作為輸出口的時(shí)候是OUTA作為高4位的,我們連錯(cuò)了位置,結(jié)果導(dǎo)致顯示結(jié)
21、果出現(xiàn)了很大的偏差。</p><p> 電路圖是修改程序的基礎(chǔ),只有在電路圖正確的基礎(chǔ)上我們才能準(zhǔn)確的判斷程序的正確性。經(jīng)過多次的調(diào)試之后,電路圖終于可以正常工作了。</p><p><b> 程序調(diào)試:</b></p><p> 整個(gè)程序比較長(zhǎng),因此我們將整個(gè)程序分成4個(gè)部分來(lái)編寫和分析,包括鍵盤讀取程序,顯示程序,數(shù)值轉(zhuǎn)化程序以及主程
22、序和中斷程序等連接程序。</p><p> 首先是對(duì)主程序和中斷程序的檢查,主要是狀態(tài)字的書寫時(shí)候正確,有沒有正確清零LED燈,這部分的問題比較少,基本沒有浪費(fèi)太多時(shí)間。</p><p><b> 鍵盤讀取程序:</b></p><p> 鍵盤讀取程序的編寫比較麻煩,需要考慮數(shù)字鍵和功能鍵的區(qū)別。在實(shí)際運(yùn)行過程中,當(dāng)我們?cè)诎聪鹿δ苕I后發(fā)現(xiàn)
23、不能對(duì)先前輸入的數(shù)清除,當(dāng)有數(shù)字鍵按下后會(huì)跟在原先的數(shù)字后顯示出來(lái)。這應(yīng)該是屬于功能鍵部分的問題,我們通過檢查發(fā)現(xiàn)我們?cè)诠δ苕I部分忘了給它賦值。解決這個(gè)問題后我們又發(fā)現(xiàn)當(dāng)我們按下清零鍵后,再按小數(shù)時(shí)小數(shù)位數(shù)會(huì)發(fā)生疊加的現(xiàn)象,我們不得不再次檢查清零鍵部分,反復(fù)比對(duì)之后發(fā)現(xiàn)我們?cè)谇辶阒鬀]有對(duì)記錄小數(shù)位數(shù)的變量清零,導(dǎo)致小數(shù)位數(shù)出錯(cuò)。在鍵盤讀取程序中,我們還需要對(duì)輸入的各個(gè)數(shù)字轉(zhuǎn)化為能運(yùn)算的數(shù)值,這個(gè)我們同樣是通過一個(gè)小數(shù)點(diǎn)標(biāo)志位來(lái)判斷,對(duì)
24、其進(jìn)行不同的操作,達(dá)到運(yùn)算的要求。其中運(yùn)算同樣是在這里完成,在完成運(yùn)算后將結(jié)果作為返回值。</p><p><b> 顯示程序:</b></p><p> 顯示程序部分程序比較短,主要是對(duì)有無(wú)負(fù)數(shù),有沒有無(wú)效零的判斷。通過負(fù)數(shù)標(biāo)志位來(lái)判斷負(fù)數(shù),通過從后向前循環(huán)查詢的方式將數(shù)組中的無(wú)效零都清除,并改變數(shù)值的顯示長(zhǎng)度。運(yùn)行時(shí)我們發(fā)現(xiàn)一旦出現(xiàn)了負(fù)號(hào),我們?cè)诎聪虑辶沔I之后
25、發(fā)現(xiàn)不能將負(fù)號(hào)給清除。我們首先嘗試了清空FIFO和顯示RAM的操作,發(fā)現(xiàn)并沒有能解決這一問題,后來(lái)我們又檢查了一遍清零程序,發(fā)現(xiàn)我們漏掉了負(fù)號(hào)標(biāo)志位的賦值。因?yàn)檫@是后來(lái)加上的功能,導(dǎo)致遺漏了這樣一個(gè)小問題,讓我們尋找了很長(zhǎng)時(shí)間。</p><p><b> 數(shù)值轉(zhuǎn)化程序:</b></p><p> 這部分是十分重要的一部分,需要將計(jì)算得出的結(jié)果轉(zhuǎn)化成一個(gè)一個(gè)的數(shù)字才
26、能實(shí)現(xiàn)LED的顯示。數(shù)值轉(zhuǎn)化過程我們用的大體思路是將結(jié)果都轉(zhuǎn)化成小數(shù),然后乘以10取整就能得到一個(gè)一個(gè)數(shù)字了。這一部分其實(shí)并不是很難,但最關(guān)鍵的是在于小數(shù)位數(shù)的判斷上。我們?cè)O(shè)計(jì)的小數(shù)位數(shù)標(biāo)志位pointx和pointy來(lái)記錄數(shù)字的小數(shù)位數(shù),然后再根據(jù)它們所做的運(yùn)算來(lái)確定小數(shù)位數(shù),例如乘法的最大小數(shù)位數(shù)是pointx+pointy(若有無(wú)效零將在顯示部分去除),而除法我們直接默認(rèn)小數(shù)位數(shù)為8以提高準(zhǔn)確性。在經(jīng)過轉(zhuǎn)化時(shí)會(huì)做出一定的調(diào)整,并在
27、整數(shù)部分最后一個(gè)數(shù)加上小數(shù)點(diǎn)。這塊內(nèi)容給我們帶來(lái)了很大的問題,讓我們花費(fèi)了很長(zhǎng)的時(shí)間。主要問題還是處在小數(shù)位數(shù)的問題上,一開始當(dāng)我們按下一個(gè)小數(shù)后,第二個(gè)數(shù)默認(rèn)的就是和前一個(gè)數(shù)的小數(shù)位數(shù)相同,但這不是我們想要的結(jié)果,經(jīng)過分析我們覺得可能還是小數(shù)標(biāo)志位的問題。在對(duì)其檢查時(shí)發(fā)現(xiàn)我們?cè)诎聪碌诙€(gè)數(shù)時(shí)沒有考慮到前一個(gè)已經(jīng)對(duì)標(biāo)志位賦值因此影響了后一個(gè)數(shù)的輸入,我們?cè)谄浜蠹尤肓艘粋€(gè)標(biāo)志位清零語(yǔ)句,順利解決了這個(gè)問題。但隨之而來(lái)的問題是我們發(fā)現(xiàn)最后計(jì)
28、算的結(jié)果總是和兩個(gè)位數(shù)之和相同,雖然還是位數(shù)的問題但</p><p> 這一部分的程序我們經(jīng)過了多次的調(diào)整,修改了很多,終于能夠?qū)崿F(xiàn)基本的操作和數(shù)字的正常顯示。</p><p> 6.新增功能及實(shí)現(xiàn)方法</p><p> 這次因?yàn)闀r(shí)間的原因,在功能擴(kuò)展上做的并不多,主要是擴(kuò)展了一個(gè)求和函數(shù),主要實(shí)現(xiàn)對(duì)輸入數(shù)字取整之后,從1加到這個(gè)數(shù)字為止的一個(gè)函數(shù),另外則是平
29、方函數(shù)和開方函數(shù)。求和函數(shù)先通過取整確保函數(shù)可加,然后利用一個(gè)簡(jiǎn)單的循環(huán)求的最終的答案。而另外兩個(gè)函數(shù)則是直接調(diào)用的庫(kù)函數(shù),方便計(jì)算而已。</p><p> 程序的可擴(kuò)展性較好,想添加新的功能只需要在功能鍵碼表中增加相應(yīng)的鍵碼,在判斷語(yǔ)句中增加相應(yīng)的選項(xiàng)就可以了。</p><p><b> 7.小結(jié)與體會(huì)</b></p><p> 這次課
30、程設(shè)計(jì)對(duì)我們來(lái)說(shuō)是一個(gè)不小的挑戰(zhàn),連接電路圖,查找資料更加深入的學(xué)習(xí)8279的功能,重新學(xué)習(xí)C語(yǔ)言的知識(shí)。這次課程設(shè)計(jì)從開始連接到最終成功前后經(jīng)歷了一個(gè)多星期。在整個(gè)設(shè)計(jì)過程中,我們都跑到圖書館借書來(lái)學(xué)習(xí),在網(wǎng)上找資料學(xué)習(xí),在整個(gè)課程設(shè)計(jì)的過程中學(xué)到了許多沒學(xué)到的知識(shí)。在最初的設(shè)計(jì)中,發(fā)揮“三個(gè)臭皮匠,頂個(gè)諸葛亮”的作用,不懂的地方就請(qǐng)教同學(xué)。而在程序編寫中,我們思路并不是很清晰,在這樣的情況下編寫的程序很難實(shí)現(xiàn)我們所需要的功能,反而在
31、靜下心來(lái)理清思路之后反而能更快的達(dá)到目的。在編寫時(shí)往往一個(gè)很細(xì)小的錯(cuò)誤就能讓我們?cè)谀锹耦^苦思很長(zhǎng)時(shí)間,原本只是一個(gè)很簡(jiǎn)單的問題可能就因?yàn)榇中脑斐闪藭r(shí)間的浪費(fèi)。這也讓我們明白來(lái)了在編程時(shí)一定要細(xì)心,同時(shí)也一定要能靜下心來(lái),對(duì)于程序出現(xiàn)的錯(cuò)誤要耐心的逐個(gè)解決,堅(jiān)持不懈,不輕易放棄。這次編程,我體會(huì)到了條理的重要性,理解了耐心的作用,也打打提高了我的編程能力。總之,此次課設(shè)使我的能力得到了全方位的提高,使得我的操作能力和專業(yè)技能都有了很大的提
32、高。</p><p><b> 8.參考文獻(xiàn)</b></p><p> 單片機(jī)原理及應(yīng)用 張紅潤(rùn) 孫悅 張亞凡 編著</p><p> 單片機(jī)實(shí)用技術(shù) 劉高鏁 主編 崔華 蔡炎光 編著</p><p> 80C51單片機(jī)原理,開發(fā)與應(yīng)用實(shí)例
33、 于曉東 主編</p><p> 吳博 秦柏 狄海延 編著</p><p><b> 附錄一 電路圖</b></p><p><b> 附錄二 程序清單</b></p><p> #include <reg51.h></p><p> #inclu
34、de <absacc.h></p><p> #include <math.h></p><p> #define uchar unsigned char</p><p> #define ulong unsigned long</p><p> #define adr1 XBYTE[0x7fff]</p
35、><p> #define adr2 XBYTE[0x7eff]</p><p> uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//LED顯 示數(shù)組</p><p> uchar xianshi[8]={0},b;//xianshi[]是結(jié)果存
36、放的數(shù)組,b表示結(jié)果的小數(shù)最大位數(shù)</p><p> float x=0,y=0,z=0,c=1;</p><p> uchar flag1=0,flag2=0,flag3=0,h,w;//flag1小數(shù)點(diǎn)標(biāo)志位,flag2運(yùn)算符標(biāo)志位,flag3等號(hào)標(biāo)志位,h,w是運(yùn)算符選擇位</p><p> uchar flag4=1;//flag4負(fù)數(shù)標(biāo)志位</
37、p><p> uchar pointx=0,pointy=0;//pointx表示第一個(gè)數(shù)字的小數(shù)位數(shù),pointy表示第二個(gè)數(shù)字的小數(shù)位數(shù)</p><p> uchar translate(float a,uchar h);//將結(jié)果轉(zhuǎn)化為可在LED上顯示的編碼函數(shù)</p><p> void dir(uchar * data p,uchar weishu);/
38、/將結(jié)果輸出到LED上的函數(shù) </p><p> float keyscan(uchar key);//讀取鍵盤按鍵的函數(shù)</p><p> void main ()</p><p><b> {</b></p><p> uchar key=0xff,m=0;</p><p> adr
39、1=0xd1;//清零操作,設(shè)置參數(shù)</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> ACC=adr1;</b></p><p> if (AC==0) break;//等待清零操作完成</p&g
40、t;<p><b> }</b></p><p> adr1=0x2a;</p><p> adr1=0x10;</p><p> adr1=0x90;</p><p> adr2=0xbf;</p><p> EA=1;//開中斷</p><p>
41、;<b> EX0=1;</b></p><p><b> IT0=1;</b></p><p> while(1);//等待中斷</p><p><b> }</b></p><p> int0() interrupt 0 </p><p>
42、<b> {</b></p><p> uchar key=0xff,weishu;</p><p> float a=0;</p><p> adr1=0x40;//讀RAM命令</p><p><b> key=adr2;</b></p><p> a=key
43、scan(key);</p><p> weishu=translate(a,w);</p><p> dir(xianshi,weishu);</p><p><b> }</b></p><p> float keyscan(uchar key)</p><p><b>
44、{</b></p><p> uchar i,a=99;</p><p> float n=0;</p><p> uchar tab1[10]={0xd8,0xd0,0xd1,0xd2,0xc8,0xc9,0xca,0xc0,0xc1,0xc2};//數(shù)字鍵碼表</p><p> uchar tab2[10]={0xd9
45、,0xda,0xdb,0xcb,0xcc,0xd3,0xd4,0xdc,0xc3,0xc4};//功能鍵鍵碼表</p><p> for(i=0;i<10;i++)//查表是否有功能鍵按下</p><p><b> {</b></p><p> if(key==tab2[i])</p><p><b&g
46、t; a=i;</b></p><p><b> }</b></p><p> switch (a)</p><p><b> {</b></p><p> case 0://小數(shù)點(diǎn)</p><p><b> { </b>
47、</p><p><b> flag1=1;</b></p><p> if(flag2==0)</p><p><b> n=x;</b></p><p><b> else</b></p><p><b> n=y;</b&
48、gt;</p><p><b> }</b></p><p><b> break;</b></p><p> case 1://平方</p><p><b> {</b></p><p><b> z=x*x;</b>&
49、lt;/p><p><b> w=5;</b></p><p> pointx=2*pointx;</p><p><b> flag2=1;</b></p><p><b> };</b></p><p><b> break;<
50、/b></p><p> case 2://清零</p><p><b> {</b></p><p><b> flag1=0;</b></p><p><b> flag2=0;</b></p><p><b> flag3
51、=0;</b></p><p><b> flag4=1;</b></p><p><b> x=0;</b></p><p><b> y=0;</b></p><p><b> n=0;</b></p><p&g
52、t;<b> c=1;</b></p><p><b> pointx=0;</b></p><p><b> pointy=0;</b></p><p><b> }</b></p><p><b> break;</b>
53、</p><p> case 3://加號(hào)</p><p><b> {</b></p><p><b> flag1=0;</b></p><p><b> flag2=1;</b></p><p><b> c=1;</b&
54、gt;</p><p><b> h=3;</b></p><p><b> w=3;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case 4://減號(hào)
55、</p><p><b> {</b></p><p><b> flag1=0;</b></p><p><b> flag2=1;</b></p><p><b> c=1;</b></p><p><b>
56、 h=4;</b></p><p><b> w=4;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case 5://乘號(hào)</p><p><b> {&
57、lt;/b></p><p><b> flag1=0;</b></p><p><b> flag2=1;</b></p><p><b> c=1;</b></p><p><b> h=5;</b></p><p&g
58、t;<b> w=5;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case 6://除號(hào)</p><p><b> {</b></p><p><
59、b> flag1=0;</b></p><p><b> flag2=1;</b></p><p><b> c=1;</b></p><p><b> h=6;</b></p><p><b> w=6;</b></p&
60、gt;<p><b> }</b></p><p><b> break;</b></p><p> case 7://等號(hào)</p><p><b> {</b></p><p><b> flag1=0;</b></p>
61、;<p><b> flag2=0;</b></p><p><b> flag3=1;</b></p><p><b> switch(h)</b></p><p><b> {</b></p><p> case 3:z=x+y
62、;break;</p><p><b> case 4:</b></p><p><b> {</b></p><p><b> z=x-y;</b></p><p><b> if(z<0)</b></p><p>
63、<b> {</b></p><p><b> z=-z;</b></p><p><b> flag4=-1;</b></p><p><b> }</b></p><p><b> };break;</b></p&
64、gt;<p> case 5:z=x*y;break;</p><p> case 6:z=x/y;break;</p><p><b> }</b></p><p><b> n=z;</b></p><p><b> x=0;</b></p&g
65、t;<p><b> y=0;</b></p><p><b> c=1;</b></p><p><b> h=0;</b></p><p><b> }</b></p><p><b> break;</b>
66、;</p><p> case 8://開平方</p><p><b> {</b></p><p> z=sqrt(x);</p><p><b> w=6;</b></p><p><b> pointx=8;</b></p>
67、<p><b> flag2=1;</b></p><p><b> };break;</b></p><p> case 9://求和函數(shù)</p><p><b> {</b></p><p><b> int i,j;</b>&l
68、t;/p><p> j=floor(x);</p><p><b> z=0;</b></p><p> for(i=j;i>0;i--)</p><p><b> z=z+i;</b></p><p><b> flag1=0;</b>&l
69、t;/p><p><b> pointx=0;</b></p><p><b> flag2=1;</b></p><p><b> };break;</b></p><p><b> }</b></p><p> for(i
70、=0;i<10;i++)//查表是否為數(shù)字</p><p><b> {</b></p><p> if(flag2==0)</p><p><b> {</b></p><p> if(key==tab1[i])</p><p><b> {<
71、;/b></p><p> if(flag1==0)</p><p><b> {</b></p><p><b> x=x*10+i;</b></p><p><b> }</b></p><p><b> else <
72、/b></p><p><b> { </b></p><p><b> c=c*0.1;</b></p><p><b> x=x+i*c;</b></p><p><b> pointx++;</b></p><
73、p><b> }</b></p><p> n=x;//獲得第一個(gè)數(shù)的數(shù)值</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p>
74、 else if(flag2==1)</p><p><b> {</b></p><p> if(key==tab1[i])</p><p><b> {</b></p><p> if(flag1==0)</p><p><b> {</b&g
75、t;</p><p><b> y=y*10+i;</b></p><p><b> }</b></p><p><b> else </b></p><p><b> { </b></p><p><b>
76、 c=c*0.1;</b></p><p><b> y=y+i*c;</b></p><p><b> pointy++;</b></p><p><b> }</b></p><p> n=y;//獲得第二個(gè)數(shù)的數(shù)值</p><p&
77、gt;<b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> return(n);</p><p><b&g
78、t; }</b></p><p> uchar translate(float a,uchar w)</p><p><b> { </b></p><p> uchar f=0;</p><p> ulong i,m;</p><p><b> ucha
79、r e;</b></p><p><b> e=a/1;</b></p><p><b> if(e==0)</b></p><p><b> {</b></p><p> xianshi[f]=0x3f;</p><p><b
80、> f=1;</b></p><p><b> }</b></p><p> b=pointx;//確定小數(shù)的位數(shù)</p><p> if(flag2==1)</p><p><b> b=pointy;</b></p><p> if(flag
81、3==1)</p><p><b> {</b></p><p> if(w==3||w==4||w==5)</p><p><b> {</b></p><p> b=pointx+pointy;</p><p><b> }</b><
82、/p><p><b> if(w==6)</b></p><p><b> b=8;</b></p><p><b> w=0;</b></p><p><b> }</b></p><p> if(a<1) xians
83、hi[0]=xianshi[0]+0x80;//將結(jié)果轉(zhuǎn)換到單個(gè)編碼形式</p><p> for(i=0;a>=1;i++)</p><p><b> a=a/10;</b></p><p><b> b=b+i;</b></p><p> for(m=0;m<b&&a
84、mp;f<8;m++)</p><p><b> {</b></p><p><b> a=a*10;</b></p><p> e=floor(a);</p><p><b> a=a-e;</b></p><p> xianshi[f
85、++]=tab[e];</p><p><b> }</b></p><p> xianshi[i-1]=xianshi[i-1]+0x80;</p><p> if(a>0.7) xianshi[f-1]=tab[e+1];</p><p> return (f);</p><p>
86、;<b> }</b></p><p> void dir(uchar * data p,uchar weishu)</p><p><b> { </b></p><p><b> uchar *s;</b></p><p><b> uchar i
87、;</b></p><p> adr1=0xd1;</p><p> adr1=0x90;</p><p> if(flag4==-1)</p><p> adr2=0x40;</p><p> if(flag3==1)//按完等號(hào)后對(duì)末尾的無(wú)效零清除</p><p>&l
88、t;b> {</b></p><p> s=p+weishu-1;</p><p> while (*s==0x3f)</p><p><b> {</b></p><p><b> weishu--;</b></p><p> s=p+weis
89、hu-1;</p><p><b> }</b></p><p><b> } </b></p><p> for(i=0;i<weishu;i++)//顯示結(jié)果</p><p><b> {</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)計(jì)算器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--計(jì)算器
- 單片機(jī)課程設(shè)計(jì)-計(jì)算器
- 課程設(shè)計(jì)-單片機(jī)計(jì)算器
- 單片機(jī)課程設(shè)計(jì)報(bào)告---簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器2
- 單片機(jī)課程設(shè)計(jì)報(bào)告-簡(jiǎn)易計(jì)算器
- 簡(jiǎn)易計(jì)算器單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器4
- 單片機(jī)課程設(shè)計(jì)——計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告-- 簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---多功能計(jì)算器
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)---計(jì)算器實(shí)驗(yàn)
- 單片機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 基于單片機(jī)的計(jì)算器設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)
- 單片機(jī)系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)--計(jì)算器
評(píng)論
0/150
提交評(píng)論