C51单片机控制LED灯设计方案
- 格式:ppt
- 大小:3.22 MB
- 文档页数:68
目录第1节引言 (1)1.1LED彩灯概述 (1)1.2 系统主要功能 (1)第2节新型 LED 彩灯硬件设计 (3)2.1 系统的硬件构成及功能 (3)2.1.1 主控模块电路设计 (3)2.1.2 管内 LED 板模块设计 (3)2.2 AT89C2051单片机及其引脚说明 (4)2.3LED显示数码管 (4)第3节系统的软件设计 (6)3.1 软件设计 (6)第4节结语 (8)参考文献 (9)附录 (10)第1节引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED 彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
但目前市场上各式样的 LED 彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
1.1LED彩灯概述该LED彩灯控制器是一种基于 AT89C51 单片机的彩灯控制器,实现对 LED 彩灯的控制。
本方案以 AT89C51 单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。
在主控模块上设有 8 个按键和 5 位七段码 LED 显示器,根据用户需要可以编写若干种亮灯模式,利用其内部定时器 T0 实现一个基本单位时间为 5 ms 的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。
该新型 LED 彩灯与普通 LED 彩灯相比,具有体积小、价格低、低能耗等优点。
1.2 系统主要功能新型 LED 彩灯分为 2 部分,即彩灯控制器(主控模块)和管内 LED 板模块(受控模块)。
KeilC51学习2点亮LED灯P0⼝联接8个LED灯,P1^0~P1^7;#include<reg52.h>sbit LED=P1^0;void main(){LED=0;while(1);}//此⽅法使⽤1个字节对单个端⼝赋值P1 = 0xFF; //P1⼝全部为⾼电平,对应的LED灯全灭掉,//ff换算成⼆进制是 1111 1111P1 = 0xfe; //P1⼝的最低位点亮,可以更改数值是其他的灯点亮//0xfe是16进制,0x开头表⽰16进制数,//fe换算成⼆进制是 1111 1110全部取反,主函数中的代码修改为LED=~LED;#include<reg52.h>unsigned int i,j;void main(){while(1){P1=~(1<<j++);if(j==8){j=0;}for(i=0;i<50000;i++);}}1void main (void)2 {3while (1) //主循环4 { //主循环中添加其他需要⼀直⼯作的程序5 LED=~LED;6//将P1.0⼝赋值 0,对外输出低电平7 delay(100);//执⾏100次8 }9 }10void delay(int time)//延时函数11 {12int i=0;13while(time--)14 {15 i=4000;16while(i--);17 }18 }延时闪烁1void delay(int time)//延时函数2 {3int i=0;4while(time--)5 {6 i=4000;7while(i--);8 }9 }10void main (void)11 {12while (1) //主循环13 { //主循环中添加其他需要⼀直⼯作的程序1415 unsigned char i; //定义⼀个⽆符号字符型局部变量 i 取值范围 0~25516//P1=0xfe; //赋初始值17for(i=0;i<8;i++) //加⼊ for循环,表明for循环⼤括号中的程序循环执⾏8次18 {19 P1<<=1;20 delay(100);//执⾏100次21 }22 }23 }延时左移1void delay(int time)//延时函数2 {3int i=0;4while(time--)5 {6 i=4000;7while(i--);8 }9 }10void main (void)11 {1213 unsigned char i; //定义⼀个⽆符号字符型局部变量 i 取值范围 0~25514 delay(100);15 P1=0xfe; //赋初始值16while (1) //主循环17 {18for(i=0;i<8;i++) //加⼊ for循环,表明for循环⼤括号中的程序循环执⾏8次19 {20 delay(100);21 P1<<=1;22 P1=P1|0x01; //左移后,最右端⾃动赋值0,所以需要该语句赋值123 }24 P1=0xfe; //重新赋初始值25//主循环中添加其他需要⼀直⼯作的程序26 }27 }循环左移1 sbit LED0=P1^0;2void delay(int i)//延时函数3 {4while(i--);5 }6void main (void)7 {89 unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值10while (1) //主循环11 {12 LED0=1;13 delay(60000); //特意加延时,可以看到熄灭的过程14for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表⽰低15//电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次1617 LED0=0; //点亮LED18 delay(PWM_LOW);//延时长度,600次循环中从1加⾄59919 LED0=1; //熄灭LED20 delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减⾄12122 }23 LED0=0;24for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //与逐渐变亮相反的过程2526 LED0=0;27 delay(PWM_LOW);28 LED0=1;29 delay(CYCLE-PWM_LOW);30 }31//主循环中添加其他需要⼀直⼯作的程序32 }33 }呼吸灯流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2//头⽂件包含特殊功能寄存器的定义34void delay100ms(unsigned char num);5/*------------------------------------------------6流⽔灯7------------------------------------------------*/8void main (void)9 {10 unsigned char led=0xff,mask=0x1,flag=0;11//unsigned char tflag=0,time=100;12while(1)13 {14 P1=led^mask; //mask为0 全灭15 delay100ms(5); //延时500ms16if(0x80==mask)17 flag=0;// 让mask向右位移18if(0x1==mask)19 flag=1;//让mask向左位移20 flag?(mask<<=1):(mask>>=1);21 }22 }2324void delay100ms(unsigned char num)25 {26 unsigned char n,m;27for(;num;num--)28 {29for(n=200;n;n--)30 {31for(m=250;m;m--);32 }33 }34 }流⽔灯函数实现流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2 #include<intrins.h>3#define uchar unsigned char //头⽂件包含特殊功能寄存器的定义 4void delay100ms(unsigned char num);5/*------------------------------------------------6利⽤_crol_、_cror_实现流⽔灯7_crol_ 将char型变量循环左移8_cror_ 将char型变量循环右移9------------------------------------------------*/10void main (void)11 {12 uchar x=0x3;13 bit flag=0;14while(1)15 {16 P1=x;17 delay100ms(10);18if(0x3==x)19 flag=0;20else if(0xc0==x)21 flag=1;22 flag?(x=_cror_(x,2)):(x=_crol_(x,2));23 }24 }25//延时函数26void delay100ms(unsigned char num)27 {28 unsigned char n,m;29for(;num;num--)30 {31for(n=200;n;n--)32 {33for(m=250;m;m--);34 }35 }36 }流⽔灯2指针实现流⽔灯#include <reg52.h>void delay(unsigned int);//指针实现流⽔灯代码unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void main(){unsigned char i,*p;//定义⼀个⽆符号字符型变量i各⼀个指向⽆符号字符型变量的指针变量P while(1){p=&dis[0];//把数组中第⼀个成员数据(0xFE)所占的内存地址赋给指针变量P for(i=0;i<8;i++){P1=*p;//取指针指向的数组元素,并拷贝给单⽚机的P0⼝p++; //指针加1,指向数组的下⼀个元素delay(10);}}}void delay(unsigned int i){unsigned int j;for(;i!=0;i--){for(j=3000;j!=0;j--);}}指针实现流⽔灯花样流⽔灯1 #include<reg52.h> //包含头⽂件,⼀般情况不需要改动,2#define uchar unsigned char //头⽂件包含特殊功能寄存器的定义3 uchar code tab[]={40x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80, //正向流⽔灯50x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0, //反向流⽔灯60x55,0xaa,0x55,0xaa,0x55,0xaa,0x0, //隔灯闪烁70x0f,0xf0,0x0f,0xf0,0x0, //⾼四盏底四盏闪烁80xcc,0x33,0xcc,0x33,0xcc,0x33,0x0//隔两盏灯闪烁9 };10void delay100ms(unsigned char num);11/*------------------------------------------------12花样流⽔灯13------------------------------------------------*/14void main (void)15 {16 uchar x;17while(1)18 {19for(x=0;x<35;x++)20 {21 P1=tab[x];22 delay100ms(10);23 }24 }25 }2627void delay100ms(unsigned char num)28 {29 unsigned char n,m;30for(;num;num--)31 {32for(n=200;n;n--)33 {34for(m=250;m;m--);35 }36 }37 }花样流⽔灯指针,⼆维数组花样流⽔灯#include <reg52.h>void delay(unsigned int ); //延时函数的声明//*******定义⼀个⼆维数组,存储40个彩灯数据。
C51单片机控制LED灯设计方案详解下面,我将详细介绍C51单片机控制LED灯的设计方案:1.硬件设计:a.选择合适的LED灯模块:根据实际需求选择合适的LED灯模块,包括LED灯的尺寸、亮度、颜色等参数。
b.连接电源和单片机:将LED灯模块与C51单片机进行连接,通常使用一个适当的电阻将LED灯连接到单片机的GPIO引脚,用于限流。
c.设计电源电路:根据LED灯模块的工作电压和电流需求设计合适的电源电路,确保LED灯能够正常工作。
2.软件设计:a.确定控制方式:根据具体需求,确定LED灯的控制方式,例如手动控制、定时控制、网络控制等。
b.编写控制程序:使用C语言或汇编语言编写控制程序,实现LED灯的开关、亮度调节、颜色变换等功能。
C51单片机具有丰富的GPIO引脚和定时器等功能模块,能够轻松实现这些功能。
c.设计电源管理功能:为了提高LED灯的使用寿命和节能性能,可以设计电源管理功能,例如自动关闭LED灯、调节LED灯亮度等。
3.调试与测试:a.硬件调试:利用示波器等设备对硬件电路进行测试和调试,确保LED灯正常工作。
b.软件调试:通过单片机仿真器或调试器对软件程序进行调试,检查程序的逻辑和功能是否正常。
c.系统整体测试:在完成硬件和软件调试后,进行整体系统测试,验证LED灯的各项功能和性能。
4.优化与改进:a.优化程序性能:根据实际需求,对程序进行优化,提高LED灯控制的响应速度和稳定性。
b.改进硬件设计:根据实际测试结果和用户反馈,对硬件电路进行改进,提高LED灯的亮度、稳定性和可靠性。
c.安全性设计:为了保证LED灯的安全性,可以设计过压、过流和过热保护电路,防止LED灯损坏或引发安全事故。
总结起来,C51单片机控制LED灯的设计方案主要包括硬件设计、软件设计、调试与测试以及优化与改进。
通过合理的硬件设计和高效的软件程序,能够实现LED灯的各种控制功能,提高LED灯的亮度、稳定性和可靠性,满足不同应用场景的需求。
自己设计的51单片机控制LED七彩渐变灯MCU:89C51,89S51,89C2051等晶振:12MHz电路驱动(LED连接):P1.0连接蓝色LEDP1.1连接红色LEDP1.2连接绿色LED (必须使用纯绿色高亮LED,不可使用普通草绿管)全为低电平驱动(低电平点亮),可以加三极管驱动,红、蓝、绿LED也可以交换位置控制方式:PWM频率:约300-700Hz(我没有计算或测量过,只是试验显示效果足够好)调节级数:共600级,相当平滑编译后的HEX文件:687241197859316.rarHEX代码::0D009300E4FEEEC39F50060000000E80F555:0100A000223D:06005F00A9078D828C83CD:10006500E4FDE96008C292FF120093D292E5824551:10007500836009C291AF82120093D291EB4A600965:0D008500C290AF03120093D2900DBD0AD5BA:010********B:100003007508C8E4F509F50AE5086008E50A70040F:1000130015080509E5096008E50870041509050ACE:10002300E50A6008E5097004150A0508E5082509CD:10003300FFE433FE7C00EF250AFFEC3EFEEF64C8CD:100043004E60087508C8E4F509F50AE509FD7C006A:0C005300E50AFB7A00AF0812005F80ACE9:030000000200A15A:0C00A100787FE4F6D8FD75810A020003A8:00000001FFC语言源程序:/*******************************程序名称:七彩LED渐变程序编写者:ZH YUMCU:51/2051晶振:12MHz*********************************/ #include#includesbit gl=P1^2; //绿色sbit rl=P1^1; //红sbit bl=P1^0; //兰timer(unsigned char t){unsigned char b;for(b=0;b{_nop_();_nop_();_nop_();}}LEDout(unsigned char g,r,b){unsigned char a;for(a=0;a<10;a++){if(g!=0){gl=0;timer(g);gl=1;}if(r!=0){rl=0;timer(r);rl=1;}if(b!=0){bl=0;timer(b);bl=1;}}}main(){ unsigned char g,r,b;g=200;r=0;b=0;while(1){if(g!=0&&b==0){g--;r++;}if(r!=0&&g==0){r--;b++;}if(b!=0&&r==0){b--;g++;}if(g+r+b!=200){g=200;r=0;b=0;}LEDout(g,r,b);}}入无法下载HEX,大家可以用KEIL自己编译,或者使用记事本保存HEX代码(重命名为.HEX 文件)都可以再把.hex文件写入单片机,接好电路即可工作自己做的LED渐变灯(使用三极管8550驱动)及部分效果图:。
[摘要]当今社会,广告宣传已经成了人们生活中随处可见并重要的一部分。
广告的媒介除了我们常见的报纸、书刊、电台和网络之外,更常见的就是LED点阵广告屏。
这种屏幕具有经济实惠、对环境要求小、节省能源、亮度高、直观等特点,成为了现在常见的一道风景。
不管是大公司的外景宣传,还是小门店的产品介绍,LED点阵屏随处可见。
彩色点阵屏已经渐渐取代了露天的大荧幕,成为常见的广告宣传手段。
与此同时,巨大的信息量和美观性也为丰富人们的日常生活、点缀城市起到了至关重要的作用。
本设计便为基于C52单片机的简单LED点阵显示屏,通过C52控制行列芯片进行动态扫描,显示规定的汉字或者图形。
也可以通过对C52内部烧录改变所需显示的内容。
该设计具有可扩展性,可以扩充LED点阵屏幕的数量来同时显示更多的汉字。
[关键词] 单片机;LED点阵屏;信息显示;广告Abstract: Nowaday's society, advertising has became ubiquitous in people's lives and the important part. In addition to our common advertising media newspapers, books, radio and online, the more common is the LED dot matrix screen advertising. This screen has an economic benefit, environmental requirements of small, energy saving, high brightness, visual characteristics, a common landscape now. Regardless of the location of large companies is publicity, or small stores Products, LED dot matrix display everywhere. Color dot matrix display has gradually replaced the open-air big screen, a common means of advertising. At the same time, we can add more LED dot matrixes to display more informations.Key words:SCM;LED dot matrix display;Information display;Advertisement目录1 绪论 (1)1.1 本课题的研究意义及必要性 (1)1.2 LED的现状和发展趋势 (1)2 硬件总体设计 (3)2.1 主要设计框图及思路 (3)2.2 所需要芯片及各芯片功能介绍 (3)2.2.1各主要芯片简单介绍 (3)2.3 各模块电路图设计及原理 (7)2.4 系统的软件设计 (8)2.4.1 Keil.uVERSION、protues介绍 (8)2.4.2 动态扫描及取字库原理 (8)图2.12 程序流程图 (9)3 详细设计 (10)3.1 电路详细设计 (10)4 程序实现 (14)4.1 主要显示程序原理及实现 (14)4.1.1动态行扫描程序框图 (14)4.1.2实现显示内容的左滚动原理 (15)4.1.3单片机延时子程序 (18)5 设计结果测试 (20)5.1 Proteus和Keil仿真结果 (20)结束语 (21)致谢 (22)参考文献 (23)附录A 部分代码 (24)附录B 总电路图 (29)1 绪论1.1 本课题的研究意义及必要性单片机是一种集成微处理芯片,高密度集成了普通计算机的微型处理器,具有8kB的ROM和P0、P1、P2、P3输入输出接口,且集成了定时器等电路。
可编辑修改精选全文完整版基于C51单片机的智能台灯的设计与实现摘要:本文简要论述了本次课题智能台灯的背景意义及台灯的发展历程,着重论述了以一款STC12为控制核心,选用ESP8266wifi模块为无线传输方式,设计并制作的一款新型只能台灯。
该款智能台灯系统独特的设计了两种不同的工作方式。
模式一:本地模式,通过红外感应是否有人靠近,光线感应模块感应环境光亮度,当有人靠近时打开台灯,并根据环境光调节亮度;模式二:远程控制模式,通过ESP8266作为wifi信号传输工具,在利用手机上的上位机实现台灯的远程操作,包括打开关闭台灯以及亮度控制,其亮度利用单片机的PWM输出进行调节实现。
通过测试可知,这款新型智能台灯能够实现预定功能。
具有响应速度快,便携、节能等优点,在智能家居领域具有很大的应用价值。
关键词:台灯;STC12;亮度;红外;wifi;Title:Design of intelligent desk lamp based on 51 single chipmicrocomputerAbstract: This paper briefly discusses the background meaning of the smart table lamp and the development history of the table lamp, focusing on the STC12 as the control core.the selection of ESP8266wifi module as the wireless transmission mode, the design and production of a new only table lamp.The smart desk lamp system is uniquely designed to work in two different ways.Mode 1: in the local mode, the light sensor module can sense the ambient brightness by infrared sensing whether someone is near, turn on the lamp when someone is near, and adjust the brightness according to the ambient light;Mode 2: remote control mode, ESP8266 as a wifi signal transmission tool, the use of mobile phone on the upper computer to achieve the remote operation of the table lamp, including turning on and off the table lamp and brightness control, the brightness of the use ofMCU PWM output to adjust the realization.Tests show that this new smart desk lamp can perform the intended function.With the advantages of quick response, portability and energy saving, it has great application value in the field of smart home.Keywords: Desk lamp;STC12;Brightness;Infrared;Wifi;目录摘要 (1)ABSTRACT (1)1 绪论 (2)1.1课题研究背景 (3)1.2智能台灯的优势 (3)1.3课题研究目标及本文主要内容 (4)2 系统总体设计方案 (4)2.1总体设计方案 (5)2.2模块选型 (5)2.2.1 单片机主控 (5)2.2.2 ESP8266 WIFI模块 (8)2.2.3 人体红外感应模块HC-SR501 (9)2.3软件开发平台 (10)3硬件电路实现 (11)3.1单片机最小系统 (11)3.1.1复位电路 (11)3.1.2时钟振荡电路 (11)3.2WIFI模块及电源电路 (12)3.3HC-SR501人体红外感应电路 (12)3.4环境光检测模块 (13)3.5LED驱动电路 (13)4 程序设计 (14)4.1主程序流程图 (14)4.2本地操作模式 (14)4.3远程操作模式 (15)4.4PWM输出 (16)5 实物调试 (18)6 结语 (19)附录1 (19)1 绪论1.1 课题研究背景在如今高速发展的科技生活及社会中,各式各样的产品都普遍科技化、很多越来越智能化的家具及电器进入人们生活,这样的高科技发展的前提下人们的工作效率得到非常大的提高、人们的生活也被改善,智能化的生活是人类追求的理想生活,所以这也是科技社会发展的一个趋势。
基于51单⽚机的流⽔灯设计基于51单⽚机的流⽔灯设计⼀.基本功能利⽤AT89c51作为主控器组成⼀个LED流⽔灯系统,实现8个LED 灯的左、右循环显⽰。
⼆.硬件设计图1.总设计图1.单⽚机最⼩系统1.1选⽤AT89C51的引脚功能图2. AT89C51XTAL1:单芯⽚系统时钟的反向放⼤器输⼊端。
XTAL2:系统时钟的反向放⼤器输出端,⼀般在设计上只要在XTAL1和XTAL2上接上⼀只⽯英震荡晶体系统就可以⼯作了,此外可以在两引脚与地之间加⼊20PF的⼩电容,可以使系统更稳定,避免噪⾳⼲扰⽽死机。
RESET:重置引脚,⾼电平动作,当要对晶体重置时,只要对此引脚电平提升⾄⾼电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。
P3:端⼝3是具有内部提升电路的双向I/O端⼝,通过控制各个端⼝的⾼低电平了实现LED流⽔灯的控制。
1.2复位电路如图所⽰,当按下按键时,就能完成整个系统的复位,使得程序从新运⾏。
图3.复位电路1.3时钟电路时钟电路⽤于产⽣单⽚机⼯作所需要的时钟信号,单⽚机本⾝就是⼀个复杂的同步时序电路,为了保证同步⼯作⽅式的实现,电路应在唯⼀的时钟信号控制下严格地按时序进⾏⼯作。
在AT89C51芯⽚内部有⼀个⾼增益反相放⼤器,其输⼊端为芯⽚引脚X1,输出端为引脚X2,在芯⽚的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了⼀个稳定的⾃激振荡器。
此电路采⽤12MHz的⽯英晶体。
图4.时钟电路2.流⽔灯部分图5.流⽔灯电路三.软件设计3.1编程语⾔及编程软件的选择本设计选择C语⾔作为编程语⾔。
C语⾔虽然执⾏效率没有汇编语⾔⾼,但语⾔简洁,使⽤⽅便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计⾃由度⼤,有很好的可重⽤性,可移植性等特点。
⽽汇编语⾔使⽤起来并没有这么⽅便。
本设计选⽤了Keil作为编程软件,.Keil C51⽣成的⽬标代码效率⾮常之⾼,多数语句⽣成的汇编代码很紧凑,容易理解。
辽宁工业大学继续教育学院毕设用纸基于AT89C51单片机的LED彩灯控制器设计摘要介绍了一种新型的LED彩灯控制系统的设计方法,以AT-89C51单片机作为主控核心,与按键、显示器等较少的辅助硬件电路相结合,利用软件实现对LED彩灯进行控制。
本系统具有体积小、硬件少、电路结构简单及容易操作等优点。
关键词:LED彩灯 AT89C51单片机彩灯控制器模块设计辽宁工业大学继续教育学院毕设用纸目录中文摘要 (Ⅰ)第一章引言 (1)第二章 LED简介 (2)2.1 LED的特点 (2)2.2 LED的应用领域 (3)第三章系统功能 (4)第四章硬件设计 (6)4.1主控模块电路设计 (6)4.2管内LED板模块设计 (6)第五章软件设计 (8)结束语 (11)参考文献 (12)第一章引言随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
本文提出了一种基于AT89C51单片机的彩灯控制方案,实现对LED 彩灯的控制。
本方案以AT89C51单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。
在主控模块上设有8个按键和5位七段码LED显示器,根据用户需要可以编写若干种亮灯模式,利用其内部定时器T0实现一个基本单位时间为5 ms的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。
摘要LED台灯作为LED绿色照明光源产品,作为国家绿色照明推广使用的产品。
在实际的应用中,发现LED灯在周边亮度大时依然以同一功率发光,存在电能浪费;在周边亮度小时LED灯不能提供足够和恰当的光度。
本文介绍了以STC89C51为控制核心,通过光敏电阻感应光度,并利用PWM调光技术对LED进行光度的自动调节。
同时设置手动控制。
该LED台灯电路简单,很大程度上节省电能,延长LED灯寿命,适宜阅读.关键词LED台灯光度 PID PWM调光自动调节原创性声明本设计所用到的程序代码和电路均是来自本团队,如没有经过允许,不得复制和转载。
目录前言 (4)总体方案设计 (5)硬件设计 (5)软件设计 (9)总结 (12)附录1:作品照片 (13)附录2:程序 (15)前言LED照明又称固态照明,作为继白炽灯、荧光灯后的第三代照明技术,具有节能、环保、安全可靠的特点,固态光源是被业界看好的未来十年替换传统照明器具极具潜力的新型光源,代表照明技术的未来。
发展新固态照明,不仅是照明领域的革命,而且符合当前政府提出的“建设资源节约型和环境友好型社会”的要求。
LED台灯就是以LED(Light Emitting Diode)即发光二极管为光源的台灯,LED是一种固态的半导体器件,它可以直接把电转化为光.LED台灯是典型的绿色照明光源产品,作为国家绿色照明推广使用的产品,具有广阔的应用前景。
在实际的应用中,发现LED灯在周边亮度大时依然以同一功率发光,存在电能浪费。
另外一方面,因为LED的发热量和电流存在正相关的关系,发热影响了LED的寿命,所以在不必要的亮度下也减少了LED的寿命.然而,当LED在周边亮度小时,LED灯不能提供足够和恰当的光度,这样又影响了阅读,造成视觉疲劳。
PWM方法的基本思想就是利用单片机具有的PWM端口,在不改变PWM方波周期的前提下,通过软件的方法调整单片机的PWM控制寄存器来调整PWM的占空比,从而控制充电电流.本方法所要求的单片机必须具有ADC端口和PWM端口这两个必须条件,另外ADC的位数尽量高,单片机的工作速度尽量快。
摘要目前市场上的LED台灯,作为LED的绿色护眼光源产品而进行开发和研究,还是作为我国的照明推广家用型产品。
随着时代的变迁,社会的发展,节能和环保这一主题已经是当今社会必要发展的目标了、健康与人们的日常生活变得密不可分,科技的进步,也使家电更加智能化和人性化。
台灯作为家电中基础的,也是必不可少的,所以,提出PWM调光灯设计。
本设计主要是将STC89C51RC单片机作为控制核心,这是将多种功能集于一体的智能LED台灯。
该台灯具有手动、自动两种调节亮度的方式;主要的产品功能有呼吸模式、红外遥控操作等等。
硬件的设计部分为单片机控制模块、按键控制模块、照明显示模块、光敏感应模块、LED灯指示报警模块、远程遥控模块等组成。
单片机主要控制芯片型号选用STC89C51RC,LED指示报警模块选择三种颜色不同的LED指示灯来显示三种不同的工作模式,通过按键控制模块进行调整和控制工作模式和LED亮度程度,照明模块选用草帽型12白光LED,光敏感应模块采用可以对光敏信号的采集芯片ADC0832,并利用PWM调光技术对LED进行光度的自动调节。
可以通过红外遥控远距离无线遥控,通过单片机C语言编程进行软件设计,将所需的设计要求全部可以进行功能的控制。
关键词LED台灯光度PWM调光自动调节AbstractLED lamp as LED green lighting products, as the country to promote the use of green lighting products. With the development of the times,energy saving and environmental protection, health and the peopledaily life are inseparable, the progress of science and technology,also makes home appliances more intelligent and humanized. The lamp as home appliances based, so is also essential,, put forward PWM dimming the lights design.The design is based on STC89C51RC SCM as control core and multi functions in one of the intelligent LED lamp. The table lamp realizes the brightness with manual, automatic two types of regulation;respiratory mode function, but also has the function of infrared remote control. The design of the hardware part consists of MCU controlmodule, keyboard module, lighting module, photosensitive module,LED module, remote control module instruction. The MCU main control chip STC89C51RC, LED indicating module with three kinds ofdifferent colors of small LED to indicate different working modes,brightness through the key module to adjust the working mode and the LED lighting module, using 12 straw hat type white LED,photosensitive module uses ADC0832 chip implementation of a signal acquisition, automatic regulation and luminosity of LED using PWM dimming technology. Through the infrared remote control, wireless remote control, software design of the MCU C language programming,integrated control functions are realized by.Key wordLED lamp dimming automatically adjust luminosity of PWM目录第1章绪论 (5)1.1 课题研究背景 (5)1.2 系统方案的提出 (5)1.2.1 LED优势 (5)1.2.2 方案简述 (6)第2章系统方案的选择 (7)2.1 控制芯片的选择方案 (7)2.1.1 STC89C51RC (7)2.1.2 A VR单片机 (7)2.1.3 FPGA (8)2.1.4 主控制芯片的确定 (8)2.2 照明模块的选择 (8)2.2.1 三极管驱动 (8)2.2.2 PWM芯片控制 (9)2.2.3 照明方案的确定 (10)第3章硬件设计 (10)3.1 单片机STC89C51芯片简介 (10)3.2 LED驱动电路 (14)3.3 按键控制电路 (17)3.4 LED指示电路 (18)3.5自动控制电路 (18)3.5.1 光敏电路 (18)3.5.2 ADC0832模数转换 (19)第4章软件设计 (20)4.1 Keil C51 (20)4.2 Protel99SE (21)4.3 程序流程图 (22)第5章调试 (24)5.1 硬件调试 (24)5.2 软件调试 (24)第6章总结 (25)参考文献 (26)附录一:protel99se 原理图 (27)附录二:源程序 (28)前言LED照明又称固态照明,作为继白炽灯、荧光灯后的第三代照明技术,具有节能、环保、安全可靠的特点,固态显示光源是照明领域里面比较看好的发展产业,在未来十年中将传统的照明工具替换,是代表照明技术的未来。
C51单片机控制LED灯设计方案C51单片机是一种8位单片机,被广泛应用于嵌入式系统和各种控制设备中。
LED灯是一种常见的电子显示器件,可以通过控制单片机的输入输出口来实现各种灯光效果。
以下是一个基本的C51单片机控制LED灯的设计方案。
1.设计硬件电路首先,我们需要设计一个合适的硬件电路来连接单片机和LED灯。
一个简单的电路包括单片机、电流限制电阻和LED灯。
单片机的输出端口与LED灯正极相连,电阻连接在LED灯的负极,此电阻一般选择220欧姆以限制电流。
2.编写程序使用Keil C51开发环境编写程序,通过编程来控制单片机的输出口,从而控制LED灯的亮灭。
首先,需要包含头文件reg51.h,该头文件包含了控制单片机输入输出口的相关函数。
接着,需要定义LED灯的连接引脚。
例如,如果LED灯连接到单片机的P1.0引脚,可以使用以下命令定义:sbit LED = P1^0;在主程序中,我们可以使用循环语句来实现LED灯的不同亮灭效果。
例如,以下代码实现了一个LED灯闪烁的效果:#include <reg51.h>sbit LED = P1^0;unsigned int i, j;for(j=0;j<1275;j++);void mainwhile(1)LED=0;//亮灯delay(1000); //延时LED=1;//灭灯delay(1000); //延时}在以上代码中,LED = 0;表示将P1.0引脚输出低电平,亮起LED灯;LED = 1;表示将P1.0引脚输出高电平,灭掉LED灯。
delay函数用于延时一段时间,以控制LED灯的闪烁频率。
3.烧录程序完成程序编写后,将C51单片机与计算机通过编程器连接,并使用烧录软件将程序烧录到单片机内部存储器中。
4.运行程序烧录完成后,将单片机与电路连接,并将电路供电。
LED灯应该开始闪烁起来,效果如设计所期望。
以上是一个基本的C51单片机控制LED灯的设计方案。
用单片机控制一个LED摘要:本文介绍了如何使用单片机来控制LED,并实现不同亮度的灯光效果。
首先,介绍了单片机的基本概念和控制电路的组成要素。
然后,分析了LED的工作原理和控制方法。
最后,通过实验验证了单片机控制LED的可行性和应用价值。
关键词:单片机,LED,控制电路,亮度调节正文:一、引言LED作为一种新型的光源,以其高效、低耗、寿命长等优点,得到了广泛应用。
而单片机作为一种微型电子系统,在控制电路中的应用也越来越广泛。
本文旨在介绍如何使用单片机来控制LED,并实现不同亮度的灯光效果。
二、单片机控制电路的基本组成要素单片机控制电路一般由单片机、外部存储器、输入输出接口、时钟电路和电源等组成要素构成。
其中,单片机是控制电路的核心部件,负责实现对各种输入输出设备的控制。
外部存储器则用于存储程序和数据,输入输出接口则负责控制单片机和外部设备之间的数据传输,时钟电路则提供单片机的时钟信号,电源则保证整个控制电路的正常工作。
三、LED的工作原理和控制方法LED,即发光二极管,它是一种半导体元件,通过在其PN结上加正向电压,使其发光。
LED一般分为彩色和单色两种,其中,单色LED只能发射单一颜色的光,而彩色LED则可以发射多种不同颜色的光。
控制LED的亮度一般有两种方法,一种是改变其工作电压,另一种则是改变其工作电流。
在单片机控制LED时,通常采用后一种方法,即通过改变LED所接的电流大小来实现亮度的调节。
四、实验验证为了验证单片机控制LED的可行性和应用价值,我们进行了一组实验。
具体步骤如下:1.将三个LED分别连接到单片机的PD0、PD1、PD2引脚上,并通过限流电阻限制电流大小。
2.使用Keil C51编译器编写程序,通过PWM方式来实现对LED亮度的调节。
3.将编译好的程序下载到单片机中,并将单片机连接到电源和电脑。
4.启动程序,通过电脑上的串口发送不同的调光命令,来实现对LED亮度的不同调节。
51单片机彩灯控制器的设计原题要求如下:1.用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭);2.可以用输入按钮在几种灯光效果间切换;3.可以通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后继续之前的效果;4.增加自动在几种效果间切换的功能,并设置一个按钮可以在自动模式和手动模式间切换;5.使用定时中断延时。
最终作品如下:一共有十钟灯光效果,分别是:顺时针流水灯、逆时针流水灯、交替闪烁、顺时针对角灯、逆时针对角灯、顺时针逐个点亮、顺时针逐个熄灭、逆时针逐个点亮、逆时针逐个熄灭、二进制加法。
程序代码如下:模块名称:51单片机彩灯控制器模块功能:实现十种循环彩灯控制编写日期:2016/12/18****#include<reg51.h># definefalse0# definetrue1# defineucharunsignedchar# defineuintunsignedintsbitpause_key=P3八0;〃暂停按钮sbitauto_key=P3八1;〃手动模式的效果切换sbitchange_key=P3八2;//手动模式效果切换sbitpauseLed=P3八6;〃暂停、启动指示灯sbitautoLed=P3";〃自动、手动模式指示灯intledCode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//led 段码(单个显示) intledCode2[8]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//led 段码(半显示半灭) intdisCode[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//数码管段码0~9voiddisplayLed(void);〃显示led 的主函数voidkeyScan(void);//键盘扫描处理函数 voidDelay10ms(unsignedintn);〃延时10msbitisPause=false;//是否暂停bitisAuto =true;//是否自动运行bitisChange =false;//是否要切换下一个效果uchartime;〃计时满0.5suchartypes;//第几种灯光显示方案uintcounts;//灯光的第几个:T0_INT:T0定时器中断函数 :无 :无 voidT0_INT(void)interrupt1{TL0=(65536-50000)/256;* 函数名* 函数功能* 输入* 输出while(1)TH0=(65536-50000)%256;time++;if(time>=10)〃定时时间:0.5s{time=0;if(isChange ==true)//可以变换下一种显示效果了{counts=0;types++;//显示下一种效果if(types>9)types=0;P0=disCode[types];//更新数码管显示isChange=false;}displayLed();counts++;* 函数名* 函数功能* 输入* 输出voidmain(void){ TMOD=0x61;//01100001//方式一TL0=(65536-50000)/256;//50msTH0=(65536-50000)%256;TR0=1;〃开启T0ET0=1;//T0中断允许EA=1;//总中断开启time=0;〃定时器时间扩种(0.5s)counts =0;//灯光的第几次types =0;//灯光显示模式pauseLed=0;//暂停指示灯灭P0=disCode[types];//更新数码管显示:main :主函数 :无 :无keyScan();//键盘扫描及处理voidkeyScan(void){if(pause_key==0)//按下了暂停按钮{Delay10ms(1);if(pause_key==0){isPause=~isPause;pauseLed=isPause;if(isPause==true){日0二0;〃关闭T0中断P0=0xfd;//数码管显示“-”P1=0x00;//所有的灯都亮起来P2=0x00;}else{ET0=1;//T0中断允许P0=disCode[types];//更新数码管显示displayLed();}while(pause_key==0);//防止按键重复检测}}if(auto_key ==0)//自动、手动切换按键按下{Delay10ms(1);if(auto_key==0){isAuto=~isAuto;autoLed=isAuto;}while(auto_key==0);//防止按键重复检测* 函数名 * 函数功能* 输入* 输出:keyScan:键盘扫描处理 :无 :无}if(change_key ==0&&isAuto ==false)//手动模式,并且效果切换按下{Delay10ms(1);if(change_key==0){isChange=true;}while(change_key==0);//防止按键重复检测}}:displayLed:显示led 灯 :(全局变量)types :显示效果;counts:当前效果下的第几次 :无 voiddisplayLed(void){ switch(types){case0://顺时针旋转led 灯{if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts<8){P1=0xff;P2=ledCode[7-counts];}else{P1=ledCode[15-counts];P2=0xff;}break;}case1://逆时针旋转LED 灯if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts<8){函数名函数功能输入输出P1=ledCode[counts];P2=0xff;}else{P1=0xff;P2=ledCode[counts-8];}break;}case 2://交叉替换{if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts%2==0)//偶数{P1=0xaa;P2=0xaa;}else{P1=0x55;P2=0x55;}break;}case 3://对角顺时针{if(counts>=8)counts=0;if(counts>=7){if(isAuto==true)isChange=true;}P1=ledCode[7-counts];P2=ledCode[7-counts];break;}case 4://对角逆时针{if(counts>=8)counts=0;if(counts>=7){if(isAuto==true)isChange=true;}P1=ledCode[counts];P2=ledCode[counts];break;}case 5://顺时针逐个点亮{if(counts>=17)counts=0;if(counts<8){P1=~ledCode2[7-counts];P2=0xff;}elseif(counts<16){P1=0x00;P2=~ledCode2[15-counts];}else//全亮{P1=0x00;P2=0x00;if(isAuto==true)isChange=true;}break;}case 6://顺时针逐个又灭掉{if(counts>=17)counts=0;if(counts<8){P1=ledCode2[7-counts];P2=0x00;}elseif(counts<16){P1=0xff;P2=ledCode2[15-counts];}else//全灭{P1=0xff;P2=0xff;if(isAuto==true)isChange=true;}break;}case 7://逆时针逐个点亮{if(counts>=17)counts=0;if(counts<8){P1=0xff;P2=ledCode2[counts];}elseif(counts<16){P1=ledCode2[counts-7];P2=0x00;}else//全亮{P1=0x00;P2=0x00;if(isAuto==true)isChange=true;}break;}case 8://逆时针逐个灭掉{if(counts>=17)counts=0;if(counts<8){P1=0x00;/* *P2=~ledCode2[counts];}elseif(counts<16){P1=~ledCode2[counts-7];P2=0xff;}else//全亮{P1=0xff;P2=0xff;if(isAuto==true)isChange=true;}break;}case9://二进制加法{if(counts>=255)counts=0;if(counts==254&&isAuto==true)isChange=true;P1=~counts;P2=~counts;break;}default:types=0;P0=disCode[types]; //更新数码管显示函数名函数功能输入输出:Delay10ms(多个):延时函数,延时n*10ms :n-延时次数:无voidDelay10ms(unsignedintn){ unsignedchara,b;for(;n>0;n--){for(b=38;b>0;b-)(for(a=l30;a>0;a-);)))完整prot㊀us仿真图如下:HJ nwrwjMlI.H£>1ra_JLWD3E.4^gEJ5WTrn加RM PD*卬PlOMfi:P2tgPi l^Ki k?Awnr::±M-I3riA*.<A叼才FLIEM■=:1--■rj T J I HT TP3.4HQF31TI1F%弱斫阳丁敬。
基于C51单片机和PWM调光的LED台灯设计LED台灯是一种节能环保的照明产品,具有调光功能可以根据需要调节亮度。
本文将以C51单片机为核心,结合PWM调光技术设计一款LED台灯。
1.系统设计本设计的LED台灯由C51单片机、三极管、电阻、电容、可变电阻和LED灯组成。
C51单片机作为控制器,通过PWM调整LED的亮度。
三极管起到放大电流的作用,电阻和电容用于稳压滤波,可变电阻用于调节亮度。
2.硬件设计(1)电源电路LED台灯的电源电路由变压器、整流电路和稳压滤波电路组成。
变压器将220V交流电转换为合适的低压交流电,整流电路将交流电转换为直流电,稳压滤波电路将输出的直流电进行稳压和滤波。
(2)控制电路C51单片机作为控制器,需要将其正常工作电压5V进行稳定和滤波,因此在其供电端接入电容和电阻以实现稳定电压。
三极管通过放大电流的方式驱动LED。
(3)亮度调节电路可变电阻与PWM信号相连,通过调节可变电阻的阻值来改变PWM信号的占空比,进而改变LED的亮度。
3.软件设计(1)初始化设置初始化IO口,设置PWM输出引脚。
设置定时器和定时器中断,设定一个较小的时间间隔,用于产生PWM信号。
(2)PWM生成使用定时器中断来产生PWM信号。
通过改变定时器中断产生的时间间隔,可以改变PWM信号的占空比。
占空比越大,LED越亮;占空比越小,LED越暗。
(3)亮度调节利用ADC模块读取可变电阻的电压值,将其转换为具体的阻值。
根据阻值计算出对应的占空比,通过改变定时器中断的时间间隔来调整PWM信号的占空比,从而改变LED的亮度。
4.结果验证将C51单片机烧录好的程序与硬件连接,通过调节可变电阻,LED的亮度可以自由调节。
5.总结本设计利用C51单片机和PWM调光技术实现了LED台灯的设计,通过调节PWM信号的占空比来改变LED的亮度,实现了灯光的调光功能。
这种设计具有低功耗、节能环保的特点,在实际应用中有很大的潜力。