单片机应用技术项目教程(C语言版)-项目二 LED循环点亮.ppt_第1页
单片机应用技术项目教程(C语言版)-项目二 LED循环点亮.ppt_第2页
单片机应用技术项目教程(C语言版)-项目二 LED循环点亮.ppt_第3页
单片机应用技术项目教程(C语言版)-项目二 LED循环点亮.ppt_第4页
单片机应用技术项目教程(C语言版)-项目二 LED循环点亮.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

LED循环点亮,教学目的,掌握P0、P1、P2和P3功能及应用技能;掌握内部数据存储器的地址分配及特殊功能寄存器;掌握C语言数据类型、常量和变量;会利用单片机I/O口实现开关控制LED循环点亮和步进电机控制。,LED控制电路,控制八只发光二极管按一定的规律循环点亮,工作过程,P1口接发光二极管(LED)的阴极,P1口的管脚输出低电平时对应的发光二极管点亮。问题:LED采用的是共阴极接法还是共阳极接法?为什么P1口的管脚输出低电平,对应的发光二极管点亮?通过程序按一定的规律向P1口的管脚输出低电平和高电平,控制八只发光二极管循环点亮。问题:程序怎么使P1口的管脚循环输出低电平和高电平?,LED循环点亮功能实现分析,由于LED循环点亮电路的LED是采用共阳极接法,这样我们就可以通过“0”和“1”来控制LED的亮和灭。例如:在P1口输出十六进制数0 xfe(二进制11111110B),D1被点亮。LED循环点亮功能实现过程如下:8个LED全灭,控制码为0 xff;D1点亮,P1口输出0 xfe,取反为0 x01(二进制00000001B),初始控制码为0 x01;D2点亮,P1口输出0 xfd,取反为0 x02(二进制00000010B),控制码为0 x02;D3点亮,P1口输出0 xfb,取反为0 x04(二进制00000100B),控制码为0 x04;D8点亮,P1口输出0 x7f,取反为0 x80(二进制10000000B),控制码为0 x80;重复第二步,这样就可以实现LED循环点亮。,LED控制程序(C语言),Voidmain()unsignedchari;unsignedchartemp;P1=0 xff;/十六进制全1,熄灭所有LEDwhile(1)temp=0 x01;/第一位为1for(i=0;i8;i+)P1=temp;/temp值取反送P1口Delay();temp=temp1;/temp值左移一位,思考,如何改变循环点亮的方向?,并行I/O端口电路,单片机有4组8位并行I/O端口,称为P0口、P1口、P2口和P3口;每个端口都各有8条I/O口线,每条I/O口线都能独立地用作输入或输出;P0口负载能力为8个TTL门电路,P1口、P2口和P3口负载能力为4个TTL门电路;归入特殊功能寄存器之列,具有字节寻址和位寻址功能。,P0口的结构,由1个数据输出锁存器(D触发器)、2个三态数据输入缓冲器、1个输出控制电路和1个输出驱动电路组成。输出控制电路由1个转换开关MUX、1个与门及1个非门组成;输出驱动电路由一对场效应管(V1和V2)组成,其工作状态受输出控制端的控制。P0口有两种功能通用I/O口地址/数据分时复用总线,P0口作通用I/O口使用,作为通用的I/O口使用时,内部的控制信号为低电平,封锁与门,将输出驱动电路的上拉场效应管(V1)截止,同时使多路转接电路MUX接通锁存器Q端的输出通路。,注意,当P0口进行一般的I/O输出时,由于输出电路是漏极开路电路,因此必须外接上拉电阻才能有高电平输出;当P0口进行一般的I/O输入时,必须先向电路中的锁存器写入“1”,使场效应管(V2)截止,以避免锁存器为“0”状态时对引脚读入的干扰,因为如果V2管是导通的,不论P0.X引脚上的状态如何,输入都会是低电平,将导致输入错误。,P0口作地址/数据分时复用总线使用,当输出地址或数据时,由内部发出控制信号,打开上面的与门,并使多路转接电路MUX将内部地址/数据线与驱动场效应管(V2)接通。若地址/数据线为1,则V1导通,V2截止,P0口输出为1;反之V1截止,V2导通,P0口输出为0。而当输入数据时,读引脚使三态数据输入缓冲器打开,数据信号则直接从引脚通过数据输入缓冲器进入内部总线。,P1口的结构,P1口通常作为通用I/O口使用的,在电路结构上与P0口有一些不同之处:首先它不再需要多路转接电路MUX;其次是电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。,P1口工作过程,当作为输出口时,1写入锁存器,Q(非)=0,场效应管截止,内部上拉电阻将电位拉至“1”,此时该口输出为1,当0写入锁存器,Q(非)=1,场效应管导通,输出则为0。当作为输入口时,必须先向锁存器写1,Q(非)=0,场效应管截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平。,P2口的结构,它由一个数据输出锁存器(D触发器)、两个三态数据输入缓冲器、一个转换开关MUX、一个数据输出驱动电路和控制电路组成。,P3口,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。,【技能训练2-1】P0口外接上拉电阻,本电路设计和模块三LED循环点亮电路基本一样,差别是:使用了排阻、P0口接LED的阴极以及在P0口和LED阴极之间外接了上拉电阻,排阻,八个电阻的功能是完全一样的,加工到一个器件里面,这个器件通常称之为排阻。为了在电路板上占很小的地方,方便安装和生产,在电路设计时常常选择排阻。PR1和PR2都是排阻,阻值分别为4.7K*8和220*8。PR1排阻是上拉电阻,其功能是在这个引脚没有信号的时候,起到电位上拉的作用。PR2和普通的电阻用途没有任何不同,在这里面起到限流作用,使通过LED的电流被限制在十几个毫安左右。,AT89C51内存空间,内部程序存储器(FLASH)4K字节外部程序存储器(ROM)64K字节内部数据存储器(RAM)256字节外部数据存储器(RAM)64K字节,低128个字节,寄存器区(单元地址为00H1FH)共有4组寄存器,每组8个寄存单元,各组都以R0R7作寄存单元编号。位寻址区(单元地址为20H2FH)既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作。用户区(单元地址为30H7FH)供用户使用的一般RAM区,没有任何规定或限制,一般应用中常把堆栈开辟在此区中。,高128个字节,高128单元是供给专用寄存器使用的,也称为特殊功能寄存器,单元地址为80HFFH。,特殊功能寄存器位地址空间,复位后内部各寄存器的数据值,PSW程序状态字,用于存放程序运行中的各种状态信息。CY(PSW.7):高位进位标志位。常用“C”表示。AC(PSW.6):辅助进位标志位。F0(PSW.5):用户标志位。RS1(PSW.4):寄存器组选择位1。RS0(PSW.3):寄存器组选择位0。OV(PSW.2):溢出标志位。(PSW.1):保留位,无定义。P(PSW.0):奇偶校验位,若累加器(A)中的“1”的位个数是奇数个则P1,偶数个则P0。,寄存器组的选择,ACC累加器,8位寄存器,是最常用的专用寄存器,功能较多,地位重要。既可用于存放操作数,也可用来存放运算的中间结果。MCS-51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。,B寄存器,B寄存器是一个8位寄存器,主要用于乘除运算。乘法运算时,B存乘数。乘法操作后,乘积的高8位存于B中。除法运算时,B存除数。除法操作后,余数存于B中。此外,B寄存器也可作为一般数据寄存器使用。,PC程序计数器,作用是控制程序的执行顺序。其内容为将要执行指令的地址,寻址范围达64KB。PC有自动加1功能,从而实现程序的顺序执行。PC没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。地址不在SFR(专用寄存器)之内,一般不计作专用寄存器。,DPTR数据指针,数据指针为16位寄存器。编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即:DPH:DPTR高位字节DPLDPTR低位字节,SP堆栈指针,堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。问题:复位后,SP的值是多少?为什么,堆栈通常设在用户区(30H7FH)?,中断源向量地址,“头文件包含”处理,所谓“头文件”是指一个文件将另外一个文件的内容全部包含进来。头文件一般在C:KELLC51INC下,INC文件夹里面有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。在单片机中用C语言编程时,往往第一行就是头文件或者其它的自定义头文件。特殊功能寄存器在AT89X52.H中定义符号P1_0表示P1.0引脚,程序存储器,程序存储器是用于存放用户程序、数据和表格等。它是以程序计数器PC作为地址指针,MCS-51的程序计数器PC是16位的,所以MCS-51具有64KB程序存储器寻址空间。对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地,强制CPU从外部程序存储器读取程序。对于内部有ROM的单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。,MCS-51ROM配置图,当EA=1时,程序从内部ROM开始执行,当PC值超过内部ROM容量时会自动转向外部ROM空间。当EA=0时,程序从外部存储器开始执行。51子系列ROM配置图52子系列ROM配置图,具有特殊功能的地址,启动地址单片机启动复位后,程序计数器的内容为0000H,所以系统必须从0000H单元开始执行程序。因而0000H是启动地址,也称为系统程序的复位入口地址。中断服务程序入口地址是专门用于存放中断服务程序的地址单元,中断响应后,按中断的类型,自动转到各自的入口地址去执行程序。,工作模块4开关控制LED循环点亮,用P3.0作输入接开关SW,P1口作输出接8个LED,通过开关SW控制LED循环点亮。开关SW打开,LED循环点亮,开关SW合上,LED停止循环点亮。,开关控制LED循环点亮程序,#include/包含AT89X52.H头文件sbitSW=P30;/定义SW是P3.0位对应的变量名voidmain()unsignedchari;unsignedchartemp;P1=0 xff;/十六进制全1,熄灭所有LEDwhile(1)temp=0 x01;/第一位为1for(i=0;i8;i+)while(SW!=0);P1=temp;/temp值取反送P1口Delay();temp=temp0;delay-)for(i=0;i124;i+);,voidmain()while(1)P1=0 x03;/A、B绕组励磁mDelay(50);P1=0 x06;/B、C绕组励磁mDelay(50);P1=0 x0C;/C、D绕组励磁mDelay(50);P1=0 x09;/D、A绕组励磁mDelay(50);,技能拓展ULN2003A驱动器应用,在电子电路应用上,大多要求具有大电流输出的能力,以便驱动各种类型的负载,驱动电路是电子设备输出电路中一个重要的组成部分。在大型仪器系统中,经常要用到伺服马达、步进马达、各种电磁阀等驱动电压高和功率较大的组件。因此,像这种ULN2000和ULN2800等高电压、大电流的达灵顿晶体管数组的产品就被开发出来,从而控制大功率组件。由于这类组件功能强大、应用范围广。UN2000系列能够同时驱动7组负载,向ULN2800系列则能够同时驱动8组负载。,ULN2003A特点,一般市面上较为常见的是ULN2003A。ULN2003A组件是一个高电压、大电流的达灵顿对数组,其中包含7个具备共射极的开集极达灵顿对。ULN2003A具有以下特点:电流增益高(大于1000mA);带负载能力强(输出电流大干500mA);温度范围宽(-40o85o);工作电压高(大于50V)。,ULN2003A

温馨提示

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

评论

0/150

提交评论