Sunday, April 10, 2011

一个让人抓狂的小小操作

    因为使用VMware虚拟机,我的host设置是左手操作,于是我就习惯性的在虚拟机也进行这样的设置,开始还是使用得非常的惬意的,后面碰到了一个小小的操作差异,真的是让人抓狂了.
    在VMware7.0当中安装ubuntu,接下来需要与主机共享数据,安装了tools后,按照之前使用宿主机是xp,虚拟机是xp的习惯,只要拖动需要共享的数据进入就可以实现共享的.可是这个ubuntu非常奇怪,有一个滚动条出现了, 但是就是不能拷贝,怀疑是tools的问题,重装之,还是不行,在重新安装系统,也还是不行,没辙了,空了那么一段时间.
    偶然的机会,突然发现其实并不是上面的原因,真正的原因是我设置的左手模式,只要换回来右手模式,就是一切正常的了,看来开发人员也没有想到会有这么一个小bug.用户的使用模式真的是比较难捉摸.

Wednesday, March 30, 2011

51单片机继电器的使用(续)

     今天还是做了一个继电器的实验,是一个控制比较多的继电器实验,电路的搭建十分的简单。接下来就是软件的问题了。
    在编程的时候,由于单片机的ISP下载线我没有弄有接口,于是每一次的程序调试我都要忙碌半天,线接来接去的,挺浪费时间的。
    一开始以为是硬件问题,于是看看哪里有没有松动的地方或者是漏接线路的地方了,发现不是。接下来就开始怀疑是程序问题,这里弄的我很费脑子了,因为程序比较的大一点,下载的波特率我调到了最大,结果发现有若干次下载后发现跟自己的程序不同的,网上有说ISP现在线过长会影响以及其它电磁干扰。后来串口测试的时候,确实发现某位数据接受到的是不正确的,主要是我用了一根比较长的线,大概一米左右这样。网上说有1.5m都没有问题的,可问题是还有一些焊接质量等技术问题,我可是第一次焊接这个东西。
    撇开这个技术问题不管,我多下几次总有成功的吧,这里还要说一个意外,我用了一根6V输出的线作为STC的供电电源,在下载的时候就碰到ISP软件罢工的问题,也没有什么提示,就是软件一下子死掉了,我重装了系统也无济于事。可见电源要求还是挺高的,按照手册上的电路的话,一定是5V,最大电流负载不超过600ma。
    下载成功后断点分析,突然发现原来不是我的逻辑问题,而是时间问题,语句执行速度太快了,以至于我都没有看清就过去了。怪不得总是以为有问题。下次注意。
    北京时间晚上2点30分了,整了我大半天,累了,睡觉哦~~~

Monday, March 28, 2011

模拟电路 LM339电压比较器 使用

    上次做了一个继电器的实验,于是就在想象一般是在什么条件下才去触发这个继电器呢?于是就在网上到处闲逛,突然发现了有一个基尔霍夫效应,仔细一看才知道,原来是可以感应出线圈的电流值,这个应用范围就非常的广泛了,而且感应出来的电流值转换为电压以后就方便了,有专门的电压比较器,就是两个数比大小一样简单,输出一般为高点电平表示(1高电平0低电平)。这就够了。
    看到网上说了一些自制的电压比较器,对于我一个新手来说不是很实际,因为有些地方不是很明白,也暂时没有那么多的时间去自制一个玩,于是目标选择了专业傻瓜点的LM339电压比较器,这是一个带有两个独立比较器的IC,可以选择单电源通电还是双电源通电。
    这里我想要着重讲一下双电源通电,开始的时候看到接口不知道怎么接。以下是说明,双电源供电为正、负、GND两组电源,接地极对于正电源来说是负极,对于负电源来说则是正极,一般在LM339的正负电源电压是一致的,采用双电源可以有效的提高工作效率和稳定性,减少元件的数量,同时也降低了噪声。
    接通好了以后,发现其中一个波形是处于0以下的。那么应该如何转换成为TTL电平呢?经过了多方查找,可以知道最简单的就是采用钳位电路,也就是使用二极管来限制电压。
电路如图所示:
这里采用了一个稳压二极管,这个就是一个非常好的东西,最大的功能点就是稳压作用,稳压二极管的主要参数为稳压值和最大稳定电流,稳压值一般取方向击穿电压,所以在工作时应该反接,并且串入了电阻R,一来起到限流的作用,二来也是讲电源电流或者负载的电流变化转变成为电压值,通过电阻的电压变化来调整电流变化,起到稳压作用。
    比较器输出低电平的时候,而是正向导通的,因为低电平的时候在R的电动势是负的,而参考点的电动势是0,也就产生了电压差使得稳压管正向导通,U0取的也是整个稳压管的正向导通电压约为0.7V,图中也反映了这点,Ud不为0。而在输出高电平的时候是高阻态的,参考点为0,所以尽管有电动势,但是由于高阻的特性所以基本不导通。从而就换成为了单片机能够识别的TTL电平了。

