《STC系列單片機項目實踐》課件-02 項目二 簡易計算器設(shè)計_第1頁
《STC系列單片機項目實踐》課件-02 項目二 簡易計算器設(shè)計_第2頁
《STC系列單片機項目實踐》課件-02 項目二 簡易計算器設(shè)計_第3頁
《STC系列單片機項目實踐》課件-02 項目二 簡易計算器設(shè)計_第4頁
《STC系列單片機項目實踐》課件-02 項目二 簡易計算器設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目2簡易計算器設(shè)計副標題2.1學(xué)習(xí)目標[知識目標]

掌握GPIO口的配置方法;

掌握鍵盤的硬件設(shè)計原理;

掌握行列式鍵盤的驅(qū)動原理;

掌握數(shù)碼管的硬件設(shè)計方法及其驅(qū)動原理。

[能力目標]

能夠熟練使用查詢方式識別按鍵;

能夠熟練使用復(fù)用引腳驅(qū)動數(shù)碼管的顯示;

能夠CCITSTC單片機綜合實驗儀Keil編輯環(huán)境下編寫和在線調(diào)試簡易計算器程序。

2.2項目分析選用簡易計算器設(shè)計項目,主要目的是通過該項目簡要介紹鍵盤、數(shù)碼管的驅(qū)動原理和編程方法,具體包括:GPIO口的配置、行列式鍵盤的識別、多位數(shù)碼管的顯示驅(qū)動、GPIO

口的復(fù)用方法和簡易計算器的綜合調(diào)試。簡易計算器項目主要是設(shè)計兩個子任務(wù):行列式鍵盤掃描和多位數(shù)碼管顯示。通過這兩

個子任務(wù)的整合設(shè)計實現(xiàn)簡易計算器的加、減、乘、除功能。通過該項目的訓(xùn)練,使讀者可以靈活運用鍵盤和數(shù)碼管這兩個常用輸入和輸出模塊,同時進一步熟悉STC單片機的基本資源,為后續(xù)項目的學(xué)習(xí)奠定基礎(chǔ)。

2.4支撐知識2.4.1行列式鍵盤1鍵盤模型及接口

鍵盤是由若干個按鍵組成的開關(guān)矩陣,它是嵌入式系統(tǒng)中最簡單的數(shù)字量輸入設(shè)備,操作員通過鍵盤輸入數(shù)據(jù)或命令,實現(xiàn)簡單的人-機通信。

(1)鍵盤模型

鍵盤的基本電路是一個接觸開關(guān),通、斷兩種狀態(tài)分別表示0和1,微處理器可以容易地檢測到開關(guān)的閉合。當(dāng)開關(guān)打開時,提供邏輯“1”;當(dāng)開關(guān)

閉合時,提供邏輯“0”。鍵盤接口1)獨立方式。獨立方式是指將每個獨立按鍵按一對一的方式直接接到I/O輸入線上,讀鍵值時直接讀I/O口,每一個鍵的狀態(tài)通過讀入鍵值來反映,所以也稱這種方式為一維直讀方式(按習(xí)慣稱為獨立式)。這種方式查鍵實現(xiàn)簡單,但占用I/O資源較多,一般在鍵的數(shù)量較少時采用。

鍵盤接口2)矩陣方式。矩陣方式是用n條I/O線組成行輸入口,m條I/O線組成列輸出口,在

行列線的每一個交點上設(shè)置一個按鍵。讀鍵值方法一般采用掃描方式,即輸出口按位輪換輸出低電平,再從輸入口讀入鍵信息,最后獲得鍵碼。這種方式占用I/O線較少,在實際應(yīng)用系統(tǒng)中采用較多。

鍵盤的基本問題

為了能實現(xiàn)對鍵盤的編程,應(yīng)該了解下面幾個問題:第一,如何識別鍵盤上的按鍵?第二,如何區(qū)分按鍵是被真正地按下,還是抖動?第三,如何處理重鍵問題?了解這些問題有助于鍵盤編程。

(1)鍵盤識別

如何知道鍵盤上哪個鍵被按下就是鍵的識別問題。若鍵盤上閉合鍵的識別由專用硬件實現(xiàn),稱為編碼鍵盤;而靠軟件實現(xiàn)的稱為未編碼鍵盤。在這里,主要討論未編碼鍵盤的接口技術(shù)和鍵輸入程序的設(shè)計。識別是否有鍵被按下,主要用查詢法。而要識別鍵盤上哪個鍵被按下,主要有行掃描法。

