《单片机系统设计与制作》-任务3_第1页
《单片机系统设计与制作》-任务3_第2页
《单片机系统设计与制作》-任务3_第3页
《单片机系统设计与制作》-任务3_第4页
《单片机系统设计与制作》-任务3_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务导入本任务通过单片机跑马灯的设计与制作,使学生进一步掌握单片机输入/输出(I/O)端口的控制方法,以及51单片机汇编语言的指令系统和程序设计方法;了解51单片机c语言程序设计的基本知识。与此同时,在设计电路并安装印制电路板(或万能板)、进行电路元器件安装、进行电路参数测试与调整的过程中,进一步锻炼学生印制板制作、焊接技术等技能;加深对。电子产品生产流程的认识。任务学习目标见表3.1.返回知识链接一、MCS-51单片机指令格式指令是指示计算机执行某种操作的命令。一台计算机所能执行的全部指令的集合称为这台计算机CPU的指令系统。指令系统的功能强弱在很大程度上决定了这台计算机性能的高低。由于计算机只能识别二进制数,因此用二进制编码表示的机器语言,计算机能直接执行。MCS-51单片机指令采用助记符表示的汇编语言指令格式如下。

〔标号:〕操作码操作数或操作数地址{;注释}①标号:是根据编码需要给指令设定的符号地址,可省略;下一页返回知识链接标号由1~8个字符组成,第一个字符必须是字母或下划线,不能是数字或其他,标号后必须用冒号。注意标号不能与汇编语言保留字重名。②操作码:表示指令的操作类型,即执行什么样的操作。不能省略,一定要有。③操作数:表示参加运算的数据或数据的有效地址。视指令的不同可以没有操作数,或只有1个,也可以有2个。④注释:对指令的解释说明,提高程序的可读性,之前必须加“;”号,为非执行语句。注意,书写指令时出现的所有标点符号均是英文半角状态下的符号,不能用中文标点符号。上一页下一页返回知识链接二、MCS-51单片机指令寻址方式所谓寻址方式,就是如何寻找存放操作数的地址,把操作数提取出来的方法。在汇编语言程序设计中,要根据系统的硬件环境编程,数据的存放、传送、运算都要通过汇编指令完成,汇编者必须自始至终都十分清楚操作数的位置(地址),以便将它们送到适当的地方(地址)去操作。在汇编语言中,操作数一般可以存放在寄存器中,或片内某一单元中。MCS-51单片机指令系统共使用了7种寻址方式:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。1.立即数寻址上一页下一页返回知识链接立即数寻址是指操作数直接包含在指令中,即数据以指令字节的形式存放于程序存储器中。执行这类指令时,操作码译码后就能立即在其后的单元中取得操作数。其寻址空间为程序存储器。

2.直接寻址直接寻址是指存放数据的地址直接写在指令中。其寻址空间是:内部RAM的低128字节(00H~7FH)和特殊功能寄存器SFR区(80H~FFH)。应当指出,直接寻址是访问特殊功能寄存器的唯一方法。

3.寄存器寻址寄存器寻址是指数据存放在给定的寄存器中。寄存器包括}工作寄存器R0~R7,累加器A、通用寄存器B、地址寄存器DPTR等。上一页下一页返回知识链接

4.寄存器间接寻址寄存器间接寻址是指存放数据的地址在寄存器中,指令中给出存放地址的寄存器。在指令执行时,首先根据寄存器的内容找到数据的地址,再由这个地址找到数据。注意:指令中给出的寄存器前必须加上“@”,以区别寄存器寻址,此时寄存器中的内容不是数据,而是数据所在存储元的地址。

5.变址寻址变址寻址是指将基址寄存器与变址寄存器的内容相加,其结果作为数据的地址。这类寻址方式主要用于查表操作。基址寄存器:16位的程序计数器PC或16位的数据指针DPTR。上一页下一页返回知识链接变址寄存器:8位的累加器A。

