2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程設計論文</b></p><p>  設計題目:鍵盤按鍵識別及LED數碼顯示</p><p>  系 院:信息工程學院</p><p>  專 業:09計算機應用技術</p><p>  姓 名:XXX</p><p>  學 號:2

2、009010220</p><p><b>  指導老師:XXX</b></p><p><b>  目錄</b></p><p>  第1節 課程設計任務書·············

3、3;············3</p><p>  第2節 引言···················&

4、#183;················5</p><p>  2.1 4*4矩陣式鍵盤系統概述·············

5、;·················5</p><p>  2.2 本設計任務和主要內容·············

6、;··················6</p><p>  第3節 系統主要硬件電路設計············

7、········7</p><p>  3.1 單片機控制系統原理····················7</p>

8、<p>  3.2 單片機主機系統電路····················7</p><p>  3.3 矩陣式鍵盤電路······&

9、#183;·················8</p><p>  3.4 譯碼顯示電路·············

10、;·············8</p><p>  第4節 系統的軟件設計·················

11、83;········11</p><p>  第5節 課程設計心得體會 ·····················

12、3;·16 </p><p>  參考文獻······························

13、;········16</p><p>  第一節 課程設計任務書</p><p>  南 昌 工 程 學 院</p><p>  課程設計(論文)任務書</p><p>  信息工程學院 系 09計算機應用技術 專業 1

14、班</p><p>  學生: XXX </p><p>  日期: 自 2011 年 6 月 13 日至 2011 年 6 月 24 日</p><p>  指導教師: XXX </p><p>  助理指導教師(并指

15、出所負責的部分):</p><p>  教研室: 教研室主任: </p><p><b>  第二節 引言</b></p><p><b>  引言</b></p><p>  矩陣式鍵盤乃

16、是當今使用最為廣泛的鍵盤模式,該系統以N個端口連接控制N*N個按鍵,即時在LED數碼管上。單片機控制的據這是鍵盤顯示系統,該系統可以對不同的按鍵進行實時顯示,其核心是單片機和鍵盤矩陣電路部分,主要對按鍵與顯示電路的關系、矩陣式技術及設備系統的硬件、軟件等各個部分進行實現。</p><p>  4*4矩陣式鍵盤采用AT89S51單片機為核心,主要由矩陣式鍵盤電路、譯碼電路、顯示電路等組成,軟件選用匯編語言編程。單片

17、機將檢測到的按鍵信號轉換成數字量,顯示于LED顯示器上。該系統靈活性強,易于操作,可靠性高,將會有更廣闊的開發前景。</p><p>  2.1 4*4矩陣式鍵盤識別顯示系統概述</p><p>  矩陣式鍵盤模式以N個端口連接控制N*N個按鍵,實時在LED數碼管上顯示按鍵信息。顯示按鍵信息,既降低了成本,又提高了精確度,省下了很多的I/O端口為他用,相反,獨立式按鍵雖編程簡單,但占用I

18、/O口資源較多,不適合在按鍵較多的場合應用。并且在實際應用中經常要用到輸入數字、字母、符號等操作功能,如電子密碼鎖、電話機鍵盤、計算器按鍵等,至少都需要12到16個按鍵,在這種情況下如果用獨立式按鍵的話,顯然太浪費I/O端口資源,為了解決這一問題,我們使用矩陣式鍵盤。</p><p><b>  矩陣式鍵盤簡介:</b></p><p>  矩陣式鍵盤又稱行列鍵盤,它

19、是用N條I/O線作為行線,N條I/O線作為列線組成的鍵盤。在行線和列線的每個交叉點上設置一個按鍵。這樣鍵盤上按鍵的個數就為N*N個。這種行列式鍵盤結構能有效地提高單片機系統中I/O口的利用率。</p><p>  最常見的鍵盤布局如圖1-1所示。一般由16個按鍵組成,在單片機中正好可以用一個P口實現16個按鍵功能,這也是在單片機系統中最常用的形式,本設計就采用這個鍵盤模式。</p><p>

