單片機應用技術(C語言 第二版)課件:簡易計算器_第1頁
單片機應用技術(C語言 第二版)課件:簡易計算器_第2頁
單片機應用技術(C語言 第二版)課件:簡易計算器_第3頁
單片機應用技術(C語言 第二版)課件:簡易計算器_第4頁
單片機應用技術(C語言 第二版)課件:簡易計算器_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

任務一按鍵控制數碼顯示任務二鍵盤輸入數碼任務三簡易計算器在電子設備中,按鍵是常用的輸入設備,以按鍵的形式輸入信號或實現某種功能控制,所需按鍵數量應根據系統功能的需求而定。當需要實現控制的量較少時,一般采用單一按鍵。本任務的內容是利用按鍵控制單片機實現數碼管顯示內容的修改。每當按下一次鍵時,數碼管顯示數值加1,超過9后回到0。任務提出任務一

按鍵控制數碼顯示本任務的目標是用按鍵控制數碼管顯示一位數字,實現該目的僅需使用單只數碼管就可以,同時也只需一只按鍵作為單片機的引腳控制。用單片機僅驅動一只數碼管顯示時可采用靜態顯示。當數碼管所需驅動電流較小時,可以使用單片機端口直接驅動。按鍵可以控制單片機引腳電平的高低,在程序中通過讀取并判斷單片機連接按鍵的引腳電平信號去控制數碼管的顯示內容,實現任務目標。整個按鍵控制數碼顯示的原理電路框圖如圖所示。任務分析按鍵控制數碼顯示系統電路框圖一、單片機引腳的讀入在的任務一中已經提到,在這里還要特別指出的一點是:由于51系列單片機的端口電路結構原因,當單片機的端口引腳作為輸入時,在讀入端口或端口引腳狀態前需要先將被讀的所有引腳輸出“1”,即讓各端口內部的輸出電路被置為弱上拉狀態(P0口為高阻狀態)。相關知識在C51中,單片機是將對應的引腳當作一個變量來讀入的,引腳信號電平(或端口鎖存器中各位數據)就是變量的值。與單片機引腳的輸出相同,使用輸入的引腳需要先定義該引腳變量。單個引腳相當于位變量,端口相當于字節變量。sbit是C51中的一種擴充數據類型,利用sbit定義可以訪問芯片內部RAM中的可尋址位或特殊功能寄存器中的可尋址位,語句格式為:sbit

位變量名=特殊功能寄存器名^位置;二、按鍵的抖動與消抖的方法1.按鍵與抖動鍵盤是由一組按規則排列的按鍵組成的,一個按鍵實際上是一個開關元件,也就是說鍵盤是一組按規則排列的開關。按鍵按照結構原理不同可分為兩類,一類是觸點式開關按鍵,如機械式開關、導電橡膠式開關等;另一類是無觸點開關,如電子式無觸點開關、磁感應無觸點開關等。在程序設計中,一個完善的鍵盤控制程序應具備以下功能:(1)掃描檢測有無按鍵按下,并采取硬件或軟件措施,消除鍵盤按鍵機械觸點抖動的影響。(2)用可靠的邏輯處理辦法,每次只處理一個按鍵。其間,其他按鍵的操作對系統均不產生影響,且無論一次按鍵時間有多長,系統僅執行一次按鍵功能程序。(3)準確輸出按鍵值(或鍵號),以滿足程序功能要求。鍵盤通常使用機械觸點式按鍵開關,其主要功能是把機械上的電路通斷轉換成電氣上的邏輯關系。機械式按鍵在按下或釋放時,由于機械彈性作用的影響,通常伴隨有一定時間的觸點機械抖動,然后其觸點接觸狀態才穩定下來。其抖動過程使輸出電平不能穩定,如圖所示。抖動時間的長短與開關的機械特性和按鍵力度有關,一般為5~10ms。按鍵觸點的機械抖動示意圖在觸點抖動期間檢測按鍵的通斷狀態,可能導致誤判斷。即按鍵一次按下或釋放被錯誤地認為是多次操作,這種情況是不允許出現的。為了克服按鍵觸點機械抖動所致的檢測誤判,必須采取去抖動措施。消除電平抖動可從硬件電路或軟件控制兩方面實現。在鍵數較少時,可采用硬件去抖,讓系統控制十分簡單,如單次脈沖發生電路。當按鍵數量較多時,采用軟件去抖的成本十分低廉,應用廣泛。2.硬件消抖硬件消抖一般采用在按鍵輸出端加R-S觸發器(雙穩態觸發器)或單穩態觸發器構成去抖動電路。如圖a所示是一種由R-S觸發器構成的去抖動電路,觸發器一旦翻轉,觸點抖動便不再對觸發器輸出產生任何影響。整個雙穩態消抖動電路的工作波形如圖4b所示。雙穩態去抖電路及其波形a)R-S觸發器去抖動電路原理圖

