当前位置:编程学习 > wap >>

M8系统开发手记(2)

M8系统开发手记(2)
Wayne Huang
2011年1月2日
0  写在前面的话
继续上一篇的话题,我们这次介绍最小系统的硬件构建。话说,最近的有些事情让我还是比较感慨的。有时候,觉得那些崇高的职业或许已经并不崇高了。其实,一个职业的崇高与否并不在于这个职业所做的是什么,更在于从事这个职业的人是否将其视为崇高。如果,一群人丧失了从事相关职业的那种职业道德、职业信仰,那么即使所从事的事业是再崇高的,也和浑浑噩噩的过日子没有两样。我不知道那群人是怎么了,但作为我来说,如果别人将希望、信任都寄托在我身上的时候,我真不知我怎么能用冷漠去面对他们。又或许,他们的冷漠,是对这个大环境的无声叹息。

1  M8最小系统的建立
前面内容我想对于很多有一定硬件基础的人来说,就是一长段漂亮的废话。就好像半夜坐地铁的时候,整节车厢里没几个人,此时突然某人需要释放一下肠道内的秽气,接着就听到一声悠长、响亮且类似小号低鸣的声音,临到最后,还荡气回肠得转了个弯,随着这段小插曲的结束,一股奇怪的味道便慢慢扩散开来。不过我想我的文章应该没有那么不羁吧。那么接下来,让我们言归正传,开始我们构建M8最小系统的奇妙旅程。

1.1  M8最小系统介绍与分析
最小系统是指能够让单片机正常运行的最基本系统的构建,当然这里是只硬件系统。如果你曾经接触过AT89S52之类的单片机,就应该知道51的最小系统涉及的元件还是很多的。但是,M8相比51来说,最小系统就简单很多了。最小系统是很多更复杂更大系统的基础,我们之后的很多内容将基于这样的最小系统而扩展出来的。所以,如果你对最小系统有一定的了解,相信对你今后构建更复杂的系统会有一定的帮助。

一般情况下,单片机的最小系统有几个部分组成。提供时钟脉冲的时钟震荡电路、提供复位信号的复位电路以及提供电源的电源电路。有这三个部分,基本就能让单片机正常的运行起来了,虽然这样的情况下并做不了什么实质性的事情。但是,这是任何复杂电路中都会包含的公共部分。

对于我们伟大的M8来说,以上这三种电路的构成可以说是相当容易的。不过我这里所说的是最最小系统,也就是说,这是一个让M8正常运行的最简单的电路。或许你会觉得我所说的会不会有些太罗嗦了。但是,相信你深入之后会发现,其实这并不能算是很罗嗦。因为严格的说,M8并没有最小系统的说法,这里我只是沿用了51的思路罢了。如果你曾经使用过AT89S52这类单片机,那相信你会对于晶振起振这件事比较敏感,因为有时候搞得不好会出现不起振而实验失败的情况。但是,M8就不太可能出现这种情况,即使你像我一样用的是多孔实验板。因为,M8的最最小系统只有3个外围元件。

1.1.1  M8最小系统之电源
一般来说,电子系统都应该有一个电源作为其运行的动力。当然啦,有时候这种电源或许并不太明显,比如矿石收音机就是一个比较典型的例子。不过,这已经超出了本文涉及的范围了。相信,对于初学者来说,很多时候会忽视电源的重要性,但是一个稳定的电源将是整个系统的关键。

如果你的电学基础还停留在中学物理课上,或许会把电源和"干电池"等同,但是要知道,电池本身是有内阻的,因此在实际运用中,电压并不是很稳定。而且,M8主要的工作电压是5V,这样很难用电池的串并联达到合适的电压。所以,我们所说的一般是稳压电源,一个好的稳压电源会让我们成功的概率高很多。

电源本生就可以看成一个复杂的系统。所以,如果你自己有能力制作电源的话可以做一个5V的稳压电源,比如用变压器转换一下220V的电压,然后通过一个全桥。不过,我个人还是比较推荐用现成的稳压电源,毕竟我们是做软件的,任何时候都拥有"重用原则"的觉悟,"不再造轮子"的口号不是放在嘴上的。最简单的获取5V电源的方式是你的电脑,因为USB端口的电源引脚是5V的,而且就算没有识别出USB设备,端口的供电还是正常提供的,只是电流方面有一些限制,建议不要超过200mA。另外,很多手机充电器用的适配器也是5V的,具体的你可以看一下适配器上的参数,一般上面会标的很清楚,比如我NOKIA的充电器用的就是5V的电源。当然,如果你那边有报废的电脑之类的东西,还可以把上面的电源拆下来加以利用,因为里面有5V供电的,其中黑线为地,红色为+5V。

我想作为和计算机打交道比较多的我们来说,用主机电源会比较可行吧,当然这话也不是说其他方案不好,就比如我用的就是手机充电器上的适配器,主要是感觉主机电源有些笨重。不过,采用主机电源的优点在于,主机的电源本身就是为高频数字电路设计的,因此在做实验的时候电源的稳定性能得到保证。而且,主机电源的供电电流也比较大,而且一般会有过流保护,所以也增加了实验的安全性。但是,主机电源由于本身是一个系统,所以并不会像其他电源那样,插上电就会供电。比较简单的办法是把电源上的那一困线中,找一根黑线,当然不是脸上的那根,然后再找一根绿线,之后把这两根线用导线连起来,这样电源就运行了,当然如果你细心点,可以用一个拨动开关替代那根导线。

