基于单片机的节日彩灯设计.docx
- 文档编号:28860898
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:22
- 大小:524.73KB
基于单片机的节日彩灯设计.docx
《基于单片机的节日彩灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的节日彩灯设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于单片机的节日彩灯设计
单片机课程设计
题目:
院(系):
专业:
学号:
姓名:
指导教师:
摘要
彩灯控制器在我们的日常生活中有着重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。
本次报告中设计的花样彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
查阅相关资料,用简单的输入输出端口等硬件,结合实际彩灯的亮灭控制过程进行设计。
利用键盘上的灯实现灯的各种形式的变换,使彩灯变换的样式更多,克服了节日彩灯变换样式单调的缺点,使节日彩灯朝着变换多种多样的方式发展。
关键词:
可编程节日彩灯;循环;控制高低电平;实现对彩灯的控制
引言………………………………………………………………4
1、设计目的与要求………………………………………………5
2、设计总体方案…………………………………………………5
3、模块电路的设计………………………………………………7
4、独立设计部分………………………………………………10
5、焊接制作与调试结果及其分析……………………………………12
6、设计过程中的问题及其解决方案………………………………13
7、心得体会…………………………………………………………13
8、改进工作展望…………………………………………………14
参考文献…………………………………………………………14
附录一……………………………………………………………15
附录二……………………………………………………………17
附录三……………………………………………………………19
1设计目的与要求
1.1引言
在现代生活中,彩灯作为一种景观,安装在建筑物的适当地方。
一是作为装饰增添节日气氛,二是有一种广告宣传的作用:
用在舞台上增强晚会灯光效果。
彩灯控制器在我们的日常生活中有着重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。
本次报告中设计的花样彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
数码管是一种半导体发光器件,其基本单元是发光二极管。
通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
由于它的价格便宜、使用简单,在电器特别是家电领域应用极为广泛,空调、热水器、冰箱等等。
绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
可编程节日彩灯打破常规彩灯闪烁固定变化的现状,可根据人们不同的意愿进行编程设计出想要的变换的色彩效果。
查阅相关资料,用简单的输入输出端口等硬件,结合实际彩灯的亮灭控制过程进行设计。
利用键盘上的灯实现灯的各种形式的变换,使彩灯变换的样式更多,克服了节日彩灯变换样式单调的缺点,使节日彩灯朝着变换多种多样的方式发展。
1.2设计目的
通过课程设计使我们更进一步掌握微机原理与应用课程的有关知识,通过查阅资料,阅读程序,提高设计程序的能力及动手能力,使编程水平有一定的提高,同时也会提高我们通过动手进行硬件设计及程序设计从而提高解决实际问题的能力。
1.3实验要求————————————
1.用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭;
2.手动模式与自动模式切换:
设置一个按钮可以在自动模式和手动模式间切换;
3.手动模式可以用输入按钮在几种灯光效果间切换;
4.自动模式下自动在几种效果间切换的功能;
5.可以通过按钮暂停彩灯效果,使小灯全亮并闪烁,再次按下相同按钮后继续之前的效果。
2设计总体方案
2.1硬件设计的思路、原理、设计细节
用单片机最小系统控制彩灯电路用流水灯的方式实现彩灯自动闪烁,彩灯电路总共有32的LED共隐接法组成,彩灯电路有三个部分,八个LED组成“二”,十六个LED组成字母“G”,八个LED组成字母“O”。
用P0口的P1.0、P1.1、P1.2、P1.3控制四个LED点亮或熄灭,P1.0、P1.1、P1.2、P1.3控制四个LED点亮或熄灭,用P1和P2控制字母“G”的点亮或熄灭,用P3控制字母“O”的点亮熄灭。
2.2、软件设计的思路、原理、设计细节
采用C语言编写控制程序,程序设计思路用流水灯先点亮“二”,然后再点亮字母“G”,最后点亮“O”。
用while死循环反复循环点亮“一”、“二”、“GO”。
2.3原理框图如图1.1所示——————————
2.4设计电路的工作原理——————————————————————
用C语言程序控制单片机最小系统,使IO口输出高低电平控制彩灯电路的闪烁。
2.5彩灯的电路工作原理图如下图所示————————————————
稍微解释一下原理图——————
彩灯电路总共有32的LED共隐接法组成,彩灯电路有三个部分,八个LED组成“二”,十六个LED组成字母“G”,八个LED组成字母“O”。
用P0口的P1.0、P1.1、P1.2、P1.3控制四个LED点亮或熄灭,P1.0、P1.1、P1.2、P1.3控制四个LED点亮或熄灭,用P1和P2控制字母“G”的点亮或熄灭,用P3控制字母“O”的点亮熄灭。
3、模块电路的设计
3.1单片机控制电路
3.2彩灯显示电路
1.原件的采购
2.通过以上的的“G”原理图,仿真并利用Protel软件来画PCB
3.腐蚀电路板,并焊接“G”电路
4.焊接完成后配合小组进行调试
PCB图如下:
4.2由以上分工可知:
4.2.1控制电路的工作原理————
彩灯电路总共有32的LED共隐接法组成,彩灯电路有三个部分,八个LED组成“二”,十六个LED组成字母“G”,八个LED组成字母“O”。
用P0口的P1.0、P1.1、P1.2、P1.3控制四个LED点亮或熄灭,P1.0、P1.1、P1.2、P1.3控制四个LED点亮或熄灭,用P1和P2控制字母“G”的点亮或熄灭,用P3控制字母“O”的点亮熄灭
4.2.2彩灯控制电路的电路图——
4.2.3彩灯控制电路的程序——
#include
#include
/*****************************
函数功能:
延时一段时间
*****************************/
unsignedcharL[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsignedcharL1[8]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
voiddelay1s(unsignedinti)
{
unsignedintj;
while(i--)
{
for(j=0;j<=151;j++){;}
}
}
/*****************************
函数功能:
主函数
*****************************/
voidmain(void)
{
unsignedchari,j;
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
while
(1)
{
for(j=0;j<8;j++)
{
P0=L[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P1=L[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P2=L[j];
delay1s(100);
};
for(i=0;i<8;i++)
{
P3=L[i];
delay1s(100);
};
for(j=0;j<8;j++)
{
P0=L1[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P1=L1[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P2=L1[j];
delay1s(100);
};
for(i=0;i<8;i++)
{
P3=L1[i];
delay1s(100);
};
}
}
5、焊接制作与调试结果及其分析
5.1焊接过程
通过大二下学期对单片机所学知识、查找图书馆和网络资料以及实训期间老师的答疑。
我制出了正确的抢答器原理图,但是这次不用对板子进行转印腐蚀,用的是万能板,画好原理图,然后根据原理图进行插装元器件以及用导线和焊锡接线,这看似简单的过程,其实还是需要工艺的,这一过程需要足够的耐心与细心,不能出错,最终做好了板子。
5.2调试过程
在制作调试过程中首先写完程序,后利用proteus7professional仿真软件进行程序和硬件的仿真。
我把我的程序写完后就烧到我的芯片上连接好线路后开始运行,因为之前已经用仿真软件进行过测试,所以应该不会有什么大问题,基本能像仿真一样的效果。
进行烧录程序后果然板子还是一切正常,最终实训成功。
5.3Proteus仿真图
6、设计过程中的问题及其解决方案
在设计过程中遇到如何设计自动与手动开关切换的问题,我们的解决方案是在四个IO口处加上开关从而达到手动和程序相互转换控制每一个LED。
其实还有比这个还要好的方案,那就是用程序来控制和按键来对LED进行控制,这样可以节约很多成本。
在上电调式电路时发现显示“一、二”彩灯电路发光很暗,经过分析发现加在显示“一、二”彩灯电路上的电阻对LED起限流作用,当去掉电阻后其发光变得多亮。
把控制程序下载到单片机中,发现单片机的P0口无法输出控制信号而别的IO口也可以正常输出信号。
在检查程序时并没有发现有错。
再次检查电路图时发现P0口没有加上拉电阻,因而导致电流太小。
加上上拉电阻后,P0口能正常控制彩灯电路。
7、心得体会
通过这次课程设计,使我对硬件电路的工作原理有了进一步的学习,进一步的认识;在软件方面,在程序的设计,程序的调试方面都学到了很多东西,很有成就感。
在这次课程设计中我遇到了一些困难,但在老师的指导和同学的帮助,再加上自己查阅了些许资料的情况下都解决了。
虽然课程设计进行的不够顺利,但还是完成了任务,使自己的专业知识又得到了提升。
21世纪是计算机全面发展应用的时代,很多人不是在制造计算机而是在使用计算机,在使用计算机的人群中只有从事嵌入式系统应用的人才真正地进入到计算机系统内部软硬件体系中,才能真正领会计算机的智能化本质并掌握智能化设计的知识。
通过这次难得的实践机会给了我很大的收获,不仅巩固了原有的知识,并增强了动手能力,培养了面对问题的分析能力以及遇到困难如何面对。
附录一
1、电路原理图
2、实物图
3、PCB图
4、仿真图
附录二
程序代码:
#include
#include
/*****************************
函数功能:
延时一段时间
*****************************/
unsignedcharL[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
unsignedcharL1[8]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
voiddelay1s(unsignedinti)
{
unsignedintj;
while(i--)
{
for(j=0;j<=151;j++){;}
}
}
/*****************************
函数功能:
主函数
*****************************/
voidmain(void)
{
unsignedchari,j;
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
while
(1)
{
for(j=0;j<8;j++)
{
P0=L[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P1=L[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P2=L[j];
delay1s(100);
};
for(i=0;i<8;i++)
{
P3=L[i];
delay1s(100);
};
for(j=0;j<8;j++)
{
P0=L1[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P1=L1[j];
delay1s(100);
};
for(j=0;j<8;j++)
{
P2=L1[j];
delay1s(100);
};
for(i=0;i<8;i++)
{
P3=L1[i];
delay1s(100);
};
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 节日 彩灯 设计