第一章单片机入门知识概述1.1 单片机的发展历程单片机的应用在后PC时代得到了前所未有的发展,但对处理器的综合性能要求也越来越高。
综观单片机的发展,以应用需求为目标,市场越来越细化,充分突出以“单片”解决问题,而不像多年前以MCS51/96等处理器为中心,外扩各种接口构成各种应用系统。
单片机系统作为嵌入式系统的一部分,主要集中在中、低端应用领域(嵌入式高端应用主要由DSP、ARM、MIPS等高性能处理器构成),在这些应用中,目前也出现了一些新的需求,主要体现在以下几个方面:(1)以电池供电的应用越来越多,而且由于产品体积的限制,很多是用钮扣电池供电,要求系统功耗尽可能低,如手持式仪表、水表、玩具等。
(2)随着应用的复杂,对处理器的功能和性能要求不断提高。
既要外设丰富、功能灵活,又要有一定的运算能力,能做一些实时算法,而不仅仅做一些简单的控制。
(3)产品更新速度快,开发时间短,希望开发工具简单、廉价、功能完善。
特别是仿真工具要有延续性,能适应多种MCU,以免重复投资,增加开发费用。
(4)产品性能稳定,可靠性高,既能加密保护,又能方便升级。
1. 单片机技术的发展特点自单片机出现至今,单片机技术已走过了近20年的发展路程。
纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。
(1)单片机寿命长这里所说的长寿命,一方面指用单片机开发的产品可以稳定可靠地工作十年、二十年,另一方面是指与微处理器相比的长寿命。
随着半导体技术的飞速发展,MPU更新换代的速度越来越快,以386、486、586为代表的MPU,很短的时间内就被淘汰出局,而传统的单片机如68HC05、8051等年龄已有20岁以上,产量仍是上升的。
这一方面是由于其对相应应用领域的适应性,另一方面是由于以该类CPU为核心,集成以更多I/O功能模块的新单片机系列层出不穷。
可以预见,一些成功上市的相对年轻的CPU核心,也会随着I/O功能模块的不断丰富,有着相当长的生存周期。
新的CPU类型的加盟,使单片机队伍不断壮大,给用户带来了更多的选择余地。
(2)8位、16位、32位单片机共同发展这是当前单片机技术发展的另一动向。
长期以来,单片机技术的发展是以8位机为主的。
随着移动通讯、网络技术、多媒体技术等高科技产品进入家庭,32位单片机应用得到了长足发展。
以Motorola 68K为CPU的32位单片机97年的销售量达8千万枚。
过去认为由于8位单片机功能越来越强,32位机越来越便宜,使16位单片机生存空间有限,而16位单片机的发展无论从品种和产量方面,近年来都有较大幅度的增长。
(3)单片机速度越来越快MPU发展中表现出来的速度越来越快是以时钟频率越来越高为标志的。
而单片机则有所不同,为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是单片机技术发展之追求。
一些8051单片机兼容厂商改善了单片机的内部时序,在不提高时钟频率的条件下,使运算速度提高了很多,Motorola单片机则使用了琐相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率。
68HC08单片机使用4.9M外部振荡器而内部时钟达32M,而M68K系列32位单片机使用32K的外部振荡器频率内部时钟可达16MHz以上。
(4)低电压与低功耗自80年代中期以来,NMOS工艺单片机逐渐被CMOS工艺代替,功耗得以大幅度下降,随着超大规模集成电路技术由3μm工艺发展到1.5、1.2、0.8、0.5、0.35 近而实现0.2μm 工艺,全静态设计使时钟频率从直流到数十兆任选,都使功耗不断下降。
Motorola 最近推出任选的M.CORE可在1.8V电压下以50M/48MIPS全速工作,功率约为20mW。
几乎所有的单片机都有Wait、Stop等省电运行方式。
允许使用的电源电压范围也越来越宽。
一般单片机都能在3到6V范围内工作,对电池供电的单片机不再需要对电源采取稳压措施。
低电压供电的单片机电源下限已由2.7V降至2.2V、1.8V。
0.9V供电的单片机已经问世。
(5)低噪声与高可靠性技术为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取了一些新的技术措施。
如美国国家半导体NS的COP8单片机内部增加了抗EMI电路,增强了“看门狗”的性能。
Motorola 也推出了低噪声的LN系列单片机。
为适应这种需求许多单片机都采用了在片编程技术(In System Programming)。
未编程的OTP芯片可采用裸片Bonding技术或表面贴技术,先焊在印刷板上,然后通过单片机上引出的编程线、串行数据、时钟线等对单片机编程。
解决了批量写OTP 芯片时容易出现的芯片与写入器接触不好的问题。
使OTP的裸片得以广泛使用,降低了产品的成本。
编程线与I/O线共用,不增加单片机的额外引脚。
而一些生产厂商推出的单片机不再有掩膜型,全部为有ISP功能的OTP。
MTP向OTP挑战MTP是可多次编程的意思。
一些单片机厂商以MTP的性能、OTP的价位推出他们的单片机,如ATMEL A VR单片机,片内采用FLASH,可多次编程。
华邦公司生产的与8051兼容的单片机也采用了MTP性能,OTP的价位。
这些单片机都使用了ISP技术,等安装到印刷线路板上以后再下载程序。
8051类单片机最早由Intel公司推出的8051/31类单片机也是世界上用量最大的几种单片机之一。
由于Intel公司在嵌入式应用方面将重点放在186、386、奔腾等与PC类兼容的高档芯片的开发上,8051类单片机主要由Philips、三星、华邦等公司接产。
这些公司都在保持与8051单片机兼容的基础上改善了8051许多特性(如时序特性)。
提高了速度、降低了时钟频率,放宽了电源电压的动态范围,降低了产品价格。
1.2单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
6.在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。
如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。
如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。
在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
1.3 学习单片机的途径学习单片机的一个最好途径——在实践中领悟理论,用理论指导实践。
大部分概念都是到了实际动手做东西的时候才弄明白的。
而且在经历了迷惑之后再搞清楚,印象就特别深刻。
直到现在我对那些概念和接口都非常清晰。
通过汇编语言的学习可以对单片机底层结构和接口时序弄得很清楚。
在使用C语言开发的时候,优化代码和处理中断也就不会太费劲。
虽然现在绝大部分单片机开发都使用C语言,甚至有些公司还推出了图形化编程的工具,这样对于项目的开展从时间上快了很多,在管理上也规范了不少,但是从学习和想深入掌握单片机精髓的角度来说,还是需要熟练掌握汇编语言的使用。
只是精通单片机技术还不能很好的解决问题。
体会最深的是,单片机只有融合到各种应用领域中,才能展现它的最大活力。
然而单片机仅仅是一个工具而已,要做好单片机系统还需要各种应用领域的专业知识的支持。
例如,在“数控电流源”中,就需要搞清楚电流采集电路的工作原理,A/D转换后数据处理的方法,电路设计等知识,没有这些专业知识,就算单片机技术再厉害也不可能做好这个项目。
脱离应用背景的单片机开发,就像一个没有灵魂的躯体一样。
单片机学习的过程应该是一个循序渐进、不断学习、不断积累的过程,大致可以分为三个阶段。
第一阶段:掌握开发单片机的必备基础知识。
首先是熟练掌握单片机的基本原理,其实各家各门的单片机其基本结构和原理都差不多,特别是共有的知识需要好好理解和掌握。
例如,内核结构、内存分配、中断处理、定时计数、串行通信、端口复用等一些最基本的概念和原理。
除此之外,我们还需要具备模拟电子、数字电子、C语言程序开发知识以及原理图和PCB设计等一些技能。
在进行系统开发的时候,进行原理设计、PCB布板、程序编写、系统联调这些工作都是在所难免的。
第二阶段:在掌握好一款单片机原理和应用的基础上,开始学习其他各家单片机的独有技术,学不了那么多也要多了解了解。
同时尽可能多地掌握单片机的一些外围器件和常用电路,以备不时之需。