彩灯变化.docx
- 文档编号:14815252
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:20
- 大小:212.27KB
彩灯变化.docx
《彩灯变化.docx》由会员分享,可在线阅读,更多相关《彩灯变化.docx(20页珍藏版)》请在冰点文库上搜索。
彩灯变化
石家庄铁道大学四方学院
集中实践报告书
课题名称
节日彩灯控制器
姓名
学号
系、部
电气工程系
专业班级
方
指导教师
高迎霞孙秀婷
2016年7月2日
1、设计任务及要求:
设计任务:
1.了解节日彩灯控制器的工作原理;
2.掌握电路板的实物焊接;
3.掌握独立电源设计方法和原理;
要求:
设计4个按键S0、S1、S2、S3:
S0—开始,按此键则灯开始流动(由上而下);
S1—停止,按此键则停止流动,所有灯为暗;
S2—上,按此键则灯由上向下加速流动;
S3—下,按此键则灯由下向上流动;
二、指导教师评语:
三、成绩
指导教师签名:
年月日
节日彩灯控制器
一、设计目的
1.了解节日彩灯控制器的工作原理;
2.掌握电路板的实物焊接;
3.掌握独立电源设计方法和原理;
二、设计要求
设计4个按键S0、S1、S2、S3:
S0—开始,按此键则灯开始流动(由上而下);
S1—停止,按此键则停止流动,所有灯为暗;
S2—上,按此键则灯由上向下加速流动;
S3—下,按此键则灯由下向上流动;
3、硬件电路设计
3.1系统结构框图
单片机
开关
图3-1节日彩灯控制系统框图
节日彩灯控制系统主要由单片机、LED灯、5V电源及开关组成几部分组成。
系统框图如图3-1所示。
3.2STC89C52单片机介绍
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。
当P0口的管脚第一次写“1”时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口作为AT89C51的一些特殊功能口,管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(片外数据存储器写引脚)
P3.7/RD(片外数据存储器读引脚)
图3-2STC89C52引脚图
3.3复位电路如图3-3所示:
图3-3复位电路图
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
单片机的RST引脚为主机提供了一个外部复位信号输入口。
利用的是上电自动复位方式,只要VCC的上升时间不超过1ms,那么电源接通后就完成了系统的复位初始化。
3.4晶振电路如图3-4所示:
图3-4晶振电路
外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路(AT89C52内部有一个用于构成内部振荡器的高增益反相放大电路,XTAL1、XTAL2分别是该放大器的输入和输出端)中构成并联振荡电路。
为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。
由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。
当正常工作时,外部振荡器可以计算出XTAL1上的电容,最大可达到100pF。
这是由于振荡器电容和反馈电容之间的相互作用。
当外部信号是标准高电平或者低电平时,电容不会超过20PF。
3.5开关控制电路:
图3-5开关控制电路
开关控制电路由四个拨档开关组成。
四个开关一端共同接地,另外一端分别接单片机最小系统的P2口。
通过P2口检测开关状态控制发光二极管亮灯方式。
开光控制电路如图3-3所示。
3.6LED显示电路
图3-6 发光二极管显示电路
主要由8个LED灯与保护电阻组成。
LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现流水灯。
电源接最小系统+5V电压,发光二极管显示电路如图3-6所示。
3.7系统电路原理图
由按键控制功能的LED工作的方式,其中的LED采取共阳极接法通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。
图3-7 系统电路原理图
LED彩灯系统包括5大部分,即闪烁系统、脉冲震荡系统、核心控件(89C52主控模块)、复位电路。
主控模块,具有控制功能,闪烁系统是受控模块,上面焊有八个白色LED灯及八个大小为1k的电阻。
脉冲震荡系统是由一个12MHz的晶振及两个12pf的电容组成。
核心控件主要由89C52芯片组成,是整个彩灯循环系统的核心是控制彩灯循环闪烁等等一切功能的部件。
复位开关连接控制器的RST端,实现复位控制。
基于89C52单片机的彩灯控制方案,实现对LED彩灯的控制。
本方案以89C52单片机作为主控核心,与驱动等模块组成核心主控制模块。
在主控模块上设有晶振电路和8个LED显示二极管,根据用户需要可以编写若干种亮灯模式,利用其两个外部中断实现花型的切换及快慢的切换,在不同时刻输出灯亮或灯灭的控制信号,硬件主电路图如图3-5所示。
节日彩灯控制器
开关
4
发光二极管
8
电阻
1kΩ
8
排针
14
排线
14
导线
若干
表1元器件清单
3.8实物图
图3-8实物图
四、程序流程图设计
4.1主程序流程图如图4-1所示:
N
Y
Y
Y
Y
N
N
N
图4-1程序流程图
主程序是设置p1口作为输出调用san()函数和wu()函数,并且对其进行查表for循环,赋值给p1口后使其输出,观察LED灯显示当调用san()函数时LED灯由上而下流动点亮,当调用wu()函数时LED灯由下而上流动点亮。
4.2主程序流程图如图4-2所示:
图4-2子程序调用san()函数流程图
子程序调用san()函数首先给a赋值看a是否小于8,当小于8时进行查表输出否则返回主程序,当a进行查表输出,LED灯亮,此时延时a加1,LED灯由上而下流水点亮。
五、程序设计
#include
#defineucharunsignedchar
sbits0=P2^4;
sbits1=P2^5;
sbits2=P2^6;
sbits3=P2^7;
inti,a=1,a1=1,a2=0;
bitflag=1;
intnumber1,number2;
ucharlsd[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharlsd1[]={0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18};
voiddelay(intz)
{
intx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidmain()
{
intn0,n1,n2,n3,n4;
if(s0==0)
{
n0=0;n1=0;n2=0;n3=0;n4=1;
}
while(n4)//启动
{
n0=1;n1=0;n2=0;n3=0;
while(n0)
{
for(i=0;i<8;i++)
{
P1=lsd[i];
if(s1==0)
{
a=1;n1=1;n0=0;n2=0;n3=0;break;
}
if(s2==0)
{
a=1;n2=1;n0=0;n1=0;n3=0;break;
}
if(s3==0)
{
a=1;n3=1;n0=0;n2=0;n1=0;break;
}
delay(100);
}
}
while(n1)//暂停
{
P1=0xff;
if(s0==0)
{
a=1;n0=1;n1=0;n2=0;n3=0;break;
}
}
while(n2)//
{
if(a==1)
{
for(i=0;i<8;i++)
{
if(s1==0)
{
a=1;n1=1;n0=0;n2=0;n3=0;break;
}
if(s0==0)
{
a=1;n0=1;n2=0;n1=0;n3=0;break;
}
if(s3==0)
{
a=1;n3=1;n0=0;n2=0;n1=0;break;
}
if(s2==0)
{
a=a+1;
n2=1;n0=0;n1=0;n3=0;break;
}
P1=lsd[i];
delay(170);
}
}
if(a==2)
{
for(i=0;i<8;i++)
{
if(s1==0)
{
a=1;n1=1;n0=0;n2=0;n3=0;break;
}
if(s0==0)
{
a=1;n0=1;n2=0;n1=0;n3=0;break;
}
if(s3==0)
{
a=1;n3=1;n0=0;n2=0;n1=0;break;
}
if(s2==0)
{
a=a+1;
n2=1;n0=0;n1=0;n3=0;break;
}
P1=lsd[i];
delay(110);
}
}
if(a==3)
{
for(i=0;i<8;i++)
{
if(s1==0)
{
a=1;n1=1;n0=0;n2=0;n3=0;break;
}
if(s0==0)
{
a=1;n0=1;n2=0;n1=0;n3=0;break;
}
if(s3==0)
{
a=1;n3=1;n0=0;n2=0;n1=0;break;
}
if(s2==0)
{
a=a+1;
a=1;n2=1;n0=0;n1=0;n3=0;break;
}
P1=lsd[i];
delay(40);
}
}
if(a==4)
{
a=1;
}
}
while(n3)
{
for(i=7;i>=0;i--)
{
P1=lsd[i];delay(100);
if(s1==0)
{
a=1;n1=1;n0=0;n2=0;n3=0;break;
}
if(s2==0)
{
a=1;n2=1;n0=0;n1=0;n3=0;break;
}
if(s0==0)
{
a=1;n0=1;n3=0;n2=0;n1=0;break;
}
}
}
}
}
六、设计总结
程序写入之后,按下按键S0,LED灯依次从上向下流动;按下按键S1,LED灯停止全灭;按下按键S2,LED灯从上往下加速流动;按下按键S3,LED从下往上依次流动。
切换花式的同时,灯的亮灭速度与顺序改变。
实现所有课题设计要求。
在这次课程设计中我遇到了一些困难,但在老师的指导和同学的帮助,再加上自己查阅了些许资料的情况下都解决了。
虽然课程设计进行的不够顺利,但还是完成了任务,使自己的专业知识又得到了提升。
在制作过程中熟练了Portel的制图方法,同时对单片机有了进一步的认识,巩固了课上学习的理论知识,对于计算机汇编语言的系统化整体化有了更深的认识。
在编写程序的过程中遇到了很多困难经过反复修改不断修正最终才能得以执行。
整个设计过程最大的收获就是意识到理论知识扎实的重要性,实践是建立在理论之上。
在做的过程中也遇到一些问题,首先是程序的编写,我们用的是keil软件,经过不断的调试修改终于使程序编译成功,然后将其加到Portel中设计好的电气图中进行仿真,没有错误。
在硬件焊接的过程中主要是端口的选择,开始由于端口没连对,使我们的四个按键无法控制彩灯亮的方式,还有就是焊接时要小心别焊错了。
在这次难得的课程设计过程中我们锻炼了自己的思考能力和动手能力。
通过题目选择和设计电路的过程中,加强了我们思考问题的完整性和实际生活联系的可行性。
在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。
还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。
同时感谢老师和同学的指导帮助。
七、参考文献
[1]高峰.《单片微型计算机原理与接口技术》.科学出版社,2007.
[2]谭浩强.《C程序设计(第二版)》.清华大学出版社,1999.
[3]李广弟.《单片机基础》.北京航空航天大学出版社,2001.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 彩灯 变化