20、;<b>  如圖1-1所示</b></p><p>  圖2-1 鍵盤布局</p><p>  隨著21世紀的到來,資源危機接踵而至??焖傧碚麄€國家,這一狀況還將隨著時間的推移和社會的發展而更加嚴重。國家提倡資源節約型社會,資源危機已成為全球性的突出問題,利用科技手段緩解這一危機,將是人類主要的出路。</p><p>  電子信息行業是人

21、類社會的高科技行業之一,是設施現代化的基礎,也是人類通往科技巔峰的直通路。電子行業的發展從長遠來看很重要,但最主要的還是科技問題。</p><p>  國家設施的現代化的根本出路在于全面提高科技水平,現代的社會經營模式由傳統模式向現代化、高科技模式轉變,由粗放型向集約型方向轉變,必須要求科技有一個大的發展,進行一次新的技術革命。</p><p>  矩陣式鍵盤提高效率進行按鍵操作管理有效方

22、法,它可以提高系統準確性,有利于資源的節約,降低對操作者本身素質的要求。是它能準確、實時、高效地顯示按鍵信息,以提高工作效率和資源利用率。</p><p>  隨著計算機技術和電子科技的迅猛發展,計算機和電子產品的價格日益降</p><p>  低,可靠性日益提高。本文旨在設計一套能對按鍵信息進行自動實時顯示的系</p><p><b>  統。</

23、b></p><p>  本設計任務和主要內容</p><p>  本論文主要研究單片機控制的鍵盤識別顯示系統,分別對按鍵信息和顯示電路以及軟、硬件各個部分進行研究。</p><p><b>  主要內容如下:</b></p><p> ?、?根據矩陣式鍵盤的特點,進行鍵盤控制系統的整體研究與設計;</p&g

24、t;<p> ?、?LED實時顯示按鍵信息(顯示按鍵的坐標);</p><p> ?、?采用軟件編程的方法實現按鍵信息的提取和顯示。</p><p>  第三節 系統主要硬件電路設計</p><p>  3.1 單片機控制系統原理</p><p>  圖3-1 單片機控制系統原理框圖 </p><p&

25、gt;<b>  單片機主機系統電路</b></p><p>  AT89C51單片機是51系列單片機的一個成員,是8051單片機的簡化版。內部自帶2K字節可編程FLASH存儲器的低電壓、高性能COMS八位微處理器,與Intel MCS-51系列單片機的指令和輸出管腳相兼容。由于將多功能八位CPU和閃速存儲器結合在單個芯片中,因此,AT89C2051構成的單片機系統是具有結構最簡單、造價最低

26、廉、效率最高的微控制系統,省去了外部的RAM、ROM和接口器件,減少了硬件開銷,節省了成本,提高了系統的性價比。</p><p>  圖3-2 仿真原理圖</p><p>  3.3 矩陣式鍵盤電路</p><p>  AT89C51單片機的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線;P1口輸出按鍵信息,在數碼管

27、上顯示每個按鍵的“0-F”序號。實際電路圖連接如圖2-4所示。</p><p>  圖3-3 矩陣式鍵盤電路</p><p>  3.4 譯碼顯示電路</p><p>  譯碼電路中常用的顯示器有LED(數碼管)和LCD(液晶顯示器)。這兩種顯示器都具有線路簡單、耗電少、成本低、壽命長等優點。</p><p>  本系統輸出結果選用2個LE

28、D顯示。數碼管有共陰共陽之分,本系統采用8段共陽型LED,其原理圖如圖3-5所示。</p><p>  數碼管內部有8個發光二極管,公共端由8個發光二極管的陰極并接而成,正常顯示時公共端接低電平(GND),各發光二極管是否點亮取決于a-dp各引腳上是否是高電平。</p><p>  LED數碼管的外形結構如圖3-4,外部有10個引腳,其中3, 8腳為公共端也稱位選端,其余8個引腳稱為段選端

