如果我們在做單片機無線通信的時候,沒有很好地理解“數(shù)字”的概念,我們就會遇到很多的問題,例如:可以傳送文字嗎?,可以傳送聲音和圖片嗎?......這些問題雖然聽上去讓人覺得很奇葩,但是正是這樣的問題更反映出在學單片機之前,我們并沒有做好功課。
數(shù)字與模擬
自從有了計算機,我們的生活就和數(shù)字息息相關了。
“數(shù)字”和“模擬”和的感性認識,最直接的就是電腦顯示器的接口:VGA接口和DVI接口。VGA接口就是模擬接口,DVI接口就是數(shù)字接口。
(左邊是DVI數(shù)字接口,右邊是VGA模擬接口)
我們先來理解一下“數(shù)字”與“模擬”的區(qū)別。
在一個5V的系統(tǒng)中,“模擬”電壓可以是0~5V中的任何一個值,例如2.36V,而“數(shù)字”電壓,只有0V和5V兩種,一般情況下,我們把0V稱作低電平(0),把5V稱作高電平(1)。
在數(shù)字世界中,只有0和1
我們每天使用的電腦就是一個數(shù)字器件,各種聲音、圖片、視頻、文字等數(shù)據(jù)在電腦上存儲,最根本都是01組成的。
這里就不得不提到一個我們學習單片機必須要掌握的兩個概念:位和字節(jié)。
我們剛才說的01就是位,也就是說,一個位不是0就是1,這就是剛才說的那些聲音、圖片等最終的存儲方法。
8個位就是一個字節(jié)。字節(jié)就是為了計算方便和顯示方便而故意搞出來的一個東西。由此還涉及到了BCD碼、二進制、十六進制、十進制等概念和算法。
回到最初的那些奇葩問題
還是舉栗子吧,像單片機這種實踐課程,有了栗子才好理解。
英文傳輸:比如傳輸“hello”,hello每個字母對應的十六進制字節(jié)為:0x68 0x65 0x6c 0x6c 0x6F,那么,我們只需要把這幾個字節(jié)傳輸過去,在那邊再進行ascii與字母的轉換,即可顯示hello。
中文傳輸:比如傳輸“老頑童”,1個漢字對應的2個十六進制碼,我們一般用gbk碼?!袄项B童”對應的gbk碼字節(jié)為:0xc0 0xcf 0xcd 0xe7 0xcd 0xaf。我們只需要把這幾個字節(jié)傳輸出去,在那邊再進行gbk與十六進制的轉換即可。
聲音、圖片、視頻,文件都比較大,它們是由很多個字節(jié)組成的,并且按照一定的格式存儲。例如前面的英文用的而是ascii碼,中文用的是gbk碼,這些都被稱作“協(xié)議”?!皡f(xié)議”就是用來編碼和解碼的。聲音也有很多“協(xié)議”,比如mp3格式,wma格式等等。比如圖片有jpg,png,bmp等格式,比如視頻有avi,mp4等格式。這些格式都有官方統(tǒng)一的協(xié)議規(guī)定,最終都是字節(jié)的排列方式不同。
所以,不管傳輸什么,都是在傳輸字節(jié)。我們一般以十六進制形式寫出來一個字節(jié),其實一個字節(jié)就是由8個位組成的。
關鍵的問題,就是在傳輸之前,你得知道你要傳輸?shù)臇|西的協(xié)議,然后借助各種軟件把這些要傳輸?shù)臇|西轉換成字節(jié),然后就可以發(fā)送了。
介紹到這里,大家應該有了基本了解,希望大家在學習單片機的時候把基礎知識把握好。