6.相对寻址相对寻址是指将程序计数器PC的当前值作为基准,与指令中给出的相对偏移量REL相加,其结果作为跳转指令的转移地址。这类寻址方式主要用于跳转指令。一般在指令中给出转移标号(地址),机器码中的偏移量在汇编时给出。写程序时不需要自己计算,只需写出转移标号就可以了。

7.位寻址位寻址是指按位进行寻址的方式。其数据是1位(bit),不同于以上所说的数据均为8位(byte)。上一页下一页返回知识链接存放位的地址可以是片内位寻址区域的位地址,或特殊功能寄存器中的部分位地址。在MCS-51单片机系统中,位地址的表示可以采用以下几种方式。①直接地址表示法。用地址位地址来表示。②点操作符表示法。用地址单元的某位表示。③位名称表示法。适用于有名称的特殊功能寄存器中的位。三、MCS-51单片机执行指令的过程单片机的工作过程就是执行程序的过程,也就是执行指令的过程。指令的执行分为取指令和执行指令两个阶段,所以单片机的工作过程就是周而复始地取指令和执行指令的过程。上一页下一页返回知识链接在取指令阶段,单片机从程序存储器中取出指令操作码,送入指令寄存器,再经指令译码器译码,产生一系列的控制信号,然后进入指令执行阶段,即利用指令译码产生的控制信号,进行本指令规定的数据操作。1.取指令单片机开机后,程序计数器PC=0000H,第一条指令的取指令阶段如下。①Pc中的0000H送到片内的地址寄存器中。②Pc的内容自动加1,变为0001H,指向下一个指令字节。上一页下一页返回知识链接③地址寄存器中的内容0000H通过内部地址总线送到存储器,经存储器中的地址译码选中0000H单元。④CPU通过控制内部总线发出读命令。⑤被选中单元的内容74H送入内部数据总线,该内容通过内部数据总线到达单片机内部的指令寄存器。⑥读出的操作码送入指令寄存器IR。⑦经指令译码器译码,发出执行本指令所需的控制信号。到此,第一条指令的取指令过程结束,进入执行指令过程。2.执行指令第一条指令执行阶段如下。上一页下一页返回知识链接①指令寄存器中的内容经指令译码后,把一个立即数送入A中。②Pc的内容为0001H,送入内部地址寄存器,译码选中0001H单元,同时PC的内容自动加1,变为0002H。③CPU同样通过控制总线发出读命令。④0001H的单元的内容OAH被读出,经内部数据总线送至A中。至此,第一条指令执行完毕,OAH被送入累加器A中。然后,单片机执行第二条指令的取指令操作,取出加法指令的操作码。在指令的执行阶段,取出数14H,与A中内容相加,并把相加结果保存到累计器中。程序执行完毕。上一页下一页返回知识链接四、MCS-51单片机指令系统MCS-51单片机指令系统共有111条指令。

1.数据传送指令数据传送指令主要完成数据的传送。数据传送指令的操作码助记符为MOV,MOVX,MOVC、XCH、XCHD、S1VAP、PUSH、POP等。这类指令除了直接用指令修改PSW内容外,均不影响程序状态标志位CY,AC,OV位,可能会影响到P标志位,视不同指令而定。数据传送操作是指把数据从源地址传送到目的地址,源地址的值不变。根据源操作数与目的操作地址的不同,可分为片内数据传送指令、片外数据传送指令、程序单元的数据传送等。上一页下一页返回知识链接

