彩灯控制器.docx
《彩灯控制器.docx》由会员分享,可在线阅读,更多相关《彩灯控制器.docx(14页珍藏版)》请在冰豆网上搜索。
![彩灯控制器.docx](https://file1.bdocx.com/fileroot1/2023-1/26/db4cb74f-b87e-42a4-9150-882d396fbe5a/db4cb74f-b87e-42a4-9150-882d396fbe5a1.gif)
彩灯控制器
摘要
彩灯控制器就是控制八只LED灯,通过点亮、熄灭不同顺序的灯实现彩灯的变换,按照要求设计八只LED灯的显示顺序,LED灯的显示时间可调,分别可调为0.25S,0.5S,1S,2S。
设计时先观察分析要求的八只LED的显示顺序,然后根据观察和分析得到的规律设计出总体框架,进行总体设计后划分子系统,定义个子系统的功能,详细设计,然后设计各子系统的内部,并编写程序用单片机进行控制,最后进行电路的调试
本设计从经济实用的角度出发,采用美国Atmel公司的单片机AT89S52作为主控芯片与数据存储器单元,结合外围的开关、LED显示等电路,用C语言编写主控芯片的控制程序,设计了一款可调频率的彩灯控制器。
经实验证明,该彩灯控制器具有设计方法合理,简单易行,成本低,安全实用等特点,具有推广价值。
关键词:
单片机;彩灯控制器;选频;
Abstract:
LightscontrolleriscontroleightonlyLEDlamp,throughthelight,putoutadifferentordertorealizethetransformationofthelamplights,accordingtothedesignrequirementforeightonlyLEDlights,LEDlightsdisplaysequencedisplaytimecanbeadjusted,whichcanbeadjustedto0.25S,0.5S,1S,2S.
WhenthedesignrequirementsofthefirstobservationanalysiseightonlyLEDdisplayorder,andthenbasedontheobservationandanalysisofthelawofgettodesigntheoverallframe,carriesontheoveralldesignclassificationsubsystem,definitionisthefunctionofthesystem,detaileddesign,andthendesignthesubsystemsoftheinternal,andwriteaprogramusingsingle-chipmicrocomputercontrol,thecircuitdebugging
ThisdesignfromtheeconomicandpracticalAngle,theAmericanAtmelcompanyasthemaincontrolchipAT89S52singlechipmicrocomputeranddatastorageunit,combinedwithperipheralswitch,LEDdisplaycircuit,writteninCmastercontrolchipcontrolprogram,designakindofadjustablefrequencylightscontroller.
Thetestshowsthatthelightscontrollerdesignmethodisreasonable,simple,lowcost,safeandpracticalcharacteristics,hasthevalueofpopularization.
Keywords:
singlechipmicrocomputer;lanterncontroller;frequency
目录
引言…………………………………………………………………1
1设计方案……………………………………………………………1
1.1彩灯控制器的设计分析…………………………………………………………1
1.2设计要求…………………………………………………………………………2
2硬件电路设计………………………………………………………2
2.1单片机AT89S52简介……………………………………………………………2
2.1.1ATS89S52………………………………………………………………………2
2.1.2ATS89S52主要特性……………………………………………………………2
2.2整体硬件原理图…………………………………………………………………4
2.3设计原理…………………………………………………………………………4
2.3.1芯片引脚说明…………………………………………………………………………4
2.3.2LED彩灯………………………………………………………………………6
3程序设计…………………………………………………………6
3.1程序设计内容……………………………………………………………………6
3.2C语言源程序……………………………………………………………………6
4心得体会…………………………………………………………9
谢辞…………………………………………………………………10
参考文献……………………………………………………………11
附录…………………………………………………………………12
引言
由于现代身后经济发展迅猛,城市发展尤为突出,各种灯光广告和装饰的需求日益增多,同事电子技术也在飞速发展,各种电子元件的价格也在不断下降,性能在提高,体积在减小,这使得彩灯的装饰应用更加广泛。
作为电子信息工程专业的学生,我们都应该能够运用学到的数电和单片机只是,去解决和分析一些逻辑电路的问题,继而学会设计具有一定逻辑功能的逻辑器件,做到学以致用。
这次课设给我们动手操作能力得到较好的锻炼。
我设计的彩灯控制器,严格按照要求,具有可重复循环,显示时间间隔可调等功能。
1设计方案
1.1彩灯控制器的设计分析
随着人们生活水平的提高,大家的生活环境也不断改善和美化。
忙碌的一天生活过去,人们往往会去娱乐场所放松一下。
节日的到来,城市中张灯结彩,举办节目来庆祝节日的到来。
LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制间的等特点而得到了广泛的应用,用彩灯来装饰接到和城市建筑物已经成为一种时尚。
但目前市场上各式的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一段制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间断的需要来调节亮灯时间。
因此,在原有的基础上改进,设计了这款彩灯控制器,可以通过不同的按键来控制彩灯的闪烁频率。
避免了目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结果复杂、功能单一的缺点。
变换、闪烁、跳跃式的彩灯为促进销售,为营造欢乐、多姿多彩的生活正越来越受到人们的重视与欢迎。
1.2设计要求
要求:
(1)有八只LED,L0……L7
(2)显示顺序如下表,其中在L0……L7中,1表示灭,0表示亮
(3)显示间隔为0.25S,0.5S,1S,2S可调。
序号
L0
L1
L2
L3
L4
L5
L6
L7
0
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
2
1
0
1
1
1
1
1
1
3
1
1
0
1
1
1
1
1
4
1
1
1
0
1
1
1
1
5
1
1
1
1
0
1
1
1
6
1
1
1
1
1
0
1
1
7
1
1
1
1
1
1
0
1
8
1
1
1
1
1
1
1
0
9
1
1
1
1
1
1
1
1
10
0
1
1
1
1
1
1
1
11
0
0
1
1
1
1
1
1
12
0
0
0
1
1
1
1
1
13
0
0
0
0
1
1
1
1
14
0
0
0
0
0
1
1
1
15
0
0
0
0
0
0
1
1
16
0
0
0
0
0
0
0
1
17
0
0
0
0
0
0
0
0
18
1
0
0
0
0
0
0
0
19
1
1
0
0
0
0
0
0
20
1
1
1
0
0
0
0
0
21
1
1
1
1
0
0
0
0
22
1
1
1
1
1
0
0
0
23
1
1
1
1
1
1
0
0
24
1
1
1
1
1
1
1
0
25
1
0
0
0
0
0
0
0
26
0
1
0
0
0
0
0
0
27
0
0
1
0
0
0
0
0
28
0
0
0
1
0
0
0
0
29
0
0
0
0
1
0
0
0
30
0
0
0
0
0
1
0
0
31
0
0
0
0
0
0
1
0
32
0
0
0
0
0
0
0
1
2.硬件电路设计
2.1单片机AT89S52简介
2.1.1AT89S52
AT89S52是一种低功耗,高性能CMOS8位微控制器,具有8K在系统可编程存储器。
器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准80C51指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2.1.2AT89S52主要特性
1.MCS-51兼容;
2.8K字节可编程闪烁存储器;
3.1000写/擦周期;
4.全静态工作:
0Hz-24Hz;
5.三级程序存储器锁定128*8位;
6.内部RAM32可编程I/O线;
7.三个;16位定时器/计数器;
8.6个中断源;
9.全双工UART穿行通道;
10.低功耗空闲和掉电模式;
11.掉电后中断可唤醒;
12.看门狗定时器;
13.双数据指针;
14.掉电标识符。
图1单片机
2.2整体硬件原理图
硬件部分包括控制频率部分,LED彩灯部分以及用单片机编程用到的的连接口部分。
图2硬件原理图
2.3设计原理
2.3.1芯片引脚说明
AT89S52是一种低功耗、高性能CMOS8位微处理器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash语序程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵魂、超有效的解决方案。
AT89S52具有以下标准功能:
8K字节8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保护,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0不具有内部上拉电阻。
在flash编程时,P0口也用来解释指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能去掉4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口松弛高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1.在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.3.2LED彩灯
LED有共阴极和共阳极两种。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
用8只LED构成一排彩灯,每只LED串联一个限流电阻,用作保护电路。
3.程序设计
3.1程序设计内容
(1).用数组设定好33种不同的状态;
(2).调用延时函数,控制LED灯的闪烁频率。
3.2C语言源程序(流程图见附录。
)
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitK1=P3^3;
sbitK2=P3^4;
sbitK3=P3^5;
sbitK4=P3^6;
ucharcodetable[]={0xfe,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,
0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0x80,0x40,
0x20,0x10,0x08,0x04,0x02,0x01
};/*定义彩灯的33种状态*/
voiddelaytms(uintt)/*延时t毫秒*/
{
uinti;
ucharj;
for(i=0;ifor(j=0;j<110;j++)/*延时一毫秒*/
{
;
}
}
voidmain()
{
uintk;
while
(1)
{
P0=0x00;
k=0;
if(K1==0)
{
delaytms(5);
if(K1==0)
{
while(!
K1);
while(k!
=33)
{
P0=table[k];
delaytms(250);
k++;
}
}
}
if(K2==0)
{
delaytms(5);
if(K2==0)
{
while(!
K2);
while(k!
=33)
{
P0=table[k];
delaytms(500);
k++;
}
}
}
if(K3==0)
{
delaytms(5);
if(K3==0)
{
while(!
K3);
while(k!
=33)
{
P0=table[k];
delaytms(1000);
k++;
}
}
}
if(K4==0)
{
delaytms(5);
if(K4==0)
{
while(!
K4);
while(k!
=33)
{
P0=table[k];
delaytms(2000);
k++;
}
}
}
}
}
4.心得体会
从开始进行设计密码锁到完成实现彩灯控制器功能,我找了很多资料,并应用了protel99se软件进行画图和仿真,并运用单片机知识进行编程以完成设计要求的功能。
我已经尽了自己的最大努力,也从中学到了很多知识,获益匪浅。
谢辞
参考文献
[1]刘文涛.MCS-51单片机培训教程(C51)版.电子工业出版社,2005.8.
[2]王宜怀.单片机原理及其嵌入式应用教程.北京希望电子出版社,2002.8.
[3]邵贝贝.单片机嵌入式应用的在线开发方法.清华大学出版社,2006.3.
[4]龚运新.单片机C语言开发技术.清华大学出版社,2006.10.
[5]JeanJ.Labrosse著.嵌入式系统构件.袁勤勇等译.北京:
机械工业出版社,2002.
附录
PCB图:
C语言程序流程图: