项目一蜂鸣器的片单机控制.ppt

上传人:牧羊曲112 文档编号:6034708 上传时间:2023-09-16 格式:PPT 页数:71 大小:1.74MB
返回 下载 相关 举报
项目一蜂鸣器的片单机控制.ppt_第1页
第1页 / 共71页
项目一蜂鸣器的片单机控制.ppt_第2页
第2页 / 共71页
项目一蜂鸣器的片单机控制.ppt_第3页
第3页 / 共71页
项目一蜂鸣器的片单机控制.ppt_第4页
第4页 / 共71页
项目一蜂鸣器的片单机控制.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《项目一蜂鸣器的片单机控制.ppt》由会员分享,可在线阅读,更多相关《项目一蜂鸣器的片单机控制.ppt(71页珍藏版)》请在三一办公上搜索。

1、项目目标项目任务项目分析项目预备知识项目实施知识点链接,项目一:蜂鸣器的鸣叫控制,项目目标 通过单片机控制蜂鸣器鸣叫,学会分析单片机最小系统的电路结构及各部分的功能,初步学习汇编程序的分析方法,并能熟练运用MOV、LJMP、SETB、CPL、DJNZ、LCALL、RET基本指令。,项目任务 要求应用AT89C51芯片,控制一只蜂鸣器发声。设计单片机控制电路并编程实现此操作。项目分析 本项目是单片机最小系统的简单应用。设计一个单片机的最小系统,利用P1.0引脚输出电位的变化,控制蜂鸣器的鸣叫,P1.0引脚的电位变化可以通过指令来控制。,项目预备知识:CPU的时序,CPU总是按照一定的时钟节拍与时

2、序工作:振荡周期/时钟周期:Tc=晶振频率fosc的倒数状态周期:Ts=2个时钟周期(Tc)(很少用到此概念)机器周期:Tm=6个状态周期(Ts)=12个振荡周期(Tc)指令周期:Ti:执行一条指令所需的机器周期(Tm)数 1个机器周期=12个振荡周期;1个指令周期=1、2、4个机器周期,MCS-51单片机各种周期的相互关系,若MCS-51单片机外接晶振为12MHz时,则单片机的四个周期的具体值为:振荡周期1/12MHz1/12s0.0833s状态周期1/6s0.167s机器周期1s指令周期14s,指令的表示方式称为指令格式,汇编语言指令格式如下:标号:操作码 目的操作数,源操作数;注释指令中

3、每个部分之间必须用空格分隔,空格数可以不止一个。在用键盘录入程序时,可以使用键将两个部分分开。其中,带 为可选项,可以根据具体指令和编程需要给出。,项目预备知识:汇编语言指令格式,例如 START:MOV A,#20H;把数20H送入累加器A 中,项目预备知识:汇编语言指令格式,标号是语句地址的标志符号,代表该语句指令代码第一个字节的地址。(1)标号由18个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。(2)不能使用本汇编语言已经定义了的符号作为标记,如指令助记符、伪指令记忆符以及寄存器的符号名称等(3)标号后边必须跟以冒号。(4)同一标号在一个程序中只能

4、定义一次,不能重复定义。,1、标 号,2、操作码:表示指令的操作功能。,操作码用助记符表示,它代表了指令的操作功能。,操作码是指令的必需部分,是指令的核心,不可缺少。,3、操作数:参加操作的数据或数据地址。,操作数与操作码之间用空格分隔,操作数与操作数之间用逗号“,”分隔。,操作数可以是数据,也可以是数据的地址、数据地址的地址或操作数的其他信息。,操作数可分为目的操作数和源操作数。,操作数可用二进制数、十进制数或十六进制数表示。,操作数的个数可以是03个。,4、注释:指令功能说明。,注释属于非必需项,是为便于阅读,对指令功能作的说明和注解。,注释必须以“;”开始。,汇编程序在上述每段的开头或结

5、尾使用分界符把各段分开,以便于区分。分界符可以是空格、冒号、分号等。这些分界符在MCS51汇编语言中使用情况如下:(1)冒号(:)用于标号之后。(2)空格()用于操作码和操作数之间。(3)逗号(,)用于操作数之前。(4)分号(;)用于注释之前。,5、分界符(分隔符),寻址就是寻找指令中操作数或操作数所在的地址。所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。通常指源操作数的寻址方式。MCS-51系列单片机寻址方式共有七种:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。,项目预备知识:寻址方式,1、寄存器寻址 寄存器寻址是指操作数存放在某一寄存

6、器中,指令中给出寄存器名,就能得到操作数。寄存器可以使用寄存器组R0R7中某一个或其它寄存器(A,B,DPTR等)。例如:MOV A,R0;(R0)A MOV P1,A;(A)P1 ADD A,R0;(A)+(R0)A,寄存器,目的地,MOV A,R1,2、直接寻址 在指令中直接给出操作数所在的存储单元的地址,称为直接寻址方式。在8051中,使用直接寻址方式可访问片内RAM的128个单元以及所有的特殊功能寄存器(SFR),对于特殊功能寄存器,既可以使用他们的地址,也可以使用他们的名字。例如:MOV A,3AH;(3AH)A 又如:MOV A,P1;(P1口)A 也可写为:MOV A,90H;9

7、0H是P1口的地址。,XXH,目的地,MOV A,3AH,例如,指令MOV A,3AH执行的操作是将内部RAM 中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址.,3、立即数寻址 指令操作码后面紧跟的是一字节或两字节操作数,用#号表示,以区别直接地址。例如:MOV A,#3AH;3AHA MCS-51系列单片机有一条指令,要求操作码后面紧跟的是两个字节立即数,即 MOV DPTR,#DATA16,目的地,MOV A,#30H,速递快信,4、寄存器间接寻址。寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数.例如:MOV R1,#30H;(R1)立即数30H

8、MOV R1,#0FH;(30H)立即数0FH MOV A,R1;(A)(30H)=#0FH注意:“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。,例如,指令MOV A,R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中,如图所示。,如图所示:(R0)=65H(65H)=47H,5、变址寻址也称为:基址寄存器+变址寄存器间接寻址 以16位的地址指针寄存器DPTR或 16位的PC寄存器为基址寄存器,以累加器 A 为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是

9、操作数。用变址寻址方式只能访问程序存储器,访问的范围为64KB,当然,这种访问只能从ROM中读取数据而不能写入。例如:MOVC A,A+DPTR;(A)+(DPTR)A,基址寄存器1000H,变址寄存器,A,1000H+30H,1030H,30,65H,设:A中已存有#30H,DPTR中已存有#1000H MOVC A,A+DPTR;(A)(A)+(DPTR)操作:将30H+1000H=1030H单元中的数放进累加器A,6、相对寻址 相对寻址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。这里所说得PC的当前值是执行完相对转移指令后

10、的PC值,一般将相对转移指令操作码所在的地址称为源地址,转移后的地址称为目的地址。于是有:目的地址=源地址+2(相对转移指令字节数)+rel 51单片机指令系统中相对转移指令既有双字节的,也有三字节的。例如:SJMP rel,以当前的PC值加上指令中给出的相对偏移量rel而形成转移目的地址的寻址方式。,2000H+2H+28H,源地址,目的地址,rel,转移指令本身字节数,rel是有符号的8位二进制数,用补码表示。相对偏移在127128字节单元之间。,7、位寻址 采用位寻址方式的指令,操作数是8位二进制数中的某一位。指令中给出的是位地址,是片内RAM某个单元中的某一位的地址。位地址在指令中用b

11、it表示。例:CLR P1.0;(P1.0)0 SETB ACC.7;(ACC.7)1 CPL C;(C)NOT(C)位地址常用下列三种方式表示;(1)直接使用位地址表示。对于20H2FH的16个单元共128位,位地址分布是00H7FH。(2)对于特殊功能寄存器,可以直接用寄存器名字加位数表示,如PSW.3、ACC.5等。(3)对于定义了位名字的特殊位,可以直接用其位名表示,例如:CY、AC等。,寻址方式及对应存储器空间,(1)Rn(n=07)当前选中的工作寄存器R0R7。(2)Ri(i=0,1)当前选中的工作寄存器组中,可作为间址寄存器 的两个工作寄存器R0、R1。(3)#data 8位立即

12、数。(4)#data16 16位立即数。(5)direct 8位片内RAM单元(包括SFR)的直接地址。(6)addr11 11位目的地址,用于ACALL和AJMP指令中。(7)addr16 16位目的地址,用于LCALL和LJMP指令中。(8)rel 补码形成的8位地址偏移量。(9)bit 片内直接寻址位地址。(10)间接寻址方式中,表示间址寄存器的符号。(11)/位操作指令中,表示对该位先取反再参与操作,但 不影响该位原值。(12)(X)表示X中的内容。(13)(X)由X指出的地址单元中的内容。(14)指令操作流程,将箭头左边的内容送入箭头右边的单元。,寻址方式中常用符号注释,练 习,说明

13、下列指令中源操作数采用的寻址方式。,项目预备知识:指令系统,51系列单片机指令系统由111条指令组成。可分为五大类:数据传送指令(28条),算术运算指令(24条),逻辑运算及移位指令(25条),控制转移指令(17条),位操作指令或布尔操作(17条)。,1、数据传送指令 CPU在进行算术和逻辑运算时,总需要有操作数。所以,数据的传送是一种最基本,最主要的操作。在通常的应用程序中,传送指令占有很大的比例。数据传送是否灵活,迅速,对整个程序的编写和执行都起着很大的作用。2、算术运算指令 算术运算指令主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加1、减1操作,BCD

14、码的运算和调整等,都归类为算术运算指令。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。,3、逻辑运算及移位指令 逻辑运算和移位指令有与、或、异或、求反、左右移位、清0等逻辑操作,有直接寻址、寄存器寻址和寄存器间址寻址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。4、控制转移类指令 控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间。MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在256B范围内相对转移指令及其它无条件转移指令

15、,这些指令的执行一般都不会对标志位有影响。,5、位操作指令 MCS-51系列单片机的硬件结构中有一个位处理器(又称布尔处理器),布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。MCS-51单片机有一个布尔处理机,它以进位标志位CY做为累加位C,以内部RAM可寻址的128个位为存储位。,数据数据传送类指令一般的操作是把源操作数传送到目的操作数,指令执行后,一般是源操作数不改变,目的操作数修改为源操作数。可以在累加器A、工作寄存器R0R7、内部数据存储器、外部数据存储器和程序存储器之间进行。,1、数据传送指

16、令(MOV),(1).累加器A为目的操作数类指令(4条)这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即、寄存器和寄存器间接寻址方式。具体如下:MOV A,direct;直接单元地址中的内容送到累加器A。MOV A,#data;立即数送到累加器A中。MOV A,Rn;Rn中的内容送到累加器A中。MOV A,Ri;Ri内容指向的地址单元中的内容送到累加器A。,【例1】已知A=40H,R0=50H,(40H)=30H,(50H)=10H,请指出每条指令执行后相应单元内容的变化。(1)MOV A,#20H(2)MOV A,40H(3)MOV A,R0(4)MOV A,R0,解:(1)

17、MOV A,#20H执行后A=20H。(2)MOV A,40H执行后A=30H。(3)MOV A,R0执行后A=50H。(4)MOV A,R0执行后A=10H。,(2).以寄存器Rn为目的操作数的指令(3条)这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式。具体如下:MOV Rn,#data 将8位立即数送入当前寄存器组的 Rn寄存器 MOV Rn,A 将累加器A中的内容送入当前寄存 器组的Rn寄存器中 MOV Rn,direct 将直接地址单元中的内容送入当 前寄存器组的Rn寄存器中 这一组指令中的Rn是当前工作寄存器组的R0R7中的某一个寄存

18、器。,注意寄存器Rn之间不能进行直接的数据传送。要实现相关操作,必须找一个中间单元进行。,【例 2】A=33H,(23H)=49H。执行下列指令:MOV R7,A;R733HMOV R6,27H;R6=27HMOV R0,23H;R0=49H,3.以直接地址为目的操作数的指令(5条)这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式。具体如下:MOV direct,direct;(direct)(direct)直接地址单元中的内容送到直接地址单元。MOV direct,#data;#data(direct)立即数送到直接

19、地址单元。MOV direct,A;(A)(direct)累加器A中的内容送到直接地址单元。MOV direct,Rn;(Rn)(direct)寄存器Rn中的内容送到直接地址单元。MOV direct,Ri;(Ri)(direct)寄存器Ri中的内容指定的地址单元中数据送到直接地址单元。,【例 3】A=30H,RO=22H,(22H)=56H。执行下列指令:MOV 10H,A;(10H)=30H MOV 10H,RO;(10H)=22H MOV 10H,RO;(10H)=56H MOV 10H,23H;(10H)=23H MOV 10H,22H;(10H)=56H,(4).以间接地址为目的操作

20、数的指令(3条)这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式。具体如下:MOV Ri,direct;直接地址单元中的内容送到以Ri中的内容为地址的RAM单元。MOV Ri,#data;立即数送到以Ri中的内容为地址的RAM单元。MOV Ri,A;累加器A中的内容送到以Ri中的内容为地址的RAM单元。,以上指令使用时需要注意:1、目的操作数不能采用立即操作数。2、Ri中的i的范围为0和1。3、Rn中的n的范围为07。4、每条指令中最多只能有1个Rn或Ri。,【例 4】(20H)=47H,A=34H,R1=32H,R0=45H。执行下