(1)8位数据传送指令1)以累加器A为目的的地址数据传送指令这组指令的功能是把源操作数的内容送入累加器A。源操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址等寻址方式。上一页下一页返回知识链接这组指令运行后改变累加器A的值,指令的运行结果影响程序状态寄存器PSW中的P标志位。2)以Rn为目的地址的数据传送指令这组指令的功能是把源操作数的内容送入当前工作寄存器R0~R7中的某一个寄存器。源操作数有寄存器寻址、直接寻址和立即数寻址等寻址方式。3)以直接地址为目的地址的传送指令上一页下一页返回知识链接这组指令的功能是把源操作数送入由直接地址指出的存储单元。源操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址等寻址方式。4)以寄存器间接地址为目的地址的传送指令上一页下一页返回知识链接这组指令的功能是把源操作数内容送入R0或R1指出的内部RAM存储单元中,源操作数有寄存器寻址、直接寻址和立即寻址等寻址方式。(2)16位数据传送指令16位数据传送指令格式为:上一页下一页返回知识链接这条指令的功能是把16位常数送入DPTR。16位的数据指针DPTR既可当作一个16位的寄存器使用,也可以分成两个8位寄存器DPH和DPL使用,DPH中存放DPTR中的高8位,DPL中存放DPTR中的低8位。(3)堆栈操作指令1)进栈指令该指令将,direct直接地址单元的内容送到堆栈区栈顶地址保存,同时修改栈顶指针SP。应当指出,这条指令的源操作数的寻址方式只能是直接寻址方式。上一页下一页返回知识链接2)出栈指令该指令是将堆栈区栈顶地址的内容取出放到,direct直接地址单元中,同时修改栈顶指针SP。(4)字节交换这组指令的功能是将累加器A的内容和源操作数内容互相交换。源操作数有寄存器寻址、直接寻址和寄存器间接寻址等寻址方式。上一页下一页返回知识链接这组指令结果影响程序状态寄存器PSW的P标志位。该指令将累加器A中的低4位与R1中的内容所指示的片内RAM单元中的低4位数据相互交换,其执行结果不影响程序状态寄存器PSW的标志位。

(5)片外数据传送指令1)外部RAM与累加器A之间的传送指令①外部RAM256字节单元与累加器A之间的数据传送如下。上一页下一页返回知识链接这组指令与P2配合应用也可以寻址64KB范围。②64KB外部RAM单元与累加器A之间的数据传送如下。这组指令也可以看作是外部I/O的输入/输出指令。2)程序存储器ROM与累加器A之间的传送指令上一页下一页返回知识链接

