MCS51单片机.docx

上传人:b****8 文档编号:28857928 上传时间:2023-07-20 格式:DOCX 页数:41 大小:192.88KB
下载 相关 举报
MCS51单片机.docx_第1页
第1页 / 共41页
MCS51单片机.docx_第2页
第2页 / 共41页
MCS51单片机.docx_第3页
第3页 / 共41页
MCS51单片机.docx_第4页
第4页 / 共41页
MCS51单片机.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

MCS51单片机.docx

《MCS51单片机.docx》由会员分享,可在线阅读,更多相关《MCS51单片机.docx(41页珍藏版)》请在冰豆网上搜索。

MCS51单片机.docx

MCS51单片机

目录

  一、内容提要…………………………………………………

  二、引言………………………………………………………

三、MCS-51单片机基础知识…………………………………

⑴单片机概述………………………………………………

⑵单片机的组成…………………………………………………

⑶单片机汇编语言程序…………………………………………

⑷MCS--51CPU和存储器………………………………………

⑸单片机的指令系统和寻址方式………………………………

⑹8051单片机的内部总体结构其基本特性……………………

  四、单片机应用系统的抗干扰技术………………………

  五、测控系统的抗干扰技术………………………………

  六、工作实际中抗干扰技术应用…………………………

  七、光电耦合器(隔离器)件及驱动接口………………

  八、电磁感应………………………………………………

九、继电器………………………………………………………

  十、涡流………………………………………………………

十一、单片机控制水槽水位供水系统……………………………

十二、总结…………………………………………………………

十三、参考文献……………………………………………………

十四、附录……………………………………………………

 

内容提要

本毕业设计主要介绍了单片机控制下的水槽水位系统,并对MCS-51系列单片机的CPU、存储器、指令系统、寻址方式、内部总体结构其基本特性,光电耦合器,继电器,抗干扰系统有了介绍,这些有助于对水位控制系统的理解,本设计力求做到由浅入深,体现‘‘必须、够用、适用、会用”的原则.希望作为读者有用的参考资料.

 

引言

我国是一个水资源大国,也是个缺水大国,目前我国水资源存在一些突出的问题:

水资源总量短缺、结构不合理。

首先,我国水资源总量较多,而人均占有量有限。

根据世界银行1998年对132个国家的统计,我国水资源总量占世界第4位,为28124亿m3,但人均水资源占有量却排到了82位,只有2342m3,不足世界人均水平的1/4。

按照国际标准,人均水资源2000m3为严重缺水边缘,人均1000m3为人类生存的起码要求。

目前我国有15个省、自治区和直辖市人均水资源低于严重缺水线,有7个省、自治区人均水资源低于生存起码的要求。

其次,水资源在时间上分布不平衡。

我国大部分地区受季风影响,每年汛期的四个月,即6~9月,降水量占全年总量的60%~80%,北方6~9月份的降水量占全年总量的80%以上,南方4~6月份占全年总量的80%以上。

降水的过程集中且不稳定,导致了水旱灾害频繁,并且交替出现。

在日常生活中,特别是工矿企业的生产用水,经常需要对水池水位进行控制,水池缺水了需要抽水,水池的水满了要停止抽水。

根据工厂家属区的生活用水水池和工业浇铸循环用水,制作了水位自动控制报警装置,该装置的特点是以低电压12V和5V整流后控制主回路高电压380V(或220V)水泵电机实现自动抽水、停止和报警。

制作简便,使用安全可靠。

本装置是以电子领域使用最广泛的MCS-51系列单片机为对象,辅助介绍了与电磁理论和光电技术理论的一系列元器件的内部结构,工作原理.及其使用的环境等方面的特性.节约了资金和人力投入,又提高了自动控制水平,消除了事故隐患,此外,系统还极大的减少了控制系统的维护工作量及设备备品,备件的更换量和更换周期,经济效益可观

本装置是由河南工业职业技术学院精密机械专业李鹏同学设计,得到刘娇月老师的指导.在编排过程中的到了河南工业职业技术学院电气工程系各位领导的高度重视和大力支持,在此一并表示诚挚的谢意.

