彩灯控制电路的设计毕业设计论文.docx

上传人:b****1 文档编号:10298378 上传时间:2023-05-24 格式:DOCX 页数:24 大小:223.16KB
下载 相关 举报
彩灯控制电路的设计毕业设计论文.docx_第1页
第1页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第2页
第2页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第3页
第3页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第4页
第4页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第5页
第5页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第6页
第6页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第7页
第7页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第8页
第8页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第9页
第9页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第10页
第10页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第11页
第11页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第12页
第12页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第13页
第13页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第14页
第14页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第15页
第15页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第16页
第16页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第17页
第17页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第18页
第18页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第19页
第19页 / 共24页
彩灯控制电路的设计毕业设计论文.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

彩灯控制电路的设计毕业设计论文.docx

《彩灯控制电路的设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《彩灯控制电路的设计毕业设计论文.docx(24页珍藏版)》请在冰点文库上搜索。

彩灯控制电路的设计毕业设计论文.docx

彩灯控制电路的设计毕业设计论文

 

浙江**学院

毕业设计(论文)

 

题目:

彩灯控制电路的设计

 

姓  名:

系别、专业:

导师姓名、职称:

完成时间:

目录

第1章概述3

1.1课题的背景与意义3

1.2总体设计方案4

第2章硬件电路设计5

2.1单机片最小系统5

2.2按键控制电路6

2.3中断电路6

2.4LED显示电路7

2.5单机片的介绍8

第3章软件设计11

3.1软件设计思路11

3.2软件设计流程12

参考文献13

附录A课题设计电路原理图14

附录B课程设计系统程序15

致谢22

 

彩灯控制电路设计

吴杰

摘要本文介绍了一种由16个LED发光二极管组成多功能发光形式的简易彩灯控制系统的软硬件设计过程,方案以AT89C51单片机作为主控核心,且以复位电路、时钟电路、按键电路、中断电路以及彩灯显示电路组成,利用软件编程烧录程序到单片机来实现对LED彩灯进行多样控制。

该控制电路能完成多种闪灯模式以及随意变换想要的闪烁方式和控制彩灯的闪烁频率等功能。

该系统具有电路结构简单、易操作、硬件少、体积少、成本低、能耗低等优点,有一定的实用价值。

关键词:

8051单片机LED彩灯控制系统闪烁方式

 

第一章概述

1.1课题的背景与意义

现代化生活当中彩灯控制电路的应用越来越受到人们的喜欢,因为其不仅能美化环境,渲染气

氛,还可以用于娱乐场所和电子玩具、广告牌当中等,因此我们选择了4种不同方式控制点亮16个

LED发光二极管的彩灯控制电路设计作为毕业课题,利用本人在大学期间所学的模拟电子技术、通

讯电路、语言程序设计等一些课程的知识进行了这次毕业课题设计与制作,这次设计能在很大程度

上提高了我们个人的学以致用能力和实际独立操作能力,不论是对知识的运用还是对论文的撰写方

面都有了很大的提高,同时也为了我们以后踏上社途工作发展打下了良好的基础。

彩灯控制电路的设计,其电路设计品种多样,工作电压范围宽,功耗低,外围元件少,因此适

用于现实生活中多种电子产品的开发设计与制作。

此课题设计的作品不能为了只追求“跳跃”而给

人凌乱的感觉,不管采用何种色彩、何种图案,都应该聚而不散,且有顺序的渐变和跳跃,给观众

一种主次感、秩序感,也方便于群众顺着有规律的节奏接着看第二遍、第三遍。

在设计制作时,既

要给人带来变换的吸引力,又要显得主次分明,没有色彩和图案凌乱的感觉。

变换、闪烁、跳跃式

的彩灯为市场促进了销售,为生活营造了多姿多彩的气氛,因此,越来越受到人们的肯定、重视、

欢迎。

 

1.2总体设计方案

 

 

图1-2系统总体设计框图

设计思路:

本方案这要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来

达到本设计的要求。

本课题设计的总体框图如下图1-2所示

系统设计如下:

此设计方案中单片机的P1口接4路按键控制电路,实现彩灯闪烁方式的切换功能;单片机的

P3.3引脚接上一个按键开关以实现对彩灯中断的控制;单片机上的P0和P2口接16路LED发光二

极管组成彩灯显示电路,实现多种形式的闪烁功能。

 

第二章硬件电路设计

2.1单机片最小系统

要使单片机工作起来,最基本的电路构成由单片机、时钟电路、复位电路等组成。

单片机最小系统由复位电路和时钟信号电路组成(如图2-1)。

复位电路:

确定单片机工作的起始状态,完成单片机的启动过程。

单片机系统的复位方式有上电自动复位和手动按键复位。

本设计采用上电自动复位。

单片机最小系统还有一块模块叫时钟电路。

时钟电路由一个晶振和两个小电容组成,用来产生时钟频率。

AT89C51单片机芯片内部有一个反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡器电路的输入端和输出端,时钟可由内部和外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就会产生自激振荡。

