本文共 4847 字,大约阅读时间需要 16 分钟。
这是我的自学经历,希望对初学者有帮助。 前些天翻出了学单片机以来买元件和书籍的单据。因为我是打算在计算机硬件方面花1万元左右,所以保留了大部分的收据,以便统计金额。到目前为止大概用了3千多元,包括买元件、书籍和上网费。没有计算交通费,也不折算投入的时间精力。 有必要说说我学习单片机前的知识基础。 我中学在学校用过286苹果机和IBM 386电脑,学习DOS和Basic语言。我一直想学计算机方面的专业的,但可能是因为打篮球,搞得自己的数学物理很烂。广东是算标准分的,我的数学和物理高考分数一个是584,一个是596,按照正态分布,我属于中等偏上一点点,相当的烂,估计广东那一年有百分之四十多的人比我数学物理成绩好。最后我学了药学,本来以为不用学数学物理,结果却是和工科一样,要学高等数学、线性代数、数理统计,还有大学物理。就这样我有了学单片机的基础! 我高等数学每次都是补考及格的;至于大学物理,学了没多久,做实验的时候被老师警告我这样肯定考试不能及格。不过还好,物理总算是没有补考,第一学期是六十多分过的。第二学期上课的时候,那个老师打击我们说,六十多分过的都是不及格提分提上去的,不知道是不是针对我说的,这次我考了七十多。我倒不恼那个老师,自己不行,怨不得别人说。学大学物理对我弄明白一些电子的东西还是有帮助的。数理统计别人都考八、九十分,我只考了可怜的七十多。我的线性代数考了七十五,还不算太差。大学二年级学计算机基础,学的是DOS和TrueBasic语言。Dos这个东西别看着古老,搞电脑安装、维修,以及学习Linux的时候还是很有用的。大学我学得最好的就是英语,第三学期考CET4,第四学期考CET6,都顺利通过了。 到了大学三年级,和下铺合伙买了一台电脑。基本上我们是平均使用的,不过我同学拿来打游戏,我拿来学习各种软件。VB编程、VBA编程、C语言都是那时候开始学的。文字处理软件、图片处理软件也学;甚至学过AutoCad和3DMax,不过没有学会。我们的机子不断安装不同的游戏、不同的软件,加上没有正版杀毒软件,所以平均每个月都重新装一次Win98。后来装双系统学Linux,root身份操作Linux比Win还要容易崩溃。慢慢的在对付电脑故障中学会了安装维护电脑。 毕业后自己买了电脑,学了很多东西,虽然学的不深。象Win32汇编、Delphi、Visual C++、Java语言都学了。还学了Linux下PHP+Apache+MySQL混合编译,配置服务器之类的,学得很杂。计算机组成原理、计算机系统结构、数据库原理、软件工程概论、计算机图形学、数据结构、微型计算机接口之类的书也粗略的看过一下。 学单片机前用Delphi写了个软件通过串口控制液相色谱泵启动、停止、改变流速等。2003/6/7 DP-51S 经过一段时间在互联网上的资料收集和分析,我购买了一台下载仿真实验仪,随机附送了一份教材和一张资料光盘。在随后的一年多时间,对这台机器的使用、制作原理等的学习研究,经历了有浅至深的过程。其间有两次我都想退掉这台仪器,因为不明白怎么利用这台仪器和附带的资料。开始我甚至不知道这台仪器有下载编程的功能,也不知道有可以下载编程的51单片机。读书百遍,其意自现,为了不浪费我的血汗钱,我还是硬着头皮把教材啃了无数遍,最终啃出了些味道来。2003/7/19 吸锡器2003/7/22 万用表 锡丝2003/8/14 AT90S8515-8PC《电子技术基础》《电子技术技能训练》《电子元器件的选用与检测》《AVR高速嵌入式单片机原理与应用》 在网上看贴子,搜索到Guido Socher写的《AVR单片机GCC编程》,觉得下载编程挺好,省了买编程器的钱。于是买了这些东西,另外拆了一台坏掉的显示器上的电子元件。刚开始连VCC,GND是什么都不懂的我最后用万用板制作了一个Linux系统下用的下载编程电路。为此我写了篇《Linux下AT90S8515单片机GCC编程点灯实验纪实》贴到网上了。后来在网上找到资料发现,Widows下AVR的编程环境比Linux的简单多了。2003/8/21 P89C51RD2BN 当明白了下载编程是怎么回事的时候,我就买了这个芯片并做了个下载编程电路。2003/10/15 RESISTOR 1/4W2003/10/20 SMALL STEPPOR《电动机的单片机控制》《机电一体化入门》 买了个小步进电机,用ULN2803放大功率进行了它的单极二相驱动编程。参考了上面两本书以及《AVR高速嵌入式单片机原理与应用》的程序,以及一些网上的资料。不过我到现在还是对电机的控制不熟悉,还需要继续学习。2003/10/20 MAX202 AD7705 AD780《智能仪器与数据采集系统中的新器件及其应用》买这些元件是为了做一个数据采集器。第一块AD7705可能被我烧了,模拟部分不工作,后来重新买了一片就做成功了。估计是没有考虑到要数字电路先通电的问题。数据采集的汇编代码修改自俄罗斯的论坛上(因为我看不懂的文字与软键盘俄文字母一致)的一片贴子,估计也是个转贴,因为注释都是英文的。2004/3/6 89C51 89C20512004/3/18 89C51 看了一片国外网站的文章,动手自己做了一个并行编程器。写了篇《89C5x单片机编程器制作》贴到网上。现在看来,还是买性价比高的商用编程器省事。《Protel99使用培训教程》《电子世界》(2002合订本) 某个周末,经过太平洋电脑城前面,有书店在买打折书,我买了这两本书。因为舍不得买台激光打印机,我只是在protel画出来,再用油性笔照着画到铜板上,然后再腐蚀,制作起来非常浪费时间。《电子世界》(2002合订本)有很多好的文章,包括Protel 的使用的一些文章、《单片机实用技术讲座》(共11讲)、《自己动手做51系列单片机编程器》、《单片机89C51指令表》、《业余制作高质量PCB的两种新方法》等。2004/3/23 P89LPC931FDH PDIUSBD12《PDIUSBD12 USB固件编程与驱动开发》 将原来数据采集器的RS232串口通讯换成了USB通讯,另外试用了一下P89LPC931FDH。TSSOP28的接脚不能直接用油性笔画,于是我把一片都画了颜色,再把芯片用透明胶固定上去,然后把针装到自动铅笔上,沿着芯片的接脚刮掉油性笔涂的颜料,拿起芯片,再用油性笔和针画出TSSOP转DIP28的图,最后用三氯化铁腐蚀。这样低效率的方法是很耗时间的。最好有激光打印机打印Protel做出来的PCB,然后做光印板或者热转印。我想,把protel的电路图转成AutoCad的格式,然后拿到可以出工程图的打印店打印到硫酸纸上,应该是比较好的办法。2004/3/23 STEPPER AND DRIVER 买了一个大的电机以及它的驱动器,只要给驱动器接上大于24V、1A的直流,然后通过单片机给驱动器一定频率的脉冲,接到驱动器的电机就会转起来了。因为买不到便宜的24V直流电源,我就自己动手做,参考了国外网站上电源制作的电路,用了一个220V交流转24V的变压器,4个1N4001做的电桥,一个35V、1000uF的电容。这样的电源肯定是波纹极大的,不过用在那个驱动器是可以了。另外,因为24V变压器转出来的电压没有24V,我把一个9V的电池和我做的直流电源串联起来,居然也可以工作,真的是无知所以无畏,虽然我也感觉到那样很危险。 从3月到7月,我用了不少时间控制电机。另外买了片AD7714,做出来一个24位精度、USB通讯接口的数据采集卡。USB通讯我参考了《PDIUSBD12 USB固件编程与驱动开发》,不得不说这本书很多都是写的不具体的。后来写出来的代码主要是利用了Philips公司网站上提供的资料,下载这些资料需要在Philips公司网站注册,不过是免费的。由于我用的SPI接口代码是来自一片贴子的汇编代码,而Philips公司提供的USB固件的代码是C语言的,所以我只有用混合编程,将汇编代码部分写成几个函数提供给C语言调用。AD7714和AD7705相比,娇贵程度有过之而无不及,我又搞坏了一片,尽管看了n遍数据手册(datasheet)、应用指南(application note)和AD7714测试板的说明书(Evaluation Board for Signal Conditioning ADC,EVAL-AD7714-5EB),可能是我的电子基础实在太差了吧。后来换了一片,参考了JAMES COOK UNIVERSITY ,SCHOOL OF ENGINEERING,Electrical Engineering专业的一个学生Matthew James Brodie的本科论文WIRELESS TEMPERATURE CONTROL NETWORK,上面有原理图、PCB以及样机照片。这样综合参考了许多资料,我才做出来了24位精度、USB通讯接口的数据采集卡的电路。驱动程序是用Driverstudio生成的,另外它还产生了应用程序的代码。我就是配置一下Driverstudio的设置,然后改了一下驱动程序的源代码以及在生成的应用程序代码上添加了窗体显示数值的代码。将来如果要做产品还是需要再好好完善的。2004/4/14 微型电钻2004/4/22 DB-9针、孔接口 DIP20插座 微型电钻拿来钻孔和切割塑料还是蛮好用。 2004年1月份考了硕士研究生,被录取了,专业和电子、单片机什么的一点关系都没有。9月份入学后,半年时间里,我基本没有碰过单片机。2005/3/31 P89C51RA2BN2005/4/15 P89C51RA2BN 但是朋友让我做个小东西,于是重新开始搞单片机。这个东西很简单,就是通过RS232串口获得指令然后控制亮灯。这样的实验电路在我的下载仿真实验仪上就可以调试出来,试验成功后重新做了块板子。 2005/5/12 接收、发射模块2005/5/16 HC00,02,04,373,573, LS002005/5/23 无码315发射,3310接收,3400接收2005/5/23 TOP2004 89C522005/5/25 NRF4012005/5/28 78L05 有个项目想做无线通讯,结果用了nrf401的模块也没有做出来。浪费了我大量的时间。其间还同时试着做mon51仿真机的电路。自己做的电路不能工作。mon51的资料和代码都是keil上的,把代码写到一片单片机上替换我下载仿真实验仪的仿真芯片,是可以单步调试的,但是却不能全速执行。2005/6/9 LED2005/6/21 排阻 按钮 晶振2005/6/21 CAT24WC642005/6/24 TG12232EL2005/7/12 CAT24WC2562005/7/29 12232B 16022005/8/26 12232A-04 由于无线通讯不能完成,只好用了个替代的离线方案:用lcd显示,eeprom存储数据。为了配合外壳,换了几片lcd,花了我不少钱。 总结学单片机的经历,我觉得语文是学习一切知识的基础;英语是扩大知识接收渠道的工具;数学和物理是理解自然科学知识的基础;不要相信做学问要专攻一门,现代科学需要很复杂的知识背景,各学科之间是相辅相成、协同发展的;只要你真正努力学习过,考试成绩差不能说明你不行,考试是很局限的东西:限定时间和地点、不能参考资料、不能借脑、考题基本上只有唯一的答案……,这与完成某个研究是完全不同的。 |
转载地址:http://lmjqj.baihongyu.com/