为了方便对本系统的了解和使用,本设计配有专业的电子图(2#图纸),若有次此需要的各界朋友可与河南工业职业技术学院电气工程系辅导员办公室联系或本人联系.E-mail:

lipeng6538062@

编者

2007-12-8

MCS-51单片机基础知识

单片机概述

MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。

INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲:

一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机了解计算机原理与结构的最佳选择。

可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。

不过,这种电脑,通常是指个人计算机,简称PC机。

它由主机、键盘、显示器等组成。

还有一类计算机,大多数人却不怎么熟悉。

这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。

顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。

因为它体积小,通常都藏在被控机械的“肚子”里。

它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。

现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。

各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。

究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上 

单片机的组成

  单片机要自动完成计算,它应该具有哪些最重要的部分呢?

 我们以打算盘为例计算一道算术题。

例:

36+163×156-166÷34。

现在要进行运算,首先需要一把算盘,其次是纸和笔。

我们把要计算的问题记录下来,然后第一步先算163×156,把它与36相加的结果记在纸上,然后计算166÷34,再把它从上一次结果中减去,就得到最后的结果。

现在,我们用单片机来完成上述过程,显然,它首先要有代替算盘进行运算的部件,这就是“运算器”;其次,要有能起到纸和笔作用的器件,即能记忆原始题目、原始数据和中间结果,还要记住使单片机能自动进行运算而编制的各种命令。

这类器件就称为“存贮器”。

此外,还需要有能代替人作用的控制器,它能根据事先给定的命令发出各种控制信号,使整个计算过程能一步步地进行。

但是光有这三部分还不够,原始的数据与命令要输入,计算的结果要输出,都需要按先后顺序进行,有时还需等待。

所以,一台能够工作的计算机一般要有这样几个部份构成:

CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:

串行口、并行输出口等)。

在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。

而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。

  如上例中,当在计算163×156时,数字36就不能同时进入运算器。

因此就需要在单片机上设置按控制器的命令进行动作的“门”,当运算器需要时,就让新数据进入。

或者,当运算器得到最后结果时,再将此结果输出,而中间结果不能随便“溜出”单片机。

这种对输入、输出数据进行一定管理的“门”电路在单片机中称为“口”(Port)。

在单片机中,基本上有三类信息在流动,一类是数据,即各种原始数据(如上例中的36、163等)、中间结果(如166÷34所得的商4、余数30等)、程序(命令的集合)等。

这样要由外部设备通过“口”进入单片机,再存放在存贮器中,在运算处理过程中,数据从存贮器读入运算器进行运算,运算的中间结果要存入存贮器中,或最后由运算器经“出入口”输出。

  用户要单片机执行的各种命令(程序)也以数据的形式由存贮器送入控制器,由控制器解读(译码)后变为各种控制信号,以便执行如加、减、乘、除等功能的各种命令。

所以,这一类信息就称为控制命令,即由控制器去控制运算器一步步地进行运算和处理,又控制存贮器的读(取出数据)和写(存入数据)等。

第三类信息是地址信息,其作用是告诉运算器和控制器在何处去取命令取数据,将结果存放到什么地方,通过哪个口输入和输出信息等。

  存贮器又分为只读存贮器和读写存贮器两种,前者存放调试好的固定程序和常数,后者存放一些随时有可能变动的数据。

顾名思义,只读存贮器一旦将数据存入,就只能读出,不能更改(EPROM、E2PROM等类型的ROM可通过一定的方法来更改、写入数据——编者注)。

而读写存贮器可随时存入或读出数据。

  实际上,人们往往把运算器和控制器合并称为中央处理单元——CPU。

单片机除了进行运算外,还要完成控制功能。

所以离不开计数和定时。

因此,在单片机中就设置有定时器兼计数器。

到这里为止,我们已经知道了单片机的基本组成,即单片机是由中央处理器(即CPU中的运算器和控制器)、只读存贮器(通常表示为ROM)、读写存贮器(又称随机存贮器通常表示为RAM)、输入/输出口(又分为并行口和串行口,表示为I/O口)等等组成。

实际上单片机里面还有一个时钟电路,使单片机在进行运算和控制时,都能有节奏地进行。

另外,还有所谓的“中断系统”,这个系统有“传达室”的作用,当单片机控制对象的参数到达某个需要加以干预的状态时,就可经此“传达室”通报给CPU,使CPU根据外部事态的轻重缓急来采取适当的应付措施。

现在,我们已经知道了单片机的组成,余下的问题是如何将它们的各部分连接成相互关联的整体呢?

实际上,单片机内部有一条将它们连接起来的“纽带”,即所谓的“内部总线”。

此总线有如大城市的“干道”,而CPU、ROM、RAM、I/O口、中断系统等就分布在此“总线”的两旁,并和它连通。

从而,一切指令、数据都可经内部总线传送,有如大城市内各种物品的传送都经过干道进行。

 

