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