单片机是大专学校电类专业的一门普通课,有些学校甚至把它列为选修课,在众多课程中,没有显出它有多么重要。为什么要学习它呢?电类专业有很多专业课,这些专业课非常重要,是各个专业存在的必需课程,学完这些课程可以使学习者成为大学者的继承人,市场对学者继承人的需求太少,大量需要的是产品的研发者,研发产品是需要干实际事情的,需要研发工具,而单片机课程就是学习研发工具使用的课程。学习单片机课程与理论课程不一样,不能只做作业,而是要实际使用单片机,下面就如何准备学习单片机的条件和学习步骤简述一些不成熟的想法。 1. 硬件 (1)编程硬件 所谓编程就是把单片机运行的程序烧写到单片机的存储器中,目前大部分单片机都是使用FLASH存储器,这些存储器的写入次数一般是1000次左右,也有1万次或是10万次的。编程也叫程序下载或是烧写。 (2)实时仿真硬件 实时仿真是使用PC机,用软件监视在单片机中实际运行的程序,也就是当程序下载到单片机中后,实时运行程序,在程序中设置断点,通过仿真接口,监视和控制程序的运行。这个过程其实就是调试程序(实际验证程序的正确性)。 编程器和仿真器可以是一个装置,也可以是各自独立的装置。 2. 软件 单片机开发需要单片机开发软件的支持,软件分为: (1)编程软件 该软件支持编程器工作,帮助编程器把程序写入单片机。 (2)实时仿真软件 该软件可以在仿真接口的支持下,调试单片机程序。 (3)虚拟仿真 该类软件支持在没有单片机硬件情况下的单片机程序调试。 (4)支持C语言 所有的单片机开发软件都支持汇编语言编程,但是目前人们更喜欢C语言编程,主要是C语言功能强大,可以缩短开发时间。 目前就有支持上述功能的软件,例如51系列的Keil 51、PIC系列的MPLAB,MSP430系列的IAR等。 3. 学习单片机的手段 按照经济实力,学习单片机的手段分为如下几种: (1)买本单片机书,仔细研究。 (2)网上下载一个具有仿真功能的单片机开发软件(最好支持C语言),在计算机上对单片机虚拟仿真。 (3)购编程器(支持编程器的下载软件有编程器商提供)和实验板(又称为演示板或是目标板),网上下载开发软件。在开发软件的支持下对单片机虚拟仿真,确认单片机程序正确后,用编程器将程序下载到单片机中,观察程序的实际运行。 (4)购仿真接口和实验板,在网上下载单片机开发软件(支持编程、虚拟仿真、实时仿真和C语言),在虚拟仿真完成后,将程序下载到单片机中实时仿真。 对于个人学习单片机,具有上述(4)的条件已经是很好了。 4. 学习单片机过程中的困扰 单片机种类很多,各个公司提供的单片机、开发硬件和软件功能、价格都不一样,对于初学单片机有很多困惑。 (1)单片机问题 目前单片机很多,学哪一个,其实学哪一个都可以,单片机虽然型号不同,但是芯片内部的资源种类都差不多,而且这些资源的使用方法也大同小异,可以说学会一种,其他种将融会贯通。究竟学哪一种,主要看具备的条件。 51系列是老型号,书多、资料多、软件开放和硬件支持还可以,特别是Atmel公司的产品AT89系列,很多人就是学习这款单片机发家致富的。 AVR90系列,该系列也是Atmel公司的产品,指令少,学起来容易,芯片种类多,适合各种场合和需要,根据有关资料显示,目前该单片机芯片的使用数量很大,大有超过51系列芯片数量的趋势。 PIC系列,该系列是Microchip公司的产品,种类多,芯片抗干扰能力强,使用的人很多,特别是PIC 16F877芯片,由于适合学校使用,在该公司大学计划的支持下,免费赠送开发器和实验板,因而使用该芯片的人群大增,也是可以和51系列单片机抗衡的单片机。 MSP430系列,是TI公司的产品,最近几年才被杭州利尔达公司引进,是16位、超低功耗单片机,特别适合手持设备等低功耗设备的开发,实际上,由于该系列引脚多,内部资源多(具有硬件乘法器),所以在很多产品开发上都有用武之地,据有关人士预测,该系列是最具前途的单片机。 还有很多单片机型号,由于不太了解,不敢妄加评论,但可以想象,一定是不错的单片机,否则就不会在竞争激烈的市场中存在。 (2)开发软件问题 不同种类的单片机都配套有相应的开发软件,这些软件很多都是专业软件公司开发的。 51系列,目前开发软件是Keil 51,该软件支持C语言,但是在网上下载的版本,只支持2K程序。 PIC系列的开发软件是MPLAB,在HI-TECH公司C语言支持软件PICC的支持下,该软件很好用,但是PICC是需要激活密码才能运行的。 MSP430系列的开发软件是IAR,该软件有开放1个月的全功能限期版本和C语言4k支持版本,可见该系列的软件开放是最好的。 哪种单片机的开发软件开放的好,就会引起人们对该单片机的兴趣,单片机提供商也深谙此道,所以网上经常可以找到更开放版本的软件。 (3)仿真接口 仿真接口,又称为仿真器,老式单片机由于没有FLASH存储器,所以仿真编程难度很大,新型号的单片机,几乎都有FLASH存储器的芯片,这样的芯片都支持在电路编程(在系统编程),所谓在电路编程,就是用3~5根线就可以将程序写入单片机,并能够将单片机内的程序运行情况、寄存器内容等信息传输到PC机上。这种编程方法需要在单片机与PC机之间安装一个仿真接口,该接口一般需要购买。 AT89S51、PIC16F877就是具有这种能力的单片机,但是,对于初学者来说,支持该单片机编程和仿真的接口需要购买,而且简单接口在仿真时会占用芯片资源,给单片机系统开发带来不便。 MSP430系列单片机也是具有这种能力的单片机,但是该单片机采用标准JTAG接口,JTAG是一种标准(IEEE 1149.1),是为测试芯片而制定的,目的是用TCK、TDI、TDO和TMS四个信号来测试芯片的内部状态,为什么测试芯片还需要专门制定标准呢?这是因为复杂芯片引脚太多,特别是还有些芯片一旦安装到多层电路板上就无法看到引脚,更不要说测量了,这时就可以在计算机软件的支持下通过JTAG接口,对芯片进行测量,如果各个公司的芯片都符合该标准,就可以将各个芯片的JTAG口串联起来(外国人称为菊花链),无论在电路板上有多少芯片,只需4个引脚,就可以测量电路板上的所有芯片。既然可以测量芯片,当然可以将数据写入芯片,在可编程逻辑器件的数据下载中也使用JTAG接口,出现了在系统编程(ISP)的概念,也就是,即使可编程逻辑器件安装到了系统中,也可以对其内部电路进行修改,JTAG技术和EDA软件的进步,使可编程逻辑器件的开发与使用得到快速发展。单片机也是在向这个方向努力,前几年出现在市场上的C8051单片机就是使用JTAG接口的单片机,不幸的是该单片机JTAG接口装置和开发软件很贵,阻碍人们使用该单片机。 使用JTAG口,必须在计算机与芯片JTAG接口之间连接一个接口装置,该装置随芯片而异,实际上JTAG接口装置都是很简单的(就是一个缓冲器),但是由于各个公司的早期产品不完全支持JTAG接口,而JTAG接口装置又必须兼容这些早期产品,就使得JTAG接口装置变的复杂了。 目前,TI公司的MSP430系列芯片就是支持JTAG接口的单片机,该公司称该JTAG接口装置为FET,通过FET就可以对该系列单片机编程与仿真。特别是该接口非常简单,适合自制,网上很多该单片机爱好者就是使用自制的FET开发该系列的单片机,非常成功。 (4)实验板 实验板是学习单片机所必须的,实验板又称为演示板、目标板,其实就是具有单片机的电路板,实验板可以购买,各个单片机的供应商都提供多种多样的实验板。实验板也可以根据需要自制,自制实验板是具有挑战的,需要学会画电路板图。 (5)选择单片机类型 软件:支持C语言,免费下载。 仿真器:用于仿真编程的JTAG接口装置可以自制(很重要,可以节省开支)。 单片机:型号多、功能强、资源多、功耗低,程序存储器容量大。 资料:书多、资料多,特别是网上资料多。 满足上述条件的单片机只有MSP430系列。新型单片机都具有很多资源,资源多才能节省外部芯片,一般说来,一个系统的芯片数量不能超过5片,否则这个系统就是个复杂的系统。说起51系列,开始人们学习31芯片,必须要有外部程序存储器才能工作,学习单片机先学系统扩展,直到现在,很多51的书还在讲31芯片,讲如何组成最小单片机系统,这样的最小系统早就没人用了。至于AT89S51系列,虽然带有程序存储器,但是由于I/O少,内部资源少,实际中很少能够组成单片系统。51系列之所以书多,是由于几年前,只有51,现在不同了,很多新型单片机,功能强,资源多,I/O多,可以组成真正的单片系统,这些单片机的开发软件支持好,开发仿真器便宜,极低功耗,低电源电压符合电子器件的发展方向,同样是学习单片机,应该学习新的,好的。至于说到复杂,51系列的100多条指令是不是更复杂一些,MSP430的指令数不到51系列指令数的一半是不是简单一些。学单片机,就学新的,喜新厌旧才是正确的,(有些岁数大的人,由于惰性,不学新机型,千万不要学他们,学校的老师,就经常是这种情况,所以学校教51的老师多,近一两年情况正在变),例如5V系统是个很成熟的系统,但是人们为啥要用3.3V,2.5V,和1.8V呢?这就因为只有低电源电压才能降低功耗,才能使集成度提高,目前很多5V器件已经不生产了,不用新器件就没法设计产品。学习可以循序渐进,先学引脚的第一功能,再学第二、第三功能,不断努力,就会融会贯通,其实学习51系列也是这样学的。 低价位的仿真器,开放的软件,芯片I/O多,芯片内部资源多,大的程序存储器和RAM,在系统可编程,这些应该是学习单片机之前考虑的问题。MSP430基本满足这些条件。 学习哪个机型,本来就是仁者见仁,智者见智的事,还是要自己拿主意。5. 如何学习单片机 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上松香水,在松香水未干的情况下,将芯片放在焊盘上,注意芯片第一引脚的位置,并使引脚与焊盘对齐,将擦干净的电烙铁(不能有任何焊锡)接触引脚,引脚只要一热,焊盘上的焊锡就自动将引脚焊住了,千万注意电烙铁上不能有焊锡,焊接时最好配备一个放大镜。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IAR软件 到利尔达公司或TI公司的网站下载IAR软件,并安装到计算机上。 (5)调试FET和实验板 将FET的一端与PC机的并行口相连,另一端连接实验板的JTAG接口,上电后,检查FET芯片、实验板上的单片机芯片是否发热(用手模),PC机是否工作正常后,运行IAR软件,找个C语言或汇编语言的例子,编译成功后下载到单片机中,如果能够下载,说明一切成功。否则还需要仔细研究,一般情况下,只要电路板上的电路正确,元件参数准确,没有不成功的。 (6)分步骤学习单片机 学习使用单片机就是理解单片机硬件结构,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。 第一步:数字I/O的使用 使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。 第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(plc)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。 定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。 中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。 以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。 第四步:与PC机进行RS232通信 单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。,USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。 USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊! 第五步:学会A/D转换 MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。 使用A/D转换功能的简单的例子是设计一个电压表。 第六步:学会PCI、I2C接口和液晶显示器接口 这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。 第七步:学会比较、捕捉、PWM功能 这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。 如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。 第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计 学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。 到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了。顺便说一句,MSP430单片机的技术支持是非常好的,负责任的工程师大虾会在关键时候,挺身而出,使你化险为夷。 6. 达到理想境界 达到理想境界是困难的,在知识爆炸的年代里,即使天天学习,也很难跟上科学技术的发展,更何况每天还要为找工作、提职称、写论文、搞科研经费、政治学习、买房、购车、柴、米、油、盐、酱、醋、茶等忙活,那么,还需要学习吗?回答是肯定的,人就是为兴趣而活,爱好单片机才能学会单片机,不为什么目的,只为学习的乐趣,当然要是兴趣也能赚钱,则是一举两得。 学会使用单片机其实是学会了使用工具,充其量是个补锅、锔碗的匠人。如果再要进步,就需要在信号识别、控制理论、数字信号处理理论、通信理论等方面下工夫,只有这样,才能开发出高水平、高附加值、具有知识产权的产品,达到熟练运用降龙十八掌,打遍天下无敌手的至高境界。 单片机是DSP、嵌入式操作系统等高级硬件产品开发的基础。如果想要进一步的发展,必须学会单片机的开发。 如果在学会单片机的基础之上,学会CPLD和FPGA的开发以及硬件描述语言,就可以在高速产品的开发方面获得一杯羹。 |