[原创] 不一样的51教程 之一 概念若干:数字?它是什么?它能干什么

辛昕   2011-10-7 20:32 楼主
写在前面   
    一直以来,我都不太当那些什么教程是教程,经常只是当成一种资料。而我也从来没有看过什么视频教程,一个是网速太渣,下起来太浪费表情。另一个是我更喜欢看书。
       ——请不要认为这是 骄傲,(曾经有人说我“眼睛长到额头上了”),我只是想表达一种不一样的观点和学习方式。

       曾经有写过一两个简单的比较另类的关于51理解的文章。不过一直都没有好好写一整套全的,认识的一些朋友,有刚刚开始接触51单片机的,由于他们不是电类专业,经常对51很陌生,他们问我该怎么学?有没啥教程推荐。
       于是我就很想把自己对于51的理解告诉他们,希望他们能有一个整体上的感觉——我想传达一种概念:这种东西就像内功,你看不到它,也很难“偷师”什么的,但是拥有它的人,根本不需要什么教程,他需要的除了数据手册就是资料——我是说那些什么寄存器地址啊,寄存器定义 啊之类的设计参考。

       这些时间里,正事没干多少,想法乱七八糟。心想还是实实在在做点事情。尽管51单片机我只能说是基本了解,而且我可能渐渐远离它,但我还是想好好地写这套东西,算是一个自我梳理的过程,如果能对你有帮助,不胜荣幸。

       闲话少说,开始正题。
       在开始讲51的内容以前,我想先说几个概念:数字(电路),单片机。并试图简单阐述清楚,这个东西,到底是个什么玩意,到底能干什么?
  
       假如你有数字电路基础,或者对数制一类的概念清楚,请自行跳过,以免浪费您的时间。


       数字
       这里说的“数字”当然是与“模拟”对应的数字。
       最简单的说法,就是用一连串0和1组成的数据串计数的记数系统。
   
       对比十进制,可以简单理解它。
       当你看到 “345”这个数字的时候,虽然你不会去想,它有 3个100,4个10,5个1,但你心里一清二楚。(我没查证)我们有十个手指,所以我们拥有了十进制,0到9.但是,半导体的世界里,它只有 通 和 断 两个状态。所以,它只有二进制。
       二进制是什么?二进制是0和1,二进制是 通 和 断,二进制是 灯亮灯灭。请记住——所谓X进制,就是有X个截然不同的状态用于区别,正如我们有十个手指,它们都是不一样的。

       关于二进制和我们熟悉的十进制之间的转换,其实你可以对比十进制,灵活点的人估计已经猜出来了,假如没有,也不要紧,这样的资料网上,书上多的是,请自行查阅。

       那么我们的到这些数字有什么用?
       这里,我以 灯亮灯灭 为例说明。
       
       学习51的入门任务就是点亮LED。很多人也提到自己对51的兴趣直接来源于那些闪烁的LED。我们可以设计电路,使输入一个信号为1时,灯灭,为0时,灯亮(反之亦可)。
       你看到大街上的红绿灯了吗?假设控制 红黄绿三个颜色的就是一个一个的二进制位的状态。
       现在我们定义 这三个位对应 红 绿 黄,1为灭,0为亮。 按照 红灯亮 黄灯亮(中间缓冲),绿灯亮 的顺序依次改变。
那我们就等于一直在输出3个3位二进制数 011 110 101,它们如果换成十进制数是(3,6,5)。

       单单看这三个数字 3 6 5,如果不告诉你它来源于哪里,不要说你,任谁都猜不到它到底是什么意思。
       
       其实事情就是这样——一个数字,一个二进制数字,当我们给每一位赋予了不一定的含义,那些看起来毫无规律莫名其妙的数据就有了意义(特别是十进制形式时。)

       当你理解了上述的内容。我首先可以剧透的一个内容是:单片机也好,任何数字系统都好,依我的个人理解,它的核心工作就是处理数字——移动到不一样的位置,修改它,对它进行运算.......而这些最终的目的只有一个——获取和设置我们想要的数字——然后通过它们感知和影响真实的物理世界。

       单片机
      单片机是什么?也许你听的耳朵已经起了茧,无数的书无数的人告诉我们,单片机其实跟我们的电脑是一样的,只不过它简单很多!——可以说这样的话是废话:我最初就不知道其实我们的电脑是什么,我除了知道可以用它打字,看电影,听音乐.......
       我们前面简单介绍了什么是数字(电路)。
       在解释单片机是什么以前,我来举一个大家都很熟悉的例子——笔算。
       中国人很小都懂得了 小九九,因此我们的小学生可以在纸上运算多位乘除。请回顾一下你 运算 34 * 45 的过程。
“45 20,留0进2, 35 15 加2 17 留7 进1......”
        我们把这些过程用笔记录在纸上。请想象一下,如果不给你纸和笔,并假设你尚未能做到用脑袋记住几个中间值(虽然这个例子来看并不复杂,是可以记住的。)。在这种情况下,你是没有办法进行下去的。
        因为,你损失了很多 中间结果。

        单片机(或者说 我们的电脑 ,以及任何的数字系统)在进行运算的时候(其实很多数据的处理过程都可以看成 运算)。它也需要记录中间结果和存放数据。
        所以我们需要存储器,存储器是什么?粗糙的说,存储器就是一系列有序的电子开关单元。它们每一个人只记得0或者1.