b)R-S觸發器去抖動電路波形圖3.軟件消抖軟件消抖采取的措施是:在檢測到有按鍵按下時,等待10ms左右(具體時間應根據所使用的按鍵進行調整)的時間(這段時間按鍵輸出電平不穩定),再確認該鍵電平是否仍保持閉合狀態(在按下鍵10ms之后按鍵的輸出電平已經穩定),若仍保持閉合狀態電平,則確認該鍵處于閉合狀態。同理,在檢測到該鍵釋放后,也應采用相同的步驟進行確認,從而消除抖動的影響。軟件消抖程序框圖三、獨立按鍵接口電路在很多單片機控制系統中,往往只需要幾個功能鍵,此時,可采用獨立式按鍵結構。獨立式按鍵電路如圖所示。獨立式按鍵電路圖中按鍵輸入均采用低電平有效,上拉電阻保證了按鍵斷開時,I/O口線有確定的高電平。當I/O口線內部有上拉電阻時,外電路可不接上拉電阻。獨立式按鍵的處理程序通常采用查詢式軟件結構。先逐位查詢每根I/O口線的輸入狀態,如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應的按鍵已按下,然后再轉向該鍵的功能處理程序。除了讀入整個端口并進行消抖處理外,還可以對單個按鍵進行檢測。在定義單片機引腳后,可對每個引腳分別進行檢測和消抖處理。另外,還可以使用中斷的方式實現對按鍵的檢測。根據任務分析,本任務的硬件由單片機最小系統、數碼顯示電路和按鍵電路組成。單片機的最小系統電路由復位電路和振蕩電路等組成,本任務中選擇12MHz的晶振為系統振蕩器件。任務中只需要顯示一個數碼,故選擇一只數碼管的靜態顯示電路,數碼管選擇共陽極型,通過限流電阻連接到單片機的P0口,數碼管的公共端直接接系統電源。任務實施單一鍵盤控制電路原理圖二、軟件設計根據任務目標,本任務采用數碼管靜態顯示電路,并用端口直接驅動數碼管,故在程序中僅當需要改變顯示數據時才會修改單片機端口的數據。所以,在程序中可以不斷檢測按鍵的狀態,在完全確認按下按鍵時,修改端口輸出數據,達到修改顯示數碼的目的。在示例程序中,使用全局變量來記住顯示的數據,將該變量命名為num。三、Proteus仿真參照前面任務介紹的方法和步驟進行Proteus仿真。圖所示的是單片機按鍵控制數碼顯示的仿真效果圖。按鍵控制數碼顯示的仿真效果圖在單片機應用控制系統中,一些控制常需要用多只按鍵以實現不同的控制,如果采用簡單的獨立式按鍵將會占用較多的單片機端口。因此,常常需要使用矩陣鍵盤。任務提出任務二鍵盤輸入數碼本任務的內容是用鍵盤輸入數據,并用數碼管顯示輸入的數據,具體要求為:1.使用16鍵的矩陣鍵盤作為系統輸入。2.使用8只數碼管作鍵盤控制輸出功能顯示系統。為簡便起見,用數碼管顯示出鍵盤編號。3.按鍵編號為0~F,每次按下鍵時,4只數碼管的顯示內容左移一位,將按鍵編號顯示在最右邊的數碼管上。根據任務目標,使用8只數碼管動態顯示電路作為系統輸出。數碼動態顯示需要段碼的鎖存驅動電路和位碼的鎖存驅動電路。使用16只鍵的矩陣鍵盤作為系統輸入,就是要將矩陣鍵盤連接到單片機的輸入端口。整個系統的框圖如圖所示。任務分析參數設定系統電路框圖若直接使用機械開關,其輸出電平有抖動,與普通按鍵處理方法相同,需要硬件或軟件消除抖動后控制系統工作;若使用輸出信號沒有抖動的電路、器件、設備,則可以直接用其輸出信號的電平或邊沿作為動作點來控制系統工作。在數碼管顯示中,使用全局變量來存儲顯示內容,8只數碼管對應有8個元素的數組,修改數組元素的內容將使數碼管的顯示內容相應更改。根據任務要求,當按下按鍵時,控制數碼管顯示內容左移,并把按鍵的值顯示在最后一只數碼管上。因此在程序中,檢測到有按鍵按下時,應將數碼管顯示對應的數組元素依次向左賦值,同時將按鍵的編號賦值給最后一個元素即能實現任務目標。一、矩陣鍵盤掃描與譯碼的原理在單片機控制系統中,當要求按鍵數目較多時,通常采用矩陣鍵盤。1.矩陣鍵盤的結構及原理矩陣鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上,其結構如圖所示。2.矩陣鍵盤按鍵的識別(1)判斷鍵盤中有無鍵按下。(2)判斷閉合鍵所在的位置。相關知識矩陣式鍵盤的結構3.鍵盤的編碼鍵盤的編碼,就是表達和區分按鍵功能的數值或符號。這是鍵盤檢測程序和鍵盤功能執行程序之間的數據約定。對于行列式鍵盤,按鍵的位置由行號和列號唯一確定。但按鍵所在物理位置和邏輯連接不一致,而且按鍵功能的不同也將影響鍵盤編碼。圖所示為常見的兩種鍵盤布局。若要將鍵盤的掃描行號和列號轉換為有象征意義的鍵盤編碼,可通過行列計算或通過數組查表的方法來實現。鍵盤示意圖二、鍵盤掃描程序編寫在單片機應用系統中,常采用鍵盤作為系統輸入。單片機對鍵盤狀態的檢測方式有三種,即編程掃描、定時掃描和中斷掃描。1.編程掃描方式編程掃描方式是利用CPU完成其他工作的空余時段,調用鍵盤掃描子程序來響應鍵盤輸入的要求。在執行鍵功能程序時,CPU不再響應鍵輸入要求,直到CPU重新掃描鍵盤時再次響應鍵盤輸入。鍵盤掃描程序一般包括以下內容。(1)判別有無鍵按下。(2)鍵盤掃描取得閉合鍵的行、列值。(3)用計算法或查表法得到鍵值。(4)判斷閉合鍵是否釋放,如沒釋放則繼續等待。(5)將閉合鍵的鍵號保存,同時轉去執行該閉合鍵的功能。2.定時掃描方式定時掃描方式就是每隔一段時間對鍵盤掃描一次,它利用單片機內部的定時器產生一定時間段(例如10ms)的定時,當定時時間到就產生定時器溢出中斷,CPU響應中斷后對鍵盤進行掃描,并在有鍵按下時識別出該鍵,再執行該鍵的功能程序。定時掃描方式的硬件電路與編程掃描方式相同,只是在主程序中進行了定時掃描時間段設置。3.中斷掃描方式采用上述兩種鍵盤掃描方式時,無論是否按鍵,CPU都要定時掃描鍵盤,而單片機應用系統工作時,并非經常需要鍵盤輸入,因此,CPU經常處于無鍵盤按下的空掃描狀態。為提高CPU工作效率,可采用中斷掃描工作方式。中斷掃描方式要求當任何一個按鍵按下都會給單片機中斷引腳提供低電平。獨立鍵盤將所有口線接到多輸入與門,與門輸出送入單片機中斷引腳。而行列式鍵盤必須將作為輸出的行或列置為低電平,把輸入的所有線接到與門,與門輸出送入單片機的中斷引腳。當單片機中斷引腳出現低電平時,單片機暫停正在運行的程序,進入中斷服務程序,單片機轉去執行鍵盤掃描子程序,并識別鍵號與完成鍵功能。鍵盤處理完畢后,單片機回到被暫停的程序處繼續運行,這種方式程序運行效率高。4.鍵盤掃描消抖分析用手按動鍵盤的時間一般為零點幾秒到幾秒,按鍵的電平抖動時間小于10ms。因此,間隔10ms檢測一次鍵盤不會出現按鍵漏檢的情況,若連續兩次檢測到有鍵被按下的信息,則一定是按鍵被按下。要比較兩次檢測到的按鍵情況,需要將上一次的按鍵編碼使用變量存儲起來。一、硬件設計根據任務分析,本任務的硬件由單片機最小系統、數碼管動態顯示電路和矩陣鍵盤三大部分組成。單片機的最小系統電路由復位電路和振蕩電路等組成,本任務中選擇12MHz的晶振為系統振蕩器件。選擇8位共陰極數碼管動態顯示電路,考慮到單片機端口驅動能力不夠強,因此選擇總線驅動電路74LS245作為段驅動電路。為保證數碼管所有段的亮度一致,同時防止數碼管的段電流過大,在74LS245與數碼管的段之間串聯220Ω的限流電阻。任務實施共陰極數碼管的公共端電流是流出的,在數碼管點亮時,公共端的電流最大為8段LED的電流總和,單片機端口完全無法承受。在本任務中,選擇8TTL三態反相緩沖器74LS240作為數碼管位碼的驅動器件。74LS240的使能端為高電平時,輸出為高阻狀態;使能端為低電平時,74LS240為8個施密特反相器電路。由于TTL的允許灌電流可達30mA以上,故74LS240完全可以驅動數碼管。本任務中要實現16個按鍵的輸入,因此采用4行4列的鍵盤連接形式,并連接到單片機的P3端口。按鍵輸入數碼的硬件電路如圖所示。單片機鍵盤輸入數碼的電路原理圖三、Proteus仿真參照前面任務介紹的方法和步驟進行Proteus仿真。圖所示是單片機鍵盤輸入顯示電路仿真效果圖,圖中顯示數據是依次按下最上面兩排按鍵的顯示結果。鍵盤輸入參數仿真效果圖本任務的內容是實現一個簡易計算器。具體要求為:1.使用16只鍵的矩陣鍵盤作為系統輸入,8只數碼管為系統顯示器。2.實現整數的加減乘除按輸入順序計算。3.當運算結果超過顯示范圍時,出現錯誤提示。任務提出任務三

