《第七模塊單片機綜合應用項目實訓》由會員分享,可在線閱讀,更多相關《第七模塊單片機綜合應用項目實訓(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第七模塊第七模塊 單片機綜合應用項目實訓單片機綜合應用項目實訓 項目項目15 數(shù)碼電子鐘設計數(shù)碼電子鐘設計 項目項目16 簡易電子琴設計簡易電子琴設計項目項目15 15 數(shù)碼電子鐘設計數(shù)碼電子鐘設計l任務任務7-15 設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘任務任務7-15 設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘一、一、獨立鍵盤掃描程序獨立鍵盤掃描程序 對于應用多個獨立按鍵進行控制的單片機程序,為了便于集中控制,常常將多對于應用多個獨立按鍵進行控制的單片機程序,為了便于集中控制,常常將多個獨立按鍵看作一個整體性的由獨立按鍵構成的獨立鍵盤,通常獨立鍵盤中
2、的獨立按個獨立按鍵看作一個整體性的由獨立按鍵構成的獨立鍵盤,通常獨立鍵盤中的獨立按鍵數(shù)是四個。如圖所示為一種常用的獨立鍵盤掃描接口電路鍵數(shù)是四個。如圖所示為一種常用的獨立鍵盤掃描接口電路。CPU按程序編寫的指令順序按程序編寫的指令順序執(zhí)行程序,通常情況下執(zhí)行到鍵盤執(zhí)行程序,通常情況下執(zhí)行到鍵盤掃描子程序時,才開始鍵盤掃描。掃描子程序時,才開始鍵盤掃描。也就是說,只有在也就是說,只有在CPU空閑時才能空閑時才能去掃描鍵盤。這常常導致因為按鍵去掃描鍵盤。這常常導致因為按鍵時時CPU忙而按鍵無效。為了克服這忙而按鍵無效。為了克服這一缺陷,提高按鍵的靈敏度與有效一缺陷,提高按鍵的靈敏度與有效性,就必須
3、在足夠短的時間里對鍵性,就必須在足夠短的時間里對鍵盤進行定期重復掃描。通常的做法盤進行定期重復掃描。通常的做法是將鍵盤掃描子程序放置在定時器是將鍵盤掃描子程序放置在定時器中斷服務程序中,搭載定時器中斷中斷服務程序中,搭載定時器中斷服務程序運行鍵盤掃描子程序,以服務程序運行鍵盤掃描子程序,以保證很好地實現(xiàn)按鍵控制功能。保證很好地實現(xiàn)按鍵控制功能。任務任務7-15 設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘一、一、獨立鍵盤掃描程序獨立鍵盤掃描程序是否有鍵按下的判斷方法如下是否有鍵按下的判斷方法如下:先將先將4個獨立按鍵的接口個獨立按鍵的接口P1口的高口的高4位(位(P1.4P1.
4、7)均置高電平)均置高電平“1”(P1=0 xf0)。)。此時如果有某一按鍵按下,則按鍵連接的相應位會被強制出此時如果有某一按鍵按下,則按鍵連接的相應位會被強制出“0”。然后再讀取這。然后再讀取這4位的電位的電平,就會有一位不為平,就會有一位不為“1”,P1口的狀態(tài)將不再為口的狀態(tài)將不再為“0 xf0”,說明有鍵按下。用,說明有鍵按下。用C語言的編語言的編程語句可表示如下:程語句可表示如下:P1=0 xf0;/P1=1111 0000B,P1.4P1.7均置高電平均置高電平1if(P1&0 xf0)!=0 xf0);/條件判斷條件判斷:P1跟跟0 xf0(1111 0000B)按位)按位“與與
5、”運運算后的結果是否為算后的結果是否為0 xf0上述條件語句中的表達式,在無鍵按下時為上述條件語句中的表達式,在無鍵按下時為“假假”,不需進行鍵盤掃描,結束本次,不需進行鍵盤掃描,結束本次鍵盤掃描子程序的運行;上述條件語句中的表達式,在有鍵按下時為鍵盤掃描子程序的運行;上述條件語句中的表達式,在有鍵按下時為“真真”,需要繼續(xù)進,需要繼續(xù)進行鍵盤掃描檢測,確認到底是哪一個按鍵被按下行鍵盤掃描檢測,確認到底是哪一個按鍵被按下。上述條件語句中的表達式為上述條件語句中的表達式為“真真”時,說明有鍵被按下,在繼續(xù)進行鍵盤掃描檢測時,說明有鍵被按下,在繼續(xù)進行鍵盤掃描檢測前,為防止按鍵抖動的干擾,需要接著
6、進行軟件消抖前,為防止按鍵抖動的干擾,需要接著進行軟件消抖。軟件消抖之后就要進行按鍵(鍵值)的確認。按鍵確認可采用逐位掃描的方法軟件消抖之后就要進行按鍵(鍵值)的確認。按鍵確認可采用逐位掃描的方法。任務任務7-15 設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘一、一、獨立鍵盤掃描程序獨立鍵盤掃描程序綜上所述,獨立鍵盤掃描程序可用如下結構表達:綜上所述,獨立鍵盤掃描程序可用如下結構表達:/*鍵盤掃描函數(shù)鍵盤掃描函數(shù)*/void key_scan(void)P1=0 xf0;/P1=1111 0000B,P1.4P1.7均置高電平均置高電平1if(P1&0 xf0)!=0 xf0)
7、;/條件判斷條件判斷:P1跟跟0 xf0(1111 0000B)按位)按位“與與”運算后的結果是否為運算后的結果是否為0 xf0 delay();/軟件消抖,延時后再檢測軟件消抖,延時后再檢測 if(P1&0 xf0)!=0 xf0)/確認有鍵按下,以下進行鍵盤掃描確認有鍵按下,以下進行鍵盤掃描 if(SA=0)/如果是如果是SA鍵按下鍵按下 keyval=1;/設置按鍵值(也可以是直接的控制語句)設置按鍵值(也可以是直接的控制語句)if(SB=0)/如果是如果是SB鍵按下鍵按下 keyval=2;/設置按鍵值(也可以是直接的控制語句)設置按鍵值(也可以是直接的控制語句)if(SC=0)/如果
8、是如果是SC鍵按下鍵按下 keyval=3;/設置按鍵值(也可以是直接的控制語句)設置按鍵值(也可以是直接的控制語句)if(SD=0)/如果是如果是SD鍵按下鍵按下 keyval=4;/設置按鍵值(也可以是直接的控制語句)設置按鍵值(也可以是直接的控制語句)二、二、硬件電路設計硬件電路設計三、三、軟件程序設計軟件程序設計任務任務7-15 設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘設計獨立式鍵盤調(diào)時的數(shù)碼電子鐘項目項目16 16 簡易電子琴設計簡易電子琴設計l任務任務7-16 設計簡易電子琴設計簡易電子琴任務任務7-16 設計簡易電子琴設計簡易電子琴一、一、矩陣鍵盤工作原理矩陣鍵盤工作原理 1 接口電路接口
9、電路在鍵盤應用中按鍵的數(shù)量較多時,為了減少在鍵盤應用中按鍵的數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩口的占用,通常將按鍵排列成矩陣形式。如圖所示為矩陣鍵盤接口電路。陣形式。如圖所示為矩陣鍵盤接口電路。對于圖中由對于圖中由16個按鍵個按鍵組成的矩陣鍵盤,采用組成的矩陣鍵盤,采用44矩矩陣方式連接。在陣方式連接。在4根行線和根行線和4根列線的交叉點處設置根列線的交叉點處設置16個個鍵位。鍵位。4根行線接根行線接P1口的低口的低4位位I/O口線,口線,4根列線接根列線接P1口口的高的高4位位I/O口線,共需口線,共需8根根I/O口線。這種接法只用了一口線。這種接法只用了一個個I/O口的
10、口的8根根I/O口線,就能口線,就能控制控制16個按鍵,其個按鍵,其I/O口的利口的利用效率是獨立按鍵鍵盤的兩用效率是獨立按鍵鍵盤的兩倍,有效節(jié)省了倍,有效節(jié)省了I/O口資源??谫Y源。任務任務7-16 設計簡易電子琴設計簡易電子琴一、一、矩陣鍵盤工作原理矩陣鍵盤工作原理 2工作原理工作原理使用矩陣鍵盤的關鍵在于如何判斷鍵值。根據(jù)使用矩陣鍵盤的關鍵在于如何判斷鍵值。根據(jù)矩陣鍵盤接口矩陣鍵盤接口電路分析,如果已知電路分析,如果已知P1.0引腳置為低電平引腳置為低電平“0”,那么當,那么當S1鍵被按下時,可以肯定鍵被按下時,可以肯定P1.4引腳的信號必定變成引腳的信號必定變成低電平低電平“0”。反之
11、,如果預先將。反之,如果預先將P1.0引腳置為低電平引腳置為低電平“0”,將,將P1.1引腳、引腳、P1.2引腳、引腳、P1.3引腳置為高電平引腳置為高電平“1”,而單片機掃描到,而單片機掃描到P1.4引腳為低電平引腳為低電平“0”,則可以肯定,則可以肯定S1鍵被按下。鍵被按下。單片機識別按鍵的基本過程如下單片機識別按鍵的基本過程如下:(1)首先判斷是否有鍵被按下)首先判斷是否有鍵被按下將全部行線(將全部行線(P1.0引腳、引腳、P1.1引腳、引腳、P1.2引腳、引腳、P1.3引腳)均置低電平引腳)均置低電平“0”,將全部列線(將全部列線(P1.4引腳、引腳、P1.5引腳、引腳、P1.6引腳、
12、引腳、P1.7引腳)均置高電平引腳)均置高電平“1”,然后,然后檢測列線狀態(tài)。檢測列線狀態(tài)。(2)其次做按鍵消抖處理)其次做按鍵消抖處理(3)最后做按鍵識別)最后做按鍵識別當確認鍵盤中有鍵被按下時,轉入逐行掃描的方法來確定到底是哪一個鍵被按當確認鍵盤中有鍵被按下時,轉入逐行掃描的方法來確定到底是哪一個鍵被按下下。任務任務7-16 設計簡易電子琴設計簡易電子琴二、二、電子琴設計說明電子琴設計說明 電子琴設計的關鍵是讓每個按鍵對應于發(fā)出一個特定的音調(diào)。因此,首先要給電子琴設計的關鍵是讓每個按鍵對應于發(fā)出一個特定的音調(diào)。因此,首先要給44矩陣鍵盤上的矩陣鍵盤上的16個按鍵分配要發(fā)出的音符。個按鍵分配
13、要發(fā)出的音符。1音符在矩陣鍵盤上的排列分布設計音符在矩陣鍵盤上的排列分布設計在后面的示例程序中,音符的在矩陣鍵盤上的排列分布如圖所示在后面的示例程序中,音符的在矩陣鍵盤上的排列分布如圖所示。2鍵盤編碼鍵盤編碼為了讓單片機認識每一個按鍵,需要對為了讓單片機認識每一個按鍵,需要對S1S16這這16個按鍵進行編碼,給每一個按鍵分配一個按鍵值。這樣個按鍵進行編碼,給每一個按鍵分配一個按鍵值。這樣在鍵盤掃描程序掃描到有按鍵被按下時,單片機能夠根據(jù)在鍵盤掃描程序掃描到有按鍵被按下時,單片機能夠根據(jù)按鍵值控制蜂鳴器發(fā)出事先規(guī)定的音調(diào)。為簡便起見,將按鍵值控制蜂鳴器發(fā)出事先規(guī)定的音調(diào)。為簡便起見,將S1S16這這16個按鍵的按鍵值依次規(guī)定為個按鍵的按鍵值依次規(guī)定為116。3音符的音調(diào)頻率與節(jié)拍音符的音調(diào)頻率與節(jié)拍4鍵盤掃描控制鍵盤掃描控制鍵盤掃描控制由鍵盤掃描控制由44矩陣鍵盤掃描程序實現(xiàn)。矩陣矩陣鍵盤掃描程序實現(xiàn)。矩陣鍵盤掃描程序的反復運行由定時器鍵盤掃描程序的反復運行由定時器T1的中斷控制。的中斷控制。5音頻播放控制音頻播放控制音頻播放由音頻輸出函數(shù)控制定時器音頻播放由音頻輸出函數(shù)控制定時器T0實現(xiàn),音頻實現(xiàn),音頻方波由定時器方波由定時器T0的中斷控制產(chǎn)生。的中斷控制產(chǎn)生。三、三、硬件電路設計硬件電路設計四、四、軟件程序設計軟件程序設計任務任務7-16 設計簡易電子琴設計簡易電子琴