艺术灯制作.docx
- 文档编号:7439746
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:15
- 大小:154.07KB
艺术灯制作.docx
《艺术灯制作.docx》由会员分享,可在线阅读,更多相关《艺术灯制作.docx(15页珍藏版)》请在冰豆网上搜索。
艺术灯制作
基于单片机的艺术灯设计
学生:
xxx指导老师:
xxx
摘要:
计算机技术的飞速发展和提高,把我们带入了崭新的时代。
现在,计算机的应用已经深入到千家万户。
单片微型计算机是制作在一块集成电路芯片上的计算机,简称单片机。
单片机在现在社会有着广泛的应用,小到人们的日常电子用品,大到航天飞机,宇宙飞船,上面都有单片机的广泛应用。
单片机具有体积小、功能强大、低功耗、应用广泛等特点。
本次课程设计是以AT公司的芯片AT89C51单片机为核心来实现艺术灯的设计,通过不同的按键控制八个端口下的八个LED灯的闪亮效果,让其按照预计的思路变换出不同理想的发光状态。
关键词:
艺术灯循环按键延时
DesignForArtLamp
Abstract:
Therapiddevelopmentofcomputertechnologyandtheincreasing,takesusintothenewera.Now,theapplicationofcomputerhaspenetratedintothousandsofhouseholds.Singlechipmicrocomputerinthesocietynowhasawiderangeofapplications,frompeople'sdailyelectronicproducts,toaerospaceaircraft,spacecraft,withthewideapplicationofsinglechipmicrocomputer.SCMhastheadvantagesofsmallvolume,strongfunction,lowpowerconsumption,wideapplicationcharacteristics.ThiscourseisdesignedtoATchipAT89C51toachievesingle-chipartlampdesign,throughdifferentkeyscontrolwithamorethaneightLEDlamp,totransformthedifferenteffect.
Keyword:
Artlampcyclebuttondelay
基于单片机的艺术彩灯设计
前言:
在新技术层出不穷的当今时代,在电子领域单片机智能控制系统正以前所未见的速度取代传统的分立元件或数字逻辑电路构成的控制系统,尤其是自动化智能控制领域。
单片机具有功能强、成本低、体积小、应用面广等优点,可以说,单片机就是智能控制与自动控制的核心。
现代生活中,艺术灯越来越成为人们的装饰品,各式各样的艺术彩灯随处可见,每当夜幕降临之时,不管是摩天大楼,还是小桥流水,都是灯火通明,霓虹灯闪烁。
灯光的多彩绚丽,是以前未曾见过的。
这些绚丽的灯光效果直接取决于现代的LED灯的先进技术,当然没有优质的控制技术也是不行的。
单片机就是一个自动控制的优秀工具,具有体积小、功能强、成本低、应用面广等优点。
艺术彩灯具有结构简单,成本低廉等一系列优点,它不仅能美化环境,渲染气氛,还可以用于娱乐场所和电子玩具中。
在目前居家个性化的要求下,它具有很好的市场前景。
让单片机与LED灯完美的结合让其达到我们视觉的需要已经成为一种趋势。
1总体设计思路
1.1设计思路
艺术彩灯的设计实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管电路、振荡电路、复位电路、电源等电路和必要的软件组成的的单个单片机,无需外扩存储器,在电路的设计过程中要注意把各个电路模块相结合,还要注意程序的编写要让其达到预期的下效果就需要不断的调试修改。
程序的编写过程应包括有点亮LED灯的函数,延时函数,要通过按键来控制灯的效果还应该有判断按键的函数等。
如果要让接在P0.0端口的LED1亮起来,那么只要把P0.0端口的电平变为低电平就可以了;相反,如果要让接在P0.0端口的LED1熄灭,就只要把P1.0端口的电平变为高电平;同理,接在P0.1-P0.7端口的其它7个LED的点亮和熄灭的方法同LED1。
因此,要实现艺术灯功能,只要我们将发光二极管LED1-LED8依次点亮、熄灭,八只了LED灯就会一亮一暗实现一种艺术形式。
同样道理可以为P0端口各个位写不同的高低电平让其变换出各种不同的效果。
除了写高低电平我们还得注意一点,由于人的视觉暂留效应以及单片机执行每条指令的时间很短,我们要想让灯的点亮效果达到我们的预期,就必须在写程序时注意延时程序的运用。
图1.1-1点亮、熄灭LED过程图
2.硬件设计
2.1AT89C51介绍
单片机是一块芯片中集中了CPU\RAM\ROM\d定时/计数和多功能I/O口等计算机所需要啊的基本功能部件的大规模集成电路,又称CPU。
AT89C51是一个低电压,具有高性能8位的CMOS单片机,片内含4kbytes的可以反复擦写的只读程序的存储器(PEROM)和128bytes的随机存取数据存储器(RAM),At89C51采用ATMEL公司的非易失性存储技术、高密度生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,其将通用的微处理器和Flash存储器结合在一起,特别是Flash存储器可有效地降低开发成本。
内部设置功能强大的微型计算机为AT89C51提供了高性价比的解决方案。
AT89S51是一个有40个引脚,32个外部双向输入/输出(I/O)端口,同时AT89S51内含2个外中断口,2个全双工串行通信口,2个16位可编程定时计数器,高性能低功耗单片机。
AT89C51可以按照常规方法进行编程,也可以在线编程。
图2.1-2单片机AT89S51结构图
2.2AT89C51主要管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口一个漏级开路8位双向I/O口,每个管脚可吸收8TTL门流可被每个管脚可吸收。
当P0口的管脚第一次写1时,被定义为高阻态输入。
P0可以被定义为数据/地址的第八位,能够用于外部程序数据存储器。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部有拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高阻态,可用作输入,由于内部上拉,P1口被外部下拉为低电平时,将输出电流。
P1口作为第八位地址接收当其被用作FLASH编程和校验时,。
P2口:
P2口是一个设有内部上拉电阻的8个位的双向I/O口,P2口缓冲器可接收和输出4个TTL门电流,当给P2口写1时,内部上拉电阻把其管脚拉高,并且用作输入。
当P2口被用作输入时,P2口的管脚被外部拉低,将输出电流,是因为其内部的上拉电阻。
当P2口用于16位地址外部数据存储器或进行存取时,P2口将输出地址的高八位。
在给出地址1时,其利用内部上拉优势,当外部八位地址数据存储器被读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
应当注意的是当P2口的几位作为地址使用时,剩下的P2口线不能作为I/O口线使用。
P3口:
P3口管脚是内部带有8个上拉电阻的双功能I/O口,可以接收或者输出4个TTL门电流。
当给P3口写1时,其用作输入端口,它们被内部上拉为高电平。
当用作输入时,因为外部下拉为低电平,P3口将输出电流(ILL)这是由于内部被上拉。
P3口同时为闪烁编程和编程校验接收一些控制信号。
在应用中,P3口的各位如果不被设定为第二功能,则系统会默认其为第一功能,在更多情况下,根据需要把几条口线设为第二功能,剩下的口线可以被用作第一功能(I/O)使用,此时宜采用位操作形势。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
◆P3.1TXD(串行输出口)
◆P3.2/INT0(外部中断0)
◆P3.3/INT1(外部中断1)
◆P3.4T0(记时器0外部输入)
◆P3.5T1(记时器1外部输入)
◆P3.6/WR(外部数据存储器写选通)
◆P3.7/RD(外部数据存储器读选通)
RST/Vpd:
功能一,复位信号输入。
功能二,Vcc掉电后,此引脚可接备用电源,低功耗条件下保持内部RAM中的数据。
PSEN:
程序存储器允许。
输出读外部程序存储器的选通信号。
取指令操作期间,PSEN的频率为震荡频率的1/6;若在此期间有外部数据存储器的操作,则有一个机器周期中的PSEN信号将不出现。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA=0,单片机只访问外部程序存储器。
对8031此引脚必须接地。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
接外部晶体的一个引脚。
CHMOS单片机采用外部时钟信号时,时钟信号由此脚引入。
XTAL2:
接外部晶体的一个引脚。
CHMOS单片机采用外部时钟信号时,外部时钟时钟信号由此脚引入。
2.3模块设计
2.2.1单片机震荡电路
单片机要正常工作不可缺少最小系统之一的震荡电路。
在单片机内部有一个其输入端引脚为XTL1,输出端为引脚XTL2,高增益反向放大器。
而在其内部,XTL1和XTL2之间跨接晶体振荡器和微调电容,可以构成一个稳定的自激震荡器。
时钟电路产生的震荡脉冲经过触发器进行二分频之后,成为单片机的时钟脉冲信号。
图2.1.1-3震荡电路图
2.2.2单片机复位电路
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从用的0000H单元开始执行程序,并使其他功能单元处于一个确定的初始状态。
本复位电路采用的是按键复位,它是通过复位端经电阻与VCC电源接通而实现的,它兼具上电自动复位功能。
图2.2.2-4复位电路图
2.2.3按键控制电路设计
当按下或松开按键时,按键会产生机械抖动。
一般持续几到十几毫秒,抖动时间随按键的结构不同而不同。
在扫描键盘过程中,必须想办法消除按键抖动,否则会引起错误。
用硬件电路可以实现消除抖动的效果,也可以利用专用消抖电路来实现消抖效果。
用软件延时方法来消除按键的抖动是较为简单的方法,也就是说,一旦发现有键按下,就延时20ms以后再测按键的状态。
这样就把按键发生抖动的那一段时间避开,使CPU能可靠地读按键状态。
在编制键盘扫描程序时,只要发现按键状态有变化,即无论是按下还是松开,程序都应延时20ms毫秒以后再进行其他操作。
2.2.3-5键盘控制电路
3软件设计
3.1keil软件介绍
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编语言,现在已经很少使用手工汇编的方法了。
通过汇编软件将源程序变为机器码就是机器汇编,早期的A51MCS-51是单片机的汇编软件,随着单片机开发技术的不断发展,编程语言也从普遍使用汇编语言到逐渐使用高级语言开发。
Keil提供了包括宏汇编、连接器、C编译器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
3.2设计目标
本系统的功能就是实现LED等的循环点亮的不同效果。
其主要有五个按键来控制它的五个功能:
S1键是复位键,当按下此键后单片机就得停止当前的工作状态;S2键是实现LED灯先向左再向右点亮熄灭的过程并且在没有其它按键按下的情况下一直循环这个状态;S3键是实现LED灯从右到左逐个点亮在没有其它按键按下的情况下一直循环这个状态;S4键是实现LED灯逐个向中间点亮在没有其它按键按下的情况下一直循环这个状态;S5键是实现LED灯先向左逐个点亮再全都点亮熄灭点亮再熄灭在没有其它按键按下的情况下一直循环这个状态。
3.3软件流程图
图3.3.1-6总体流程图
4软件调试
软件调试一般分为以下四个阶段:
1、编写程序并查找程序中的语法错误语句。
2、对程序进行编译连接,并发现存在的错误。
3、改正错误。
在软件调试过程中,对出现的错误进行了认真的分析和修改,多次调试成功后,能够很好的达到既定的设计效果。
当按下S1键后单片机就得停止当前的工作状态;当按下S2键后LED灯先向左再向右点亮熄灭的过程并且在没有其它按键按下的情况下一直循环这个状态;当按下S3键LED灯从右到左逐个点亮在没有其它按键按下的情况下一直循环这个状态;当按下S4键LED灯逐个向中间点亮在没有其它按键按下的情况下一直循环这个状态;当按下S5键LED灯先向左逐个点亮再全都点亮熄灭点亮再熄灭在没有其它按键按下的情况下一直循环这个状态。
5设计总结
5.1心得体会
这次的通信原理课程设计我选的题目是艺术灯设计,当拿到这个题目我就开始进行方案的选着,在运用嵌入式还是单片的开发的选着中我综合考虑了各方面因素,最终确定了使用单片机开发实现这次的课程设计原因有二:
一是在大二期间我们就先修了单片机,做过基于单片机的一次课程设计相对正在学习的嵌入式开发而言对单片机比较容易上手。
二是嵌入式开发与单片机开发有很多相似之处,通过这次课程设计更好的巩固了单片机的知识有利于更好的学习嵌入式。
通过这段时间的努力,我终于顺利完成了这次同信原理的课程设计。
这是一个考验我毅力和面对困难的态度的过程。
从选定课题开始到开发工具之的确定、硬件和软件的设计、Proteus软件仿真完成、AltiumDesigner原理图到PCB板的制作,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。
一方面通过keil软件的编程过程中我除了要有一个明确的编程思想还要更好的学习AT89C51芯片各引脚的功能特性,特别是这是设计使用了P0端口作为LED的输出端口,刚开始忘记了P0端口内部没有上拉电阻没有在外部给其加上拉电阻,当把程序下到Proteus仿真中根本没有灯亮,这很大的打击了我的信心,刚开始一直以为是程序写错了一直纠结与程序的修改,后来问了同学和老师才发现我的仿真图里没有加上拉电阻,就这么小小的问题没有注意到,差点让我的整个课程设计停工。
所以平时知识的积累是很重要的。
仿真的过程中,灯的闪亮效果总是达不到自己预订的效果,需要检查程序,修改参数,再仿真,再修改最后完成一个合理的设计过程。
通过本次课程设计的学习,我发现理论和实际差别很大。
我发现在编程序时不能一次性就写完了,因为只要有一个地方错了,你也查不出来,所以写程序一定要一边写一边调试,自有这样才能稳扎稳打。
另一方面我面写程序一定要先写流程图,因为只有这样才能理清思路。
少走一些弯路,减少了最后仿真过程中的工作量。
通过本次课程设计,我不仅学到了专业技术方面的许多专业知识,同时也让我感受到同学间的帮助是非常重要的。
其实,如何有效和快速的找到资料也是课程设计给我的启发,利用好图书馆和网络,使资源得到最好的利用。
与他人交流思想是获取成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。
课程设计是一个通过思考、发问、自己解惑并动手、提高的过程。
我会在今后的学习中不断学习,积累经验,完善自己。
对于这次通信原理基于单片机的艺术灯的课程设计不仅巩固了我以前所学的知识,而且学到了很多在书本上没有学到的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,从而提高自己的动手能力和独立思考的能力。
同时在设计过程中发现了自己的不足之处,例如对以前所学的知识理解不够深刻,掌握的不够老固。
5.2感谢
在本次的课程设计的过程中要感谢指导老师孙活老师对我专业知识上的指导和焊接技术上的培训,如果没有这些也不会有我艺术灯设计的成功。
我还要感谢王川北老师平时对我专业知识上的辅导,有了平时的积累在课程设计中才能更好的运用。
还要感谢徐胤和李超同学在我整个课程设计过程中帮助我更好的使用AltiumDesigner和教会了我制作实物PCB板。
谢谢实验室的同学们在我完成设计期间的大力帮助和支持!
附录
图6-7原理图
图6-8PCB图
图6-9Proteus仿真图
程序
#include
#definekey1P1_0
#definekey2P1_1
#definekey3P1_2
#definekey4P1_3
unsignedcharflag=0;
//延时程序
voiddelay1(intm)
{unsignedinti,j;
for(i=0;i {for(j=0;j<500;j++); }} //按键扫描 voidkey_scan() {if(key1==0) {delay1(50); if(key1==0) {flag=1;} while(key1==0);} if(key2==0) {delay1(50); if(key2==0) {flag=2;} while(key2==0);} if(key3==0) {delay1(50); if(key3==0) {flag=3; } while(key3==0);} if(key4==0) {delay1(50); if(key4==0) {flag=4;} while(key1==0); }} //延时程序 voiddelay2(intm) { inti,j; for(i=0;i {for(j=0;j<100;j++) key_scan(); }} //LED灯走向 voidleft() {unsignedinti,j; for(j=0;j<2;j++) {P0=0xff; delay2(50); P0=0xfe; for(i=0;i<8;i++) {P0=((P0<<1)|(P0>>(8-i-1))); if(flag==2)break; delay2(50); } P0=0xff; delay2(50); P0=0x7f; for(i=0;i<8;i++) {P0=(P0>>1|P0<<(8-1-i)); if(flag==3)break; delay2(50); }}} voidright() {unsignedinti; P0=0xff; delay2(50); P0=0x7f; for(i=0;i<8;i++) {P0=(P0>>1); if(flag==3)break; delay2(50); }} voiddoublew() {unsignedinti,a,b; a=0xfe; b=0x7f; P0=0xff; delay2(100); for(i=0;i<4;i++) {P0=(a&b); if(flag==4)break; delay2(200); a=a<<1; b=b>>1; }} voidliangmie() {unsignedinti; P0=0xff; delay2(50); for(i=0;i<2;i++) {P0=0xfe; for(i=0;i<8;i++) {P0=(P0<<1); if(flag==5)break; delay2(50); } for(i=0;i<3;i++) {P0=0xff; delay2(50); P0=0x00; delay2(50); }}} //主函数 voidmain() {P0=0xff; P1=0xff; while (1) {key_scan(); switch(flag) { case1: left();break; case2: right();break; case3: doublew();break; case4: liangmie();break; default: break; }}} 参考文献 [1]刘守义.单片机应用技术.[M]西安: 西安电子科技大学出版社,2002.56-78 [2]胡键.单片机原理及接口技术实践教程.[M]北京: 机械工业出版社,1998.123-130 [3]李光飞.单片机课程设计实例指导.[M]北京: 北京航空航天大学出版社,2004.55-60 [4]李广军.实用接口技术.[M]成都: 电子科技大学出版社,1998.77-89 [5]杨西明.单片机编程与应用入门.[M]北京: 机械工业出版社,2004.99-109 [6]周航慈.单片机程序设计基础.[M]北京: 北京航空航天大学出版社,2003.83-94 [7]张俊谟.单片机原理与应用.[M]北京: 北京航空航天大学出版社,2002.16-25 [8]付家才.单片机控制工程实践技术.[M]北京: 化学工业出版社,2004.65-72 [9]潘新民.微型计算机控制技术.[M]北京: 人民邮电出版社,1999.48-56 [10]余锡存.单片机原理及接口技术.[M]陕西: 西安电子科技大学出版社,2000.156-168 [11]郭天祥.51单片机C语言教程.[M]北京: 电子工业出版社,2008.132-143 [12]张大朋.单片微机控制应用技术.[M]北京: 机械工业出版社,2006.156-170 [13]吴金戌.8051单片机实践与应用.[M]北京: 清华大学出版社,2002.200-210 [14]王文海.单片机应用与实践项目化教程.[M]北京: 化学工业出版社,2010.147-156 [15]蒋青.通信原理.[M]北京: 人民邮电出版社,2008. [16]冯玉珉.通信系统原理.[M]北京: 清华大学出版社,2003. [17]董玉冰: AltiumDdeigner09在电工电子技术中的应用.清华大学出版社,2008.11. [18]曾兴雯: 高频电路原理与分析,西安电子科技大学出版社,2006.8. [19]劳五一、劳佳: 模拟电子电路分析,设计与仿真,清华大学出版社,2007.5. [20]杨西明.单片机编程与应用入门.[M]北京: 机械工业出版社,2005.99-109
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 艺术 制作