這次的考試接線的部份還蠻重要的,接錯線就幾乎等於寫不出來
以下我簡單講解一下,如果要討論的更深入,可以MAIL、留言、跟我約時間等等我會講解得比較仔細。
1. 接線
接線的部份主要由兩個,第一個是七段顯示器的abcdefg腳位,第二個是七段顯示器ABCD的腳位,如果你排線接的是abcdefg的那邊,理論上那麼就做不出讓其它的八段顯示器亮,也就是只能亮一顆。
如果你排線接的是ABCD腳位的那邊,後來沒跑出來,我只能說…你倒楣吧。
(詳細接線見下方說明)
(詳細接線見下方說明)
2. 程式碼
這次程式碼的部份沒有用到新的東西,都是用到以前學的,我把它分成兩部分來說明
(1) 按鍵
按鍵的部份,在上課的時候助教就有稍微說明過了,這我就不說明了。
(2) 印在七段顯示器上
根據我們以前所學的要在七段顯示器上面顯示數字,那麼前面高位元是用來判斷哪顆七段顯示器,低位元則是用來判斷要顯示的數值
例如 我要在第3顆七段顯示器上面顯示5,2進位碼也就是這樣
0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
|<---高位元---- >| |< ---低位元--->|
再舉一個例子你可能就會更懂
例如 我要在第2顆七段顯示器上面顯示8,2進位碼也就是這樣
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
|< ---高位元---- >| |< ---低位元--->|
所以如果按下鍵盤上的按鍵5,主程式(LOOP)則會跳到副程式KEY5的地方,這時候我只要將001001012(2516)直接輸入到P2(七段顯示器的輸出)即可。
那麼要如何產這串二進位碼呢?
小提示:
如果你要寫得很簡單,你可以直接MOV P2, 00100101B,一行就結束,不過在這邊我是要教你怎麼做,所以就寫的詳細一點,其實也是為了下一篇文章鋪路,寫法很多自己取捨
如果你要寫得很簡單,你可以直接MOV P2, 00100101B,一行就結束,不過在這邊我是要教你怎麼做,所以就寫的詳細一點,其實也是為了下一篇文章鋪路,寫法很多自己取捨
其實如果你如果真的懂了我上面的說明,以下就會很簡單
首先例如如果按下鍵盤上的5,那麼接下來程式應該會跳到key5的地方執行,當一進入到key5時,我們則將05先放到A暫存器,而B暫存器則存放要在哪顆七段顯示器顯示的值(如20),接著B暫存器做ORL的邏輯運算,這時候就會得到我們要的二進位碼(2516),之後每一個按鍵都這樣做就可以了。
如果不想用我的程式碼,想要用自己的,那麼我教你怎麼用軟體驗證
軟體驗證方法教學:
UV4模擬中斷實驗與七段顯示器影片 -BY阿添
以下程式碼可以先參考我有使用軟體驗證過,但還沒實際在機器上跑過(已驗證),如果有錯我會再通知大家。
程式碼:
ORG 00H MOV B,#20H//左邊數過來第二顆七段顯示器 LOOP: MOV P1,#11101111B JNB P1.0,KEY0 JNB P1.1,KEY1 JNB P1.2,KEY2 JNB P1.3,KEY3 MOV P1,#11011111B JNB P1.0,KEY4 JNB P1.1,KEY5 JNB P1.2,KEY6 JNB P1.3,KEY7 MOV P1,#10111111B JNB P1.0,KEY8 JNB P1.1,KEY9 JNB P1.2,KEYA JNB P1.3,KEYB MOV P1,#01111111B JNB P1.0,KEYC JNB P1.1,KEYD JNB P1.2,KEYE JNB P1.3,KEYF JMP LOOP KEY0:MOV A,#00H ORL A,B MOV P2,A JMP LOOP KEY1:MOV A,#01H ORL A,B MOV P2,A JMP LOOP KEY2:MOV A,#02H ORL A,B MOV P2,A JMP LOOP KEY3:MOV A,#03H ORL A,B MOV P2,A JMP LOOP KEY4:MOV A,#04H ORL A,B MOV P2,A JMP LOOP KEY5:MOV A,#05H ORL A,B MOV P2,A JMP LOOP KEY6:MOV A,#06H ORL A,B MOV P2,A JMP LOOP KEY7:MOV A,#07H ORL A,B MOV P2,A JMP LOOP KEY8:MOV A,#08H ORL A,B MOV P2,A JMP LOOP KEY9:MOV A,#09H ORL A,B MOV P2,A JMP LOOP KEYA:MOV A,#0AH ORL A,B MOV P2,A JMP LOOP KEYB:MOV A,#0BH ORL A,B MOV P2,A JMP LOOP KEYC:MOV A,#0CH ORL A,B MOV P2,A JMP LOOP KEYD:MOV A,#0DH ORL A,B MOV P2,A JMP LOOP KEYE:MOV A,#0EH ORL A,B MOV P2,A JMP LOOP KEYF:MOV A,#0FH ORL A,B MOV P2,A JMP LOOP END
另外給各位一個提醒:程式碼這樣已經很短請盡量不要再增加行數了,否則會跳出TARGET OUT OF RANGE的錯誤訊息。這是因為 JNB沒辦法跳那麼多行,解決辦法很簡單,很好想。
2010/06/18
接線部分說明:
(1)(2)
(3)
2010/06/23祝各位考試順利另外拜託考試時請把註解刪掉,不要直接複製貼上,直接貼就太扯了喔
原本不想說明的,但是怕大家做出來不知道正確性,所以我今天又補了一張圖片,當程式碼能夠順執行時,七段顯示器所顯示的每個數字的圖形如下圖所示。
(請注意:F為每個燈都是熄的,請做出成果之後不要以為按鍵壞掉了,在這邊我不說明為什麼,請自己翻羅設實習設計的課本)
為什麼不是顯示正確的A-F而是顯示成七段顯示器的A-F(也就是下方這樣)?想知道的再問,我不想說明。
為什麼不是顯示正確的A-F而是顯示成七段顯示器的A-F(也就是下方這樣)?想知道的再問,我不想說明。
沒有留言:
張貼留言
俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!