21、列指令:MOV R0,A;(45H)=34H MOV R1,23H;(32H)=23H MOV R0,20H;(45)=47H,(1)无条件转移指令(LJMP)长转移指令 LJMP addr16 将16位地址数送入程序 计数器 中,以改变程序的执行方向 本条指令中,由于直接提供要转移去的16位目的地址,所以执行这条指令可使程序转向64KB程序存储器地址空间的任何单元。,2、控制转移指令(LJMP、DJNZ),注意在实际编写源程序时,往往不能事先确定转移去的目标程序存放的单元地址,因此一般以要转移去的目标程序处的标号取代16位地址数。在编译及执行程序时是一样的。,AJMP addr11;(PC)

22、(PC)+2,(PC100)addr11 由PC1511信息和指令提供低11位地址组成16位转移目标地址,使程序无条件转向同一2KB存储空间目的地址执行。本指令不影响标志位。,绝对转移指令,本指令的执行前:PC的高5位为:00010,而指令中提供的11位地址为:100 0101 0110,则指令执行后:PC的值为:0001 0100 0101 0110,即1456H,(2)条件转移指令(DJNZ),DJNZ Rn,rel;(PC)(PC)+2,(Rn)(Rn)-1 当(Rn)0时,(PC)(PC)+rel;当(Rn)=0时,程序顺序执行。DJNZ direct,rel;(PC)(PC)+3,(

23、direct)(direct)-1 当(direct)0时,(PC)(PC)+rel;当(direct)=0时,程序顺序执行。执行本指令时,将第一个操作数减1后判断结果是否为0,若为0,则终止循环程序段的执行,程序往下顺序执行;若不为0,则转移到目的地址继续执行循环程序段。用两条指令可以构成循环程序,循环次数就是第一个操作数的值。rel为相对偏移量。,3、位操作指令(SETB、CPL),汇编指令 指令功能 SETB bit 将bit位上的内容置1 CPL bit 将bit位上的内容取反 以上两条指令可以对单元中的特定位进行操作,应用的关键是掌握位地址的表示方法。本程序中P1.0即位地址。,4、

24、子程序调用及返回指令(LCALL、RET):,在程序设计中,经常会遇到功能完全相同的同一段程序出现多次,为了减少程序所占存储器的空间及编程人员的工作量,可以把具有一定功能的程序段作为子程序单独编写,供主程序在需要时使用,这种使用称为调用。当主程序需要调用子程序时,通过调用指令无条件地转移到子程序入口处开始执行,子程序执行完毕将返回到主程序。因此,调用指令和返回指令应成对使用,调用指令应放在主程序中,而返回指令应放在子程序的末尾处。,主程序调用和子程序返回过程,LCALL addr16;转移范围64KB,不影响标志位。执行中自动完成如下过程:,说明:(1)该指令执行前PC值为下一条指令的首地址;

25、(2)转移范围:整个程序存储空间,64KB范围。,(1)长调用指令,例 设(SP)=07H,(PC)=2100H,子程序首地址为3456H,执行:LCALL 3456H MOV A,20H 执行结果?,执行结果:(SP)=09H,(09H)=21H,(08H)=03H,(PC)=3456H,ACALL addr11;(PC)+2(PC);(SP)+1(SP),(PC 07)(SP);(SP)+1(SP),(PC 815)(SP);addr010(PC)010,(PC)1115不变,(2)短调用指令,说明:(1)该指令执行前PC值为下一条指令的首地址;(2)转移范围:含有下一条指令首地址的同一个

26、 2KB范围,即高5位地址相同。,(3)子程序返回指令 RET;(SP)(PC)815,(SP)1(SP);(SP)(PC)07,(SP)1(SP),用法:RET;子程序最后一条指令,在程序设计时,子程序的最后一条指令必须是RET,它标志子程序结束。,5、伪指令,伪指令又叫汇编控制指令,是只在汇编过程中起作用的指令,用来对汇编过程进行某种控制,或者对符号、标号赋值。伪指令和指令完全不同。在汇编过程中,伪指令不产生可执行的目标代码,大部分伪指令甚至不会影响存储器中的内容。下面学习汇编开始和结束指令。格式:ORG 16位地址 END ORG的功能是,规定跟在它后面的源程序经过编译后所产生的目标程序