2.算术运算指令算术运算指令可以完成加、减、乘、除运算以及加1,减1和BCD码调整操作,指令助记符为ADD,ADDC,SUBB,MUL,DIV,INC,DEC,DA等。这类指令除加1,减1外的执行结果将影响程序状态字PSW中的CY,AC,OV位。由于奇偶校验位P始终跟随累加器A的内容变化,所以通常所说的被影响的标志位中不包含P位。3.逻辑运算指令逻辑运算指令包括逻辑与、逻辑或、逻辑异或、对累加器A清零、取反、移位等操作。上一页下一页返回知识链接指令助记符为ANL,ORL,XRL,RL,CPL,CLR等。逻辑运算指令只要改变累加器A的内容,都会改变PSW中P标志位。其他不影响标志位。MCS-51单片机的移位指令只能对累加器A进行移位,有不带进位的循环左右移位指令和带进位的循环左右移位指令,共4条。(1)循环左移指汇编指令格式:上一页下一页返回知识链接该指令是将累加器A的内容向左循环左移1位,原D0位的数移入D1位,D1位的数移入D2位,……,D6位的数移入D7位,最高位(D7位)的数移入最低位(D0位)。该指令不影响标志位。(2)带进位循环左移指令汇编指令格式:RLCA该指令是将累加器A的内容和进位标志一起循环向左移动1位,原D0位的数移入D1位,D1位的数移入D2位,……,D6位的数移入D7位,最高位(D7位)的数移入进位位CY,CY的数移入最低位D0。上一页下一页返回知识链接该指令结果影响程序状态寄存器PSW的P标志和进位标志CY,不影响其他标志位。(3)循环右移指令汇编指令格式:RRA该指令的功能是将累加器A的内容向右循环移动1位,原D7位的数移入D6位,D6位的数移入D5位,……,D1位的数移入D0位,最低位D0位的数移入最高位D7位。该指令不影响标志位。上一页下一页返回知识链接(4)带进位循环右移指令汇编指令格式:RRCA该指令的功能是将累加器A的内容和进位标志CY一起循环向右移动1位,最低位D0位的数移入进位位CY,CY位的数移入最高位D7,D7位的数移入D6位,D6位数移入D5位,……,D1位的数移入D0位。该指令结果影响程序状态寄存器PSI}%的P标志和进位标志位CY,不影响其他标志位。上一页下一页返回知识链接4.控制转移指令控制转移指令可以修改程序计数器的值,从而改变程序的执行方向。控制转移指令包括无条件转移指令、条件转移指令、子程序调用和返回指令,指令助记符为LJMP,AJMP,SJMP、JMP、ACALL、LCALL、JB、JNB、JC、JNC、Jz、JNz、CJNE、DJNZ、RET、RETI等。程序的顺序执行是由程序计数器PC自动加1实现的。要改变程序的执行顺序,实现分支转向,应通过强迫改变PC值的方法来实现,这就是控制转移类指令的基本功能。共有两类转移:无条件转移和条件转移。上一页下一页返回知识链接(1)无条件转移指令无条件转移指令是无条件地改变程序的执行方向。此操作可以改变PC的值,即将转移的目的地址赋值给PC,根据赋值的方式不同,分为以下4种。1)绝对转移指令AJMP指令的功能是构造程序转移的日的地址,实现程序转移。构造方法为:以指令提供的11位去替换PC的低11位的内容,其余高5位不变,形成新的PC值,此即转移的目的地址。上一页下一页返回知识链接即执行指令时,PC值先加2,然后把addrl1送入PC.10~PC.0,PC.15~PC.11保持不变,程序转移到目标地址。2)相对转移指令(短转移指令)SJMP是相对寻址方式转移指令,其中rel为相对偏移量,其功能是计算日的地址,并按计算得到的目的地址实现程序的相对转移。计算公式为:目的地址=PC+2+rel。相对偏移量rel是一个带符号的8位二进制补码数。相对跳转指令可以跳转到以当前指令为基准的256B范围内。在编写程序时,直接写上要转向的目标地址标号就可以。上一页下一页返回知识链接3)长跳转指令该指令执行后,把16位地址(adds16)送入PC,从而实现程序转移。该指令为3字节指令,3个字节依次存放操作码、PC的高8位地址和低8位地址。该指令执行后,PC将无条件地转向addrl6指示的目标地址。目标地址可以在64KB程序存储器地址空间的任何位置。4)间接转移指令(散转指令)该指令可以跳转到64KB范围内,指令的转移地址由DPTR和累加器的和决定。上一页下一页返回知识链接该指令一般可通过改变A的值使程序跳到不同的地址执行。以DPTR内容作为基址,A的内容作为变址,给A赋予不同的值,即可实现程序的多分支转移。