当它们集合在一起的时候,它们就可以计数了。
        比方我们前面说的 红绿灯。它有三个电子开关单元。每个人只知道0和1,但当它们组合起来的时候,它们就可以表达几种状态。从000到111,0到7,共8个数字。

        有了存储器以后,我们当然还少不了运算单元,当然,它没我们厉害,它不知道小九九,它只知道加法。但是不要紧,在我们的策划和安排下,加法也可以完成 小九九 完成的乘法。
         
        接下来还有什么呢?
         前边说了,红绿灯,如果我们要让外部世界知道我们处在什么状态,我们还必须通过明确的 0和1 展现出来,这时候可以通过灯亮和灯灭,或者只是 一个 高低电位,所谓高低电位 就是 0 和 1.
         有的时候,我们还需要知道外边的人要告诉我们什么,我们也是通过读取它的0和1 来理解——当然这个的具体操作稍微有点复杂,暂且不说,你只要知道,它了解外部世界也是通过判断0和1状态就可以了。
         它们通常是可以做到一起的,就是说,既可以向外部世界展现自己的状态,也可以读取外部世界的状态,就好像公司的前台小姐,外边有人来访了,她会打电话告诉我们,而我们请来人在那里会见,也是通过前台小姐。
          现在我们给它起一个名字,叫 通用输出输入口,英文就是input/output,也就是I/O。你以后会经常看到这个名词,现在你知道其实它是什么了吧?

         我们回顾一下,这一段看起来会很像你在教科书上看到的内容:它是由 运算器 存储器 输入输出系统 (还有我没有说的 控制器 )组成的一个完成数字逻辑处理运算的 数字系统。
         我换个白菜点的说法: 运算器就是我们的小九九,存储器就是我们写在纸上的那些 "留0进2“,输入 就是我们听到别人要我们运算 34 * 45 ,输出就是我们在纸上算出来的......1530.(算错了请原谅我。),所谓的”数字逻辑处理运算”,在这里,其实就是  笔算 两位乘法。

         一个完整的单片机系统还有很多别的东西,比如说 控制器。但是我觉得这些东西没有必要每个人都 全部齐刷刷说一遍,我只想把最基本的概念说清楚,让没有接触过的人知道怎么回事就好了——至于懂的人,就算我不说他也知道,或者不知道也不影响他的编程过程。

        单片机能做什么?
        其实我觉得我已经说完了。
        不过我还是再说得明白一点。
        我们现在已经知道单片机能够靠 传输 3 6 5这三个数字来控制红绿灯交替闪烁了。
        可是,这怎么看都不像我们的电脑啊——是啊,警察叔叔以前没事干自己举着三色旗子当交通灯使,现在也没见他搬着个大电脑往马路上站......
        红绿灯只是一个极其简单的例子,通过它,我想告诉你的是,数字通过编码,是可以表达信息的!
        比如说,3 表示 红灯亮.......

        那我们一天到晚网上追美剧又是咋回事呢?首先我要告诉你的是,我们看到的显示器,其实是一个一个很密很密的点(玩过早期图形编程软件,比如 LOGO语言 的童鞋一定见过一格一格难看到死不偿命那种图像.......)。它们有三种基本色,也就是三原色,通过三种颜色的不同搭配(这事情比红绿灯复杂了,但是基本是一样的。)
        这个过程很复杂,我也是一知半解,听着若有不对,敬请指教!
        
        我们知道任何颜色可以由三原色搭配而成,期间,各种颜色的比例搭配不同,可以配出千差万别的颜色。所以,我们把三种基本色的强烈程度从大到小,依次编号,编多少呢?那就0到255吧?为啥呢?以后告诉你。
        然后每个点我们就可以根据不同的着色要求搭配以不同的数值,比如说 255:255:255......(这个颜色一定很难看!)
        
        所以,如果我们要用单片机显示一幅画面,我们只要把画面上等分成N个格子,每个格子涂以不一样的颜色,是不是就可以显示出图像啊?那怎么着以不一样的颜色呢?嘿嘿,那就给它三个数不就结了。比如难看到死的 255:255:255......

        不仅图像如此,声音也是这样——但是基于我五音不全,没什么音乐细胞,这么专业的问题就交给度娘吧......

        一句话:因为我们给数据以特定的编码方式,并以特定的方式解码,因此我们得以存储,再现物理世界的信息,包括文字(著名的ASCII码,让度娘告诉你它是什么),图像,声音......

         由此,我们的单片机可以存储,再现,乃至控制和改变这个真实的物理世界,现在知道它有多厉害了吧.......

强者为尊,弱者,死无葬身之地

回复评论 (2)

哥们儿,你看看  匠人手记   张俊的  你风格和他有点像
点赞  2011-10-7 22:48

回复 沙发 sjl2001 的帖子

耶,我教程看得少......
强者为尊,弱者,死无葬身之地
点赞  2011-10-7 23:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复