版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 任務書</b></p><p> 課程設計題目及任務要求</p><p> 設計十進制加減乘法計算器,要求能顯示三位輸入和四位輸出。</p><p><b> 設計思路</b></p><p><b> 1.操作顯示設備</b></p
2、><p> 顯示設備采用八片七段共陰極LED顯示器,共設置16個鍵,其中數(shù)字鍵0-9共十個,接下來依次是加號鍵,減號鍵,乘號鍵,除號鍵,清除鍵,操作設備是4*4的矩陣鍵盤。 </p><p><b> 2.程序實現(xiàn)功能</b></p><p> ?。?)十進制加減乘除計算:輸入范圍為1-999,改程序輸入兩個定點數(shù),每個3位,輸出四位,A為加,
3、B為減,C為等于,輸出為四位計算結果。</p><p> (2)計算機復位功能:DEC均為清零重啟,任何時候按下DEC中一個將重新開始。</p><p><b> 緒論 </b></p><p> 現(xiàn)時學習或生活中,常會遇到一些數(shù)目較大數(shù)據(jù),繁雜的數(shù)據(jù)運算,徒手運算起來很困難,這時候我們就必須用到計算器。人們對計算器的要求不斷提高,現(xiàn)在,
4、已經(jīng)有一些功能較為強大,涵蓋面較廣的計算軟件,而且各種平臺的小工具仍不斷出現(xiàn),這些大大方便了我們的生活給我們更多的懸著和實現(xiàn)方式,本程序實現(xiàn)了加,減,乘,除的功能,但是,每次只能運算一個表達式,按DEC清空后再計算下一組式子。</p><p><b> 方案論證</b></p><p> 方案一:采用計算器專用芯片實現(xiàn)。用計算器專用芯片進行設計并編程實現(xiàn)。這種設計
5、方案計算效率高、速度快、而且成本也相對較低,是廠家做計算器的最佳方案。但是本人對計算器專用芯片掌握的不夠,還不足以實現(xiàn)設計計算器,所以這個方案不可去。</p><p> 方案二:用單片機實現(xiàn)。由于單片機集成了運算器電路、控制電路、存儲器、中斷系統(tǒng)、定時器/計數(shù)器以及輸入/輸出口電路等,所以用單片機設計控制電路省去了很多分立元器件。由于單片機是可編程芯片,并且它可以運用C語言編寫,對于一些復雜的計算功能,可以調用
6、C語言庫函數(shù)。使編寫程序變得非常簡單。所以該課題用單片機實現(xiàn),不僅功能易于實現(xiàn),而且精確度高,穩(wěn)定性好,抗干擾能力強。并且由于其成本低、體積小、技術成熟和功耗小等優(yōu)點,且技術比較成熟。性價比也相當高。更重要的是本人經(jīng)過幾年的學習,對單片機已有深刻的理解,并且可以靈活運用。</p><p><b> 方案說明</b></p><p> 按照系統(tǒng)設計的功能的要求,初步
7、確定設計系統(tǒng)由主控模塊、顯示模塊、錯誤報警模塊、鍵掃描接口電路共四個模塊組成,電路系統(tǒng)構成框圖如圖1.1所示。主控芯片使用51系列AT89C52單片機,采用高性能的靜態(tài)80C51設計,由先進工藝制造,并帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位COMS微處理芯片,市場應用最多。</p><p> 鍵盤電路采用4*4矩陣鍵盤電路。</p><p> 顯示模塊采用2枚四
8、位一體共陰極數(shù)碼管和74ls273鎖存芯片構成等器件構成。</p><p><b> 系統(tǒng)硬件設計</b></p><p><b> 1.單片機最小系統(tǒng)</b></p><p> 單片機最小系統(tǒng)就是支持主芯片正常工作的最小電路部分,包括主控芯片、復位電路和晶振電路。</p><p> 主控芯
9、片選取STC89C52RC芯片,因其具有良好的性能及穩(wěn)定性,價格便宜應用方便。</p><p> 晶振選取11.0592MHz,晶振旁電容選取30pF。</p><p> 采用按鍵復位電路,電阻分別選取100Ω和10K,電容選取10μF。</p><p><b> .2鍵盤接口電路</b></p><p><
10、b> 計算器所需按鍵有:</b></p><p> 數(shù)字鍵:’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’</p><p> 功能鍵:’+’, ’-‘ , ’*’, ’/ ’ , ’ = ’, ’ C( 清零)’</p><p> 共計16個按鍵,采用4*4矩陣鍵盤,鍵盤的行和列之間都有公共端相連,四行和四列
11、的8個公共端分別接P3.0~P3.7,這樣掃描P1口就可以完成對矩陣鍵盤的掃描,通過對16個按鍵進行編碼,從而得到鍵盤的口地址,對比P3口德掃描結果和各按鍵的地址,我們就可以得到是哪個鍵按下,從而完成鍵盤的功能。</p><p><b> .3數(shù)碼管顯示電路</b></p><p> 采用4位數(shù)碼管對計算數(shù)據(jù)和結果的顯示,這里選取共陽數(shù)碼管,利用NPN三極管對數(shù)碼
12、管進行驅動,為了節(jié)省I/O資源,采取動態(tài)顯示的方法來顯示計算數(shù)據(jù)及結果。</p><p> 利用74273鎖存器來實現(xiàn)數(shù)碼管的動態(tài)顯示,P0口輸出顯示值,P2.4為段選口,控制273鎖存器的時鐘引腳,從而得到對數(shù)碼管輸入數(shù)據(jù)的控制。</p><p> P2.0~P2.3用來作為位選端,控制哪幾位數(shù)碼管進行顯示。</p><p><b> 系統(tǒng)軟件設計
13、</b></p><p> 要進行數(shù)據(jù)的計算就必須先進行數(shù)據(jù)的輸入,也就必須確定按鍵輸入的數(shù)值是什么,這就需要對鍵盤進行掃描,從而確定究竟是哪個鍵按下。</p><p> 以下為鍵盤掃描子程序的程序清單</p><p> void dujian()</p><p><b> {</b></p&g
14、t;<p> uchar i=0,temp;</p><p><b> P3=0xf0;</b></p><p> if(P3!=0xf0)</p><p><b> {</b></p><p> delay(10);</p><p> if(P3!
15、=0xf0)</p><p><b> {</b></p><p> temp=0xfe; </p><p> for(i=0;i<4;i++)</p><p><b> { </b></p><p><b> P3=temp;</b
16、></p><p> switch(P3&0xf0)</p><p><b> {</b></p><p> case 0xe0: k=0+i*4;</p><p><b> break;</b></p><p> case 0xd0: k=1+i*4
17、;</p><p><b> break;</b></p><p> case 0xb0: k=2+i*4;</p><p><b> break;</b></p><p> case 0x70: k=3+i*4;</p><p><b> break;&
18、lt;/b></p><p> default : break;</p><p><b> }</b></p><p> temp=temp<<1|0x01;</p><p><b> }</b></p><p><b> switch(
19、k)</b></p><p><b> {</b></p><p> case 0: num2[flag_wei]=0;</p><p><b> break;</b></p><p> case 1: num2[flag_wei]=1;</p><p&g
20、t;<b> break;</b></p><p> case 2: num2[flag_wei]=2;</p><p><b> break;</b></p><p> case 3: num2[flag_wei]=3;</p><p><b> break;</b&
21、gt;</p><p> case 4: num2[flag_wei]=4;</p><p><b> break;</b></p><p> case 5: num2[flag_wei]=5;</p><p><b> break;</b></p><p>
22、case 6: num2[flag_wei]=6;</p><p><b> break;</b></p><p> case 7: num2[flag_wei]=7;</p><p><b> break;</b></p><p> case 8: num2[flag_wei]=8;&
23、lt;/p><p><b> break;</b></p><p> case 9: num2[flag_wei]=9;</p><p><b> break;</b></p><p> case 10: flag_fuhao=1; // +</p><p>
24、 switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu1=num2[0];</p><p><b> break;</b></p><p> case 2: shu1=num2[0]*10+num2[1];</p>
25、<p><b> break;</b></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p> default : break;</p><p><b
26、> }</b></p><p> for(i=0;i<8;i++)</p><p> num2[i]=0;</p><p> flag_wei=-1;</p><p><b> j=0;</b></p><p><b> break;</b>
27、;</p><p> case 11: flag_fuhao=2; // -</p><p> switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu1=num2[0];</p><p><b> break;
28、</b></p><p> case 2: shu1=num2[0]*10+num2[1];</p><p><b> break;</b></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;
29、</b></p><p> default : break;</p><p><b> }</b></p><p> for(i=0;i<8;i++)</p><p> num2[i]=0;</p><p> flag_wei=-1;</p><
30、p><b> j=0;</b></p><p><b> break;</b></p><p> case 12: flag_fuhao=3; // *</p><p> switch(flag_wei)</p><p><b> {</b></
31、p><p> case 1: shu1=num2[0];</p><p><b> break;</b></p><p> case 2: shu1=num2[0]*10+num2[1];</p><p><b> break;</b></p><p> case
32、3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p> default : break;</p><p><b> }</b></p><p> for(i=0;i<8;i++)</p
33、><p> num2[i]=0;</p><p> flag_wei=-1;</p><p><b> j=0;</b></p><p><b> break;</b></p><p> case 13: flag_fuhao=4; // /</p>
34、;<p> switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu1=num2[0];</p><p><b> break;</b></p><p> case 2: shu1=num2[0]*10+num2[1
35、];</p><p><b> break;</b></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p> default : break;</p>&
36、lt;p><b> }</b></p><p> for(i=0;i<8;i++)</p><p> num2[i]=0;</p><p> flag_wei=-1;</p><p><b> j=0;</b></p><p><b> br
37、eak;</b></p><p> case 14: switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu2=num2[0];</p><p><b> break;</b></p><p>
38、 case 2: shu2=num2[0]*10+num2[1];</p><p><b> break;</b></p><p> case 3: shu2=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p>
39、 default : break;</p><p><b> }</b></p><p> switch(flag_fuhao)</p><p><b> {</b></p><p> case 1: jieguo= shu1+shu2;</p><p><
40、;b> break; </b></p><p> case 2: jieguo= shu1-shu2;</p><p><b> break; </b></p><p> case 3: jieguo= (ulong)shu1*shu2;</p><p><b> break;
41、</b></p><p> case 4: jieguo= (ulong)shu1/shu2;</p><p><b> break;</b></p><p> default : break; </p><p><b> }</b></p><p>
42、; if(jieguo<10)</p><p><b> {</b></p><p><b> flag=1;</b></p><p> num2[0]=jieguo;</p><p><b> }</b></p><p> if(ji
43、eguo<100&&jieguo>=10)</p><p><b> {</b></p><p><b> flag=2;</b></p><p> num2[0]=jieguo/10;</p><p> num2[1]=jieguo%10;</p>
44、<p><b> }</b></p><p> if(jieguo<1000&&jieguo>=100)</p><p><b> {</b></p><p><b> flag=3;</b></p><p> num2[0]=
45、jieguo/100;</p><p> num2[1]=jieguo%100/10;</p><p> num2[2]=jieguo%100%10;</p><p><b> }</b></p><p> if(jieguo<10000&&jieguo>=1000)</p>
46、;<p><b> {</b></p><p><b> flag=4;</b></p><p> num2[0]=jieguo/1000;</p><p> num2[1]=jieguo%1000/100;</p><p> num2[2]=jieguo%1000%100/
47、10;</p><p> num2[3]=jieguo%1000%100%10;</p><p><b> }</b></p><p> if(jieguo<100000&&jieguo>=10000)</p><p><b> {</b></p>
48、<p><b> flag=5;</b></p><p> num2[0]=jieguo/10000;</p><p> num2[1]=jieguo%10000/1000;</p><p> num2[2]=jieguo%10000%1000/100;</p><p> num2[3]=jieguo
49、%10000%1000%100/10;</p><p> num2[4]=jieguo%10000%1000%100%10;</p><p><b> }</b></p><p> if(jieguo<1000000&&jieguo>=100000)</p><p><b>
50、 {</b></p><p><b> flag=6;</b></p><p> num2[0]=jieguo/100000;</p><p> num2[1]=jieguo%100000/10000;</p><p> num2[2]=jieguo%100000%10000/1000;</p&
51、gt;<p> num2[3]=jieguo%100000%10000%1000/100;</p><p> num2[4]=jieguo%100000%10000%1000%100/10;</p><p> num2[5]=jieguo%100000%10000%1000%100%10;</p><p><b> }</b&g
52、t;</p><p><b> j=0;</b></p><p><b> break;</b></p><p> case 15: {</p><p><b> flag=0;</b></p><p> flag_wei=-1;</p&
53、gt;<p><b> shu1=0;</b></p><p><b> shu2=0;</b></p><p><b> jieguo=0;</b></p><p><b> j=0; </b></p><p><b>
54、 }</b></p><p><b> break;</b></p><p> default : break;</p><p><b> }</b></p><p> flag_wei++;</p><p> if(flag_wei>3)<
55、;/p><p> flag_wei=3;</p><p><b> if(k==14)</b></p><p> flag_wei=flag;</p><p><b> P3=0xf0;</b></p><p> while(P3!=0xf0);</p>
56、<p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> 以下為顯示程序設計</b></p><p> void T_() interrupt 1</p
57、><p><b> {</b></p><p> TH0=-3000/256;</p><p> TL0=-3000%256;</p><p> if(j>=flag_wei)</p><p><b> j=0;</b></p><p>
58、 if(flag_wei==0)</p><p> { P1=0xfe;</p><p> P2=zixing[0];</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&l
59、t;/p><p> P1=zima[j];</p><p> P2=zixing[num2[j]];</p><p><b> }</b></p><p><b> j++;</b></p><p><b> }</b></p>&l
60、t;p><b> 調試</b></p><p> 在焊接好器件后,先不要將芯片插在芯片座上,要先驗證先板上電源是否好用,有無短路等。接上USB電源,用萬用表測量個芯片座對應電源和地之間的電壓值,觀察電壓值是否正常。一切正常后方可將芯片插入芯片座,以繼續(xù)測試其他功能。</p><p> 將芯片插上后,對各個模塊進行調試,按鍵是否工作正常,數(shù)碼管是否顯示正常等
61、。編寫相關部分的測試程序對其進行測試。</p><p> 各部分硬件檢測無誤后,下載程序進行整體調試,一切正常后,結束調試過程。</p><p><b> 技術小結</b></p><p> 這次做課程設計感覺自己挺沒經(jīng)驗的,又做了不少烏龍事件,寫程序和做仿真的時候用的是共陽極的數(shù)碼管,后來買元器件的時候,粗心大意買了兩個四位一體共陰極的
62、數(shù)碼管,沒辦法,只得重新修改程序和仿真,按照自己的想法修改好之后,程序就是無法編譯,老是看見target not created 這幾個單詞,糾結了兩天,后來想到到百度上查一下原因,大致上是因為我使用的keil沒有破解成功,最后我把自己的keil給卸載了,安裝了keil2,才編譯成功。</p><p> 自認為用了十分的心思把實物焊接好之后,以為能一次成功的,哪知道數(shù)碼管就是不亮,真是急人,后來在老師的建
63、議下分模塊檢查,先寫了一個很簡單的程序進51芯片,發(fā)現(xiàn)芯片根本沒工作,懷疑是晶振的問題,把晶振拆了下來,發(fā)現(xiàn)晶振根本沒有問題,最后,經(jīng)同學提醒說可能是短路了,那萬用表檢查發(fā)現(xiàn)真的是短路了,正負電源不下心焊短路了,自己又修整了一番,接上電源,下載好程序,結果就出來了。</p><p> 這次課程設計,有一個很大的失誤,焊接數(shù)碼管的時候沒想過用排針插,結果將其中的一個數(shù)碼管的兩個段選給焊燒了,很遺憾啊,不是很完美。
64、</p><p><b> 參考文獻</b></p><p> ?。?)譚浩強 《C程序設計》 清華大學出版社</p><p> ?。?)戴佳 《51單片機C語言應用程序設計實例精講》 電子工業(yè)出版社</p><p> ?。?) 李陪金 《C語言程序設計案例教程》 西安電子科技
65、大學出版社</p><p> (4) 郭天祥 《51單片機C語言教程》 電子工業(yè)出版社</p><p><b> 附錄</b></p><p><b> 完整的程序</b></p><p> #include <reg51.h></p><p>
66、; #include <stdio.h></p><p> #define uchar unsigned char //宏定義</p><p> #define uint unsigned int</p><p> #define ulong unsigned long</p><p> uchar k=20,j=
67、0; // k是鍵號,j用于數(shù)碼管顯示時</p><p> uint shu1=0,shu2=0;</p><p> ulong jieguo=0;</p><p> char flag_wei=0; //輸入位數(shù)標志</p><p> uchar flag_fuhao=0,flag=0; // flag_fuhao是運算標
68、志;flag是運算結果位數(shù)</p><p> uchar num2[8]={0}; //存輸入數(shù)據(jù)二</p><p> uchar code zixing[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//段選&l
69、t;/p><p> uchar code zima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選</p><p> void delay(uchar t)//延時函數(shù)</p><p><b> {</b></p><p> uchar i,jj;</p>
70、<p> for(i=0;i<t;i++)</p><p> for(jj=0;jj<200;jj++);</p><p><b> }</b></p><p> void dujian()</p><p><b> {</b></p><p&
71、gt; uchar i=0,temp;</p><p><b> P3=0xf0;</b></p><p> if(P3!=0xf0)</p><p><b> {</b></p><p> delay(10);//去抖動</p><p> if(P3!=0xf0
72、)</p><p><b> {</b></p><p> temp=0xfe;//第一行 </p><p> for(i=0;i<4;i++) ;//共四列</p><p><b> { </b></p><p><b> P3=temp;
73、</b></p><p> switch(P3&0xf0)</p><p><b> {</b></p><p> case 0xe0: k=0+i*4;</p><p><b> break;</b></p><p> case 0xd0: k
74、=1+i*4;</p><p><b> break;</b></p><p> case 0xb0: k=2+i*4;</p><p><b> break;</b></p><p> case 0x70: k=3+i*4;</p><p><b> b
75、reak;</b></p><p> default : break;</p><p><b> }</b></p><p> temp=temp<<1|0x01; // 改變P3口的值</p><p><b> }</b></p><p>&
76、lt;b> switch(k)</b></p><p><b> {</b></p><p> case 0: num2[flag_wei]=0;</p><p><b> break;</b></p><p> case 1: num2[flag_wei]=1;&l
77、t;/p><p><b> break;</b></p><p> case 2: num2[flag_wei]=2;</p><p><b> break;</b></p><p> case 3: num2[flag_wei]=3;</p><p><b&g
78、t; break;</b></p><p> case 4: num2[flag_wei]=4;</p><p><b> break;</b></p><p> case 5: num2[flag_wei]=5;</p><p><b> break;</b></p
79、><p> case 6: num2[flag_wei]=6;</p><p><b> break;</b></p><p> case 7: num2[flag_wei]=7;</p><p><b> break;</b></p><p> case 8: n
80、um2[flag_wei]=8;</p><p><b> break;</b></p><p> case 9: num2[flag_wei]=9;</p><p><b> break;</b></p><p> case 10: flag_fuhao=1; // +</
81、p><p> switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu1=num2[0];</p><p><b> break;</b></p><p> case 2: shu1=num2[0]*10+nu
82、m2[1];</p><p><b> break;</b></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p> default : break;</p>
83、;<p><b> }</b></p><p> for(i=0;i<8;i++) 按下運算鍵“+”回到初始狀態(tài)</p><p> num2[i]=0;</p><p> flag_wei=-1;</p><p><b> j=0;</b></p><
84、;p><b> break;</b></p><p> case 11: flag_fuhao=2; // -</p><p> switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu1=num2[0];</p
85、><p><b> break;</b></p><p> case 2: shu1=num2[0]*10+num2[1];</p><p><b> break;</b></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p
86、><p><b> break;</b></p><p> default : break;</p><p><b> }</b></p><p> for(i=0;i<8;i++)</p><p> num2[i]=0;</p><p&g
87、t; flag_wei=-1;</p><p><b> j=0;</b></p><p><b> break;</b></p><p> case 12: flag_fuhao=3; // *</p><p> switch(flag_wei)</p><
88、p><b> {</b></p><p> case 1: shu1=num2[0];</p><p><b> break;</b></p><p> case 2: shu1=num2[0]*10+num2[1];</p><p><b> break;</b
89、></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p> default : break;</p><p><b> }</b></p><
90、p> for(i=0;i<8;i++)</p><p> num2[i]=0;</p><p> flag_wei=-1;</p><p><b> j=0;</b></p><p><b> break;</b></p><p> case 13:
91、 flag_fuhao=4; // /</p><p> switch(flag_wei)</p><p><b> {</b></p><p> case 1: shu1=num2[0];</p><p><b> break;</b></p><p>
92、 case 2: shu1=num2[0]*10+num2[1];</p><p><b> break;</b></p><p> case 3: shu1=num2[0]*100+num2[1]*10+num2[2];</p><p><b> break;</b></p><p>
93、 default : break;</p><p><b> }</b></p><p> for(i=0;i<8;i++)</p><p> num2[i]=0;</p><p> flag_wei=-1;</p><p><b> j=0;</b>&l
94、t;/p><p><b> break;</b></p><p> case 14: switch(flag_wei) //等于</p><p><b> {</b></p><p> case 1: shu2=num2[0];//定義輸入的數(shù)2</p><p>&l
95、t;b> break;</b></p><p> case 2: shu2=num2[0]*10+num2[1];</p><p><b> break;</b></p><p> case 3: shu2=num2[0]*100+num2[1]*10+num2[2];</p><p>&l
96、t;b> break;</b></p><p> default : break;</p><p><b> }</b></p><p> switch(flag_fuhao)</p><p><b> {</b></p><p> case
97、 1: jieguo= shu1+shu2;</p><p><b> break; </b></p><p> case 2: jieguo= shu1-shu2;</p><p><b> break; </b></p><p> case 3: jieguo= (ulong)sh
98、u1*shu2;</p><p><b> break; </b></p><p> case 4: jieguo= (ulong)shu1/shu2;</p><p><b> break;</b></p><p> default : break; </p><
99、p><b> }</b></p><p> if(jieguo<10)</p><p><b> {</b></p><p> flag=1;//結果為一位</p><p> num2[0]=jieguo;</p><p><b> }<
100、;/b></p><p> if(jieguo<100&&jieguo>=10)</p><p><b> {</b></p><p> flag=2;//結果為兩位</p><p> num2[0]=jieguo/10;</p><p> num2[1
101、]=jieguo%10;</p><p><b> }</b></p><p> if(jieguo<1000&&jieguo>=100)</p><p><b> {</b></p><p> flag=3;//結果為三位</p><p>
102、; num2[0]=jieguo/100;</p><p> num2[1]=jieguo%100/10;</p><p> num2[2]=jieguo%100%10;</p><p><b> }</b></p><p> if(jieguo<10000&&jieguo>=100
103、0)</p><p><b> {</b></p><p> flag=4;//結果為四位</p><p> num2[0]=jieguo/1000;</p><p> num2[1]=jieguo%1000/100;</p><p> num2[2]=jieguo%1000%100/1
104、0;</p><p> num2[3]=jieguo%1000%100%10;</p><p><b> }</b></p><p> if(jieguo<100000&&jieguo>=10000)</p><p><b> {</b></p>&
105、lt;p> flag=5;//結果為五位</p><p> num2[0]=jieguo/10000;</p><p> num2[1]=jieguo%10000/1000;</p><p> num2[2]=jieguo%10000%1000/100;</p><p> num2[3]=jieguo%10000%1000%1
106、00/10;</p><p> num2[4]=jieguo%10000%1000%100%10;</p><p><b> }</b></p><p> if(jieguo<1000000&&jieguo>=100000)</p><p><b> {</b>&
107、lt;/p><p> flag=6;//結果為六位</p><p> num2[0]=jieguo/100000;</p><p> num2[1]=jieguo%100000/10000;</p><p> num2[2]=jieguo%100000%10000/1000;</p><p> num2[3]=j
108、ieguo%100000%10000%1000/100;</p><p> num2[4]=jieguo%100000%10000%1000%100/10;</p><p> num2[5]=jieguo%100000%10000%1000%100%10;</p><p><b> }</b></p><p>
109、j=0; //顯示要從第一個數(shù)碼管開始</p><p><b> break;</b></p><p> case 15: { //清除鍵</p><p><b> flag=0;</b></p><p> flag_wei=-1;<
110、;/p><p><b> shu1=0;</b></p><p><b> shu2=0;</b></p><p><b> jieguo=0;</b></p><p><b> j=0; </b></p><p><b
111、> }</b></p><p><b> break;</b></p><p> default : break;</p><p><b> }</b></p><p> flag_wei++;</p><p> if(flag_wei>3
112、) //只能輸入三位數(shù)</p><p> flag_wei=3;</p><p> if(k==14) </p><p> flag_wei=flag; //若按下等于鍵則給flag_wei重新賦值</p><p><b> P3=0xf0;</b></p><p&g
113、t; while(P3!=0xf0); // 等待按鍵釋放</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p> void init() //初
114、始化函數(shù)</p><p><b> {</b></p><p> TMOD=0x01;</p><p> TH0=-3000/256;</p><p> TL0=-3000%256;</p><p><b> EA=1;</b></p><p&g
115、t;<b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> P0=0;</b></p><p><b> }</b></p><p> void main() // 主函數(shù)</
116、p><p><b> {</b></p><p><b> init();</b></p><p><b> for(;;)</b></p><p><b> {</b></p><p><b> dujian();
117、</b></p><p><b> }</b></p><p><b> }</b></p><p> void T_() interrupt 1</p><p><b> {</b></p><p> TH0=-3000/256;
118、 //賦初值,中斷3ms</p><p> TL0=-3000%256;</p><p> if(j>=flag_wei) //掃描大于等于flag_wei則歸零</p><p><b> j=0;</b></p><p> if(flag_wei==0) //初始時第一個數(shù)碼管
119、顯示0</p><p> { P1=0xfe;</p><p> P2=zixing[0];</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計十進制加法計算器設計
- 課程設計--十進制加減法計算器單片機設計
- 單片機課程設計報告---計算器
- 課程設計-單片機計算器
- 單片機計算器課程設計
- 單片機課程設計--計算器
- 單片機課程設計-計算器
- 單片機課程設計報告---簡易計算器
- 單片機課程設計——計算器設計
- 單片機課程設計報告計算器2
- 單片機課程設計報告-簡易計算器
- 簡易計算器單片機課程設計報告
- 單片機課程設計報告-- 簡易計算器設計
- 單片機課程設計報告計算器4
- 單片機課程設計--簡易計算器
- 單片機課程設計簡易計算器
- 單片機課程設計---計算器實驗
- 單片機課程設計-簡易計算器
- 單片機課程設計簡易計算器
- 單片機系統(tǒng)設計課程設計--計算器
評論
0/150
提交評論