(2)条件转移指令所谓条件转移,就是程序转移是有条件的,当指令中规定的条件满足时,则进行程序转移,否则程序顺序执行。1)减1非零转移指令DJNZ寄存器减1条件转移指令。上一页下一页返回知识链接2)累加器A判零转移指令功能:若(A)=0,则转移,PC←(PC)+2+rel;若(A)≠0,则程序顺序执行。功能:若(A)≠0,则转移,PC←(PC)+2+rel;若(A)=0,则程序顺序执行。5.位操转移指令MCS-51单片机拥有位操作类指令,这是由于MCS-51单片机内含有一个位(布尔)处理器,它是以位为单位进行操作的,具有位处理功能。位操作指令可以完成位传送、位运算、位控制转移等功能。上一页下一页返回知识链接五、MCS-51单片机程序设计1.伪指令汇编语言程序的机器汇编是由计算机自动完成的。因此,在源程序中应有向汇编程序发出的指示信息,指示应该如何完成汇编工作。这一任务是通过伪指令来实现的。伪指令不是真正的汇编指令,无对应的机器码,在汇编时不产生目标代码(机器码),只是用来对汇编过程进行某种控制,比如控制汇编程序的输人/输出、定义数据和符号、条件汇编、分配存储空间等。本项目中用到的两个汇编伪指令为ORG和END。上一页下一页返回知识链接(1)ORG:汇编起始地址指令格式:16位地址功能:规定该伪指令后面程序的汇编地址,即汇编后生成目标存放的起始地址。(2)END:汇编结束指令格式:END;表示程序到此结束END为汇编语言源程序结束标志,用于整个汇编程序的末尾处,在编译时指明程序到此结束,停止编译,即在END之后所有的汇编语言指令均不予以汇编。一个源程序只能有一条END指令。2.程序设计步骤上一页下一页返回知识链接单片机程序设计的基本步骤如下。①分配存储空间、工作寄存器及有关端口地址。②画出程序流程图。程序流程图是用符号表示程序执行流程的框图。表示符号有以下几种,如图3.12所示。③编制汇编源程序。④仿真、调试和优化程序。⑤固化程序。3.程序的基本结构单片机程序根据程序的执行过程,一般分为顺序程序、分支程序、循环程序三种。上一页下一页返回知识链接(1)顺序程序顺序程序是最简单、最基本的程序结构,按指令(或语句)的排列顺序逐条执行,直到全部指令执行完毕为止。(2)分支程序分支程序是通过转移指令(或语句)对相应条件的判断改变程序的执行方向。有单分支、双分支、多分支等。(3)循环程序循环程序在执行时,根据某个条件的存在,使程序段重复执行,直到该条件消失为止。有单重循环和多重循环之分。4.子程序调用与返回指令上一页下一页返回知识链接在编写程序时经常会遇到需要反复多次执行的程序段,如果每次重复书写这些程序段,整个程序会变得冗长、杂乱、结构不清晰。可以将这些重复执行的程序段用子程序的形式表示,书写时只写一次,需要执行时调用即可。这样程序结构就变得简单清晰,阅读和修改程序都比较方便。子程序的调用与返回构成了子程序执行的完整过程,子程序的调用在主程序中使用,而返回指令为子程序的最后一条指令,保证子程序执行完后能回到主程序(断点处)继续执行。如图3.13所示。

(1)子程序调用指令上一页下一页返回知识链接子程序调用指令的主要任务是:将断点地址压入堆栈保护,断点地址是该子程序调用指令的下一条指令的首地址;将所调用的子程序的入口地址送到程序计数器PC中。子程序调用指令有2条。1)绝对调用指令上一页下一页返回知识链接此指令会使程序执行的顺序发生改变,因此在转到子程序执行之前,需先将断点地址保存在堆栈中,以便子程序能正常返回到断点处。所调用的子程序起始地址必须与ACALL指令的地址在同一个2KB区域的程序存储器中,否则无法转到。执行后不影响任何标志位。2)长调用指令

LCALL指令可以调用64KB范围内程序存储器中的任何一个子程序,执行过程与ACALL指令类似,执行后不影响任何标志位。上一页下一页返回知识链接(2)子程序返回指令返回指令的功能是从堆栈栈顶单元中取出断点,送给程序计数器PC,使程序从断点处继续执行。该指令执行结果不会影响程序状态寄存器PSW的标志位。六、51单片机的C语言简介51单片机的编程语言常用的有两种:一种是汇编语言,一种是c语言。1.数据类型标识符用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。上一页下一页返回知识链接C语言是大小字体敏感的一种高级语言,如果我们要定义一个定时器1,可以写作“Timer1”,如果程序中有“TIMERI”,那么这两个是定义完全不同的标识符。标识符由字符串、数字、下划线等组成,需要注意的是,第一个字符必须是字母或下划线,如“1Timer”是错误的,编译时便会有错误提示。有些编译系统专用的标识符是以下划线开头的,所以一般不要以下划线开头命名标识符。标识符在命名时应当简单、含义清晰,这样有助于阅读和理解程序。在C51编译器中,只支持标识符的前犯位为有效标识,一般情况下也足够用了。关键字则是编程语言保留的特殊标识符,它们具有固定名称和含义,在程序编写中不允许标识符与关键字相同。上一页下一页返回知识链接KeiluVision2C51编译器所支持的数据类型见表3.2.