系统采用的定时元件为石英晶体和电容组成的并联谐振回路。

晶振频率选择12MHz,电容值取30PF,电容的大小频率起微调的作用。

图2-1单片机最小系统图

2.2按键控制电路

按键控制电路(如图2-2)是由4个按键开关构成的。

他们分别接在单片机AT89C51的P1.0~P1.3引脚上,为了一对一方式控制16个LED彩灯的不同闪烁形式。

当按下开关key1时,16个LED发光二极管闪烁第一种彩灯方式;当按下开关key2时,16个LED发光二极管闪烁第二种彩灯方式;同理,当按下开关key3时,16个LED发光二极管闪烁第三种彩灯方式;当按下开关key4时,16个LED发光二极管闪烁第四种彩灯方式。

图2-2按键控制电路图

2.3中断电路

单片机的P3.3引脚街上一个按键开关以实现对彩灯中断的控制(如图2-3)。

当彩灯系统正在实现无论哪一种控制方式时,按下中断开关使过程终止,16个LED发光二极管同时会处于熄灭状态,停止当前工作;当再次按一下中断开关时,彩灯系统会继续进行工作,闪光方式会与中断之前的方式一样。

如图2-3中断控制电路图

2.4LED显示电路

流水灯采用的是发光二极管(Light-EmittingDiode),简称LED,是一种将电能转换为光能的半导体器件,具有体积小、耗电低的优点,常被用作微型计算机与数字电路的输出装置。

当LED两端加上一定的正向电压,使之流过一定的工作电流就会发光,其亮度随流过的电流增加而增加,但电流过大LED的寿命也将缩短。

普通LED正向电流一般为5~20mA。

由于51的I/O是弱上拉的方式,在输出高电平时,只能输出几十微安的电流,而在输出低电平时,I/O最大可以输入几十毫安的电流。

所以,通常采用灌电流的方式,即电流从电源经LED流向I/O口。

为了不让流过LED的电流太大而把它烧坏,还得串上限流电阻R,当P0和P2口输出高电平(+5V)时,LED两端没有电压降,所以熄灭;当P0和P2口输出低电平(即P0/P2=0)时,LED正向导通发光。

此时LED两端电压VD约为1.7V,则限流电阻R两端将存在3.3V(即5-1.7=3.3V)。

查阅AT89C51技术手册后发现,单个I/O口的输入电流不能超过10mA;P0口的输入电流总和不能超过26mA;P1、P2、P3的输入电流总和不能超过15mA;所有I/O口的输入电流总和不能超过71mA。

(如图2-4)

图2-4led显示电路图

2.5单机片的介绍

AT89C51管脚图如下图2-5所示

图2-5AT89C51引脚排列

VCC:

供电电压+5V。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

本系统中P0口接LED数码管的段选段。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收[7]。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

本系统中语音芯片ISD1420的地址端接P2口。

P3口:

P3口是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如表2.5所示。

P3口同时为闪烁编程和编程校验接收一些控制信号。

 

表2.5 P3口的第二功能

 

口管脚

备选功能

信号名称

P3.0

RXD

串行输入口

P3.1

TXD

串行输出口

P3.2

/INT0

外部中断0

P3.3

/INT1

外部中断1

P3.4

T0

记时器0外部输入

P3.5

T1

记时器1外部输入

P3.6

/WR

外部数据存储器写选通

P3.7

/RD

外部数据存储器读选通

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。

在本设计中,对ROM的读操作只在内部程序存储器中,所以EA置应高电平。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出[8]。

第三章软件设计

3.1软件设计思路

单片机的应用系统由硬件和软件组成,上述硬件各电路搭建完成后,我们还不能看到多控制、多闪烁方式的LED灯系统循环点亮的现象,我们还需要告诉单片机怎么样进行控制,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的闪烁。

软件编程是多控制、多闪烁方式的LED灯系统中的一个重要的组成部分,是本设计的重点和难点。

所以我来阐述多控制、多闪烁方式的LED灯系统是如何实现16个LED灯的循环点亮,来介绍实现流水灯控制的软件编程方法。

本设计是以单片机AT89C51为核心控制16个发光二极管4种闪烁方式的变换。

硬件电路如图附录A所示,16个发光二极管分别接在单片机的P0和P2接口上。

例如,当给P0.0口输出“0”时,发光二极管点亮,当输出“1”时,发光二极管熄灭。

同理,接在P0和P2口的其他15个LED的点亮和熄灭的方法同P0.0引脚上的灯管。

因此,要实现流水灯功能,我们只要将发光二极管按照不同方式依次点亮、熄灭,16只LED灯便会一亮一暗的成流水灯了。

3.2软件设计流程

图3-2程序设计流程图

参考文献

1.曹天汉,《模拟电子技术》,北京师范大学出版社2005年8月

2.侯玉宝、陈忠平、李成群,《基于Proteus的51系列单片机设计与仿真》电子工业出版社2008年9月