Friday, March 25, 2011

51单片机控制继电器实验

    做这个实验真的是很头痛了,本来看着网上一大堆的资料应该挺简单的,可是我却卡住了,也许这个就是欠缺经验吧.

网上有很多详解的电路图,我使用的原始电路图是:
    继电器使用的是松乐SRD-06VDC-SL-C,详细资料在这里SRD -06VDC-SL-C datasheet,三极管采用的是PNP型,IO口低电平时有效,单片机采用VCC=5V供电,对地网络标号为GND,这里的意图是想通过单片机控制6V的继电器触发电灯亮起。当然这里也是省略了二极管保护电路、三极管限流电阻和负载的退耦电容,这些部分也是网上和很多的资料谈及的部分。

   这个电路乍看之下是没有问题的,实际上是不通的,按照PNP三极管的电流走向,是从集电极(E)进入,基极和集电极分两路,同时满足Ic=β*Ib,并且满足IO口的最大灌入电流就可以了,这里灯泡的正极接三级管的发射极,地线却接的是单片机的地,这就有点像两个电池A,B,用A的正极接负载后接到B的负极上去,这怎么会有回路呢?实在是一个低级的错误。不要想当然的理解控制电路的过程,我还傻不拉叽的检查PNP管,看是不是电压过了。
    以下是正解电路图:

    总结这个实验可以得到以下几点:
  1. 在遇到控制功率电器的时候,应该要详细的了解一些安全措施,比如接入二极管保护等,以防止用电器被击穿,更重要的是保护自己的人身安全,这点不论什么情况下都应该要努力确保的,安全第一。
  2. 在需要计算具体数值的时候,优先选择的是查找数据手册,其次是按照自己的经验估计,再次就是前往网上寻求。准确的数据能够让你让你事半功倍,而且还能够有效的降低排错的时间。
  3. 用数字万用表来判断三极管的极性,具体请查阅数字万用表测量三极管极性
    

Thursday, March 24, 2011

51单片机最小系统原理图

    在搭建最小系统之前,我们当然要先建立原理图咯,一般的来说需要根据具体的芯片进行搭配,例如我开始搭建电路的时候,参照网上这里,选择ATMEL公司的AT89S51系列单片机,按照步骤搭建好了,到了ISP下载部分,也是参照网上这里,自己制作ISP下载线,软件使用Easy ISP Pro.里面的元件配置也是按照上面说的配置的.效果如图:
面包板制作的51最小系统电路

自己焊接的并口ISP下载线

面包板制作的51最小系统电路全图


很可惜的是,我制作完成了,但是在电脑上测试连接的时候,却发现无法发现特征码,我检查电路是接对的了,因为没有基础,可能有其它的原因导致.网上查资料说AT89S51要求特别严格,线太长会产生干扰,于是根据这个思路,我重新焊接,效果如图:


51最小系统连接板(正面)
51最小系统连接板(反面)
这些我都直接焊接到了ISP上了,线够短的了.可是依旧检测不到特征码,不知道是不是自己的焊接问题了.这两次实验失败让我非常的失望,看网上说得都是非常的容易的,但是实际当中碰到的问题却让一个初学者不知所措,到底问题是出在哪里了?或许自己与单片机无缘了.
    可是我却不是那么容易服输的人,我于是选择了网上容易上手的中国货,STC系列芯片.为了以防万一,在网上宣传的两款USB转串口下载线当中,我买了基于PL2032芯片的USB转TTL设备, 按照STC官方手册上的电路图,自己开始搭建最小系统,本来以为很简单了.可是事实却仍然将我狠狠的敲打了一遍,我折腾了好久那个驱动,死活装不上去,换了虚拟机以后,能够装上去,也能够识别了,接通后,电路正常了,因为STC出厂时的程序工作了,是一个来回循环的跑马灯,说明晶振电路工作正常(一般其中一个是2V左右,另一个是2V多一点,两个的电压差在0.5V以内).可是就是下载不进去,经过电压测量,ISP的Rxd口一直在5V,猜测是USB触角工作不正常,于是用串口程序测试,将RXD口短路,在串口程序上是可以接受到数据FF或者是00的,那么这个说明USB工作正常,最后判定驱动不工作,否则不可能总是输出5V电压嘛.经过改进,效果如图:
STC最小系统正面

STC最小系统反面

STC最小系统ISP正面 

