硬件課程設(shè)計報告--計算器_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  硬件課程設(shè)計報告</b></p><p><b>  摘 要</b></p><p>  單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng)。盡管它的大部分功能集成在一塊小芯片上,但是它具有一個完整計算機所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外存。同時集成諸如通訊接口、定時器,實時時鐘

2、等外圍設(shè)備。而現(xiàn)在最強大的單片機系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng)域的機器

3、人、智能儀表、醫(yī)療器械了。因此,單片機的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機應(yīng)用與智能化控制的科學(xué)家、工程師。本設(shè)計通過將矩陣鍵盤、數(shù)碼管、蜂鳴器及單片機結(jié)合起來,構(gòu)成一個簡單的計算器。此計算器可進行1萬以內(nèi)的加減乘除運算,并通過數(shù)碼管顯示。當運算結(jié)果溢出時,蜂鳴器會發(fā)出報警,同時數(shù)碼管顯示E(error)。按鍵的同時蜂鳴器會發(fā)生,表示</p><p><b>  關(guān)鍵詞:</b></p&

4、gt;<p>  單片機;4*4矩陣鍵盤;數(shù)碼管;蜂鳴器;復(fù)位電路</p><p><b>  目 錄</b></p><p>  1 設(shè)計任務(wù)與要求………………………………………………………………………5</p><p>  1.1課程介紹……………………………………………………………………………5</p>

5、<p>  1.2計算器的設(shè)計與要求………………………………………………………………5</p><p>  2 總體方案…………………………………………………………………………5</p><p>  2.1硬件部分…………………………………………………………………………5</p><p>  2.2軟件部分…………………………………………………………………

6、……5</p><p>  3硬件方案………………………………………………………………6</p><p>  3.1硬件組成…………………………………………………………………………6</p><p>  3.2各模塊功能介紹 …………………………………………………………………7</p><p>  3.2.1 4*4矩陣鍵盤………………………

7、…………………………………………7</p><p>  3.2.2 4位數(shù)碼管顯示電路…………………………………………………………7</p><p>  3.2.1 單片機介紹…………………………………………………………………8</p><p>  4軟件方案………………………………………………………………10</p><p>  4.1程序

8、組成…………………………………………………………………………10</p><p>  4.2程序流程圖…………………………………………………………………10</p><p>  4.3程序清單…………………………………………………………………12</p><p>  5系統(tǒng)設(shè)計過程中的問題及解決方案…………………………………………………12</p>&

9、lt;p>  5.1問題1及解決方案………………………………………………………………12</p><p>  5.2問題2及解決方案………………………………………………………………12</p><p>  5.2問題3及解決方案………………………………………………………………12</p><p>  6實驗總結(jié)與體會…………………………………………………………

10、……12</p><p>  附錄……………………………………………………………………………………13</p><p><b>  1 設(shè)計任務(wù)與要求</b></p><p><b>  1.1 課程介紹</b></p><p>  《硬件課程設(shè)計》是繼《微機原理與接口技術(shù)》課程教學(xué)后的一個重要的綜

11、合實踐教學(xué)環(huán)節(jié),它能起到鞏固課堂和書本上所學(xué)知識,加強綜合能力,提高系統(tǒng)設(shè)計水平,啟發(fā)創(chuàng)新思想的效果。課程設(shè)計的目地是綜合這些基礎(chǔ)知識,就具體問題讓學(xué)生做出軟、硬件解決方案并付諸實施,以培養(yǎng)解決實際問題的能力。要求每個學(xué)生都能自己動手獨立設(shè)計完成一個典型的微機應(yīng)用小系統(tǒng)。</p><p>  1.2 計算器的設(shè)計與要求</p><p>  通過4*4鍵盤獲得按鍵信息,蜂鳴器隨著按鍵發(fā)聲。單

12、片機處理按鍵信息,計算后以4位數(shù)碼管顯示。若計算結(jié)果溢出,則蜂鳴器長響提示。按下復(fù)位鍵,則可以實現(xiàn)單片機的復(fù)位。</p><p>  要求:具有計算器的基本按鍵(0~9數(shù)字鍵、加減乘除鍵、清零鍵、等于鍵)。</p><p>  可以進行1萬以內(nèi)的加減乘除運算,正確顯示結(jié)果。</p><p>  通過數(shù)碼管正確顯示運算結(jié)果。</p><p> 

13、 以蜂鳴器表示按鍵正確按下,并可以溢出報警。</p><p><b>  2 總體方案</b></p><p><b>  2.1 硬件部分</b></p><p>  在此設(shè)計中主要用到的部件有:4*4鍵盤電路、4位數(shù)碼管顯示電路、單片機最小系統(tǒng)、復(fù)位電路、蜂鳴器電路。利用分步操作,先實現(xiàn)各部分的子功能,再將這些子功能有

14、機地結(jié)合到一起,實現(xiàn)系統(tǒng)的整體設(shè)計要求。</p><p><b>  各模塊功能如下:</b></p><p>  4*4鍵盤電路:通過鍵盤掃描程序,獲得按鍵信息。</p><p>  4位數(shù)碼管顯示電路:顯示輸入信息及運算結(jié)果。</p><p>  復(fù)位電路:實現(xiàn)單片機的復(fù)位操作。</p><p&g

15、t;  蜂鳴器電路:表示按鍵已按下,并可以溢出報警。</p><p><b>  2.2 軟件部分</b></p><p>  相應(yīng)的程序清單中分為鍵盤掃描子程序、顯示子程序、計算子程序及初始化子程序。在主程序中分別調(diào)用各子程序,實現(xiàn)計算器的功能。</p><p><b>  3 硬件方案</b></p>&

16、lt;p><b>  3.1 硬件組成</b></p><p>  硬件部分由4*4鍵盤電路、4位數(shù)碼管顯示電路、單片機最小系統(tǒng)、復(fù)位電路、蜂鳴器電路組成。各部分的連接關(guān)系如下:</p><p>  3.2各功能模塊介紹</p><p>  3.2.1 4*4矩陣鍵盤</p><p>  矩陣式鍵盤的結(jié)構(gòu)與工作原理

17、</p><p>  在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。&l

18、t;/p><p>  矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。</p><p>  鍵盤掃描程序一般應(yīng)包括以下內(nèi)容:&

19、lt;/p><p><b>  判別有無鍵按下。</b></p><p>  鍵盤掃描取得閉合鍵的行、列值。</p><p>  用計算法或查表法得到鍵值。</p><p>  判斷閉合鍵是否釋放,如沒釋放則繼續(xù)等待。</p><p>  將閉合鍵號保存,同時轉(zhuǎn)去執(zhí)行該閉合鍵的功能。</p>

20、;<p>  3.2.2 4位數(shù)碼管顯示電路</p><p>  數(shù)碼管可以分為共陽極與共陰極兩種,共陽極就是把所有LED的陽極連接到共同接點,而每個LED的陰極分別為a、b、c、d、e、f、g及 dp(小數(shù)點);共陰極則是把所有LED的陰極連接到共同接點,而每個LED的陽極分別為a、b、c、d、e、f、g及dp(小數(shù)點)。8個LED分別與上面那個圖中的a~dp各段相對應(yīng),通過控制各個LED的亮滅來

21、顯示數(shù)字。</p><p>  還有一種比較常用的是四位數(shù)碼管,內(nèi)部的4個數(shù)碼管共用a~dp這8根數(shù)據(jù)線,為人們的使用提供了方便,因為里面有4個數(shù)碼管,所以它有4個公共端,加上 a~dp,共有12個引腳。引腳排列依然是從左下角的那個腳(1腳)開始,以逆時針方向依 次為1~12腳,下圖中的數(shù)字與之一一對應(yīng)。</p><p>  動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示

22、方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個數(shù)碼管的公共極增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的端,就使各個數(shù)碼管輪流受控

23、顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p>  3.2.3 單片機介紹</p><p>  1.主要特性:·

24、4K字節(jié)可編程閃爍存儲器 ·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·5個中斷源 ·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時鐘電路 2.管腳說明: VCC:供電電壓。 GND:接地。 P0口:P0口為一

25、個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部

26、下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。  P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳</p><p><b>  4 軟件方案</b></p><p><b>  4.1 程序組成</b>&

27、lt;/p><p>  軟件部分由主函數(shù)、初始化子函數(shù)、延時子函數(shù)、鍵盤掃描子函數(shù)、計算子函數(shù)組成及顯示子函數(shù)。</p><p>  主函數(shù):負責調(diào)用各子程序,實現(xiàn)計算器的整體功能。</p><p>  初始化子函數(shù):將各變量進行初始化。</p><p>  鍵盤掃描子函數(shù):實現(xiàn)鍵盤掃描功能,獲得按鍵值。</p><p>

28、  計算子函數(shù):根據(jù)按鍵所得的運算符號,進行加減乘除運算。</p><p>  顯示子函數(shù):顯示按鍵信息及運算結(jié)果。</p><p><b>  4.2 程序流程圖</b></p><p><b>  流程圖如下:</b></p><p><b>  4.3 程序清單</b>&

29、lt;/p><p><b>  程序清單見附錄</b></p><p>  5 系統(tǒng)設(shè)計過程中的問題及解決方案</p><p>  5.1 問題1及解決方案</p><p><b>  數(shù)碼管顯示混亂。</b></p><p>  程序中的變量使用的是unsigned char型

30、,輸入或計算所得的數(shù)據(jù)超過范圍,因此造成顯示混亂。只需將變量的類型改為unsigned int型即可。</p><p>  5.2 問題2及解決方案</p><p>  鍵盤按下時沒有效果。</p><p>  矩陣鍵盤的掃描原理是逐行掃描,并回讀行列信息,與設(shè)定的值進行比較以確定是哪一個鍵按下。由于硬件電路中行列均焊接了電阻,使得電壓信號比較微弱,因此單片機回讀到

31、錯誤的信息。解決方法是拆掉所焊接的電阻。</p><p>  5.3 問題3及解決方案</p><p>  程序中所計算的結(jié)果有誤。</p><p>  這是因為當沒有鍵按下時,程序反復(fù)進入上一次進入的子程序,造成計算結(jié)果錯誤及顯示錯誤。因此,要在程序中設(shè)定一個標志符號,保證只有在有鍵按下的情況下才進入相應(yīng)的子程序。</p><p>  5.

32、4 問題4及解決方案</p><p>  關(guān)于蜂鳴器的各種問題。</p><p>  蜂鳴器的高電平斷應(yīng)接到電源開關(guān)的后面,若直接接到電源正極,當單片機還沒上電時蜂鳴器便一直響。經(jīng)過反復(fù)試驗,控制蜂鳴器的程序段應(yīng)放到鍵盤掃描子程序的末端,這樣每當有鍵按下時蜂鳴器便會隨之響一下。至于蜂鳴器發(fā)聲的持續(xù)時間也要經(jīng)過反復(fù)試驗,才能得到合適的效果。</p><p><b

33、>  6 實驗總結(jié)與體會</b></p><p>  通過此次硬件課程設(shè)計,了解了單片機的基本使用及功能,并初步掌握了單片機C語言程序的編寫。在程序編寫過程中,學(xué)會了程序逐步改進的方法,對照硬件的仿真軟件,逐步改善程序的功能。</p><p>  在搭建硬件電路時,要做到耐心仔細。因為硬件焊接錯誤會直接導(dǎo)致設(shè)計的失敗。當發(fā)現(xiàn)硬件有錯誤時,要認真檢查所焊接的每一條電路,對照

34、所設(shè)計的電路圖查處錯誤。在焊接時,為避免線路過于混亂,可設(shè)計適當?shù)牟遽?,這樣可以簡化電路的焊接以及電路的排錯。</p><p>  此外,在此次設(shè)計過程中,深刻體會到應(yīng)該加強專業(yè)知識的學(xué)習(xí),不管是在硬件還是在軟件方面。同時,要加強動手實踐的能力,將課本所學(xué)知識運用到實踐中去,這樣才能真正掌握所學(xué)的知識。</p><p><b>  附錄</b></p>

35、<p><b>  程序清單如下:</b></p><p>  #include<reg51.h></p><p>  #define uint unsigned int//宏定義</p><p>  #define uchar unsigned char</p><p>  uchar