到这里,我们已经有一个5V的电源了。但是,这只是我所说的最小系统外的电源。我这里所说的最小系统电源,是在其后面的。其实也很简单,就是一个开关和一个电解电容。开关么,我想就不用多介绍了,至于电解电容是并联在正负极之间的,其作用是利用电解的充放电来防止开关在断开和闭合时产生的过于急促的跳变,而且也能让输入电源更加稳定一点。我采用的是一个4u7的电解电容,用下来的效果比较好。

1.1.2  M8最小系统之复位
起初,神创神天地。地是空虚混沌,渊面黑暗;神的灵运行在水面上
-创世记1章1 ∼ 2节
对于刚上电的单片机来说,情况也与此相仿。因为,不可测的因素还是比较多的,所以,根据状态机的概念,系统的运行结果也会变得不可测。因此,一般单片机启动后需要通过复位操作让整个系统回归到一个初始状态,之后系统便开始有序的运行了。

复位电路就是为这个复位操作而设计的,在众多的单片机电路中,复位电路根据不同的情况会有很多中设计方法,简单的也有复杂的也有,但终归是在电路上电之后一段时间,给单片机一个复位信号。如果我没记错的话51最小系统的复位电路还是比较复杂的,需要有电容二极管什么。但是,我们这里讨论的是M8,很庆幸,M8内部自带有复位电路,我们所要做的就是再复位脚上加一个电阻然后再连到+5V上,以便把这个引脚拉高,就可以了。之后的一切就交给内部电路去解决。当然,如果你连这个电阻都想省略的话,也是可以的不过需要对M8进行一些小设置。这样,我们的最小系统几乎是在上电的同时,完成了复位操作。

这里想补充一点小常识,就是关于引脚的处理。一般情况下,引脚总是要和高点平或低电平相连的,因为这样能保证这个引脚处于可控的电平下,当然,也有些情况引脚是可以悬空的,也就是不接任何东西,这种情况下如果作为输入引脚,那引脚所处的状态是未知的。因此,对于复位等信号引脚,最好能将其电平设定在一个固定的电平上,当然这个电平要在保证不影响电路运行的情况,就好像M8虽然内部有复位电路,但还是要把复位脚拉高一样。

1.1.3  M8最小系统之振荡
话说,现在有些细心的朋友会有些困惑,或者会问我:"你会不会数数字?"。因为我刚才前面说了,M8的最小系统只有三个外围元件,前面我说的如果包括开关的话,已经有三个了。那如果算上振荡电路,那一定要超过三个外围元件的设定了。难道是笔者也振荡了一下?

但是,这里我要告诉你,三个元件的前提是不会被打破的。因为...。在说"因为"之前,我想说一下前面提到的复位电路,那个复位电路实际上就像我前面所说的那样是内置的。所以...。对,你没有猜错,你不用怀疑,M8内部也集成了一个RC振荡电路。我想,你现在会说:"不带你这么耍赖的。"但是,事实就是这样。

当然,内部有RC振荡并不代表不能接外置的。因为RC振荡电路的频率对温度比较敏感,所以很多时候并不精确。虽然说,M8能够手动校准,但温度这东西毕竟是会变化的,现在校准了并不代表以后也能正常工作。比如,你校准的时候是"夏天的海南岛",使用的时候是"冬天的东北三省",而且都是户外进行的。因此,如果对频率要求比较高的情况下,采用外部晶振是不二的选择。

另外一个选择外部晶振荡的原因,是由于内部RC振荡电路的最高频率是8MHz,而M8的最高额定工作频率是16MHz。当你需要使用高于8MHz的时钟频率工作的时候,也必须选择外部晶振电路。同时,M8内部的RC振荡电路是可以在多个振荡频率上选择的,默认情况下是1MHz,通过设置M8的参数,能选择1 ∼ 8MHz中的某个频率作为当前工作频率。

但作为这里的最小系统而言,我们采用默认的1MHz内部RC振荡就可以了,所以这里的振荡电路就一个元件也没有了。其实,这样的话也减少了构建最小系统失败的几率。毕竟,有时候振荡电路不起振,不能给单片机提供时钟信号的情况还是会发生的,而且振荡电路其实也算一个挺娇贵的电路,这点对玩过51的同学来说还是深有体会的吧。

1.2  M8最小系统的组装
在上面一节中,我们已经对M8最小系统的各主要部分做了一些简单的了解。但是,我想对于广大的同学们来说,动手实践一下才是王道,不然的话那我前面描写有关工具的章节,岂不是真要如同我本章一开始所描写的那样了么?所以,这一节我将把重点放在最小系统的搭建上。

作为实验用的话,虽然"面包板"比"洞洞板"更适合,但是前者的可靠性显然没有后者好。因为"面包板"的元件和导线是插上去的,这样有时候就会造成因为接触不良产生的问题,而且面包板的布线有些特殊,对于刚接触电路的同学可能会不太习惯。然而,"洞洞板"就比较好了,元件是焊接上去的,这就能保证不会因为实验板本身的问题造成接触不良,其次我建议各位使用的是单孔"洞洞板",这样的话,虽然使用起来

补充:移动开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,