学习单片机之前一定要先学会看懂数字世界
扫描二维码
随时随地手机看文章
如果我们在做单片机无线通信的时候,没有很好地理解“数字”的概念,我们就会遇到很多的问题,例如:可以传送文字吗?,可以传送声音和图片吗?......这些问题虽然听上去让人觉得很奇葩,但是正是这样的问题更反映出在学单片机之前,我们并没有做好功课。
数字与模拟
自从有了计算机,我们的生活就和数字息息相关了。
“数字”和“模拟”和的感性认识,最直接的就是电脑显示器的接口:VGA接口和DVI接口。VGA接口就是模拟接口,DVI接口就是数字接口。
(左边是DVI数字接口,右边是VGA模拟接口)
我们先来理解一下“数字”与“模拟”的区别。
在一个5V的系统中,“模拟”电压可以是0~5V中的任何一个值,例如2.36V,而“数字”电压,只有0V和5V两种,一般情况下,我们把0V称作低电平(0),把5V称作高电平(1)。
在数字世界中,只有0和1
我们每天使用的电脑就是一个数字器件,各种声音、图片、视频、文字等数据在电脑上存储,最根本都是01组成的。
这里就不得不提到一个我们学习单片机必须要掌握的两个概念:位和字节。
我们刚才说的01就是位,也就是说,一个位不是0就是1,这就是刚才说的那些声音、图片等最终的存储方法。
8个位就是一个字节。字节就是为了计算方便和显示方便而故意搞出来的一个东西。由此还涉及到了BCD码、二进制、十六进制、十进制等概念和算法。
回到最初的那些奇葩问题
还是举栗子吧,像单片机这种实践课程,有了栗子才好理解。
英文传输:比如传输“hello”,hello每个字母对应的十六进制字节为:0x68 0x65 0x6c 0x6c 0x6F,那么,我们只需要把这几个字节传输过去,在那边再进行ascii与字母的转换,即可显示hello。
中文传输:比如传输“老顽童”,1个汉字对应的2个十六进制码,我们一般用gbk码。“老顽童”对应的gbk码字节为:0xc0 0xcf 0xcd 0xe7 0xcd 0xaf。我们只需要把这几个字节传输出去,在那边再进行gbk与十六进制的转换即可。
声音、图片、视频,文件都比较大,它们是由很多个字节组成的,并且按照一定的格式存储。例如前面的英文用的而是ascii码,中文用的是gbk码,这些都被称作“协议”。“协议”就是用来编码和解码的。声音也有很多“协议”,比如mp3格式,wma格式等等。比如图片有jpg,png,bmp等格式,比如视频有avi,mp4等格式。这些格式都有官方统一的协议规定,最终都是字节的排列方式不同。
所以,不管传输什么,都是在传输字节。我们一般以十六进制形式写出来一个字节,其实一个字节就是由8个位组成的。
关键的问题,就是在传输之前,你得知道你要传输的东西的协议,然后借助各种软件把这些要传输的东西转换成字节,然后就可以发送了。
介绍到这里,大家应该有了基本了解,希望大家在学习单片机的时候把基础知识把握好。