单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二 LED循环点亮

上传人:E**** 文档编号:89409611 上传时间:2019-05-24 格式:PPT 页数:66 大小:985KB
返回 下载 相关 举报
单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二  LED循环点亮_第1页
第1页 / 共66页
单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二  LED循环点亮_第2页
第2页 / 共66页
单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二  LED循环点亮_第3页
第3页 / 共66页
单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二  LED循环点亮_第4页
第4页 / 共66页
单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二  LED循环点亮_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二 LED循环点亮》由会员分享,可在线阅读,更多相关《单片机应用技术项目教程(C语言版)-电子教案-素材资源 电子课件 02.项目二 LED循环点亮(66页珍藏版)》请在金锄头文库上搜索。

1、项目二 LED循环点亮,教学目的,掌握P0、P1、P2和P3功能及应用技能; 掌握内部数据存储器的地址分配及特殊功能寄存器; 掌握C语言数据类型、常量和变量; 会利用单片机I/O口实现开关控制LED循环点亮和步进电机控制。,LED控制电路,控制八只发光二极管按一定的规律循环点亮,工作过程,P1口接发光二极管(LED)的阴极,P1口的管脚输出低电平时对应的发光二极管点亮。 问题: LED采用的是共阴极接法还是共阳极接法? 为什么P1口的管脚输出低电平,对应的发光二极管点亮? 通过程序按一定的规律向P1口的管脚输出低电平和高电平,控制八只发光二极管循环点亮。 问题: 程序怎么使P1口的管脚循环输出

2、低电平和高电平?,LED循环点亮功能实现分析,由于LED循环点亮电路的LED是采用共阳极接法,这样我们就可以通过“0”和“1”来控制LED的亮和灭。 例如:在P1口输出十六进制数0xfe(二进制11111110B),D1被点亮。 LED循环点亮功能实现过程如下: 8个LED全灭,控制码为0xff; D1点亮,P1口输出0xfe,取反为0x01(二进制00000001B),初始控制码为0x01; D2点亮,P1口输出0xfd,取反为0x02(二进制00000010B), 控制码为0x02; D3点亮,P1口输出0xfb,取反为0x04(二进制00000100B), 控制码为0x04; D8点亮,

3、P1口输出0x7f,取反为0x80(二进制10000000B), 控制码为0x80; 重复第二步,这样就可以实现LED循环点亮。,LED控制程序(C语言),Void main() unsigned char i; unsigned char temp; P1 = 0xff; /十六进制全1,熄灭所有LED while(1) temp = 0x01; /第一位为1 for (i=0;i8;i+) P1 = temp; /temp值取反送P1口 Delay(); temp = temp 1 ; /temp值左移一位 ,思 考,如何改变循环点亮的方向?,并行I/O端口电路,单片机有4组8位并行I/O

4、端口,称为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口使用,作为通用的

5、I/O口使用时,内部的控制信号为低电平,封锁与门,将输出驱动电路的上拉场效应管(V1)截止,同时使多路转接电路MUX接通锁存器Q端的输出通路。,注意,当P0口进行一般的I/O输出时,由于输出电路是漏极开路电路,因此必须外接上拉电阻才能有高电平输出; 当P0口进行一般的I/O输入时,必须先向电路中的锁存器写入“1”,使场效应管(V2)截止,以避免锁存器为“0”状态时对引脚读入的干扰,因为如果V2管是导通的,不论P0.X引脚上的状态如何,输入都会是低电平,将导致输入错误。,P0口作地址/数据分时复用总线使用,当输出地址或数据时,由内部发出控制信号,打开上面的与门,并使多路转接电路MUX将内部地址/