3.曹天汉、钱卫星、张雪娟,《单片机原理与接口技术》(第3版),电子工业出版社2009年3月

4.李全利,《单片机原理与接口技术》[M],高等教育出版社2006年12月

5.李忠国、陈刚,《单片机应用技能实训》,人民邮电出版社2006年

 

附录A课题设计电路原理图

 

附录B课程设计系统程序

#include

#defineuintunsignedint

#defineucharunsignedchar

 

consttab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

consttab2[]={0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};

consttab3[]={0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00};

consttab4[]={0xFF,0xFE,0xFA,0xEA,0xAA,0x2A,0x0A,0x02,0x00};//1,3,5,7

consttab5[]={0xFF,0x7F,0x5F,0x57,0x55,0x54,0x50,0x40,0x00};//2,4,6,8

ucharkey=0;

ucharstate=0;

ucharstateTemp=0;

ucharflag=0;

voiddelay(uintn)//延时

{

uinti;

for(i=0;i

}

voidfun1(void)

{

P0=0x00;

P2=0x00;

delay(30000);

P0=0xff;

P2=0xff;

delay(30000);

}

voidfun2(void)

{

uchari;

for(i=0;i<8;i++)//向上逐次单个点亮

{

P2=tab1[7-i];

delay(10000);

if(state!

=2)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P2=0xFF;

for(i=0;i<8;i++)

{

P0=tab1[7-i];

delay(10000);

if(state!

=2)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P0=0xFF;

for(i=0;i<8;i++)//向下逐次单个点亮

{

P0=tab1[i];

delay(10000);

if(state!

=2)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P0=0xFF;

for(i=0;i<8;i++)

{

P2=tab1[i];

delay(10000);

if(state!

=2)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P2=0xFF;

}

voidfun3(void)

{

uchari;

for(i=0;i<9;i++)

{

P0=tab4[i];

P2=tab5[i];

delay(25000);

if(state!

=3)

{

P0=0xFF;

P2=0xFF;

return;

}

}

for(i=0;i<3;i++)

{

P0=0xAA;

P2=0xAA;

delay(20000);

P0=0x55;

P2=0x55;

delay(20000);

if(state!

=3)

{

P0=0xFF;

P2=0xFF;

return;

}

}

for(i=0;i<9;i++)

{

P0=tab4[8-i];

P2=tab5[8-i];

delay(25000);

if(state!

=3)

{

P0=0xFF;

P2=0xFF;

return;

}

}

}

voidfun4(void)

{

uchari;

for(i=0;i<9;i++)//向上逐个点亮

{

P2=tab3[i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

for(i=0;i<9;i++)

{

P0=tab3[i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

for(i=0;i<9;i++)//向下逐个熄灭

{

P0=tab3[8-i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P0=0xFF;

for(i=0;i<9;i++)

{

P2=tab3[8-i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P2=0xFF;

for(i=0;i<9;i++)//向下逐个点亮

{

P0=tab2[i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

for(i=0;i<9;i++)

{

P2=tab2[i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

for(i=0;i<9;i++)//向上逐个熄灭

{

P2=tab2[8-i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P2=0xFF;

for(i=0;i<9;i++)

{

P0=tab2[8-i];

delay(10000);

if(state!

=4)

{

P0=0xFF;

P2=0xFF;

return;

}

}

P0=0xFF;

}

voidtimer0(void)interrupt1using1

{

TL0=0x00;//重置初值

TH0=0xBE;

TL0=0xE5;

key=P1;

switch(key)

{

case0xFE:

state=1;stateTemp=1;break;

case0xFD:

state=2;stateTemp=2;break;

case0xFB:

state=3;stateTemp=3;break;

case0xF7:

state=4;stateTemp=4;break;

default:

break;

}

}

void_int()interrupt2using2

{

if(flag==0)

{

state=5;

flag|=1;

}

else

{

state=stateTemp;

flag&=0;

}

}

voidmain()

{

IT1=1;

IE|=0x86;

TMOD=0x21;

TH0=0xBE;

TL0=0xE5;

ES=0;//禁止串口中断

TR0=1;//开启定时器0,开始定时

while

(1)

{

switch(state)

{

case1:

fun1();break;

case2:

fun2();break;

case3:

fun3();break;

case4:

fun4();break;

case5:

P0=0xFF;P2=0xFF;break;

default:

break;

}

}

}

 

致谢

在本设计中,遇到了不少的技术问题,凭本人现有的水平是无法解决的,都是通过同学和老师

的精心指导,帮我解决了不解之惑,才使我能够顺利的完成本设计。

在此,特别感谢老师以及各位

同学在我毕业设计中所做出的指导和帮助。

也感谢大学三年来所有的教过我的老师,传授给我专业

知识的同时教会了我如何做人。

我今天所拥有的专业知识,是他们辛勤耕耘的结果。

是他们把我领

进了电子信息系统这个专业领域,使我有了前进的方向,将来我还会继续在这一领域进行研究,不

管我走多远,你们的教导我始终记在心里。

 

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2