项目4单片机控制LED灯的设计

上传人:huo****ian 文档编号:253087264 上传时间:2024-11-28 格式:PPT 页数:40 大小:2.23MB
返回 下载 相关 举报
项目4单片机控制LED灯的设计_第1页
第1页 / 共40页
项目4单片机控制LED灯的设计_第2页
第2页 / 共40页
项目4单片机控制LED灯的设计_第3页
第3页 / 共40页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,电子工业出版社,单片机控制技术,项目式教程 (C语言版),电子工业出版社,项目,4,单片机控制,LED,灯的设计,能了解,51,单片机,I/O,口的结构;,能掌握,51,单片机,I/O,口的特点及应用;,能掌握,51,单片机控制,LED,灯的硬件设计方法;,能熟练编写单片机控制,LED,灯闪烁的程序。,学习目标,工作任务,叙述,51,单片机,I/O,口的结构和特点;,设计单片机控制单个,LED,灯闪烁的电路和工作软件;,设计单片机控制多个循环,LED,灯的电路和工作软件。,任务,4.1,单片机控制单个,LED,灯,任务,4.2,单片机控制多个循环,LED,灯,项目拓展 实验板彩灯的花式控制,项目小结,思考与训练,项目,4,单片机控制,LED,灯的设计,任务,4.1,单片机控制单个,LED,灯,4.1.1 MCS-51,单片机的,I/O,口介绍,MCS-51,系列单片机有,4,个,8,位的并行,I/O,接口:,P0,、,P1,、,P2,和,P3,口。它们是特殊功能寄存器中的,4,个。这,4,个口,既可以作输入,也可以作输出,既可按,8,位处理,也可按位方式使用。输出时具有锁存能力,输入时具有缓冲功能。,1,P0,口,P0,口是一个三态双向口,包括一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成,,它的一位结构如图:,输出驱动器,控制电路,P0,口功能,1,、,通用,I,O,接口,:,不需要外部扩展时,,内部控制信号将使,MUX,开关接通到锁存器。此时,由于,P0,口没有内部上拉电阻,通常要在外部加一个上拉电阻来提高驱动能力。,2,、,地址,/,数据分时复用:,需要进行外部扩展时,,内部控制信号将使,MUX,开关接通到内部地址数据线。此时,,P0,口在,ALE,信号的控制下,,分时输出低,8,位地址和,8,位数据信号。,P0,口的工作原理,(,1,)通用,I/O,口,用作输入口(端口外数据 内部寄存器),方式1(读锁存器):,Q,缓冲器,2 D,内部总线,适于“读修改写”,方式2(读引脚):,P0.x,缓冲器,1 D,内部总线。,作为通用,I/O,使用,是一个准双向口:,“在输入数据时应先把口置1,,使,V1,、,V2,都截止,引脚处于悬浮状态,可作高阻抗输入”,用作输出口(片内数据 端口),数据 锁存,MUX P0.x,(,2,)地址/数据总线口,输出:,地址/数据为1,,P0 x,高,地址/数据为0,,P0 x,低,输入:,经缓冲器,1,读入,(,1,),P0,口既可作地址,/,数据总线使用,也可作通用,I/O,口使用。当,P0,口作地址,/,数据总线使用时,就不能再作通用,I/O,口使用了。,(,2,),P0,口作输出口使用时,输出级属漏极开路,,必须外接上拉电阻,,才有高电平输出。,(,3,),P0,口作,输入,口读引脚时,,应先向锁存器写,1,,使,V1,、,V2,截止,不影响输入电平。,P0,口特点,2.P1,口,P1,口是准双向口,它只能作通用,I/O,接口使用。结构与,P0,口不同,,它的输出只由一个场效应管,V1,与内部上拉电阻组成。,(,1,),P1,口是,唯一,的单功能口,仅能作为通用,I/O,口使用。因在其输出端接有上拉电阻,可以直接输出而无需外接上拉电阻。,(,2,)同,P0,口一样,当作输入口时,必须先向锁存器写“,1”,,使场效应管,V1,截止。,P1,口特点,3.P2,口,P2,口也是准双向口,它有两种用途:通用,I/O,接口和高,8,位地址线。,P2,口作,I/O,端口使用时:,内部控制信号使,MUX,开关接通到锁存器,此时,P2,口的用法与,P1,口相同。,P2,口作外部地址总线使用时:,内部控制信号使,MUX,开关接通到内部地址线,此时,P2,口的引脚状态由所输出的地址决定。,需要特别指出的是,由于对片外地址的操作是连续不断的,只要进行了外部系统扩展,此时,P0,口和,P2,口就不能再用作,I/O,端口了。,4.P3,口,P3,口用作通用,I/O,口时,其工作原理同,P1,口类似。,此外,它的每一根线还具有第二种功能。,在真正的应用电路中,,P3,口的第二功能显得更为重要。,4.1.2 单片机控制单个LED灯闪烁的设计,1,任务要求,设计一个电路,,AT89C52,单片机的,P1.7,引脚连接一个,LED,灯,控制,LED,闪烁。,2,任务分析,以单片机为核心的电子设计,硬件设计,软件设计,单片机最小系统加上最简单的输出电路来驱动,LED,编程控制,P1.7,引脚的电平状态,使其持续一段时间的高电平,再持续一段时间的低电平,3,任务设计,(,1,)器件的,选择,发光二极管,发光二极管:单向导电性,通过,5mA,左右电流即可发光,电流越大,亮度越强,但若电流过大会烧毁二极管,一般控制在,3,20mA,。,工作电压:,红色发光二极管,1.7-2.5V,绿色发光二极管,2.0-2.4V,黄色发光二极管,1.9-2.4V,蓝,/,白色发光二极管,3.0-3.8V,限流电阻,二极管串联电阻的目的是为了防止发光二极管和,P1.7,引脚流过的电流过大,烧毁二极管或单片机,所以该电阻也称为“限流电阻”。,限流电阻的选择:,假设电源电压为,VCC,,发光二极管的导通压降为,VDD,,导通时流过二极管的电流为,I,,则限流电阻,R,为:,R=(VCC-VDD)/I,例如,若二极管的导通压降为,2.2V,,导通时流过的电流为,5mA,,则限流电阻为,560,。,器件清单,器件名称,数量(只),AT89C52,1,12MHz,晶体,1,22pF,瓷片电容,2,22uF,电解电容,1,10k,电阻,1,560,电阻,1,发光二极管,LED,1,(,2,)硬件原理图设计,再次强调:,图中的单片机元件没有“,VCC”,和“,GND”,引脚,这是因为,Proteus,软件中,元件模型中的“电源”和“地”已经进行了连接,“,VCC”,接到了“,+5V”,电源,“,GND”,接到了“地”,所以隐藏了这两个引脚。,(,3,)软件程序设计,#include,/,宏定义,sbit led=P17;,/,用,sbit,关键字定义,P1.7,引脚,/,延时子函数,void Delay(unsigned int t),while(-t);,/,主函数,控制,P1.7,引脚的,LED,灯闪烁,void main(void),while(1),/,主循环,led=0;,/,将,P1.7,引脚置,0,,对外输出低电平,Delay(20000);,/,调用延时程序,led=1;,/,将,P1.7,引脚置,1,,对外输出高电平,Delay(20000);,/,调用延时程序,在软件编程中,通常使用空循环来达到延时的效果。延时时间的长短可以在,Keil,C51,的调试状态下分析。,(,4,)软硬件联合调试,1,任务要求,设计一个电路,,AT89C52,单片机的,P1,口连接,8,只,LED,灯,按以下顺序点亮,形成流水灯的效果:,从,P1.0,到,P1.7,连接的,8,只,LED,灯逐个点亮;,从,P1.0,到,P1.7,连接的,8,只,LED,依次全部点亮;,从,P1.7,到,P1.0,连接的,8,只,LED,灯逐个点亮;,从,P1.7,到,P1.0,连接的,8,只,LED,依次全部点亮。,任务4.2 单片机控制多个LED灯,2,任务分析,任务要求单片机控制,8,个,LED,灯,当需要对某个,I/O,口的八位一起操作时,一般采用整体操作的方式,即总线的方式。在软件设计时可以定义一个变量来给,P1,口赋值,赋的值不同点亮的,LED,灯不同。由于,8,只,LED,灯要按一定规律点亮,这就要求对给,P1,口赋的变量进行移位,,,移位操作既可以用标准,C,中的左移、右移运算符来实现,也可以用,C51,库自带的函数来实现。,移位运算符,循环移位函数,注意,:循环移位函数,_crol_(),和,_cror_(),包含在,intrins.h,头文件中,因此如果在程序中要用到这类函数,就必须在程序的开头处包含,intrins.h,这个头文件。,由于用到的发光二极管较多,每个发光二极管都需要限流电阻,硬件电路会显得比较复杂,所以这里使用了排阻。,排阻,,就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出。如果一个排阻是由,n,个电阻构成的,那么它就有,n+1,个引脚,一般来说最左边的那个是公共引脚。它在排阻上一般用一个色点标出来。,直插式排阻 贴片式排阻,排阻一般用在数字电路上,比如作为某个并行口的上拉或者下拉电阻用。使用排阻比用若干只固定电阻更方便。,3,任务设计,(,1,)器件的选择,器件清单,器件名称,数量(只),AT89C52,1,12MHz,晶体,1,22pF,瓷片电容,2,22uF,电解电容,1,10k,电阻,1,560,8,排,阻,1,发光二极管,LED,8,(,2,)硬件,原理图设计,(,3,)软件程序设计,#include,/,宏定义,,52,单片机头文件,#include,/,包含,_crol_,、,_cror_,函数所在的头文件,#define uint unsigned int,#define uchar unsigned char,/,延时子函数,void Delay(unsigned int t),while(-t);,/,主函数,循环点亮,LED,灯,void main(),uchar k,recy;,while(1),/,大循环,recy=0 xfe;,for(k=1;k=8;k+),/8,只,LED,灯从,P1.0,到,P1.7,逐个点亮,P1=recy;,/,先点亮,P1.0,的,LED,灯,Delay(50000);,/,延时一段时间,recy=_crol_(recy,1);,/,将,recy,循环左移,1,位后再赋给,recy,recy=0 xfe;,for(k=1;k=8;k+),/8,只,LED,灯从,P1.0,到,P1.7,依次全部点亮,P1=recy;,Delay(50000);,recy=recy1;,/,将,recy,左移,1,位后再赋给,recy,P1=0 xff;/,全部熄灭,Delay(50000);,recy=0 x7f;,for(k=1;k=8;k+),/8,只,LED,灯从,P1.7,到,P1.0,逐个点亮,P1=recy;,/,先点亮,P1.7,的,LED,灯,Delay(50000);,recy=_cror_(recy,1);,/,将,recy,循环右移,1,位后再赋给,recy,recy=0 x7f;,for(k=1;k1;,/,将,recy,右移,1,位后再赋给,recy,P1=0 xff;/,全部熄灭,Delay(50000);,(,4,)软硬件联合调试,将编写的程序在,Keil C51,中编译成*,.hex,后调入,Proteus,硬件电路图的,AT89C52,中运行,八只,LED,灯从,P1.0,到,P1.7,逐个点亮,接下来再从,P1.0,到,P1.7,依次全部点亮,然后全部熄灭后又从,P1.7,到,P1.0,逐个点亮,最后再从,P1.7,到,P1.0,依次全部点亮,如此反复形成流水灯。,项目拓展 实验板彩灯的花式控制,在任务,4.2,中设计的流水灯为八个,LED,按一个方向循环点亮,此外我们还可以通过编程控制,LED,灯,使它以我们想要的各种方式点亮,而且,LED,灯点亮频率可以通过改变延时时间来实现。下面编写程序控制实验板上的八个,LED,灯按照不同花式循环点亮。,(,1,)实验板,8,个,LED,灯电路如图所示。,RP1,为,390,欧姆排阻;,J9,为插针,用于连接需要使用的,I/O,口,此处用杜邦线连接单片机的,P1,口。,(,2,)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!