6、数据线与驱动场效应管(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。

7、当作为输入口时,必须先向锁存器写1,Q(非)=0,场效应管截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平。,P2口的结构,它由一个数据输出锁存器(D触发器)、两个三态数据输入缓冲器、一个转换开关MUX、一个数据输出驱动电路和控制电路组成。,P3口,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。 当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。,【技能训练2-1】P0口外接上拉电阻,本电路设计和模块三LED循环点亮电路基本一样,差别是:使用了排阻、P0

8、口接LED的阴极以及在P0口和LED阴极之间外接了上拉电阻,排阻,八个电阻的功能是完全一样的,加工到一个器件里面,这个器件通常称之为排阻。为了在电路板上占很小的地方,方便安装和生产,在电路设计时常常选择排阻。 PR1和PR2都是排阻,阻值分别为4.7K*8和220*8。PR1排阻是上拉电阻,其功能是在这个引脚没有信号的时候,起到电位上拉的作用。PR2和普通的电阻用途没有任何不同,在这里面起到限流作用,使通过LED的电流被限制在十几个毫安左右。,AT89C51 内存空间,内部程序存储器(FLASH)4K 字节 外部程序存储器(ROM )64K 字节 内部数据存储器(RAM )256 字节 外部数

9、据存储器(RAM )64K 字节,低128 个字节,寄存器区(单元地址为00H1FH) 共有4组寄存器,每组8个寄存单元,各组都以R0R7作寄存单元编号。 位寻址区(单元地址为20H2FH) 既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作。 用户区(单元地址为30H7FH) 供用户使用的一般RAM区,没有任何规定或限制,一般应用中常把堆栈开辟在此区中。,高128 个字节,高128单元是供给专用寄存器使用的,也称为特殊功能寄存器,单元地址为80HFFH。,特殊功能寄存器位地址空间,复位后内部各寄存器的数据值,PSW程序状态字,用于存放程序运行中的各种状态信息。 CY (

10、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单片机中大部分单操作数指令的操作数就取自累加器,许多双操

11、作数指令中的一个操作数也取自累加器。,B寄存器,B寄存器是一个8位寄存器,主要用于乘除运算。 乘法运算时,B存乘数。乘法操作后,乘积的高8位存于B中。 除法运算时,B存除数。除法操作后,余数存于B中。 此外,B寄存器也可作为一般数据寄存器使用。,PC程序计数器,作用是控制程序的执行顺序。 其内容为将要执行指令的地址,寻址范围达64 KB。 PC有自动加1功能,从而实现程序的顺序执行。 PC没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。 地址不在SFR(专用寄存器)之内,一般不计作专用寄存器。,DPTR 数据指针,数据指针为16位

12、寄存器。 编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即: DPH: DPTR高位字节 DPL DPTR低位字节,SP堆栈指针,堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。 堆栈共有两种操作:进栈和出栈。 问题:复位后,SP的值是多少? 为什么,堆栈通常设在用户区(30H7FH)?,中断源向量地址,“头文件包含”处理,所谓“头文件”是指一个文件将另外一个文件的内容全部包含进来。 头文件一般在C:KELLC51INC下,INC文件夹里面有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。 在单片机中用C语

13、言编程时,往往第一行就是头文件或者其它的自定义头文件。 特殊功能寄存器在AT89X52.H中定义 符号 P1_0 表示 P1.0 引脚,程序存储器,程序存储器是用于存放用户程序、数据和表格等。它是以程序计数器PC作为地址指针,MCS-51的程序计数器PC是16位的,所以MCS-51具有64KB程序存储器寻址空间。 对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地,强制CPU从外部程序存储器读取程序。 对于内部有ROM的单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序

14、存储器读取程序。,MCS-51ROM配置图,当EA=1时,程序从内部ROM开始执行,当PC值超过内部ROM容量时会自动转向外部ROM空间。 当EA=0时,程序从外部存储器开始执行。 51子系列ROM配置图 52子系列ROM配置图,具有特殊功能的地址,启动地址 单片机启动复位后,程序计数器的内容为0000H,所以系统必须从0000H单元开始执行程序。因而0000H是启动地址,也称为系统程序的复位入口地址。 中断服务程序入口地址 是专门用于存放中断服务程序的地址单元,中断响应后,按中断的类型,自动转到各自的入口地址去执行程序。,工作模块4 开关控制LED循环点亮,用P3.0作输入接开关SW,P1口

15、作输出接8个LED,通过开关SW控制LED循环点亮。开关SW打开,LED循环点亮,开关SW合上,LED停止循环点亮。,开关控制LED循环点亮程序,#include /包含AT89X52.H头文件 sbit SW=P30; /定义SW是P3.0位对应的变量名 void main() unsigned char i; unsigned char temp; P1 = 0xff; /十六进制全1,熄灭所有LED while(1) temp = 0x01; /第一位为1 for (i=0;i8;i+) while(SW!=0); P1 = temp; /temp值取反送P1口 Delay(); tem

16、p = temp 1 ; /temp值左移一位 ,C51数据类型,C51定义了标准C语言的所有数据类型; 同时对标准C语言进行了扩展,更加注意对系统资源的合理利用,如表所示。,C51基本数据类型,char字符类型 长度是一个字节(8位) int整型 长度为两个字节(16位) long长整型 长度为四个字节(32位) float浮点型 长度为四个字节(32位) * 指针型 指针型本身就是一个变量,在这个变量中存放的是指向另一个数据的地址。 这个指针变量要占据一定的内存单元,在C51中它的长度一般为13个字节。,C51扩展的数据类型,bit位变量 sfr特殊功能寄存器 sfr16 16位特殊功能寄存器 sbit可寻址位,bit位变量,bit位变量可以将与MCS-51硬件特性操作有关的定义成位变量。位变量必须定位在MCS-51单片机内部RAM的位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号