mage16实例遥控激光灯.docx

上传人:b****7 文档编号:23716455 上传时间:2023-05-20 格式:DOCX 页数:31 大小:725.45KB
下载 相关 举报
mage16实例遥控激光灯.docx_第1页
第1页 / 共31页
mage16实例遥控激光灯.docx_第2页
第2页 / 共31页
mage16实例遥控激光灯.docx_第3页
第3页 / 共31页
mage16实例遥控激光灯.docx_第4页
第4页 / 共31页
mage16实例遥控激光灯.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

mage16实例遥控激光灯.docx

《mage16实例遥控激光灯.docx》由会员分享,可在线阅读,更多相关《mage16实例遥控激光灯.docx(31页珍藏版)》请在冰豆网上搜索。

mage16实例遥控激光灯.docx

mage16实例遥控激光灯

遥控激光灯设计制作

摘要

遥控激光灯设计制作是一个很有实际应用价值项目,用很小的激光灯为显示,ATmega16L单片机为控制核心,加以遥控器控制和电源电路以及其他电路构成。

遥控激光灯是一个很好的应用单片机技术的作品。

系统所用的单片机采用性能优秀的AVR单片机的ATMEGA16L芯片,由mega16通过IO口控制激光灯的亮与不亮来显示出不同的投影图;而不同的闪烁时通过遥控来控制。

自制了单片机电路板和程序下载ISP线,能够顺利完成激光灯的工作。

同时还可以扩展控制激光灯工作时的花样,可以改变程序文件来变激光灯闪烁的花样。

所完成的作品可以直接应用于单片机的教学之中,使自己的毕业设计有了实在的应用价值。

本作品今后可以向商品化方面进行开发,以使之有更大的价值。

关键词:

激光灯;AVR单片机;遥控器

 

THEDESIGNOFLASERLIGHTCONTROLLEDBYTELECONTROLLER

ABSTRACT

Thedesignoflaserlightcontrolledbytelecontrollerisaverypracticalapplicationprojects,usingasmalllaserlightforthedisplay,ATmega16Lmicrocontrollerasthecontrolcentertoremotecontrolandpowercircuitsandothercircuits.

Laserlightisagoodremotecontrolapplicationmicrocontrollertechnologyworks.SystemusedintheSCMperformanceAVRmicrocontrollerATMEGA16Lgoodchip,bythemega16IOporttocontrollaserlightthroughthebrightlightandnottoshowadifferentprojection;anddifferentblinkingthroughtheremotecontrol.HomeofthemicrocontrollercircuitboardandprogramdownloadISPlines,tothesuccessfulcompletionoftheworkoflaserlight.Controlalsoextendstheworkofthepatternoflaserlight,canchangetheprogramfiletochangethepatternoflaserlightsflashing.ThecompletedworkcanbedirectlyappliedintheteachingofSCM,sothattheirgraduateshavearealdesignvalue.Thisworkswillbedevelopingtothecommercializationofthefutureanditcouldbedevelopedtomakegreatervalue.

Keywords:

Laserlight;AVRmicrocontroller;Telecontroller

 

目录

1前言1

2系统设计构思2

2.1设计要求2

2.2激光灯闪烁的原理2

2.3模块设计的选择3

2.3.1激光阵设计3

2.3.2遥控器模块3

2.3.3控制模块4

2.3.4激光灯闪烁模块4

2.4最终方案4

3硬件实现及单元电路设计6

3.1微控制器模块的设计6

3.2主板电路的设计6

3.3外部电路的连接7

3.4遥控电路的设计8

3.5ISP下载线的设计制作9

4软件实现10

4.1主程序流程图10

4.2程序文件10

4.2.1初始编程11

4.2.2花样编程--------------------------------------------12

4.2.3遥控编程--------------------------------------------17

4.2.4综合编程--------------------------------------------18

5系统功能测试流21

5.1测试仪器及设备21

5.2功能测试21

6系统结构22

7结论25

参考文献26

致谢-----------------------------------------------------------27

 

1前言

