随着单片机技术、计算机技术的发展,学习单片机的门槛正变得越来越低,越来越多的电子爱好者加入学习、使用单片机的行列。目前,所有针对电子爱好者的期刊、报纸无一不把单片机作为一个重头戏,每期都有大量文章;本网站的单片机教材,已被下载十余万次,爱好者学习单片机的热情也可见一斑;网络上各种廉价开发工具也是层出不穷。然而随着学习不断深入,一个问题却开始逐渐显现:很多人反映“我学习不少知识,书看了很多,实验也做了不少,按说实践经验也不少,可为什么我总不敢接项目呢,到底要学到什么时候才能真正的实战呢?”。
这样的苦衷是那些“正规军”体会不到,或者说是体会并不深刻的,但是作为一个自学者,作者却完全能理解,因为当初自己也是这么非常艰难地一步一步走过来的。回想走过的路,除了自己不断努力外,一些偶然因素也起了不小的作用,如果没有这些偶然因素的存在,可能就中途退出了。
怎样才能减少一个人成长过程中偶然因素的作用,帮助尽可能多的爱好者再跨上一步,从学习者转变为开发者呢?还是让我们来分析一下开发者究竟需要什么样的条件吧!除了要熟悉必要的单片机知识以外,还需要对所开发对象的了解,知道自己要做的是什么东西,由于爱好者本身就工作于生产第一线,开始时也不可能去接自己不熟悉的活来干,因此,对于专业开发者来说比较困难的问题在这里并不突出;需要对市场的熟悉,知道所需要用的器件可以在什么地方可以买到,这一点通过多跑市场,当然也并不难做到;当然还有其他的一些条件,仔细分析都是可以做到的,但作为一个开发者至少还需要一样东西:信心,包括自己的信心和别人对你的信心,信心不能从学习得到,做项目不是考试,你能把单片机书上的题全做对也没用,把所有的单片机书都倒背如流也没用。唯一的方法就是:做,而且成功。不管是自己的信心还是别人对你的信心,就像是储蓄罐里的钱,每一次成功都是向里加钱,而每一次失败都是从里面取钱。于是爱好者就面临着一个两难的选择:当储蓄罐还是零的时候,做,不一定能成功,万一做砸了,就透支了,不做,永远也不能增加。
如何来解决这个问题?作为过来人,我们能不能为爱好者找到一条途径,让他们一定成功,不会失败呢?至少第一次不要失败!这是一个非常美好的愿望,可惜答案却是残酷的:我们做不到!可是,真的就一点办法也没有了吗?就只能听之任之吗?我认为,虽然我们不能保证每一个学习者都能一定成功,但的确可以做一些事,增加成功的概率。
从技术的角度来看,单片机开发无非分成软件、硬件两部分,如果设法解决掉其中的一部分,留下的另一部分当然就容易了。从一些广告中不难发现端倪,有一些厂商在仿真机、编程器之后力推开发板,其目的就是要让开发者在开发过程中尽量少做硬件的工作,甚至不需要做硬件开发工作。这些板通常力求全面,功能很多,设计者意图很明确:我把所有的功能都做上,你要用哪块就用哪块吧,价格贵点也没关系,反正做个项目也不再乎多那几个钱的。不能说这种想法不对,但是对初学者来说并不适宜,很多人并不富裕,花个大价钱却只用到整个板的几分之一甚至十几分之一的功能,怎么都觉得心痛!与成熟的开发者不同,很多爱好者的第一个项目根本赚不到钱,甚至是自己贴钱在做。另外还有很重要的一点,如此强大功能的板子,目标性反而变得不明确,什么地方都可以用,从另一个角度来说也是什么地方也不能用。就像一个小孩子,你给他一万块钱可能还不如给他一块钱更有价值。
那么,究竟什么是简单的,可行的呢?
我们认为,工业控制是大有可为的领域之一。去各种各样的工业现场看一看,几乎没有什么地方看不到工业自动化控制的设备。在这些设备中,往往大量应用PLC,从编程的角度来看,这些PLC所要完成的功能非常简单,如果用单片机来实现其功能,那是轻而易举的。如果一定要做一个明确的说明的话,可以这么说:可能只要几十个字节的程序量就能完成那些PLC所要完成的功能。如果你了解这台机器的工作流程或者你就是这样一台机器的操作者,又略懂一些单片机,那么这样的程序完全可以写出来。可是,那里没有用到单片机,而是用的PLC,为什么呢?关键在于可靠性!工业现场的苛刻要求,不要说是初学者,就是富有经验的开发者,往往也觉得头痛。一台设备数十万或更贵,设计者当然不愿意承担风险去用单片机控制板,而是宁愿先用贵一些的PLC。但PLC毕竟是昂贵的,如果有把握用单片机控制板来替代,肯定会有市场,关键在于你要有把握。可是把握从何而来?
单片机工业控制板就是为这样的应用而度身定做的。作者长期以来一直在做着工业控制方式的工作,在工作中我们发现,工业现场很难发现有国产单片机设备的踪影,尤其是介入控制部分的,几乎都是国外的产品一统天下。我们在做东西的过程中,也是酸甜苦辣各种滋味都尝到,摸爬滚打,满身伤痕,经过一段时间的摸索,逐渐掌握了一些规律,在解决工业现场干扰严重、单片机系统工作不可靠的问题上有了一些经验,所做的一些产品、系统都能可靠地运行于各种工业应用现场。我们认为,要能够做好工控产品,关键是对控制对象的理解,指望有什么技术可以一劳永逸解决所有问题是不现实的,也是开发者不成熟的标志。举例来说,如果你设计一台测重仪器,那么你事先一定要知道这台仪器的测量范围是多少,测量精度有多高,连续测量的速度有什么要求等等,如果在做仪器之前的想法是:范围越大越好,精度越高越好,速度越快越好。那么可以说你这台仪器一定做不成功!除了你拿它来评奖有用之外,不会有实用价值,更不会有商业价值。这一点并不难理解,同样,工业品的抗干扰处理也是如此,如果你说:抗干扰能力越强越好,什么样的干扰都能抗最好。那意味着你对所要控制的对象,即将面对的干扰源认识还不足,你很难做好项目,或者要为此付出极大的代价。但是,要对所遇到的干扰源有充分的认识,谈何容易!这个东西看不到摸不着,很难抓住,至于各种报刊、杂志甚至专业书籍上的说法,也都言之不详,泛泛而谈,未涉及到深入的原因,所建议采取的措施往往难以有效实施。举例来说,很多书上要求电源一定要好,但怎么个好法呢?都不详说,或者是要求采用所谓的净化电源供电,根本不现实。一台仪器总共才能卖到200~300元,却要为它配个净化电源,头重脚轻了。又如,印板设计很重要,一定要设计好,可是究竟如何才算好,却不再多谈,只是罗列一些注意事项,当这些注意事项不能完全被满足时,究竟按什么要求取舍,不得而知。当然,能否看得懂这些设计原则还和各人的基础知识有关,和各人的经历有关。
在我们的工作中,我们掌握了一些规律,希望能帮助爱好者进入这一领域,为此,我们借助“平台”这一概念,用我们掌握的知识,为大家搭建一个小小的平台,一个硬件平台,一个硬件抗干扰能力过关的平台。借助于这个平台,爱好者可以充分发挥你的聪明才智,将它应用到你的工作中去,为你的工作服务。和其他同类品相比,该平台主要有这样的一些特点:
1.定位准确应用目标锁定在工业控制,需要的人就去用,不需要的人不必为此花钱,便于爱好者选择。
2.经过实践检验不仅所采用的是经过实践检验的成熟技术,而且所面向的是经实践检验的有前途的行业,这一点很重要;
3.开发简单所做的就是开关量控制,不涉及模拟量,不用到复杂的测量、显示等技术,只提供一个显示模块作为选用件,为使用者限制了应用范围。开关量控制的编程相对比较简单,但是其应用范围却极广,如果能把这一块做好,就能找到发挥自己能力的舞台。
我们认为,单片机用于工业设备控制的条件已成熟,具体有这样的一些表现:
1.单片机开发工具日益成熟
目前,手提电脑的价格已日渐平民化,二手手提电脑的价格更低,因此,将手提电脑带到工业现场已不再是奢望。优秀的单片机开发软件如Keil的出现使得“软件仿真+写片验证”成为一种重要的开发方式。
2.单片机的新特性也为其工业现场应用创造了条件
目前,单片机的品种不断增加,新的单片机加入了很多新特性,如内部RAM、FlashRom的增加等,为高级语言的普遍使用创造了条件;几乎都有ISP(在线编程)的功能,便于采用“软件仿真+写片验证”的开发方式,一条下载线即可解决问题;采用SST系列单片机更可实现在板仿真功能。
3.一线工人素质不断提高
很多一线工人有中职、中专、大专甚至本科学历,计算机的操作不成问题,有一些在学校中就学过一至二门的高级语言,甚至就学过C语言,因此,在掌握单片机的初步知识后,学习C语言编程不成为障碍。
4.实时操作系统的普及也使得单片机开发更容易
近年来,实时操作系统(RTOS)逐渐普及,加之单片机硬件价格的下降,使用操作系统编程不再是梦想。由于操作系统由计算机专家编写,并经市场验证,因此,
其性能是完全可以得到保证的,借助于操作系统编程,可使程序更易写,并能得到更高的可靠性。以下举一个例子,看一看使用操作系统编程是如何的方便。
例如:某电路P1口接有8个LED,要求P1.0所接LED每秒亮、灭各1次,P1.1所接LED每秒亮、灭5次。
用Keil所带的Rtx51Tiny操作系统编程,非常简单,源程序如下:
#include<rtx51tny.h>//使用rtx51必须加上该头文件
#include"reg52.h"
sbitP1_0=P1^0;
sbitP1_1=P1^1;
//以上第一部份,变量定义
job0()_task_0{
os_create_task(1);/*创建任务1*/
os_create_task(2);/*创建任务2*/
os_delete_task(0);/*删除任务0*/
}
job1()_task_1{//任务1
while(1){
P1_0=!P1_0;
os_wait&nb