(1)char字符类型char类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分无符号字符类型unsignedchar和有符号字符类型signedchar,默认值为signedcha:类型。unsignedchar类型用字节中所有的位来表示数值,可以表达的数值范围是0~255。signedchar类型用字节中最高位字节表示数据的符号,<,0”表示正数,“1”表示负数,负数用补码表示。所能表示的数值范围是-128~+127。unsignedchar常用于处理ASCII字符,也可用于处理小于或等于255的整型数。上一页下一页返回知识链接正数的补码与原码相同,负二进制数的补码等于它的绝对值按位取反后加1.(2)int整型int整型长度为两个字节,用于存放一个双字节数据。分有符号int整型数signedint和无符号整型数unsignedint,默认值为*ignedint类型。signedint表示的数值范围是-32768+32767,字节中最高位表示数据的符号,<,0”表示正数,"1”表示负数。unsignedint表示的数值范围是0~65535。

(3)long长整型long长整型长度为4个字节,用于存放一个4字节数据。上一页下一页返回知识链接分有符号long长整型signedlong和无符号长整型unsignedlong,默认值为signedlong类型。signedint表示的数值范围是-2147483648~+2147483647,字节中最高位表示数据的符号,“0”表示正数,“1”表示负数。unsignedlong表示的数值范围是0~4294967295。(4)float浮点型float浮点型在十进制中具有7位有效数字,是符合IEEE-754标准的单精度浮点型数据,占用4个字节。

(5)指针型指针型本身就是一个变量,在这个变量中存放指向另一个数据的地址。上一页下一页返回知识链接这个指针变量要占据一定的内存单元,对不同的处理器长度一也不尽相同,在C51中,它的长度一般为1~3个字节。

(6)bit位标量bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。(7)sfr特殊功能寄存器sfr也是一种扩充数据类型,只用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。上一页下一页返回知识链接(8)sfr1616位特殊功能寄存器sfr16占用两个内存单元,值域为0~65535。sfr16和sfr一样用于操作特殊功能寄存器,所不同的是,它用于操作占两个字节的寄存器,如定时器T0和T1.(9)sbit可寻址位sbit同样是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。2.常量常量是在程序运行过程中不能改变值的量,而变量是可以在程序运行过程中不断变化的量。上一页下一页返回知识链接变量的定义可以使用所有C51编译器支持的数据类型,而常量的数据类型只有整型、浮点型、字符型、字符串型和位标量。①整型常量可以表示为十进制②浮点型常量可分为十进制和指数表示形式。③字符型常量是单引号内的字符.常用转义字符表见表3.3。④字符串型常量由双引号内字符组成。⑤位标量,它的值是一个二进制。常量可用在不必改变值的场合,如固定的数据表、字库等。3.变量上一页下一页返回知识链接定义一个变量的格式如下:在定义格式中,除了数据类型和变量名表是必要的,其他都是可选项。存储种类有四种:自动(auto)、外部(exter)、静态(static)和寄存器(register),缺省类型为自动(auto)。而这里的数据类型则是和前面学习到的各种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确地定位。KeiluVision2所能识别的存储器类型见表3.4。上一页下一页返回知识链接如果省略存储器类型,系统则会按编译模式SMALL,COMPACT或LARGE所规定的默认存储器类型去指定变量的存储区域。SMALL存储模式把所有函数变量和局部数据段放在8051系统的内部数据存储区,这使访问数据非常快,但SMALL存储模式的地址空间受限。在写小型的应用程序时,变量和数据放在data内部数据存储器中是很好的,因为访问速度快;但在较大的应用程序中,data区最好只存放小的变量、数据或常用的变量(如循环计数、数据索引),而大的数据则放置在别的存储区域。COMPACT存储模式中所有的函数、程序变量以及局部数据段定位在8051系统的外部数据存储区。外部数据存储区最多可有256B(一页),在本模式中,外部数据存储区的短地址用@RO/R1。上一页下一页返回知识链接LARGE存储模式所有函数和过程的变量和局部数据段都定位在8051系统的外部数据区。外部数据区最多可有64KB,要求用DPTR数据指针访问数据。之前简单提到sfr,sfr16,sbit定义变量的方法,下面再来仔细看看sfr和sfr16直接对51单片机的特殊寄存器进行定义,定义方法如下:sfr特殊功能寄存器名=特殊功能寄存器地址常数;sfr16特殊功能寄存器名=特殊功能寄存器地址常数。4.运算符和表达式上面讲了常量和变量,此处先来补充一个用以重新定义数据类型的语句,即typedef。上一页下一页返回知识链接这是个很好用的语句,但却不常用它。通常定义变量的数据类型时都是使用标准的关键字,这样可以很方便地研读程序。若对变量的定义习惯了DELPHI的关键字,如int类型常会用关键字Inteter来定义,在用C51时可以这样写:使用typedef可以方便程序的移植和简化较长的数据类型定义。运算符就是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目运算符、双目运算符和三目运算符。单目就是指需要一个运算对象,双目就要求两个运算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式子。C是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。上一页下一页返回知识链接(1)赋值运算符使用“=”的赋值语句格式如下:(2)算术运算符+加或取正值运算符-减或取负值运算符*乘运算符/除运算符%取余运算符算术表达式的形式:上一页下一页返回知识链接表达式1算术运算符表达式2除法运算符和一般的算术运算规则有所不同。若是两浮点数相除,其结果为浮点数,如10.0/20.0所得值为0.5。而两个整数相除时,所得值就是整数,如7/3,值为2。像别的语言一样,C语言的运算符也有优先级和结合性,同样可用括号“()”来改变优先级。上一页返回任务实施一、任务分析本任务要求在单片机最小系统的基础上控制8个LED闪烁发光,8个LED连接在PO端口上,LED阴极指向P0口,阳极通过限流电阻接+5V,使8个LED从左到右循环滚动点亮,时间间隔为0.2s,产生跑马灯效果。用Keil,Proteus等作开发工具,进行仿真,并在一块万能板或PCB上制作分立元件电路,如图3.15所示。下载程序并测试好,最后需完成项目报告。