随着社会信息技术的发展,高科技教育和创新活动越来越受到大家的关注,电子产品越来越受到大家的青睐,遥控灯这一信息技术的前沿领域也得到了飞速发展,同时也开展了许多有意义的led显示创新大赛,而在控制激光灯的实验中主要应用的便是单片机技术。

单片机又称单片机微控制器,它是把一个计算机系统集成到一个芯片上,单片机技术就是计算机技术的一个分支,是简易机器人的核心元件,在寻机机器小车中主要就是应用AVR单片机的技术进行控制的。

我在这次项目中应用的AVR单片机是很新颖的一种,它不仅价格低廉,可以节省很多开发费用,而且内部存储器的擦写可达到100000次以上,不会产生报废品。

在以后的社会生产中,高科技是不可缺少的,因此单片机技术的应用注定是不可或缺的,所以利用AVR单片机技术制作的遥控激光灯的应用价值及科研价值是很高的。

利用AVR单片机制作出的遥控激光灯,可以顺利完成我们所要求的显示任务,现场演示。

通过自制的ISP下载线与电脑之间的链接,将电脑中的程序文件输入到单片机中,根据设计需要实现激光灯的闪烁变化。

所完成的作品可以直接应用于单片机的教学之中,使自己的毕业设计有了实在的应用价值。

本作品今后可以向商品化方面进行开发,以使之有更大的价值。

由于某些资料及时间的限制,所以致使AVR单片机的一些功能没有全部扩展出来,处于正在研究探索中。

我会对该项目进行不断的创新。

 

2系统设计构思

2.1设计要求

(1)激光灯的初始启动。

(2)激光灯按指定的要求来显示不同的闪烁变化,我的设计用的是十六个激光灯,组成一个五角星的形状,这样变化情况很多,投到远处的图案会呈现出不同的图形变化。

激光灯阵如图1所示:

图1激光灯阵示意图

2.2激光灯的工作原理

激光灯的工作原理和发光二极管的工作原理一样,正向导通并且发光,他们的区别是激光灯的穿透力更强。

所有的激光灯负极都接地,而这十六支激光灯的正极按次序接到单片机的PA和PB的外部接口。

当其中的一个端口的状态时高电平时,这时激光灯处于导通状态伴随的现象就是激光灯亮起,其他的灯也是这个原理,而要出现图形和变化就要编程,设计出哪些灯同时亮或者是亮的顺序是什么样的.

2.3模块设计的选择

根据设计要求,本系统主要由单片机,无线遥控器,直流电源,反相器,激光灯阵等模块构成。

为较好的实现各模块的功能,我选择了最合理的设计方案

2.3.1激光灯阵设计

自己制作激光灯阵。

考虑到显示的图案和变化的不同,经过反复考虑论证,我制定了十六个激光灯按照五角星的形状分布,中间一个,五个角各三支激光灯。

这样图形可以显示出圆环,直线,五星等图案,由于是五星形状的激光灯阵,还可以实现流水灯等要求。

在制作激光灯阵的时候,由于激光灯阵的作用是投到一定的区域来照射出各种图案,所以必须将激光灯阵固定,而激光灯阵是要做投射,如果固定的角度有误差,那么投射出来的效果会将误差放大。

那么设计模块就要精确地排列好激光灯的位置,我选择的办法是手动转眼,每个激光灯独自调试,合格后再进行下一个的安装,下一个的安装要用上一个做参照来达到高精度的效果。

对于固定材料的选择,经过比较选择了废弃的电路板。

用有电路板做的固定架比塑料车架更加牢固,比铁制固定架更轻便、便宜。

2.3.2控制器模块

采用Atmel公司的ATmega16L单片机作为主控制器。

ATmega16L是一个低功耗,高性能的8位单片机,片内含32k空间的可反复擦些100,000次的Flash只读存储器,具有2Kbytes的随机存取数据存储器(RAM),32个IO口,2个8位可编程定时计数器,1个16位可编程定时计数器,四通道PWM,内置8路10位ADC。