36、code table[]={//數(shù)碼管顯示表</p><p>  0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,</p><p>  0x7f,0x6f,0x77,0x7c,</p><p>  0x39,0x5e,0x79,0x71};</p><p&g

37、t;  uint num,num1,temp,ge,shi,bai,qian;//程序中用到的變量</p><p>  unit flag,flag2,previous,current,sign;</p><p>  sbit speaker=P0^0;</p><p>  //用P0^0控制蜂鳴器</p><p>  void del

38、ay(uint z);</p><p>  void ini();//子函數(shù)聲明</p><p>  void store(uint num2);</p><p>  void calculate(uint sign1);</p><p>  uint keyscan();</p><p>  void

39、 display(uint aa);</p><p>  /*在主函數(shù)中分別調(diào)用各子函數(shù),實現(xiàn)計算器的整體功能。首先進行初始化,然后根據(jù)所按下的數(shù)值調(diào)用相應(yīng)的子函數(shù)。*/</p><p>  void main()//主函數(shù)</p><p><b>  {</b></p><p><b>  

40、ini();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  num1=keyscan();//調(diào)用鍵盤掃描子函數(shù)</p><p>  if(num1<10)//若按鍵小于10,則調(diào)用子函數(shù)

41、</p><p><b>  {</b></p><p>  store(num);</p><p><b>  flag2=0;</b></p><p><b>  }</b></p><p>  if(num1==10)//若按鍵為10,則調(diào)

42、用初始化子函數(shù)</p><p><b>  {</b></p><p><b>  ini();</b></p><p><b>  flag2=0;</b></p><p><b>  }</b></p><p>  if(num

43、1==11)//若按鍵為11,則調(diào)用計算子函數(shù)</p><p><b>  {</b></p><p>  calculate(sign);</p><p><b>  flag2=0;</b></p><p>  current=0;</p><p><b

44、>  } </b></p><p>  if(num1>11 && num1<16)//否則調(diào)用顯示子函數(shù)并保存標志</p><p><b>  {</b></p><p>  display(previous);</p><p><b>  flag=1;

45、</b></p><p>  sign=num1;</p><p><b>  flag2=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&g

46、t;</p><p>  void ini()//初始化子函數(shù)</p><p><b>  {</b></p><p>  speaker=1;//初始化各種標志</p><p><b>  sign=0;</b></p><p><b&g

47、t;  flag=0;</b></p><p>  previous=0;</p><p>  current=0;</p><p>  qian=0;bai=0;shi=0;ge=0;</p><p>  P1=0xfe;//計算器初始時顯示數(shù)字0</p><p>  P3=table[0

48、];</p><p>  delay(1);</p><p><b>  }</b></p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p&

49、gt;<p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void store(uint num2)//此函數(shù)用于組裝數(shù)字</p><p><b>  {<

50、;/b></p><p>  if(flag==0)</p><p><b>  {</b></p><p>  if(flag2==1)</p><p>  {previous=previous*10+num2;}//前一位乘10便得到當前的數(shù)值</p><p><b>  e

51、lse</b></p><p>  previous=previous;</p><p>  display(previous);</p><p><b>  }</b></p><p>  if(flag==1)</p><p><b>  {</b></

52、p><p>  if(flag2==1)</p><p>  {current=current*10+num2;}</p><p><b>  else</b></p><p>  current=current;</p><p>  display(current);</p><

53、p><b>  }</b></p><p><b>  }</b></p><p>  /*計算子函數(shù)是根據(jù)標志進行相應(yīng)的計算,當計算結(jié)果發(fā)生溢出時顯示E(error),并使蜂鳴器長響報警。*/</p><p>  void calculate(uint sign1)</p><p><

54、b>  {</b></p><p>  if(flag2==1)</p><p><b>  {</b></p><p>  switch(sign1)</p><p><b>  {</b></p><p>  case 15:previous=previ

55、ous+current;break;//根據(jù)標志進行相應(yīng)計算</p><p>  case 14:previous=previous-current;break;</p><p>  case 13:previous=previous*current;break;</p><p>  case 12:previous=previous/current;break;

56、</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag2==0)</p><p><b>  {</b></p><p>  previous=previous;</p><

57、;p><b>  }</b></p><p>  if(previous<0 || previous>9999 )//溢出處理,若發(fā)生溢出則蜂鳴器</p><p>  {//報警并顯示字母E(error)</p><p>  speaker=0;</p><p>  delay(1

58、0);</p><p><b>  P1=0xfe;</b></p><p>  P3=table[14];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p><b>  else&

59、lt;/b></p><p>  display(previous);</p><p><b>  }</b></p><p>  /*顯示子函數(shù)主要是將當前數(shù)值的各位進行分離,分別顯示各位。*/</p><p>  void display(uint num3)//顯示子函數(shù)</p>