(2)抖動問題

當(dāng)手按下一個鍵時,會出現(xiàn)所按的鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況,當(dāng)釋放一個按鍵時也會出現(xiàn)類似的情況,這就是抖動問題。抖動持續(xù)的時間因操作者而異,一般為5~10ms之間,穩(wěn)定閉合時間一般為十分之幾秒至幾秒,由操作者的按鍵動作所確定。在軟件上,解決抖動的方法通常是延遲等待抖動的消失或多次識別判定。4×4行列式鍵盤驅(qū)動設(shè)計分析

行列式鍵盤掃描驅(qū)動的步驟:

1)判斷有無鍵閉合。

使行線P3.0~P3.3都輸出0,檢測列線P3.4、P3.5、P4.2、P4.4是否全為1。如果有鍵被按下,就會有某一根列線變?yōu)椋?,從而使P?4、P3.5、P4.2、P4.4不為全1;如果P3.4、P3.5、P4.2、P4.4為全1,說明無鍵閉合。

2)消除鍵抖動。

在檢測到有鍵閉合后,需延時10~20ms,避開抖動階段,然后再檢測P3.4、P3.5、P4.2、P4.4是否為全1。如果為全1,作無鍵閉合處理,否則,則進一步檢測閉合鍵鍵號。

3)確定閉合鍵鍵號。

如果有鍵按下,再逐行逐列地掃描,以檢測出所按鍵的鍵號。先使行線P3.0~P3.3=0111,分別檢測P3.4、P3.5、P4.2、P4.4。如果P3.4為0,則為1號鍵按下了;如果P3.5為0,則為2號鍵按下了。如果P3.4、P3.5、P4.2、P4.4都為1,說明P3.4、P3.5、P4.2、P4.4這一行上沒有鍵被按下,再使P3.0~P3.3=1011,并逐列檢查。這樣依次地逐行逐列地掃描,直至找到閉合鍵為止。

鍵盤通用函數(shù)編程2.4.2數(shù)碼管驅(qū)動4位數(shù)碼管驅(qū)動設(shè)計分析

關(guān)于數(shù)碼管的硬件接線,使用宏定義描述硬件接線,且每個接線單獨宏定義,更具普適性,這樣,若數(shù)碼管SEG接在MCU的不同引腳,只需修改SEG的硬件接線宏定義即可。關(guān)于位選問題,設(shè)置靜態(tài)變量bsel(初值為0x01)作為數(shù)碼管片選端的位選信號,每隔10ms左右,循環(huán)左移1次,由于人眼的“視覺暫留”,可穩(wěn)定地在2個4位數(shù)碼管上穩(wěn)定顯示8個字節(jié)的數(shù)據(jù)。

2.5項目實施

通過行列式鍵盤掃描,在兩個4位數(shù)碼管上動態(tài)顯示相應(yīng)的鍵值和計算結(jié)果值。定義三個字符a、b、c作為操作數(shù)、被操作數(shù)以及結(jié)果,利用顯示緩存來存放鍵盤輸入的數(shù)值,主循環(huán)中不斷調(diào)用顯示函數(shù)及鍵盤掃描函數(shù),確保穩(wěn)定顯示以及按鍵能得到及時響應(yīng)。如果有鍵被按下,就將顯示緩存現(xiàn)有的內(nèi)容右移一位,將按鍵的鍵值填入顯示緩存的最高位,同時在LED顯示器上顯示出來,當(dāng)按下“+、-、"、/”任意符號鍵時,先將顯示緩存中已輸入的數(shù)值保存到字符a中作為被操作數(shù),然后把后續(xù)的按鍵值再逐次放到顯示緩存中,當(dāng)按下“=”鍵時,再將顯示緩存中已輸入的數(shù)值保存到字符b中作為操作數(shù),同時運算得出結(jié)果,并保存在字符c中,將c的數(shù)值顯示在數(shù)碼管上;當(dāng)下“C”鍵時,表示清零。

2.6項目小結(jié)程序中,可利用顯示緩存來存放輸入的鍵值,主循環(huán)中應(yīng)不斷調(diào)用顯示函數(shù)keycount()函數(shù)和segdisp(dbuf)函數(shù),實現(xiàn)計算器功能,按鍵掃描函數(shù)和數(shù)碼管顯示函數(shù)均通過構(gòu)建通用函數(shù)實現(xiàn)構(gòu)建化編程。本實驗通過IAP15F2K61S2與74HC138連接,對7

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論