线上式实时控制计算机 单片机原理


线上式实时控制计算机 单片机原理

文章插图
单片机原理(线上式实时控制计算机)单片机原理是指一种线上式实时控制计算机的原理方式 。线上式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机(比如家用PC)的主要区别 。
【线上式实时控制计算机 单片机原理】单片机就是一个微型电脑,它是靠程式工作的,并且可以修改 。通过不同的程式实现不同的功能 。
基本介绍中文名:单片机原理
外文名:Principle of Singlechip
套用领域:工业自动化控制、家电、通信等
单片机元年:1971年
主要特点单片机到底是什幺呢?就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也有和电脑功能类似的模组,比如CPU,记忆体,并行汇流排,还有和硬碟作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元......用它来做一些控制电器一类不是很複杂的工作足矣了 。排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件 。单片机是靠程式工作的,并且可以修改 。通过不同的程式实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的 。一个不是很複杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬体来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程式可以实现高智慧型,高效率,以及高可靠性!由于单片机对成本是敏感的,所以目前占统治地位的软体还是最低级彙编语言(近几年,C语言也开始广泛被套用),它是除了二进制机器码以外最低级的语言了,既然这幺低级为什幺还要用呢?很多高级的语言已经达到了可视化编程的水平为什幺不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬碟那样的海量存储设备 。一个可视化高级语言编写的小程式里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬碟来讲没什幺,可是对于单片机来讲是不能接受的 。单片机在硬体资源方面的利用率必须很高才行,所以彙编虽然原始却还是在大量使用 。一样的道理,如果把巨型计算机上的作业系统和套用软体拿到家用PC上来运行,家用PC也是承受不了的 。目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其核心兼容MCS-51单片机 。单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),单片机晶片常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的晶片,而是把一个计算机系统集成到一个晶片上 。单片机由运算器,控制器,存储器,相当于一个微型的计算机(最小系统),和计算机相比,单片机只缺少了I/O设备 。概括的讲:一块晶片就成了一台计算机 。它的体积小、质量轻、价格便宜、为学习、套用和开发提供了便利条件 。同时,学习使用单片机是了解计算机原理与结构的最佳选择 。它最早是被用在工业控制领域 。由于单片机在工业控制领域的广泛套用,单片机由晶片内仅有CPU的专用处理器发展而来 。最早的设计理念是通过将大量外围设备和CPU集成在一个晶片中,使计算机系统更小,更容易集成进複杂的而对体积要求严格的控制设备当中 。INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的 。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列单片机系统 。因为简单可靠而性能不错获得了很大的好评 。儘管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到目前基于8031的单片机还在广泛的使用 。在很多方面单片机比专用处理器更适合套用于嵌入式系统,因此它得到了广泛的套用 。事实上单片机是世界上数量最多的处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳 。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机 。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及滑鼠等电脑配件中都配有1-2部单片机 。汽车上一般配备40多部单片机,複杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多 。单片机是指晶片本身,而单片机系统是为实现某一个控制套用需要由用户设计的,是一个围绕单片机晶片而组建的计算机套用系统,这是单片机套用系统 。单片机开发系统是指单片机开发调试的工具 。单片机自问世以来,性能不断提高和完善,其资源又能满足很多套用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,正在逐步取代现有的多片微机套用系统 。单片机自动完成赋予它的任务的过程,也就是单片机执行程式的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同 。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程式,程式需要预先存放在具有存储功能的部件——存储器中 。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行 。套用分类单片机作为计算机发展的一个重要分支领域,根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、汇流排型/非汇流排型及工控型/家电型 。通用专用型这是按单片机适用範围来区分的 。例如,80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路 。汇流排非汇流排型这是按单片机是否提供并行汇流排来区分的 。汇流排型单片机普遍设定有并行地址汇流排、 数据汇流排、控制汇流排,这些引脚用以扩展并行外围器件都可通过串列口与单片机连线,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展汇流排,大大减省封装成本和晶片体积,这类单片机称为非汇流排型单片机 。控制家电型这是按照单片机大致套用的领域进行区分的 。一般而言,工控型定址範围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高 。显然,上述分类并不是惟一的和严格的 。例如,80C51类单片机既是通用型又是汇流排型,还可以作工控用 。发展历史单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的 。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统 。基于这一系统的单片机系统直到现在还在广泛使用 。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的套用 。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高 。随着INTEL i960系列特别是后来的ARM系列的广泛套用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场 。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍 。目前,高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元 。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式作业系统被广泛套用在全系列的单片机上 。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux作业系统 。主要阶段早期阶段SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构 。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路 。在开创嵌入式系统独立发展道路上,Intel公司功不可没 。中期发展MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式套用时,对象系统要求的各种外围电路与接口电路,突显其对象的智慧型化控制能力 。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家 。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素 。在发展MCU方面,最着名的厂家当数Philips公司 。Philips公司以其在嵌入式套用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器 。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩 。当前趋势SoC嵌入式系统(System on Chip)式的独立发展之路,向MCU阶段发展的重要因素,就是寻求套用系统在晶片上的最大化解决,因此,专用单片机的发展自然形成了SoC化趋势 。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机套用系统设计会有较大的发展 。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片套用系统 。早期发展史1971年intel公司研製出世界上第一个4位的微处理器;Intel公司的霍夫研製成功世界上第一块4位微处理器晶片Intel 4004,标誌着第一代微处理器问世,微处理器和微机时代从此开始 。因发明微处理器,霍夫被英国《经济学家》杂誌列为“二战以来最有影响力的7位科学家”之一 。1971年11月,Intel推出MCS-4微型计算机系统(包括4001 ROM晶片、4002 RAM晶片、4003移位暂存器晶片和4004微处理器)其中4004(下图)包含2300个电晶体,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元 。1972年4月,霍夫等人开发出第一个8位微处理器Intel 8008 。由于8008採用的是P沟道MOS微处理器,因此仍属第一代微处理器 。1973年intel公司研製出8位的微处理器8080;1973年8月,霍夫等人研製出8位微处理器Intel 8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生 。主频2MHz的8080晶片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个电晶体,处理速度为0.64MIPS(Million Instructions Per Second ) 。1975年4月,MITS发布第一个通用型Altair 8800,售价375美元,带有1KB存储器 。这是世界上第一台微型计算机 。1976年intel公司研製出MCS-48系列8位的单片机,这也是单片机的问世 。Zilog公司于1976年开发的Z80微处理器,广泛用于微型计算机和工业自动控制设备 。当时,Zilog、Motorola和Intel在微处理器领域三足鼎立 。20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机 。MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展方面都有了很大的提高 。硬体特性1、主流单片机包括CPU、4KB容量的ROM、128 B容量的RAM、 2个16位定时/计数器、4个8位并行口、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP 。晶片2、系统结构简单,使用方便,实现模组化;3、单片机可靠性高,可工作到10^6 ~10^7小时无故障;4、处理功能强,速度快 。5、低电压,低功耗,便于生产携带型产品6、控制功能强7、环境适应能力强 。基本结构1.运算器运算器由运算部件——算术逻辑单元(Arithmetic & Logical Unit,简称ALU)、累加器和暂存器等几部分组成 。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据暂存器 。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器 。例如,两个数6和7相加,在相加之前,运算元6放在累加器中,7放在数据暂存器中,当执行加法指令时,ALU即把两个数相加并把结果13存入累加器,取代累加器原来的内容6 。运算器有两个功能:(1) 执行各种算术运算 。(2) 执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较 。运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决 。2.控制器控制器由程式计数器、指令暂存器、指令解码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作 。其主要功能有:(1) 从记忆体中取出一条指令,并指出下一条指令在记忆体中的位置 。(2) 对指令进行解码和测试,并产生相应的操作控制信号,以便于执行规定的动作 。(3) 指挥并控制CPU、记忆体和输入输出设备之间数据流动的方向 。微处理器内通过内部汇流排把ALU、计数器、暂存器和控制部分互联,并通过外部汇流排与外部的存储器、输入输出接口电路联接 。外部汇流排又称为系统汇流排,分为数据汇流排DB、地址汇流排AB和控制汇流排CB 。通过输入输出接口电路,实现与各种外围设备连线 。3.主要暂存器(1)累加器A 图1-2 单片机组成框图累加器A是微处理器中使用最频繁的暂存器 。在算术和逻辑运算时它有双功能:运算前,用于保存一个运算元;运算后,用于保存所得的和、差或逻辑运算结果 。(2)数据暂存器DR数据暂存器通过数据汇流排向存储器和输入/输出设备送(写)或取(读)数据的暂存单元 。它可以保存一条正在解码的指令,也可以保存正在送往存储器中存储的一个数据位元组等等 。(3)指令暂存器IR和指令解码器ID指令包括操作码和运算元 。指令暂存器是用来保存当前正在执行的一条指令 。当执行一条指令时,先把它从记忆体中取到数据暂存器中,然后再传送到指令暂存器 。当系统执行给定的指令时,必须对操作码进行解码,以确定所要求的操作,指令解码器就是负责这项工作的 。其中,指令暂存器中操作码栏位的输出就是指令解码器的输入 。(4)程式计数器PCPC用于确定下一条指令的地址,以保证程式能够连续地执行下去,因此通常又被称为指令地址计数器 。在程式开始执行前必须将程式的第一条指令的记忆体单元地址(即程式的首地址)送入PC,使它总是指向下一条要执行指令的地址 。(5)地址暂存器AR地址暂存器用于保存当前CPU所要访问的记忆体单元或I/O设备的地址 。由于记忆体与CPU之间存在着速度上的差异,所以必须使用地址暂存器来保持地址信息,直到记忆体读/写操作完成为止 。显然,当CPU向存储器存数据、CPU从记忆体取数据和CPU从记忆体读出指令时,都要用到地址暂存器和数据暂存器 。同样,如果把外围设备的地址作为记忆体地址单元来看的话,那幺当CPU和外围设备交换信息时,也需要用到地址暂存器和数据暂存器 。套用範围目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的蹤迹 。飞弹的导航装置,飞机上各种仪表的控制,计算机的网路通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智慧型IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机 。更不用说自动控制领域的机器人、智慧型仪表、医疗器械以及各种智慧型机械了 。因此,单片机的学习、开发与套用将造就一批计算机套用与智慧型化控制的科学家、工程师 。单片机广泛套用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智慧型化管理及过程控制等领域,大致可分如下几个範畴:智慧型仪器单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛套用于仪器仪表中,结合不同类型的感测器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量 。採用单片机控制使得仪器仪表数位化、智慧型化、微型化,且功能比起採用电子或数字电路更加强大 。例如精密的测量设备(电压表、功率计,示波器,各种分析仪) 。工业控制单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据採集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等套用控制系统 。例如工厂流水线的智慧型化管理,电梯智慧型化控制、各种报警系统,与计算机联网构成二级控制系统等 。家用电器现在的家用电器广泛採用了单片机控制,从电饭煲、洗衣机、电冰柜、空调机、彩电、其他音响视频器材、再到电子秤量设备和白色家电等 。网路和通信现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网路和通信设备间的套用提供了极好的物质条件,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的行动电话,集群移动通信,无线电对讲机等 。医用设备单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等 。模组化系统某些专用单片机设计用于实现特定功能,从而在各种电路中进行模组化套用,而不要求使用人员了解其内部结构 。如音乐集成单片机,看似简单的功能,微缩在纯电子晶片中(有别于磁带机的原理),就需要複杂的类似于计算机的原理 。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于音效卡) 。在大型电路中,这种模组化套用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换 。汽车电子单片机在汽车电子中的套用非常广泛,例如汽车中的发动机控制器,基于CAN汇流排的汽车发动机智慧型电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测等 。此外,单片机在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途 。学习方法基础理论基础理论知识包括模拟电路、数字电路和C语言知识 。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神 。在你学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础 。否则,你的单片机学习之路不仅会很艰难和漫长,还可能半途而废 。笔者始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢 。有些同学觉得单片机很难,越学越複杂,最后学不下去了 。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了 。单片机属于数字电路,其概念、术语、硬体结构和原理都源自数字电路,如果数字电路基础扎实,对複杂的单片机硬体结构和原理就能容易理解,就能轻鬆地迈开学习的第一步,自信心也会树立起来 。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心 。如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、暂存器、门电路、COMS电路、时序逻辑和时序图、进制转换等理论知识 。理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增 。模拟电路是电子技术最基础的学科,她让你知道什幺是电阻、电容、电感、二极体、三极体、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识 。一般是先学习模拟电路再去学习数字电路 。扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量 。单片机的学习离不开编程,在所有的程式设计中C语言运用的最为广泛 。C语言知识并不难,没有任何编程基础的人都可以学,在我看来,国中生、高中生、中专生、大学生都能学会 。当然,数学基础好、逻辑思维好的人学起来相对轻鬆一些 。C语言需要掌握的知识就那幺3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句 。别小看这10个语句,用他们组合形成的逻辑要多複杂有多複杂 。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了 。当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲 。当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里 。可以这幺说,扎实的电子技术基础和C语言基础能增强学习单片机信心,较快掌握单片机技术 。实验实践这是真正学习单片机的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感 。其中的酸甜苦辣只有学过的人深有体会 。思想上要有刻苦学习的决心,硬体上要有一套完整的学习开发工具,软体上要注重理论和实践相结合 。1.有刻苦学习的决心首先,明确学习目的 。先认真回答两个问题:我学单片机来做什幺?需要多长时间把它学会?这是你学单片机的动力 。没有动力,我想你坚持不了多久 。其次,端正学习心态 。单片机学习过程是枯燥乏味、孤独寂寞的过程 。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫 。再次,要多动脑勤动手 。单片机的学习具有很强的实践性,是一门很注重实际动手操作的技术学科 。不动手实践你是学不会单片机的 。最后,虚心交流 。在单片机学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间 。2.有一套完整的学习开发工具学习单片机是需要成本的 。必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程式代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本C语言教材 。电脑是用来编写和编译程式,并将程式代码下载到单片机上;开发板用来运行单片机程式,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试 。对于单片机初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查 。不要为了节约成本不用开发板而光用Protur软体仿真调试,这和纸上谈兵没什幺区别 。3. 要注重理论和实践相结合单片机C语言编程理论知识并不深奥,光看书不动手也能明白 。但在实际编程的时候就没那幺简单了 。一个程式的形成不仅需要有C语言知识,更多需要融入你个人的编程思路和算法 。编程思路和算法决定一个程式的优劣,是单片机编程的大问题,只有在实际动手编写的时候才会有深切的感悟 。一个程式能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理 。如果程式不正常则要反覆调试(检查、修改思路和算法),直到成功 。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废 。学习编写程式应该按照以下过程学习,效果会更好 。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程式,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程式,比较程式运行效果,领会其中的奥妙 。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想 。当然,刚开始,看别人的程式原始码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照 。只要能坚持下来,学习收穫会事半功倍 。在实践过程中不仅要学会别人的例程,还要在别人的程式上改进和拓展,让程式产生更强大的功能 。同时,还要懂得通过查阅晶片数据手册(DATASHEET)里有关晶片命令和数据的读写时序来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程式 。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验 。硬体设计当编写自己的程式信手拈来、阅读别人的程式能够发现问题的时候,说明你的单片机编程水平相当不错了 。接下来就应该研究硬体了 。硬体设计包括电路原理设计和PCB板设计 。学习做硬体要比学习做软体麻烦,成本更高,周期更长 。但是,学习单片机的最终目的是做产品开发----软体和硬体相结合形成完整的控制系统 。所以,做硬体也是学习单片机技术的一个必学内容 。电路原理设计涉及到各种晶片的套用,而这些晶片外围电路的设计、典型套用电路和与单片机的连线等在晶片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册 。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意 。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网路文档和课外读物等所没有的知识 。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误 。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石 。良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游 。做PCB板就比较简单了 。只要懂得使用Protel软体或 AltimDesigner软体就没问题了 。但要想做的板子布局美观、布线合理还得费一番功夫了 。娴熟的单片机C语言编程、会使用Protel软体或 AltimDesigner软体设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了 。抗干扰在提高硬体系统抗干扰能力的同时,软体抗干扰以其设计灵活、节省硬体资源、可靠性好越来越受到重视 。下面以MCS-51单片机系统为例,对微机系统软体抗干扰方法进行研究 。软体设计在工程实践中,软体抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如数字滤波技术);二、程式运行混乱时使程式重入正轨的方法 。本文针对后者提出了几种有效的软体抗干扰方法 。指令冗余CPU取指令过程是先取操作码,再取运算元 。当PC受干扰出现错误,程式便脱离正常轨道“乱飞”,当乱飞到某双位元组指令,若取指令时刻落在运算元上,误将运算元当做操作码,程式将出错 。若“飞” 到了三位元组指令,出错机率更大 。在关键地方人为插入一些单位元组指令,或将有效单位元组指令重写称为指令冗余 。通常是在双位元组指令和三位元组指令后插入两个位元组以上的NOP 。这样即使乱飞程式飞到运算元上,由于空操作指令NOP的存在,避免了后面的指令被当作运算元执行,程式自动纳入正轨 。此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程式纳入正轨,确保这些重要指令的执行 。拦截技术所谓拦截,是指将乱飞的程式引向指定位置,再进行出错处理 。通常用软体陷阱来拦截乱飞的程式 。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置 。(1 )软体陷阱的设计当乱飞程式进入非程式区,冗余指令便无法起作用 。通过软体陷阱,拦截乱飞程式,将其引向指定位置,再进行出错处理 。软体陷阱是指用来将捕获的乱飞程式引向复位入口地址0000H的指令 。通常在EPROM中非程式区填入以下指令作为软体陷阱: (2 ) 陷阱的安排最后一条应填入020000,当乱飞程式落到此区,即可自动入轨 。在用户程式区各模组之间的空余单元也可填入陷阱指令 。当使用的中断因干扰而开放时,在对应的中断服务程式中设定软体陷阱,能及时捕获错误的中断 。如某套用系统虽未用到外部中断1,外部中断1的中断服务程式可为如下形式:NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H” 。如果故障诊断程式与系统自恢复程式的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程式,儘早地处理故障并恢复程式的运行 。考虑到程式存贮器的容量,软体陷阱一般1K空间有2-3个就可以进行有效拦截 。软体“看门狗”技术若失控的程式进入“死循环”,通常採用“看门狗”技术使程式脱离“死循环” 。通过不断检测程式循环运行时间,若发现程式循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理 。“看门狗”技术可由硬体实现,也可由软体实现 。在工业套用中,严重的干扰有时会破坏中断方式控制字,关闭中断 。则系统无法定时“餵狗”,硬体看门狗电路失效 。而软体看门狗可有效地解决这类问题 。笔者在实际套用中,採用环形中断监视系统 。用定时器T0监视定时器T1,用定时器T1监视主程式,主程式监视定时器T0 。採用这种环形结构的软体“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性 。对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视) 。这种软体“看门狗”监视原理是:在主程式、T0中断服务程式、T1中断服务程式中各设一运行观测变数,假设为MWatch、T0Watch 、T1Watch,主程式每循环一次,MWatch加1,同样T0、T1中断服务程式执行一次,T0Watch、 T1Watch加1 。在T0中断服务程式中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程式中检测MWatch的变化情况判定主程式是否正常运行,在主程式中通过检测T0Watch的变化情况判别T0是否正常工作 。若检测到某观测变数变化不正常,比如应当加1而未加1,则转到出错处理程式作排除故障处理 。当然,对主程式最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑 。限于篇幅不赘述 。硬体技术单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态 。非正常复位的识别程式的执行总是从0000H开始,导致程式从 0000H开始执行有四种可能:一、系统开机上电复位;二、软体故障复位;三、看门狗逾时未餵狗硬体复位; 四、任务正在执行中掉电后来电复位 。四种情况中除第一种情况外均属非正常复位,需加以识别 。(1 )硬体复位与软体复位的识别此处硬体复位指开机复位与看门狗复位,硬体复位对暂存器有影响,如复位后PC=0000H,SP=07H,PSW=00H等 。而软体复位则对SP、SPW无影响 。故对于微机测控系统,当程式正常运行时,将SP设定地址大于07H,或者将PSW的第5位用户标誌位在系统正常运行时设为1 。那幺系统复位时只需检测PSW.5标誌位或SP值便可判此是否硬体复位 。由于硬体复位时片内RAM状态是随机的,而软体复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标誌 。设40H用来做上电标誌,上电标誌字为78H,若系统复位后40H单元内容不等于78H,则认为是硬体复位,否则认为是软体复位,转向出错处理 。若用两个单元作上电标誌,则这种判别方法的可靠性更高 。(2 )开机复位与看门狗故障复位的识别开机复位与看门狗故障复位因同属硬体复位,所以要想予以正确识别,一般要藉助非易失性RAM或者EEROM 。当系统正常运行时,设定一可掉电保护的观测单元 。当系统正常运行时,在定时餵狗的中断服务程式中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位 。(3 )正常开机复位与非正常开机复位的识别识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要 。如某以时间为控制标準的测控系统,完成一次测控任务需1小时 。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗 。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值 。那幺系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程式中恢复系统原运行状态 。非正常复位后系统自恢复运行的程式设计对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模组或任务恢复运行 。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份 。当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模组的初始化、片外扩展晶片的初始化等 。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复 。之后再把复位前的任务、参数、运行时间等恢复,再进入系统运行状态 。应当说明的是,真实地恢复系统的运行状态需 要极为细緻地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性 。其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题 。系统基本初始化是指对晶片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作 。而复位前任务的初始化是指任务的执行状态、运行时间等 。对于软体抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论 。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果 。从根本上来说,硬体抗干扰是主动的,而软体是抗干扰是被动的 。细緻周到地分析干扰源,硬体与软体抗干扰相结合,完善系统监控程式,设计一稳定可靠的单片机系统是完全可行的 。基础知识本段仅针对硬体设计人员和软体设计人员,为了便于对硬体的理解要有一定的彙编语言基础 。汇流排我们知道,一个电路总是由元器件通过电线连线而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串列关係,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了汇流排的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那幺,接收方接收到的究竟是什幺呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件传送数据(可以有多个器件同时接收) 。器件的数据线也就被称为数据汇流排,器件所有的控制线被称为控制汇流排 。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址汇流排 。地址指令这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列 。换言之,地址、指令也都是数据 。指令:由单片机晶片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关係,不可以由单片机的开发者更改 。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由晶片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程式的执行过程) 。数据:这是由微处理机处理的对象,在各种不同的套用电路中各不相同,一般而言,被处理的数据可能有这幺几种情况:1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR 。2.方式字或控制字(如MOV TMOD,#3),3即是控制字 。3.常数(如MOV TH0,#10H)10H即定时常数 。4.实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值 。又如用于LED的字形码,也是实际输出的值 。理解了地址、指令的本质,就不难理解程式运行过程中为什幺会跑飞,会把数据当成指令来执行了 。连线埠功能初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各连线埠的第二功能完全是自动的,不需要用指令来转换 。如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明 。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用 。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这幺去做,因为这通常会导致系统的崩溃 。执行过程单片机在通电复位后8051内的程式计数器(PC)中的值为‘0000’,所以程式总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令 。堆叠堆叠是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆叠有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆叠指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1 。由于SP中的值可以用指令加以改变,所以只要在程式开始阶段更改了SP的值,就可以把堆叠设定在规定的记忆体单元中,如在程式开始时,用一条MOV SP,#5FH指令,就是把堆叠设定在从记忆体单元60H开始的单元中 。一般程式的开头总有这幺一条设定堆叠指针的指令,因为开机时,SP的初始值为07H,这样就使堆叠从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作暂存器区,经常要被使用,这会造成数据的混乱 。不同作者编写程式时,初始化堆叠指令也不完全相同,这是作者的习惯问题 。当设定好堆叠区后,并不意味着该区域成为一种专用记忆体,它还是可以象普通记忆体区域一样使用,只是一般情况下编程者不会把它当成普通记忆体用了 。开发过程这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并製作好硬体,下面就是编写软体的工作 。在编写软体之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了 。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了 。然后用文本编辑器(如EDIT、CCED等)编写软体,编写好后,用编译器对源程式档案编译,查错,直到没有语法错误,除了极简单的程式外,一般套用仿真机对软体进行调试,直到程式运行正确为止 。运行正确后,就可以写片(将程式固化在EPROM中) 。在源程式被编译后,生成了扩展名为HEX的目标档案,一般编程器能够识别这种格式的档案,只要将此档案调入即可写片 。在此,为使大家对整个过程有个认识,举一例说明:常用类型STC单片机STC公司的单片机主要是基于8051核心,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强.PIC单片机:是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分晶片有其兼容的FLASH程式存储器的晶片.EMC单片机:是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差.ATMEL单片机(51单片机):ATMEl公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载线上可程式Flash的单片机,也叫AVR单片机. PHLIPIS 51LPC系列单片机(51单片机):PHILIPS公司的单片机是基于80C51核心的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的套用设计中可以满足多方面的性能要求.HOLTEK单片机:台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品.TI公司单片机(51单片机):德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于複杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合松翰单片机(SONIX):是台湾松翰公司的单片,大多为8位机,有一部分与PIC 8位单片机兼容,价格便宜,系统时钟分频可选项较多,有PMW ADC 内振 内部杂讯滤波 。缺点RAM空间过小,抗干扰较好 。三星单片机:三星单片机有KS51和KS57系列4位单片机,KS86和KS88系列8位单片机,KS17系列16位单片机和KS32系列32位单片机,三星还为ARM公司生产ARM单片机,常见的S344b0等.三星单片机为OTP型ISP在片编程功能 。凌阳单片机:中国台湾凌阳科技股份有限公司(Sunplus Technology CO. LTD)至力于8位和16位机的开发 。SPMC65系列单片机是凌阳主推产品,採用8位SPMC65 CPU 核心,并围绕这个通用的CPU核心,形成了不同的片内资源的一系列产品 。在系列晶片中相同的片内硬体功能模组具有相同的资源特点;不同型号的晶片只是对片内资源进行删减.其最大的特点就是超强抗干扰. 广泛套用于家用电器、工业控制、仪器仪表、安防报警、计算机外围等领域 。SPMC75 系列单片机核心採用凌阳科技自主智慧财产权的μ' nSP(Microcontroller and Signal Processor)16位微处理器SPMC75 系列单片机集成了多种功能模组:多功能 I/O 口、串列口、 ADC 、定时计数器等常硬体模组,以及能产生电机驱动波形的 PWM 发生器、多功能的捕获比较模组、 BLDC 电机驱动专用位置侦测接口、两相增量编码器接口等特殊硬设,主要用于变频马达驱动控制 。SPMC75 系列单片机具有很强的抗干扰能力,广泛套用于变频家电、变频器、工业控制等控制领域 。华帮单片机:华帮单片机属于8051类单片机,它们的W78系列与标準的8051兼容,W77系列为增强型51,对8051的时序做了改进.同样时钟下速度快了不少 。在4位机上华帮有921系列,带LCD驱动的741系列 。在32位机方面,华帮使用了惠普公司PA-RISC单片机技术,生产低位32位RISC单片机 。SST 单片机:美国SST公司推出的SST89系列单片机为标準的51系列单片机,包括SST89E/V52RD2,SST89E/V54RD2,SST89E/V58RD2,SST89E/V554RC,SST89E/V564RD等 。它与8052系列单片机兼容 。提供系统线上编程(ISP功能) 。内部flash擦写次数1万次以上,程式保存时间可达100年 。还有很多优秀的单片机生产企业这里没有收集,每个企业都有自己的特点,大家根据需要选择单片机,在完全实现功能的前提下追求低价位,当然并不是这样最好,实际中选择单片机跟开发者的套用习惯和开发经验是密不可分的 。攻击技术目前,攻击单片机主要有四种技术,分别是:(1)软体攻击该技术通常使用处理器通信接口并利用协定、加密算法或这些算法中的安全漏洞来进行攻击 。软体攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列单片机的攻击 。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程式在擦除加密锁定位后,停止下一步擦除片内程式存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程式 。(2) 电子探测攻击该技术通常以高时间解析度来监控处理器在正常操作时所有电源和接口连线的模拟特性,并通过监控它的电磁辐射特性来实施攻击 。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化 。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息 。(3)过错产生技术该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击 。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击 。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作 。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息 。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行 。(4)探针技术该技术是直接暴露晶片内部连线,然后观察、操控、干扰单片机以达到攻击目的 。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后藉助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成 。所有的微探针技术都属于侵入型攻击 。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏 。在某些场合非侵入型攻击是特别危险的,但是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价 。大部分非侵入型攻击需要攻击者具备良好的处理器知识和软体知识 。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽範围的产品 。加密方法科研成果保护是每一个科研人员最关心的事情,加密方法有软体加密,硬体加密,软硬体综合加密,时间加密,错误引导加密,专利保护等措施有矛就有盾,有盾就有矛,有矛有盾,才促进矛盾质量水平的提高加密只讲盾,也希望网友提供更新的加密思路,现先讲一个软体加密:利用MCS-51 中A5 指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令A5 功能是二位元组空操作指令加密方法在A5 后加一个二位元组或三位元组操作码,因为所有反彙编软体都不会反彙编A5 指令,造成正常程式反彙编乱套,执行程式无问题仿製者就不能改变你的源程式 。硬体加密:8031/8052单片机就是8031/8052掩模产品中的不合格产品,内部有ROM,可以把8031/8052 当8751/8752 来用,再扩展外部程式器,然后调用8031 内部子程式当然你所选的同批8031晶片的首地址及所需用的中断入口均应转到外部程式区 。硬体加密用高电压或雷射烧断某条引脚,使其读不到内部程式,用高电压会造成一些器件损坏重要RAM 数据採用电池(大电容,街机採用的办法)保护,拔出晶片数据失去机器不能起动,或能初始化,但不能运行 。用真假方法加密擦除晶片标识把8X52单片机,标成8X51 单片机,并用到后128B的RAM 等方法,把AT90S8252 当AT89C52,初始化后程式段中并用到EEPROM 内容,你再去联想吧!用雷射(或丝印)打上其它标识如有的单片机引脚兼容,有的又不是同一种单片机,可张冠李戴,只能意会了,这要求你知识面广一点。用最新出厂编号的单片机,如2000 年后的AT89C 就难解密,或新的单片机品种,如AVR 单片机 。DIP 封装改成PLCC,TQFP,SOIC,BGA等封装,如果量大可以做定製ASIC,或软封装,用不需外晶振的单片机工作(如AVR 单片机中的AT90S1200),使用更複杂的单片机,FPGA+AVR+SRAM=AT40K系列 。硬体加密与软体加密只是为叙说方便而分开来讲,其实它们是分不开的,互相支撑,互相依存的软体加密:其目的是不让人读懂你的程式,不能修改程式,你可以………….....利用单片机未公开,未被利用的标誌位或单元,作为软体标誌位,如8031/8051有一个用户标誌位,PSW.1 位,是可以利用的程式入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二位元组或三位元组操作码,在无程式的空单元也加上程式机器码,最好要加巧妙一点用大容量晶片,用市场上仿真器不能仿真的晶片,如内部程式为64KB 或大于64KB 的器件,如:AVR 单片机中ATmega103 的Flash 程式存储器为128KBAT89S8252/AT89S53中有EEPROM,关键数据存放在EEPROM 中,或程式初始化时把密码写到EEPROM 中,程式执行时再查密码正确与否,儘量不让人家读懂程式 。关于单片机加密,讲到这里,就算抛砖引玉 。学习一、单片机与嵌入式系统概述:包括嵌入式系统概念、单片机的特点、套用领域和发展趋势、市场主流单片机性能比较与选型、常用51核单片机介绍、业内通用嵌入式系统开发方法和流程、开发板及相关开发工具的介绍和使用等;二、51单片机架构及基本资源的使用:包括单片机工作原理介绍、51单片机架构介绍、单片机最小系统介绍、51单片机基本资源如并口、中断、时钟与复位、串口等的熟练使用等;三、单片机基本资源扩展设计:包括存储器扩展设计、可程式和不可程式I/O接口扩展设计、I2C汇流排的模拟设计等;四、输入输出设备的设计:包括独立式按键和矩阵键盘的各种输入方法、数码管及液晶显示器的接口设计、蜂鸣器的设计;五、输入通道和输出通道的设计:包括一定模拟和数位讯号量的输入、频率量的输入方法、A/D转换原理与器件选型及其与单片机的接口设计、数字与模拟量的输出方法、功率驱动相关知识、D/A转换原理与器件选型及其与单片机的接口设计等;六、单片机软硬体设计和调试经验:各种软体开发和设计技巧、调试经验等;七、开发环境和开发工具介绍:Keil uVision2集成开发环境的使用与软调试等; 八、软硬体系统集成和调试方法,技术文档的编写规範套用领域单片机广泛套用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智慧型化管理及过程控制等领域,大致可分如下几个範畴:1.在智慧型仪器仪表上的套用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛套用于仪器仪表中,结合不同类型的感测器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量 。採用单片机控制使得仪器仪表数位化、智慧型化、微型化,且功能比起採用电子或数字电路更加强大 。例如精密的测量设备(功率计,示波器,各种分析仪) 。2.在工业控制中的套用用单片机可以构成形式多样的控制系统、数据採集系统 。例如工厂流水线的智慧型化管理,电梯智慧型化控制、各种报警系统,与计算机联网构成二级控制系统等 。3.在家用电器中的套用可以这样说,从电饭褒、洗衣机、电冰柜、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在 。4.在计算机网路和通信领域中的套用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网路和通信设备间的套用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智慧型控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的行动电话,集群移动通信,无线电对讲机等 。5.单片机在医用设备领域中的套用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等 。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途 。