本次實驗整體目標包括,學習各式編碼解碼包括七節管碼,結合位址解碼,擴充同時顯示四顆七節管,最後學習鍵盤掃瞄輸入方式,完成一個以微控器為核心,能夠接受鍵盤輸入,並能以多顆七節管顯示輸出值的系統。
1. 網頁維基百科關於C言語
3. C語言學習筆記網頁http://openhome.cc/Gossip/CGossip/
4. ATmega128(L) Complete.pdf
1. PC電腦
2. AVRM128硬體實驗板 www.viewmove.com
3. WinAVR Programmer'sNotepad 程式下載軟體
4. ASADataAgent
5. 三用電表
6. 排阻 ×2
7. 40PIN排線 ×1
8. 麵包板 ×1
9. 4X4九宮格鍵盤 ×1
10. DM74LS374 ×5
11. 74LS245 ×1
12. 七節管 ×4
13. SN74LS138P ×1
14. 74LS04P ×1
15. 74LS00P ×1
16. 74LS47 ×1
2進制多個位元的0與1可以有許多種排列組合,每一個特定組合代表一個義意即所謂的編碼,以下我們介紹比較常見的編碼方式。
單一位元能夠表達的就只有0與1兩個狀態,多位元最直接簡單的表達就是位元串,位元串中每一個位元只獨立表示它自己的0或1而與其他位元無關。這種編碼最明顯的例子就是指撥開關串以及TEN BAR LED串。前者為輸入位元串而後者為輸出位元串。
如果我們忽略指撥開關串,以及TEN BAR LED串的左右次序關係那麼,它們代表的只是純位元串,但是我們如果依左右順序分別給予編號,則它們第幾個位置亮暗是有其數值意義的,這種表示數值的方式,我們可以稱之為指標。
指標能夠表示的數值最高只到其位元數目大小,當我們要表達100或1000這個等級的數時,這種方式需要的位元數太多太不經濟,所以若無特殊限制及需求我們不使用指標方式。最常見的指標表示方式是音響各頻道的音量高低的LED燈條,當音量高時LED點亮燈條比較高,音量低時LED燈條也就比較矮。
數位訊號除了表達邏輯以外也可以表達數值,若用指標方式10 BAR最多只能表達0到10,而二進制碼則可以用最少的位元數來表達最廣的數值。顧名思義,二進制碼即為2進位制的編碼,類似10進制每個字元能表達的是0與1,當超過1則進位到下一位元,並把本身變為0,被進位到的下一位元則加1。二進制碼能表達的數值範圍是
其中b為位元數。例如3位元的二進制碼可以表達0到7等8個不同值,8位元的二進制碼可以表達0到255等256個值。
在C語言的語法中的資料格式TYPE,對於相同的二進位編碼會代表不同的數字或文字。例如Char/使用8位元排列組合來表達-128到127範圍的數值,unsigned Char則使用相同的8位元排列組合來表達0到255範圍的數值。
Int則使用16個位元來表達-132768到32767範圍的數值,unsigned Int則使用16個位元來表達0到65535範圍的數值。它們的編碼方式都是2進制,但解譯方式則依據TYPE而有不同。
ASCII全稱American Standard Code for Information Interchange,美國資訊交換標準程式碼。主要用於顯示現代英語字母。由最初電報用碼發展而來。大部份鍵盤輸出入碼都是ASCII。以編序0~127來代表,控制字元,符號,數字,或字母。
如下表所示,阿拉伯數字0~9分別佔用了48~57共十個碼。英文大寫字母A~Z佔用了65~90共26個碼。 英文小寫字母a~z 則佔用了97~122共26個碼。
則分別佔用了43,45,42,47,以及61。
依據二進制編碼,4位元可以表示0到15等16個不同數值,8位元則能表達256 個不同數值。
然而二進制碼對一般人而言不容易閱讀,一般人習慣的是十進位制,BCD碼是為了方便作業人員讀取電腦顯示值的編碼方式,它用4個位元組來表達0到9等10個不同數值做為個位數,當數值超過9時則進位到另外一組4個位元組來代表10位數。如此一來8個位元能夠表達的是10進制的2個位數,亦即能顯示0到99範圍的數值。
這種編碼方式是2進位編碼,但是遇10就進位,所以被稱為二進編碼十進制Binary Coded Decimal簡稱BCD碼。