看不懂数字世界 不要学单片机

  • 学习3698次

在做单片机无线通信的时候,我遇到了很多奇葩的问题,这些问题之所以奇葩,是因为问这些问题的人,在学单片机之前,就没有很好的理解“数字”(与“模拟”相对)的概念。

这些问题包括:

“这个只能传十六进制吗?”

“可以传送文字吗?”

“可以传送汉字吗?”

“可以传送声音吗?”

“可以传送图片吗?”

……

数字与模拟

自从有了计算机,我们的生活就和数字息息相关了。

“数字”和“模拟”和的感性认识,最直接的就是电脑显示器的接口:VGA接口和DVI接口。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个位组成的。

关键的问题,就是在传输之前,你得知道你要传输的东西的协议,然后借助各种软件把这些要传输的东西转换成字节,然后就可以发送了。

扎实学电子,请关注 科技老顽童 微信公众号:kjlwt8

发表评论

关闭菜单