【转载】单片机入门经验

2019-04-15 15:27发布

      随着岁月的增长,我学的越来越深,实验也越做越多,我对单片机的了解也越来越深刻。这样心中就会有越来越多的想法。         2004年,12月份,一次偶然的机会,触发了我一年的奋斗的开始。         某一天,我在本地一个准二手市场看到一个废旧的电话计费器,是广州自动化研究所的产品。上面有26个LED数码管。我的直觉告诉我,那个机器里面有我需要的东西。最后我以十几元买下的那个计费器(当时的想法是一个数码管要1元,即使只有数码管可用那也有26个,合算!)。回到宿舍,我马上通电试了一下,发现数码管是可以显示的,接着就马上把它拆了。打开机壳,我看到的是一个灰尘掩盖的电路板和一个变压器(后来发现是97年左右的产品,所以电路板比较旧)。这时,我紧张的呼吸都屏息了。我用刮彩票似的心情用手擦去一个很像C52的芯片上的灰尘。当那几个字出现在我眼前时,我是何等的激动!--INTEL 80C31BH @1982!几乎所有教科书上的样板芯片!然后,激动一波随一波,我依次发现了8279D、MC146818、MT8880、74hc373……。从此,这块电路板开始霸占了我长达一年的时间。         2005年,我把一年的精力都放在研究那块电路板上。从读懂板上各个芯片的数据手册,到电路原理图的绘制,然后到电路原理的分析,到编写程序控制板上各个芯片。这是一个漫长的过程,在这个过程中,我学习并实践了单片机总线的原理,数码管的驱动等,并从汇编语言过渡到C51。在抄板的时候,由于是双层板,特别不好画,我要在阳光下或日光灯下才能完成(足够的亮度才能从下面透过板看到上面的布线),这个板我抄了足足一个星期。后来,我根据那块电路板的特点,决心把它改造成一个电话报警器。由此,我开始了一轮关于电话报警方面的研究。因为一开始学的是汇编,我就用汇编语言编写了一个基本的驱动程序,这个驱动程序实现了对板上各个芯片的基本功能的测试,还好,所有的芯片都正常!后来有用程序量大,所以就转而学习KEIL C51。学习了C51后我就将所有的驱动用C51改写,当成功过渡后,我体会到了C的强大功能,于是就有给板子做个可视化的菜单操作的LCD系统的想法。这样,我就开始了液晶驱动程序的编写,字库原理,菜单原理的学习,第一次接触FLASH芯片……         2005年11月,我参加了学校的电子设计大赛。我一个人一组,而其他都是3个人以上,然后我同时有2个作品进入决赛。我的作品一个是基于isd4003的智能语音系统,一个是电话报警器。事实上基于isd4003的智能语音系统的产生是因为我在做电话报警器时要用到语音芯片我才去研究它的。我这人喜欢玩技术,于是就把ISD4003这个芯片的功能发挥的淋漓尽致。我那个语言系统功能真的强大,有液晶显示界面,功能类似于MP3,以致评委老师说:这么强大的功能往哪用?而我的电话报警器则是花了我大部分心血。这个电话报警器上,我模仿手机构建了一个强大的菜单。这是我的认为最得意的地方。里面有200多个菜单项对各个参数进行设置。就一个菜单,花了我不知多少时间,其中包括C语言的学习,字库的构建,菜单算法的实现,板上芯片的IO地址的重新分配等。另外,我把人机交互界面做的尽可能的友好,主要是仿照文曲星的模式来做的,例如实现弹跳对话框等。因为要实现智能化,例如要判断输入的数字是否合法,前面的数字对后面的数字有何影响等,看起来简介单单的一个修改时间日期的功能也就变得复杂了。所以,软件上花了大量的时间。最后,我的两个作品都只得了三等奖。为了这次大赛,我足足花了3个多月的时间,在那3个多月里,我没有周末,也没有黄金周。每天都是下课后匆匆忙忙回宿舍,有时在兴头上时直接就旷课。那时不知有多少次忘记了吃午饭,不知有多少个夜晚是想着程序、电路板入睡,不知有多少个清晨是想到程序、电路然后从床上蹦起来。现在回想起来,那真是一段为单片机痴迷和疯狂的日子,那是一段激情燃烧的岁月。         在我参加比赛的前几天,我的同学跟我说:“你现在这么疯狂,在比赛结束后你就会感到莫名的空虚!这是我的参加“高校杯”的经验!”一开始我不相信,但后来的事实证明他的话是对的。比赛是在晚上进行的,比赛完后,当我躺在床上时,一种莫名奇妙的空虚突袭而来,几乎使我感到惊恐,那时我感到好像要崩溃了,以致我都不敢去想那方面的事情。至于为什么会有这种共同的现象,到现在我都还不清楚其中的缘由。         在比赛完后,正值期末考试和春节,我暂停了3个月时间。         2006年春节回来,我又重新开始了新的学习。并下决心要把那个报警器改造为一个家居监控器。到现在,改造工作仍然在进行。         期间,我又学习了单片机操作系统SMORT RTOS51。         到现在,我即将毕业了,我的努力还在继续……         现在我把我的能力描述如下:         1、对MCS51系列单片机架构有较清晰的认识       2、c51语言编程水平有一定的深度,对KEIL软件有深入的了解,懂得KEIL在编译方面的特 {MOD}。       3、从小就抓电烙铁,有很好的焊接水平,动手能力出 {MOD}       4、学习了单片机操作系统       5、学习并实践了单片机串行主从多机通信,IIC通信,spi通信协议,菜单编制,液晶显示技术,led显示屏技术,单片机字库原理,单片机usb数据传输,基于2262/2272的遥控器,单片机总线技术,逻辑加密ic卡的读写等等,(凡是有条件实践 的我都努力去做)       6、懂得PROTEL DXP/99的使用。       7、有相当的求知欲,有志于在嵌入式方面发展。       8、有VB编程的基础   补充1:小时候跟电的故事         读幼儿园的时候和小孩子一齐玩,看到邻居家的电线断了一根,因为我那时知道他的电是从哪到哪的,于是我就逞强跟我的同伴们说我敢摸那根电线,我拿起那根通往邻居家的而不是从电源方向来的就用手去摸,结果我一下子失去了控制能力并且知觉变得模糊,整个人像被一个东西牵引着一样东倒西歪,后来还掉进水沟里。那时手不知为什么会紧紧抓住电线不放。后来是大人救了我。从此,我对电有一种怕的感觉。后来我才知道我被电的原因:虽然我摸的不是电源那端,但由于断的这根是零线,火线没断,然后邻居家至少有一个灯的开关是打开的!然后,从小学2年级玩电动机,把他装在泡沫底,再用铁皮剪个螺旋桨,装上舵,就成了电动船了。四年级的时候,我的姐姐买了把电烙铁给我,就开始了焊接的历史。到初中,我都不知道电阻电容的作用。到了大学,我才用电脑,以前一直以为电脑就一个显示器,根本不知道有主机这回事。   补充2:我压缩学习成本的方法         大家都搞过硬件,都知道在学习过程中,付出的成本是比较大的,例如买实验板,买芯片,买电子元件。就我来说,在开始学单片机时我平均每个星期都要花70多元在上面。还好,我有稳定的家教收入以支持我的这一兴趣和爱好。现在,在我的宿舍,我的电子零件能装几箱,那些电路板堆成一个小堆。别看我那么多电子类的东东,其实有一半以上是二手的。买二手的零件或电路板是我压缩学习成本的最有用的方法!         江门有条街是专门卖二手货品的,那里的东西很杂,有些是垃圾,但运气好的话就会碰上好的东西。到现在为止,我觉得在我学习中产生重大影响的有如下几件东西:一台电话计费器(2004年买的),4台电子支付密码器,一台超市收银机。其中那台电话计费器是我学习单片机的最大助手,这在前面已经讲述。然后是电子支付密码器,这个东西是银行用的,但到底怎么用我也不知道,同样的,我根据PCB手工将电路图画出来,然后分析原理后就进行修改。因为那个电子支付密码器是手持设备,单节电池供电,上面带有4×4键盘,SSD1815液晶显示器,然后板载有29LE010,外扩32K RAM,实时时钟芯片DS1302,所以我就把它改装成类似于PDA的东东,在上面构建贪吃蛇游戏,构建菜单,构建万年历,构建电子书等,还同时学了VB,写上位机软件,以用PC进行资料下载。就学这个东东就花了我3个月的时间。不过,就是这个电子支付密码器给我提供了一个平台,让我知道如何进行手持设备的设计例如1.5V升压到3V,如何选用低压芯片,如何设计单键开关机电路。顺便指出,这个电子支付密码器是深圳一家大公司生产的,质量不错,所以改装起来容易。另外一个是超市的刷卡机。这部机器给我带来的好处是让我拆到一个质量一流的液晶显示器。我以前也买过128×64点阵的,但质量远不如它好,可惜的是那个液晶不自带负压驱动,所以我必须自己做过负压,于是又对照的原配的电路板做了一个。在这部机上拆到很多有用的芯片,最有用的就是上面的防雷电路,一流!后来我把它的防雷电路移植到我的电话报警器上,我好不得意。这里再说一下我的那个电话报警器。一开始真的是想做报警用,我还为此设计了2个从机,一个播放语音信息&采集防区信号,另外一个是继电器模块,负责家电的控制。为了设计的报警器的功能符合市场的要求,我还走遍了江门城区大部分卖监控器材的店铺,去了解他们的产品信息,向他们索要宣传彩页等。后来终于在11月份有了雏形并参加了比赛。在这个过程中,我还尝试使用GSM通信,于是又玩了西门子的手机(3518i)一个月,学习了手机的AT指令集。         尽量找二手的有用的电路来分析改装是我学习单片机的主要方法。实实在在的,我的2年时间就是在不停地拆旧电路然后查找资料分析原理最后是改装并总结别人的经验。我觉得这样可以省下很多银子并学到很多有用的知识,毕竟那些都是成熟的产品,技术也应该可靠。         写到这里,我突然想起我1年前买到的ISD4004实验电路板。那个二手市场可以说是我看着她成长的,因为从她的成形到现在的比较繁荣,我都是几乎每个星期去一次。有一次到一个档,我看到有一堆的电路裸板,上面只标有元件的形状但没有型号,突然间,我天才般发现有块电路板很可能是用于ISD4004的,于是就1块钱买了2块。回去一查ISD4004的数据手册和对比电路板,我发现这个电路板居然是数据手册上给出的典型驱动电路。当时的兴奋真的难以形容。后来我从那个电路板上学到一个知识:ISD4004的数据手册说,为了保证音质,最好数字电路的地&模拟电路的地分开并在离电源不远处汇合。结果N个月以后我才发现我的那个电路板严格遵守了这一建议!从此,我对电磁干扰书上说的数字地&模拟地的分开有了直接的认识。         最后,我突然想起我当初学单片机时最大的梦想:做一个智能机器人。一开始我是冲着机器人&工控类的应用而来,但现在我接受了消费类电子。   补充3:入门时的一些自制装备         在我初学时,用的单片机是C51系列,需要用到烧录器,因为没钱买,我就参照网上的例子做了一个,网上有很多类似功能的,我用的是聂宗强老师的,这个烧录器使我入门时想尽办法做出来的,它的成功给了我很强的信心,也为我后来学习和实践创造了条件。再后来,我改用S51/52系列的芯片,用下载线下载程序,相当方便。而现在,我就用SST的芯片,用串口下载程序。至今,我都没买烧录器。另外,我的仿真器也是根据网上的资料做的,功能一般,但足够我用了。现在我都建议我的师弟们用SST的芯片或ATMEL的S51系列的芯片入门。         现在觉得时间都不够用,很多东西想学,例如cpld,arm等,也想玩射频卡,单片机控制网卡等。         我做了2年的家教,赚了8000多块,但大多数钱都用到单片机身上了。买电路板,买芯片,买零件,买书...除了生活费以外,我从不向家里要钱。