29、,當要使某一位數碼管顯示某一數字((0-9中的一個)必須在這個數碼管的段選端加上與數字顯示數字對應的8位段選碼(也稱字形碼),在位選端加上低電平即可。</p><p>  由于系統要顯示的內容比較簡單,顯示量不多,所以選用數碼管既方便又經濟。LED有共陰極和共陽極兩種。如圖3-4所示。</p><p>  二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發光二極管的陽極連接在一起,

30、接入+5V的電壓。一位顯示器由8個發光二極管組成,其中7個發光二極管構成字型“8”的各個筆劃(段)a~g,另一個小數點為dp發光二極管。當在某段發光二極管施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。</p><p>  符號和引腳 共陽極 共陰極</p><p>  圖3-4 LED數碼管結構

31、</p><p>  圖3-5 譯碼顯示電路</p><p>  當無按鍵閉合時,P1.0--P1.3與P1.4--P1.7之間開路。當有鍵閉合時,與閉合鍵相連的兩條I/O口線之間短路。</p><p>  判斷有無按鍵按下的方法是:</p><p>  第一步,置列線P1.0 --P1.3為輸入狀態,從行線P1.4--P1.7輸出低電平

32、,讀入列線數據,若某一列線為低電平,則該列線上有鍵閉合。</p><p>  第二步,行線輪流輸出低電平,從列線P1.0--P1.3讀入數據,若有某一列為低電平,則對應行線上有鍵按下。</p><p>  綜合一二兩步的結果,可確定按鍵編號。</p><p>  但是鍵閉合一次只能進行一次鍵功能操作,因此須等到按鍵釋放后,再進行鍵功能操作,否則按一次鍵,有可能會連續

33、多次進行同樣的鍵操作。</p><p>  由于本顯示電路功能簡單,為使編程簡單,采用直接輸出模式,即把P2.0-P2.6端口用8芯排線連接到數碼顯示模塊區域中的a-g端口上,要求:P2.0對應著a,P2.1對應著b,……,P2.6對應著g。將行列分別送到兩個數碼管,顯示按鍵的坐標。</p><p>  第四節 系統的軟件設計</p><p><b>  

34、4.1 軟件流程圖</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y </b></p><p>

35、  圖3-1 軟件設計流程圖</p><p>  4.2 系統程序設計</p><p>  #include <reg51.h></p><p>  #define uchar unsigned char //宏的定義變量類型 uchar 代替 unsigned char</p><p>  #define uint un

36、signed int //宏的定義變量類型 uint 代替 unsigned int</p><p>  uchar dis_buf,dis_buf1; //顯示緩存</p><p>  uchar temp;</p><p>  uchar l,h; //鍵順序嗎</p><p>

37、;  void delay0(uchar x); //x*0.14MS</p><p>  // 此表為 LED 的字模 </p><p>  0 12 3 4 56 78 9 a b cd e f</p><p>  unsigned char code LED7Code[

38、] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};</p><p>  /*************************************************************</p><p>  *

39、 *</p><p>  * 延時子程序 *</p><p>  * *</p

40、><p>  *************************************************************/</p><p>  void delay(uchar x)</p><p>  { uchar j;</p><p>  while((x--)!=0) //CPU執行x*12次,x=10</p&g

41、t;<p>  { for(j=0;j<125;j++)</p><p><b>  {;}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /***************************

42、**********************************</p><p>  * *</p><p>  * 鍵掃描子程序 (4*3 的矩陣) P1.4 P1.5 P1.6 P1.7為行 *</p><p>  *

43、 P1.1 P1.2 P1.3為列 *</p><p>  * *</p><p>  *************************************************************/</p><p>  void keyscan(

44、void)</p><p>  { temp = 0;</p><p>  P1=0xF0; //高四位輸入 行為高電平 列為低電</p><p>  delay(1); //延時</p><p>  temp=P1; //讀P1口 </p><

45、p>  temp=temp&0xF0;</p><p><b>  //屏蔽低四位</b></p><p>  temp=~((temp>>4)|0xF0); </p><p>  if(temp==1) // p1.4 被拉低</p><p><b>  h=1;</

46、b></p><p>  else if(temp==2) // p1.5 被拉低</p><p><b>  h=2;</b></p><p>  else if(temp==4) // p1.6 被拉低</p><p><b>  h=3;</b></p><p

47、>  else if(temp==8) // p1.7 被拉低</p><p><b>  h=4;</b></p><p>  dis_buf = h;</p><p>  dis_buf = dis_buf & 0x0f;</p><p><b>  // else</b>&l

48、t;/p><p>  // key=16;</p><p>  P1=0x0F; //低四位輸入 列為高電平 行為低電平</p><p>  delay(1); //延時</p><p>  temp=P1; //讀P1口 </p><p>  temp

49、=temp&0x0F;</p><p>  temp=~(temp|0xF0);</p><p>  if(temp==1) //p1.0 被拉低</p><p><b>  l=1;</b></p><p>  else if(temp==2) //p1.1 被拉低</p>

50、;<p><b>  l=2;</b></p><p>  else if(temp==4) //p1.2 被拉低</p><p><b>  l=3;</b></p><p>  else if(temp==8)//p1.3 被拉低</p><p><b>  l

51、=4;</b></p><p><b>  //else</b></p><p>  // key=16; </p><p>  dis_buf1= l; //鍵值入顯示緩存</p><p>  dis_buf1= dis_buf1 & 0x0f;</p><p><

52、b>  }</b></p><p>  /*************************************************************</p><p>  * *</p><p>  *判斷鍵是否按下

53、 *</p><p>  * *</p><p>  *************************************************************/</p&

54、gt;<p>  void keydown(void)</p><p><b>  { </b></p><p><b>  P2=0xF0; </b></p><p><b>  P3=0xf0;</b></p><p>  //將高4位全部置1 低四位全部

55、置0</p><p>  if(P1!=0xF0) //判斷按鍵是否按下 如果按鈕按下 會拉低P1其中的一個端口</p><p><b>  {</b></p><p>  keyscan(); //調用按鍵掃描程序</p><p><b>  }</b></p><p>

56、;<b>  }</b></p><p>  /*************************************************************</p><p>  * *</p><p>  * 主程

57、序 *</p><p>  * *</p><p>  *********************************************************

58、****/ </p><p><b>  main()</b></p><p><b>  {</b></p><p>  P1=0xFF; //置P0口</p><p><b>  P2=0xFF; </b></p><

59、;p><b>  P3=0xff;</b></p><p><b>  //置P1口 </b></p><p>  delay(10); //延時</p><p><b>  while(1)</b></p><p><b>

60、  { </b></p><p>  keydown(); //調用按鍵判斷檢測程序</p><p>  P2 = LED7Code[dis_buf%16]&0x7f; </p><p>  P3= LED7Code[dis_buf1%16]&0x7f; //LED7 0x7f為小數點 共陰和共陽此處也是不一樣; %16表

61、示輸出16進制</p><p>  delay(150);</p><p><b>  }</b></p><p><b>  } </b></p><p>  第五節 課程設計心得體會</p><p>  通過此次的單片機課程設計,我不僅加深了對單片機理論的理解,深刻懂

62、得了要不斷地時間才能掌握知識,而且還學會了如何去加強鍛煉創新精神,從而不斷地戰勝自己,超越自己。</p><p>  創新,是要我們將理論很好地聯系實際,并不斷地去開動自己的腦子,從為先到并做到別人沒想到沒做到的事,不斷地超越別人,超越自己;同時,更重要的是,在這一設計過程中,我懂得了堅持不懈,不輕易言棄是每個理工科學子應具備的良好素質。設計過程,也好比是我們的成長的歷程,常有一些不如意的事情發生,這就對我們提出

63、了挑戰。只要自己堅持,堅持,再堅持,再苦再累也值得。 機遇青睞有準備的人。這個設計過程中,我遇到過許多的考驗,給整個設計帶來的困擾,真想要就此放棄,然而,我還是挺了過來,</p><p>  回頭想想這個設計的過程,我明白了,原來結果并不是那么得重要,我們更應該注重的是過程。</p><p>  系統以單片機AT89C51為核心部件,單片機系統完成對按鍵信號識別、檢測、處理、顯示等

64、功能,用Protel軟件繪制電路原理圖,利用MCS-51匯編語言編制程序。</p><p>  這個系統設計能讓我們更好地去認識和使用單片機,矩陣式鍵盤,節約I/O口資源,引腳分配,實時顯示,芯片應用,編程實踐,還有諸如此類的優點。</p><p>  然而由于時間有點緊張,本來想設計一個數碼管動態掃描電路,或者用液晶屏顯示的電路來顯示按鍵信息,這樣更加清晰,而且還可以顯示其他的東西,比如

溫馨提示

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

評論

0/150

提交評論