且mega系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。

ATmega16L引脚示意图如图2所示:

图2Mega16引脚示意图

2.3.3遥控模块

最初的设想是用按键,但从实际考虑来看激光灯对人眼有伤害,如果是近距离控制则会伤害到人眼,这样经过考虑和研究我选用了无线的遥控器来控制,这样我们就可以远距离的控制激光灯阵,控制的距离可根据遥控器和接收芯片的频率来定。

2.3.4激光灯闪烁模块

光灯的穿透力强且照射距离远,从闪烁的图案选择来看有很多选择,但用六个激光灯来实现就比较困难,因为十六个点来实现多个图形这从图形学的角度考虑存在困难,我选择了排列五角星的形状,那么可以制定多个形状,比如有圆环,满圆形,五角形,圆环的流水和直线的流水等形状,变化多样而且样式不老套附有趣味性。

激光灯阵的初始状态,采用激光灯的随机亮起。

2.4最终方案

经过反复论证,最终确定了如下方案:

(1)固定体电路板车架手工制作。

(2)采用ATmega16L单片机作为主控制器。

(3)用五伏的直流电源。

(4)PT2272-M4作为遥控控制。

(5)用HD74LS04P作为反相器触发中断。

系统的结构框图如图3所示:

图3系统结构框图

 

3硬件实现及单元电路设计

3.1微控制器模块的设计

采用Atmel公司的ATmega16L单片机,不用烧写器而只用串口或者并口就可以往单片机中下载程序。

利用自制的ISP下载线将程序直接灌输在ATmega16L单片机中,便可以直接应用,十分方便。

由于本次设计要求中,激光灯阵的任务比较简单,因此我只在单片机系统中保留了晶振和复位电路,取消了JTAG编程口等冗余电路。

3.2主板电路的设计

遥控激光灯的主板电路设计只要是以单片机为核心,围绕AVR单片机展开的一系列连接,控制外部电路的使用,主板设计是一个至关重要的试验步骤。

遥控激光灯的主板电路原理图如图所示:

原理图代替遥控部分

控制器中断

图组4主板电路原理图

电路经过调试,确定可以正常运行使用后,进行电路板的制作和实际焊接。

3.3外部电路的连接

主板电路控制设计的整个系统,那么如何连接就变得十分重要,怎么连接才能连接出我们所要的动作命令,在这次设计中我们没有添加多余的电路,但是可以根据不同的要求,按照一定的连接原理扩展出很多功能。

这里介绍一下,本设计外部电路的具体连接方法。

主板电路单片机器件布置图如图5所示:

图5主板电路单片机器件布置图

具体的连接方法如下:

J2是ISP下载接口插座,用于设计和PC机之间的程序传输,C语言编程下载使用。

CZ1是电源插座,外接5V直流稳压电源。

K1是电源开关,开关拨到ON,为开电源;开关拨到OFF,为关电源。

GND是连接到电源的接地端。

Mega16的PB0到PB7与PA0到PA7连接的是十六支激光灯阵,PC0到PC2连接到PT2272-M4的输出口10,11,12.PD2连接一个反向器连接到PT2272-M4的13端口。

3.4遥控电路的设计

激光灯阵的工作室靠遥控器的控制来完成显示任务的。

遥控器有四个输出端口可以有多种组合,我用的一个端口来控制激光灯的停止运行,另外三个端口来控制激光灯阵的变化。

如图6所示:

图6遥控器原理控制电路

电路中,当给电源时,激光灯阵正常初始化工作。

这里用接连PD2的按键来代替遥控器输出端口13的。

其他的三个按键在这里也是代替遥控器给定命令的。

当按下连接PD2口的按键激光灯全部熄灭,按另外三个任意一个按键激光灯阵就会出现指定的变化,按连接PD2口的按键这时灯全部熄灭,依次类推,激光灯就这样工作。

经试验验证给此电路供电的电池的压降较小。

因此选择此电路作为设计的传感器检测与调理电路。

3.5ISP下载线的设计制作