1.总体方案设计单片机控制8个LED跑马灯的电路主要包括单片机最小系统和8个LED灯。单片机控制8个LED闪烁灯方框图如图3.16所示。下一页返回任务实施

2.硬件电路设计由AT89C51单片机、时钟电路、复位电路构成一个基本的单片机系统,再在外部I/O引脚口上连接LED和限流电阻,就构成了流水灯控制器的硬件电路。原理图如图3.17所示。①复位电路采用“上电复位”复位方式。②时钟电路以12MHz的频率向单片机提供振荡脉冲,保证单片机以规定的频率运行。③接Vcc:(高电平)表示选择使用从单片机内部OOOOH~OFFFH到外部1000H~FFFFH这一区域的ROM。④8个LED连接到单片机的P1口,共阳接法用D1~D8这8个LED灯指示出对应的P1.0~P1.7脚口的高低位状态,上一页下一页返回任务实施LED亮表示对应的口输出低电平,LED灭表示对应的口输出高电平。3.软件设计(1)程序流程图跑马灯程序流程图如图3.18所示。(2)汇编源程序上一页下一页返回任务实施(3)C语言源程序上一页下一页返回任务实施上一页下一页返回任务实施4.电路仿真利用Proteus仿真软件对系统进行电路仿真,仿真结果如图3.19所示。P0端口上的8个LED灯从左到右循环滚动点亮,时间间隔为0.2s,产生跑马灯效果。二、安装与调试1.任务所需设备、工具、材料任务所需设备、工具、材料见表3.5。2.系统安装参照原理图和装配图,具体安装步骤如下。①检查元器件质量。上一页下一页返回任务实施②在万能板(或PCB板)上焊接好元器件。③检查焊接电路。④用编程器将.hex文件烧写至单片机。⑤将单片机插入IC座。

3.系统调试

(1)硬件调试硬件调试是系统的基础,只有硬件能够全部正常工作后,才能在以此为基础的平台上加载软件,从而实现系统功能。电源部分提供整个电路所需电压(包括AT89C51所需的稳压电源+5v),由电源变压器、整流滤波电路及两个辅助稳压输出构成。上一页下一页返回任务实施电源变压器的功率由需要输出的电流大小决定,确保有充足的功率余量。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论