STC最小系统ISP反面 
这次下载终于成功了.高兴了半天.总结一下这次电路搭建的经验:
  1. 选对元件。因为我住在一个偏僻的小村子里面,这里没有芯片卖,所以只能是网上购物,也不知道买什么型号,只能是瞎猜实验那个芯片成功的话是很浪费的。所以初学者尽量选择比较容易成功下载的,不见得芯片要多NB,这样才不至于打击自己的信心。
  2. 基本电路理论和电子测量要掌握。比如电压电流计算和测量等,要是不懂就等着看烟火吧,吓人哦。
  3. 焊接要熟练。当然这个是因人而异的,我就是没有什么基础,焊接电路的时候非常的不好看,元件的布局也没有什么经验,看上面交叉的线就可以知道。熟练后可以确保没有虚焊,这个是比较难搞的,特别是在焦头烂额的时候。
购买清单:请参考STC官方芯片资料。

关于51单片机基础知识

一、单片机的开发流程:

  1. 硬件电路的搭建。
  2. 编写控制程序。
  3. 将“程序”下载到电路板当中去。
  4. 运行系统,检测、调试运行结果。
二、学习单片机的基本条件:
    在网上看到一个例子,我将它引用过来。以一个计算机系统为例,我们想要使用计算机,首先必须配置计算机的各种组件(CPU、主板、内存、硬盘、声卡、显卡、显示器等);各种必需的组件齐套后, 要将各组件进行正确的组装(这就相当于单片机硬件电路的搭建)。计算机组装完成后,需要安装操作系统和相关工作软件(相当于把各种程序装入到单片机中)。 这样我们才能够利用计算机来完成各种工作(相当于组成了一个完整的单片机系统)。
    单片机是一门实践性很强的技术,它牵涉到软件和硬件的学习.因此,要想熟练的掌握单片机的设计工作,需要软硬件的基础知识,具体说来一般包括模拟电子电路基础,数字电路基础,软件设计基础,计算机体系理论等,这些基础是必须的,扩展开来还要包括行业知识等,无论是程序设计还是电路设计,都需要经过大量的实践练习才能够准确理解和熟练掌握。
    1、软件条件:
       单片机软件的开发流程是:
  • 编写控制程序
  • 对程序进行编译、排错、仿真、调试
  • 生成可以“装”到单片机里面的程序文件(一般是二进制或十六进制文件)
       单片机的软件开发用到以下软件:
  • 程序编写、编译软件:用来编写、编译单片机的控制程序
  • 仿真软件:用来调试单片机程序是否完成了既定功能
  • 程序烧录软件:将程序烧录到单片机中。
    2、硬件条件:
       程序编写调试完成后,需要在硬件系统中运行,才能够组成一个完整的单片机系统。一般的必备硬件有:
       编程器:用来将程序烧录到单片机中的工具;
       单片机学习板:用来演示和检验单片机系统是否实现了既定功能。
三、单片机的编程语言和软件的选择
    单片机的编程语言有多种,从最早的机器语言、汇编语言,到现在广被采纳的C语言,还有一些高级语言,例如C++,BASIC等也可以用来开发单片机程序。但是目前最流行的是C语言。
    目前用得最多的51单片机开发软件是keil c51;后面的学习中,将以c语言来编写相关单片机程序,采用的开发软件是keil c51 uv4.0。
    单片机学习中的硬件部分一直是困扰很多人的一个问题,因为不管是编程器还是单片机学习板,都是需要花费相当的金钱前来购买的,而目前市场上销售的单片机学习板种类繁多,价格也差别很大。实在是不好挑选。
    这是一个令人头疼的问题,但是现在好了,现在推出了一种新的软件,这种软件可以比较真实的模拟单片机的软硬件性能,这样我们就可以通过在软件上搭建单片机 系统电路,然后将程序“装”入单片机,然后运行该软件,就可以看到我们的单片机系统是否能够正常工作。这个软件就是:proteus。
    注意:单片机的硬件电路是千差万别的,尤其是在制作电路板的时候,牵涉到元器件的布局、走线、抗干扰等多种环境问题,所以单单依靠一个仿真软件是很难真实模拟单片机系统的工作的.
    所以在这里的学习,只是作为一种辅助开发的手段,我们可以先将我们的电路和程序在该软件上进行验证,验证通过后在制作电路板进行实际验证。

Wednesday, March 23, 2011

我的新blog诞生了

这是我的第一个新blog。
    为什么不选择在百度、新浪等国内主流博客提供商建立呢?我的回答是基于种种原因,最主要的我觉得还是一个信仰的问题,众所周知的是blogger的优点,一来是技术上最好的,这个应该没有什么争论。二来是言论上也是比较的自由的,本身就是被GFW XX掉的,在一个被XX掉的地方当然是比较自由的。
    基于以上的两点,综合本人的使用情况,选择在这里安家落户,没有人来访问也不要紧,只是记录一下自己的生活轨迹,以供回味只用,不会像某撮人在博客上动来动去那么浮躁,只为生存。
    ok,start!