一、总线:

我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各元器件之间的工作必须相互协调,所以就需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?

这种情况是是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。

器件的数据线也就被称为数据总线,器件所有的控制线被称控制总线。

在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当中也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分的线也较多,这些线被称为地址总线。

二、数据、地址、指令:

之所以将这三者放在一起,是因为这三者的本质都是一样的数字,或者说都是一串‘0’和‘1’组成的序列。

换言之,地址、指令也都是数据。

指令由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应,不可以由单片机的开发者更改。

地址:

是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决,但有一些地址单元是一定要有的详见程序的执行过程。

数据:

这是由微处理机处理的象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:

1地址(如MOVDPTR,#1000H),即地址1000H送入DPTR。

2方式字或控制字(如MOVTMOD,#3),3即是控制字。

3常数(如MOVTH0,#10H)10H即定时常数。

4实际输出值(如P1口接彩灯,要灯全亮,则执行指令:

MOVP1,#0FFH,要灯全暗,则执兄令:

MOVP1,#00H)这里0FFH和00H都是实际输出值。

又如用于LED的字形码,也是实际输出的值。

理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来进行了。

三、P0口、P2口和P3的第二功能用法。

初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有个切换的过程,或者说要有一条指令,各端口的第二功能完全是自动的,不需要指令来转换。

如P3.6、P3.7分别是WR、RD信号,当微片理机外接RAM或有外部I/O口时,它们挥作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.或P3.7送出,不需要事先用指令说明。

事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。

你完全可以在指令中按排一条SETBP3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么做,因为这通常这会导致系统当溃(即死机)。

四、程序的执行过程单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:

在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。

五、堆栈堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特的数据传输指令,即‘PUSH’和‘SP’,有一个特殊的专为其服务的单元,即堆栈指针SP每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值基础上)自动减1。

由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP值,就可以把堆栈设置在规定的内存单元中,如在程序开始时就用一条MOVSP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。

一般程序的开头总有这么几条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后从8H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的浑乱。

不过作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。

当设置好堆栈区,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情下编程者不会把它当成普通内存用了。

六、单片机的开发过程这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件下面就是编写软件的工作。

在编写软件之前,首先要确定一些常数、地址、事实,这些常数、地址在设计阶段已被直接或间接地确定下来了。

如当某器件的连线设计好后,其地址也就确定了,当器件的功能被确定下来后,其控制字也就被确定了。

然后用文本编缉器(如EDIT、CCED等)写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。

运行正确后,就可以写(将程序固化在EPROM中)。

在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别种格式的文件,只要将此文件调入即可写片。

在此,为使大家对整个过程有个认识,举一例说明:

ORG0000HLJMPSTARTORG040HSTART:

MOVSP,#5FH;设堆栈LOOP:

NOPLJMPLOOP;循环END

单片机指令系统与汇编语言程序

  前面已经讲述了单片机的几个主要组成部分,这些部分构成了单片机的硬件。

所谓硬件(Hardware),就是看得到,摸得到的实体。

但是,光有这样的硬件,还只是有了实现计算和控制功能的可能性。

单片机要真正地能进行计算和控制,还必须有软件(Software)的配合。

软件主要指的是各种程序。

只有将各种正确的程序“灌入”(存入)单片机,它才能有效地工作。

单片机所以能自动地进行运算和控制,正是由于人把实现计算和控制的步骤一步步地用命令的形式,即一条条指令(Instruction)预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行。

就以两个数相加这一简单的运算来说,当需要运算的数已存入存贮器后,还需要进行以下几步:

  第一步:

把第一个数从它的存贮单元(Location)中取出来,送至运算器。

  第二步:

把第二个数从它所在的存贮单元中取出来,送至运算器;第三步:

相加;第四步:

把相加完的结果,送至存贮器中指定的单元。

  所有这些取数、送数、相加、存数等等都是一种操作(Operation),我们把要求计算机执行的各种操作用命令的形式写下来,这就是指令。

但是怎样才能辨别和执行这些操作呢?

这是在设计单片机时由设计人员赋予它的指令系统所决定的。

一条指令,对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统(IustructionSet),不同种类的单片机,其指令系统亦不同。

  使用单片机时,事先应当把要解决的问题编成一系列指令。

这些指令必须是选定的单片机能识别和执行的指令。

单片机用户为解决自己的问题所编的指令程序,称为源程序(SourceProgram)。

指令通常分为操作码(Opcode)和操作数(Operand)两大部分。

操作码表示计算机执行什么操作,即指令的功能;操作数表示参加操作的数或操作数所在的地址(即操作数所存放的地方编号)。

因为单片机是一种可编程器件,只“认得”二进码(0、1)。

要单片机运作,单片机系统中的所有指令,都必须以二进制编码的形式来表示。

例如,在Intel公司的MCS-51系列单片机中,从存贮器中取出一数到CPU中的累加器(在运算器中,参与运算、存放运算结果的专用寄存器)的指令代码为74H,累加器内容加立即数的代码为24H,再加上立即数代码,累加器送数到内部RAM存贮器的代码为F6H~F7H等。

这些指令是用十六进制表示二进制的机器码。

  MCS-51单片机的字长为8位,有时,要完成某些操作用一个字节尚不能充分表达。

所以,在指令系统中有单字节指令,也有多字节指令。

机器码是由一连串的0和1组成,没有明显的特征,不好记忆,不易理解,易出错。

所以,直接用它来编写程序十分困难。

因而,人们就用一些助记符(Muemonic)——通常是指令功能的英文缩写来代替操作码,如MCS-51中数的传送常用MOV(Move的缩写)、加法用Add(Addition的缩写)来作为助记符。

这样,每条指令有明显的动作特征,易于记忆和理解,也不容易出错。

用助记符来编写的程序称为汇编语言程序。

但是,助记符编写的程序便于人理解,可单片机却只认识二进制机器代码,因此,为了让单片机能“读懂”汇编语言程序必须再转换成由二进制机器码构成的程序,这种转换过程,就称为“汇编”。

汇编可借助于人工查表法来实现,也可借助PC机通过所谓“交叉汇编程序”来完成。

由机器码构成的用户程序一旦“进入”了单片机,再“启动”单片机,就可让它执行输入程序所规定的任务。

MCS-51CPU和存储器

单片机8051的CPU由运算器和控制器组成。

一、运算器                                      

二、运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。

累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。

在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

寄存器B主要用于乘法和除法操作。

标志寄存器PSW也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。

其每位的具体含意如下所示。

PSWCYACFORS1RS0OV-P对用户来讲,最关心的是以下四位。

 1进位标志CY(PSW7)。

它表示了运算是否有进位(或借位)。

如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。

 2辅助进位标志AC。

又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。

 3溢出标志位OV。

MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。

 4奇偶标志P。

反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。

PSW的其它位,将在以后再介绍。

由于PSW存放程序执行中的状态,故又叫程序状态字运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。

其功能在介绍位指令时再说明。

二、控制器

  控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。

这里程序计数器PC是由16位寄存器构成的计数器。

要单片机执行一个程序,就必须把该程序按顺序预先装入存储器ROM的某个区域。

单片机动作时应按顺序一条条取出指令来加以执行。

因此,必须有一个电路能找出指令所在的单元地址,该电路就是程序计数器PC。

当单片机开始执行程序时,给PC装入第一条指令所在地址,它每取出一条指令(如为多字节指令,则每取出一个指令字节),PC的内容就自动加1,以指向下一条指令的地址,使指令能顺序执行。

只有当程序遇到转移指令、子程序调用指令,或遇到中断时(后面将介绍),PC才转到所需要的地方去。

8051CPU碢C指定的地址,从ROM相应单元中取出指令字节放在指令寄存器中寄存,然后,指令寄存器中的指令代码被译码器译成各种形式的控制信号,这些信号与单片机时钟振荡器产生的时钟脉冲在定时与控制电路中相结合,形成按一定时间节拍变化的电平和时钟,即所谓控制信息,在CPU内部协调寄存器之间的数据传输、运算等操作。

三、存储器

  存储器是单片机的又一个重要组成部分,图6给出了一种存储容量为256个单元的存储器结构示意图。

其中每个存储单元对应一个地址,256个单元共有256个地址,用两位16进制数表示,即存储器的地址(00H~FFH)。

存储器中每个存储单元可存放一个八位二进制信息,通常用两位16进制数来表示,这就是存储器的内容。

存储器的存储单元地址和存储单元的内容是不同的两个概念,不能混淆。

1、程序存储器

  程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。

如前述用助记符编写的命令MOVA,#20H,换成机器认识的代码74H、20H:

(写成二进制就是01110100B和00100000B)。

在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。

程序存储器可以放在片内或片外,亦可片内片外同时设置。

由于PC程序计数器为16位,使得程序存储器可用16位二进制地址,因此,内外存储器的地址最大可从0000H到FFFFH。

8051内部有4k字节的RO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1