簡易計算器根據任務目標,使用8只數碼管動態顯示電路作為系統輸出。數碼管的動態顯示需要段碼的鎖存驅動電路和位碼的鎖存驅動電路。使用16只鍵的矩陣鍵盤作為系統輸入,將矩陣鍵盤連接到單片機的輸入端口。整個系統的框圖如圖所示。任務分析簡易計算器系統電路框圖在C51中,除了采用if語句實現多個分支的結構外,還可以使用開關語句switch實現。switch語句格式說明如下:1.首先計算表達式的值,逐個與case后的常量表達式的值進行比較,如果相等則執行之后的語句,如果不等則繼續比較下一個case后的值。2.執行后需用break語句跳出switch語句,如果沒有break語句,則順序執行下一個case之后的語句,直到執行break語句或結束整個switch語句。相關知識3.如果與所有case后的常量表達式的值都不相等,則執行default之后的語句。4.case后的常量表達式的值均為整型數據,且相互不能相等。5.case后可有多個語句,可不用{}。6.default如果是空,則表示不作任何處理,可以省略default語句。一、硬件設計根據任務分析,本任務的硬件由單片機最小系統、數碼管動態顯示電路和矩陣鍵盤三大部分組成。本任務中要實現16只按鍵的輸入,因此選擇使用4行4列的鍵盤連接到單片機的P3口。任務實施動態顯示采用共陰極數碼管,段碼直接采用P0驅動,用1kΩ的電阻提供上拉。位驅動信號采用NPN三極管(如9014、8050等型號)反相驅動,每只三極管的基極與單片機P2口的各個引腳之間采用10kΩ的電阻限流,確保輸出高電平使三極管飽和,輸出低電平時使三極管截止。簡易計算器的硬件電路如圖所示。簡易計算器的電路原理圖二、軟件設計1.程序框架簡易計算器,從顯示的數據上看,在沒有按下按鍵時,顯

溫馨提示

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

評論

0/150

提交評論