将代码写入AVR芯片一般使用并行烧写器和ISP下载线两种,由于ISP下载线可以在线编程,所以使用很方便,而我们使用的是并口ISP下载线,并口ISP下载线最大优点就是价钱便宜,结构简单,制作容易,ISP下载接口,不需要任何的外围零件。

使用双排2*5插座。

由于没有外围零件,故PB5(MOSI)、PB6(MISO)、PB7(SCK)、复位脚仍可以正常使用,不受ISP的干扰。

电路图如图7所示,原理图如图8所示。

图7ISP下载线电路

图8AVR并口ISP下载线电原理图

 

4软件实现

4.1主程序流程图

单片机的设计中,程序就等于它的灵魂,如果没有程序的支撑,再好的设计结构都只是一个支架,不具有任何意义。

所以我们设计的重点内容就是编写我们所需要的程序文件,需要大量的时间和精力来完成这项工作。

我们所设计的软件的主程序流程图如图9所示:

图9主程序流程图

4.2程序文件

根据设计要求,参考前期的程序流程图,编写了以下的程序。

4.2.1初始编程

基本的设计要求,达到自由寻迹的效果。

#include//宏定义//

#include

unsignedchara,b,c,d,e,f;

voiddelay_ms(unsignedintn)//延时函数//

{unsignedinti=0;

while(i

{delay_1ms();

i++;}}

voiddelay_1ms(void)

{unsignedinti;

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

i++;}

voidchushi(void)//初始激光灯阵状态//

{PORTA=0X24;

PORTB=0X42;

delay_ms(100);

PORTA=0Xec;

PORTB=0X04;

delay_ms(50);

PORTA=0Xf4;

PORTB=0X4f;

delay_ms(50);

PORTA=0X5a;

PORTB=0X84;

delay_ms(100);

PORTA=0X61;

PORTB=0Xa4;

delay_ms(70);

PORTA=0Xb2;

PORTB=0Xb2;

delay_ms(90);

PORTA=0X55;

PORTB=0X46;

delay_ms(50);

PORTA=0X8d;

PORTB=0Xd0;

delay_ms(100);

}

voidmain(void)//主函数,定义各端口的初

{DDRA=0Xff;始状态//

PORTA=0X00;

DDRB=0XFF;

PORTB=0X00;

DDRC=0X00;

PORTC=0X00;

DDRD=0X00;

PORTD=0Xff;

MCUCR=0X02;//中断响应的初始状态//

GICR=0X40;

SEI();

while

(1)

{chushi();}

}

4.2.2花样编程

单纯的寻迹显的设计有些简单,为了增加一些技术难度,添加了激光灯花样的变化,这里可以根据个人喜好改变花样的模式。

voidxing_1(void)

{PORTA=0X00;//灯按照从里向外的次序PORTB=0X00;以圆环的形式依次亮

delay_ms(100);起但不熄灭,成满圆后再依次熄灭//

PORTA=0X01;

PORTB=0X00;

delay_ms(100);

PORTB=0X92;

PORTA=0X49;

delay_ms(100);

PORTA=0X6D;

PORTB=0XDB;

delay_ms(100);

PORTA=0XFF;

PORTB=0XFF;

delay_ms(100);

PORTA=0X6D;

PORTB=0XDB;

delay_ms(100);

PORTB=0X92;

PORTA=0X49;

delay_ms(100);

PORTA=0X01;

PORTB=0X00;

delay_ms(100);}

voidxing_2(void)//圆环按丛里向外的次序

{以流水灯的形式依次

PORTA=0X01;亮起//

PORTB=0X00;

delay_ms(100);

PORTA=0X48;

PORTB=0X92;

delay_ms(100);

PORTA=0X24;

PORTB=0X49;

delay_ms(100);

PORTA=0X92;

PORTB=0X24;

delay_ms(100);

PORTA=0X24;

PORTB=0X49;

delay_ms(100);

PORTA=0X48;

PORTB=0X92;

delay_ms(100);

}

voidxing_12(void)//灯按照xing_2的形式先运行

{然后按照xing_1的形式再

PORTA=0X01;运行//

PORTB=0X00;

delay_ms(100);

PORTA=0X48;

PORTB=0X92;

delay_ms(100);

PORTA=0X24;

PORTB=0X49;

delay_ms(100);

PORTA=0X92;

PORTB=0X24;

delay_ms(100);

PORTA=0X24;

PORTB=0X49;

delay_ms(100);

PORTA=0X48;

PORTB=0X92;

delay_ms(100);

PORTA=0X01;

PORTB=0X00;

delay_ms(100);

PORTB=0X92;

PORTA=0X49;

delay_ms(100);

PORTA=0X6D;

PORTB=0XDB;

delay_ms(100);

PORTA=0XFF;

PORTB=0XFF;

delay_ms(100);

PORTA=0X6D;

PORTB=0XDB;

delay_ms(100);

PORTB=0X92;

PORTA=0X49;

delay_ms(100);

}

voidxing_3(void)//五角星以每个角为一条直

{线,依次亮起,亮起后熄灭//

PORTA=0X81;

PORTB=0X03;

delay_ms(100);

PORTA=0X71;

PORTB=0X00;

delay_ms(100);

PORTA=0X0f;

PORTB=0X00;

delay_ms(100);

PORTA=0X01;

PORTB=0Xe0;

delay_ms(100);

PORTA=0X01;

PORTB=0X1c;

delay_ms(100);

}

voidxing_4(void)//五角星的每个角为单位

{PORTA=0X01;的直线,依次亮起不熄

PORTB=0X00;灭,满圆后逐次熄灭//

delay_ms(100);

PORTA=0X81;

PORTB=0X03;

delay_ms(100);

PORTA=0Xf1;

PORTB=0X03;

delay_ms(100);

PORTA=0Xff;

PORTB=0X03;

delay_ms(100);

PORTA=0Xff;

PORTB=0Xe3;

delay_ms(100);

PORTA=0Xff;

PORTB=0Xff;

delay_ms(100);

PORTA=0X7f;

PORTB=0Xfc;

delay_ms(100);

PORTA=0X0f;

PORTB=0Xfc;

delay_ms(100);

PORTA=0X01;

PORTB=0Xfc;

delay_ms(100);

PORTA=0X01;

PORTB=0X1c;

delay_ms(100);

}

4.2.3遥控编程

为了方便控制,和个人的需要,添加了遥控部分的文件,一定程度上增加了设计的多样性。

#pragmainterrupt_handlerint0_stop:

2//中断宏定义//

voidint0_stop(void)//中断函数//

{PORTA=0X00;

PORTB=0X00;

while

(1)

{

SREG=0X80;//中断开//

a=PINC&0X01;//遥控端定义//

b=PINC&0X02;

c=PINC&0X04;

d=PINC&0X03;

e=PINC&0X05;

f=PINC&0X06;

if(a==0x01)

while

(1)

xing_1();

else

if(b==0x02)

while

(1)

xing_2();

else

if(c==0x04)

while

(1)

xing_3();

else

if(d==0x03)

while

(1)

xing_4();

else

if(e==0x05)

while

(1)

xing_12();

else

if(f==0x06)

while

(1)

{xing_4();

xing_1();}

}}

4.2.4综合编程

结合以上的不同需要,把相关的程序文件综合到一起,构成了激光灯初始显示中断显示与遥控显示等方面不同展示,整体程序经过修改,调试,完全能够运行。

#include//宏定义//

#include

unsignedchara,b,c,d,e,f;

voiddelay_ms(unsignedintn)//延时函数//

{unsignedinti=0;

while(i

{delay_1ms();

i++;}}

voiddelay_1ms(void)

{unsignedinti;

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

i++;}

#pragmainterrupt_handlerint0_stop:

2//中断宏定义//

voidint0_stop(void)//中断函数//

{PORTA=0X00;

PORTB=0X00;

while

(1)

{

SREG=0X80;

a=PINC&0X01;

b=PINC&0X02;

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1