實驗步驟/程式
本實驗以實際程式撰寫九宮格讀取掃瞄函式。
使用硬體解碼IC來編七節管碼並輸出測試:
• 硬體配線:參考以下的電路功能方塊圖,PC以燒錄監視UART線接ASA-M128單板電腦,單板電腦40PIN IO接腳中,PORTB線接到麵包板,送出顯示值饋入麵包板上7447七節管編碼IC的輸入接腳。7447編碼輸出七節管碼,經輸出線接到LED七節管顯示模組。
硬體七節管碼編碼電路
• 測試程式:參考以下流程圖撰寫測試程式,完成一個輪流顯示0到9的程式。永久迴路中,有一延時迴路,由一個計算可設定固定循環值的小迴路組成,有一個計數輸出值A迴路,每次輪詢會加1,直到逾9時,降為0,讓輸出值落0至9之間。這個值由PORTB輸出。
硬體七節管碼編碼顯示流程
使用軟體查表方式來驅動顯示七節管碼:
• 參考以下功能方塊圖,完成不使用硬體七節管解碼器顯示阿拉伯數定的電路。基本上電路是將上一個電路的7447拿掉,直接將40PIN IO的 PORTB,接腳接到LED七節管顯示模組的接腳上。
電路功能方塊圖
• 參考以下流程圖,完成一個利用查表法,進行軟體七節管碼編碼並輪流輸出0到9的程式。硬體上被拿掉的七節管碼編碼工作,由軟體查表來取代,原本要直接輸出的數值A,被拿來做為查表的輸入值,由表中找出可以表示A值的對應七節管碼B,再將B輸出。直接驅動七節管。
軟體七節管碼編碼顯示流程
九宮格4X4鍵盤掃瞄函式:
4X4鍵盤經緯線配線電路
參考4X4鍵盤經緯線配線電路,取用一個輸出入埠,可由低四位元接到四條緯線提供掃描訊號,高四位元接到經線偵測按鍵導通狀態。
依據鍵盤掃描及偵測功能方塊圖,可由4位元掃描訊號產生器,產生掃描訊號,輸出給鍵盤,再以鍵盤導通偵測器偵測鍵盤按鍵導通狀態。得到16個鍵的導通與否狀態。
鍵盤掃描及偵測功能方塊圖
• 參考4X4鍵盤經緯線配線電路,將PORTB低4位元送出控制4條緯線Hi/Lo 以掃瞄4列(row ),PORTB高4位元接到四條經線,讀回同行(column) 4個鍵的導通狀態。
• 九宮格4X4鍵盤掃瞄函式撰寫:參考背景知識中介紹的九宮格4X4鍵盤掃瞄虛擬碼流程,撰寫九宮格4X4鍵盤掃瞄程式,並且把它包裝成回傳鍵盤編號傳參的函式。
• 測試程式撰寫:撰寫一個主程式,輪詢呼叫鍵盤掃瞄函式,之後以Printf()函式將所得鍵盤編號回傳給PC。
以匯流排擴充輸出入埠同時掃瞄鍵盤並顯示4顆七節管碼
利用PORTD提供資料匯流排,PORTB4:6提供位址匯流排,PORTE4:3提供讀寫控制線,所創造出的八個擴充輸出埠,以及八個擴充輸入埠,可以同步支援4個七節管碼的顯示之外,也可以用同一組擴充輸出入埠的同一位元群所分割的輸出及輸入來掃描4X4鍵盤。
下圖所示,擴充輸出埠OutP(0)的位元bit3:0擔任緯線之控制,而InP(0)的相同位元可以讀回經線之HI/LO。OutP(1),OutP(2),OutP(3),OutP(4)則分別接到10進位的第1位數,到第4位數。圖中的位址解碼及讀寫控制電路可參考前一單元的74LS138與NAND GATE及NOT GATE電路。
• 電路配置:依照電路圖在麵包板上完成電路配置及配線
• 程式撰寫:撰寫測試程式執行以下動作
◦ 掃描讀取鍵盤,監視是否有新輸入。
◦ 將己顯示之舊數字往高位數移,第四位等於第三位,第三位等於第二位,第二位等於第一位,第一位等於新輸入。
• 測試系統:實際按鍵盤,觀察並記錄七節管顯示內容變化。
擴增輸出入埠整合4X4鍵盤以及多顆七節管顯電路圖
軟硬體介面規格(略)
提示
實驗報告內容
工作日誌
以手寫的方式記錄每次作實驗之起始及結束之日期時間,當日所遇到的困難,所解決之困難及方法。
程式流程/虛擬碼/內部變數資料結構/程式列表(縮印)
請提供本次實驗的程式虛擬碼,以及程式列表。
實驗數據
請將你的鍵盤電路接線經緯線對應圖及相應之輸按鍵碼記錄交出
討論
假使用DELAY來代替執行其它程式,當Delay很長時即其它程式執行很久時,是否會影響到鍵盤輸入的掃描,如何影響。。
問題
1. 若是九宮格鍵盤經緯線共同接到Vcc改為接到地時,請問你的程式要做什麼樣的對應修改?
2. 請問,若是我們要偵測到其處理所有的按鍵,而不是僅偵測到同時間段最小的按鍵,程式輸出可以如何修改?
驗收標準
助教依以下步驟要求學生確實執行及修改,以確認學生能夠獨立完成各項實驗。
1. 學生從關機狀態開始,由開機到燒錄並接人機確認各單元實驗之程式已完成。
2. 助教接手學生開發程式,隨機刪除,修改或對調程式順序後重新編譯出不可執行之錯誤程式,交還學生,在指定限時間之內,獨立不參考其它現成程式,除錯恢復原程式。或則助教任意修改交換一對經緯線應順序,學生能夠改出程式按指定設定輸出入方向。學生能夠改出程式按新順維持鍵盤輸入值不變。