27、在程序存储器中的起始地址。END是汇编语言源程序的结束标志,汇编程序遇到END时认为源程序到此为止,汇编过程结束,在END后面所写的程序,汇编程序都不予理睬。在一个源程序中可以多次使用ORG指令,以规定不同程序段的起始地址。但多个ORG所规定的地址应该是从小到大,而且不同程序段之间地址不能有重叠。而在一个源程序中只能有一个END命令。,一、硬件电路设计 二、控制程序的编写 三、程序PROTUES仿真与调试,项目实施,在单片机应用中,首先应考虑硬件电路的设计,控制程序的编写和电路结构是对应的。(一)设计思路 使用AT89C51单片机芯片(含片内程序存储器),外加振荡电路、复位电路、控制电路、电源

28、,组成一个单片机最小系统。对于电磁式蜂鸣器,其发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它。单片机IO引脚输出电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路-三极管进行电流放大。利用蜂鸣器的工作特点,结合单片机P1口P1.0引脚输出信号的状态,可以实现蜂鸣器的单片机控制。,一、硬 件 电 路 设 计,(二)电路设计选用的AT89C51芯片共有40个引脚,采用双列直插式封装形式。,1、主电源电路Vcc(40脚):接+5V电源又称电源引脚;Vss(20脚):接电源负端又称接地引脚。2、时钟电路 XTAL1(19

29、脚)和XTAL2(18脚)3、复位电路 RST/VPD(9脚)为复用引脚,其中RST为复位操作。4、控制电路EA/VPP引脚接高电位,表示读片内程序。5、蜂鸣器控制电路,2、时钟电路 MCS-51单片机时钟信号的提供有两种方式:内部方式和外部方式。,内部方式如a图所示:外接石英晶体和微调电容器C1、C2,和MCS-51单片机的内部电路构成一个完整的振荡器,震荡频率和石英晶体的振荡频率相同。当使用外部信号源为MCS-51提供时钟信号时,如b、c图所示。,3、复位电路 复位是单片机的初始化操作,使CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。,复位有上电自动复位电路和按键复

30、位电路两种。上电自动复位(a)是利用复位电路电容充放电来实现的;而按键手动复位(b)是通过使RST端经电阻器R1与电源VCC接通而实现的,它兼具自动复位功能。,执行一次复位后,内部各寄存器的状态如表2所示,内部数据存储器(RAM)中的数据保持不变。表2 复位后各寄存器状态(表示取值不定),EA/VPP引脚为复用引脚,其中,(External Access)是访问程序存储器控制信号。当为高电平时,CPU访问片内程序存储器,即从片内ROM中取指令并执行,但当程序计数器PC值超过0FFFH(4KB)时,CPU将自动转向外部ROM的1FFFHFFFFH(高60KB)中取指令。当为低电平时,CPU仅访问

31、外部程序存储器。VPP是编程电源输入,在对E2PROM型单片机进行编程时,此端加5V的编程电压。,4、控制电路,5、蜂鸣器控制电路,蜂鸣器的正极接到电源正极,负极与晶体管的发射极相连。当晶体管导通时,蜂鸣器负极通过晶体管接地,蜂鸣器就工作(鸣叫)。晶体管是否导通取决于基极电位,若基极电位为低电位(0),则晶体管导通;若基极电位为高电位(1),则晶体管截至。晶体管的基极通过10k的电阻与单片机芯片AT89C51的P1.0引脚连接,因此可以通过控制P1.0引脚的输出信号来控制晶体管的通断。,综合以上的分析,得到下图所示电路原理图。,(三)材料表 从原理图可以得到实现本项目所需的元器件。元器件的选择

32、应该合理,以满足功能要求为原则,否则会造成资源的浪费。,(一)绘制程序流程图 本控制使用简单程序设计中的顺序结构形式实现,程序结构流程图如下图。,二、控制程序的编写,(二)编制汇编源程序,ORG 0000H LJMP MAIN1 ORG 0100HMAIN1:SETB P1.0 LCALL DELAY CPL P1.0 LCALL DELAY LJMP MAIN1DELAY:MOV R7,#228 DJNZ R7,DELAY RET END,程序执行过程,三、程序PROTUES仿真与调试,org 0000hstart:clr p1.0 lcall delay setb p1.0 lcall delay ljmp startdelay:mov r5,#20D1:mov r6,#20D2:mov r7,248 djnz r7,$djnz r6,D2 djnz r5,D1 ret end,参考程序,org 0000h ljmp main1 org 0100h main1:setb p1.0 lcall delay cpl P1.0 lcall delay ljmp main1 org 0f00hdelay:mov R7,#10D0:mov R6,#100D1:mov R5,#200D2:djnz R5,D2 djnz R6,D1 djnz R7,D0 ret end,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号