60、<p><b>  {</b></p><p><b>  uint i;</b></p><p><b>  i=0;</b></p><p>  qian=num3/1000;//分離該數(shù)字的各位</p><p>  bai=num3%1000/10

61、0;</p><p>  shi=num3%100/10;</p><p>  ge=num3%10;</p><p>  while(num3!=0)</p><p><b>  {</b></p><p>  num3=num3/10;</p><p><b>

62、;  i=i+1;</b></p><p><b>  }</b></p><p>  P1=0xfe;//通過位選信號依次顯示該數(shù)字的各位</p><p>  P3=table[ge];//P3口用于輸出段選信號</p><p><b>  delay(1);</b&g

63、t;</p><p><b>  if(i>1)</b></p><p><b>  {</b></p><p><b>  P1=0xfd;</b></p><p>  P3=table[shi];</p><p>  delay(1);&

64、lt;/p><p><b>  }</b></p><p><b>  if(i>2)</b></p><p><b>  {</b></p><p><b>  P1=0xfb;</b></p><p>  P3=table[

65、bai];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p><b>  if(i>3)</b></p><p><b>  {</b></p><p><b

66、>  P1=0xf7;</b></p><p>  P3=table[qian];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

67、  /*鍵盤掃描子函數(shù)采用逐行掃描的方法,依次掃描4*4鍵盤的各行。掃描的步驟包括消抖、判斷是哪行哪列的鍵被按下以及松手檢測。將4*4鍵盤編號,這樣可以將所按下鍵對應(yīng)的編號返回主函數(shù),便實現(xiàn)矩陣鍵盤的掃描。*/</p><p>  uint keyscan()//鍵盤掃描子函數(shù)</p><p><b>  {</b></p><p&

68、gt;<b>  P2=0xfe;</b></p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p>&

69、lt;p><b>  delay(5);</b></p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p&

70、gt;<p><b>  temp=P2;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xee:num=10;flag2=1;</p><p><b>  break;</b><

71、;/p><p>  case 0xde:num=0;flag2=1;</p><p><b>  break;</b></p><p>  case 0xbe:num=11;flag2=1;</p><p><b>  break;</b></p><p>  case 0x7e

72、:num=12;flag2=1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>

73、  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

74、;  P2=0xfd;</b></p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><

75、;b>  delay(5);</b></p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p&

76、gt;<b>  temp=P2;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xed:num=1;flag2=1;</p><p><b>  break;</b></p><

77、;p>  case 0xdd:num=2;flag2=1;</p><p><b>  break;</b></p><p>  case 0xbd:num=3;flag2=1;</p><p><b>  break;</b></p><p>  case 0x7d:num=13;flag2

78、=1;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P2;<

79、;/b></p><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P2=0xfb;&l

80、t;/b></p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  delay

81、(5);</b></p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b> 

82、 temp=P2;</b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xeb:num=4;flag2=1;</p><p><b>  break;</b></p><p>  case

83、0xdb:num=5;flag2=1;</p><p><b>  break;</b></p><p>  case 0xbb:num=6;flag2=1;</p><p><b>  break;</b></p><p>  case 0x7b:num=14;flag2=1;</p>

84、<p><b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P2;</b></p

85、><p>  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P2=0xf7;</b></

86、p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  delay(5);</b>

87、;</p><p><b>  temp=P2;</b></p><p>  temp=temp&0xf0;</p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P2;<

88、/b></p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xe7:num=7;flag2=1;</p><p><b>  break;</b></p><p>  case 0xd7:num=8;fl

89、ag2=1;</p><p><b>  break;</b></p><p>  case 0xb7:num=9;flag2=1;</p><p><b>  break;</b></p><p>  case 0x77:num=15;flag2=1;</p><p>&l

90、t;b>  break;</b></p><p><b>  }</b></p><p>  while(temp!=0xf0)</p><p><b>  {</b></p><p><b>  temp=P2;</b></p><p&g

91、t;  temp=temp&0xf0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag2==1)</p><p><b>  {

92、</b></p><p>  speaker=0;</p><p>  delay(100);</p><p>  speaker=1;</p><p><b>  }</b></p><p>  return num;</p><p><b>  }

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論