您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单片机课程设计-触控调光灯
绪论随着经济发展的加快,科学技术的进步,人们生活水平得到了提高,设备逐渐完善。台灯是生活中的伴侣,我们是不喜欢与强烈的光线打交道的,因为强光对人身体是有害的,为了大家能健康地生活与工作,设计师也想出了一个较为完美的构思,就是台灯的出现,它的出现让很多朋友们得到了满意的效果,但是生活中没有完美的东西,台灯亦不例外,这就需要我们的改进。例如,很多时候我们并不需要让台灯处于全亮状态,有时候我们只需要微弱的光照即可,过强的光线反而会对使用者造成不必要的干扰,而且这也是对电能的一大浪费。此外,关于开关的使用寿命,也是影响台灯的耐用性的另一个问题。因此,本设计的指导思想就是让台灯更耐用、更好用且能够调节亮度,解决过高的亮度对使用者的干扰同时也是为了节能,以及解决普通机械开关易损坏的问题。对于触模式台灯,手一触到台灯的感应部位灯就会自动亮,如果多触摸几下,台灯就会达到最亮的极限,这样就可以调节了台灯的亮度也避免了开关易坏导致的调节亮度易失灵的问题。本文介绍了触摸式台灯调光电路的设计及工作过程。本设计目的是通过设计工作熟悉触摸式调光灯电路基本构成与基本工作原理,并能将这些技术应用实际系统设计,提高自己对电路知识的认识。一、系统工作原理本设计采用STC公司的12系列单片机为控制芯片,配合外围电路进行对触摸按键的检测及对台灯亮度和开关的控制,利用单片机产生不同占空比的PWM方波实现对灯光的亮暗控制。此外,本设计的触控功能的实现则是利用单片机的I/O口的开漏模式且未加上拉电阻,在此模式下I/O更容易接受外界微弱的电平,更容易受到手指的干扰。本设计中,在被设置成开漏的I/O口要在单片机读该口前将其置1,使其成为高阻状态,当I/O接口被设置到高阻输入状态时,I/O接口就是纯电平输入状态,在接口悬空时为低电平,当有手指触摸到I/O接口时,手指上的微弱电流会使I/O接口跳变到高电平,只要读出I/O接口的电平高低就可以了解是否有触摸操作,然后加一段按键去抖程序后去调整与PWM占空比相关的数值,从而实现灯光亮度的连续可调。二、系统硬件组成本设计中所采用的芯片有STC公司的小型封装插件式单片机STC12C2052AD、AMS11175.0降压稳压IC、以及若干二极管、三极管,电阻电容等元器件。其中:2.1控制部分STC12C2052AD单片机的引脚位置与用途如图2-1所示:图2-1STC12C2050AD引脚图STC12C2052AD系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成复位电路其优点有以下几个方面:1.性价比高采用STC12系列单片机可以省掉复位电路、外部数据存储器(如24Cxx系列芯片),某些场合还可以省掉晶振,电路简单、价格低廉。2.速度快STC12系列单片机为单时钟/机器周期(1T),一些指令执行速度是传统8051的24倍,最低的也是3倍。3.安全性好目前,很难破译STC12系列单片机加密程序,加之用户数据可以保存到单片机内部,解密者很难通过用户数据分析单片机的运行状况。4.可以直接代替8051针对传统8051单片机开发的程序,可以直接用于STC12系列单片机,无须重新编写。在本设计中,单片机的I/O口的P3.4、P3.5、P3.7均在程序中设定为开漏模式,以连接外部触摸板来分别实现对灯光的关闭、渐亮、渐暗的控制。单片机的P1.7口被程序设定为PWM方波输出口,用来连接驱动灯光的驱动部分。图2-2为本设计控制部分的原理图:图2-2控制部分原理图由于此次设计采用8V电压供电,为安全起见,单片机的输出端和接地端均与后面的驱动部分用二极管1N4148进行单向隔离,此外,本设计还预留了程序下载接口,方便日后功能的增强和对程序的调试。2.2驱动部分驱动部分我采取的是用NPN型功率三极管13003级联搭建成的达林顿驱动器,以实现对较大电流负载的驱动控制。由于所使用的LED灯头内无限流电阻,且实测其全亮发光时电流高达0.5A,为防止电流过大所引起的三极管过热烧毁,因此在其负载回路串接了10Ω2.5W的限流电阻,以牺牲较小的光照强度来换取元件的安全。图2-3为驱动电路及LED接口的原理图:图2-3驱动电路与LED接口其中三极管13003为NPN型硅晶体管、功率开关三极管,主要用于:日光灯、电子镇流器、充电器等高压功率开关电路。其参数为:(TO-92封装)1.芯片面积:1.63×1.63(特制芯片)2.额定电流:1.5A(加大电流品种)3.饱和压降低、热性能好、反向击穿电压高、漏电流小。4.13003最大额定值如表2-1:表2-1三极管13003最大额定值因此,用三极管13003来搭建驱动电路能为负载提供足够的电流,能使LED发出足够的光照强度供照明使用。2.3电源部分本设计之初经试验发现若用单节18650锂电池供电,虽然也能正常工作(即触控调光可用),但由于三极管等驱动部分电路存在较大电压降,导致即使控制状态为全亮,但实际的照明亮度却很低。后经试验发现采取两节18650串联成8V供电后LED及驱动部分均能正常工作(单节18650锂电池满电状态下实测电压在4.1V左右),单片机部分则用降压稳压芯片AMS1117供电,两路不同电压电路再采取适当隔离后,整个控制驱动板即能正常工作。其供电、降压以及电源指示电路如图2-4所示:图2-4电源及指示部分原理图其中:AMS1117是一个正向低压降稳压器,在1A电流下压降为1.2V。AMS1117有两个版本:固定输出版本和可调版本,固定输出电压为1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V,具有1%的精度;固定输出电压为1.2V的精度为2%,其内部集成过热保护和限流电路,是电池供电和便携式计算机的最佳选择。AMS1117参数如下:1.输入电压最大:18V2.输出电流最大:1A3.输出电压:5.0V4.功耗:5W5.输入电压最小:6.2V6.封装类型:SOT-223,SOT-897.工作温度范围:-20°Cto+125°C(也有0°Cto+125°C)由于本设计采取电池纯直流供电,所以可以省去AMS1117周围的滤波电容等元件及其电路连线,让整个控制板更小巧,以便能顺利装入空间不大的台灯底座,经实测,降压稳压芯片AMS1117能正常稳定工作。三、系统软件设计系统的软件部分分为按键检测部分和PWM方波生成部分。其中,系统的软件流程图如图3-1所示:3.1系统流程图图3-1系统软件流程图STC12C2052AD系列单片机所有I/O口均可由软件配置成4种类型之一,如表3-1所示。4种类型分别为:准双向口(标准8051输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。每个口配置2个控制寄存器控制每个引脚输出类型。STC12C2052AD系列单片机上电复位后为准双向口(标准8051输出模式)模式。其中P3口设定(P3.7,X,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0,无P3.6口)如下表:表3-1STC12C2052ADI/O口配置方式在本设计中P3口的配置为P3M0=0xb0;P3M1=0xb0;即:P3.5,P3.4,P3.7为开漏输入,其余为普通双向I/O口3.2系统程序/****************************************************************文件名:LED调光修改调试:@春阳最后修改:2015.11.17功能:触控调光台灯备注:此次设计采用定时器0生成PWM信号,另外,stc12系列头文件,type.h则在本主程序下方****************************************************************/#includestc12c5a.h//stc12系列单片机总头文件,其包含各I/O口位定义#includetype.h//见文档末尾#defineFRE22118400#defineTIME_FRE10000000//计时1/10000000=0.0000001s=0.0001ms(此时间是用来加快LED闪烁频率)#defineT0RELOAD(65536-(FRE/TIME_FRE))/****************初始化变量**************************/volatileU32SYS_TIME=0;volatileU32LED_PWM=0;/********************************************************************函数名:毫秒级CPU延时函数调用:delay(?);参数:1~65535(参数不可为0)返回值:无结果:占用CPU方式延时与参数数值相同的毫秒时间备注:应用于1T单片机时i600,应用于12T单片机时i125********************************************************************/voiddelay(unsignedinta){unsignedinti;while(--a!=0){for(i=0;i600;i++);}}/********************************************************************函数名:定时器0初始化函数调用:Timer0_Init();参数:无返回值:无结果:设置定时器0工作方式备注:********************************************************************/voidTimer0_Init(){TMOD&=0XF0;TMOD|=0X01;//定时器0的16位计数方式TH0=T0RELOAD/256;TL0=T0RELOAD%256;AUXR|=0X80;//计数器0时钟为Fosc,即1TPT0=1;//定时器0优先级控制位,1为高优先级0为低优先级EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0}/********************************************************************函数名:主函数调用:无参数:无返回值:无结果:程序开始处,无限循环备注:触控调光台灯主程序,包含按键检测及占空比调节********************************************************************/voidmain(){Timer0_Init();P3M0=0xb0;//P3口配置:P3.7,P3.5,P3.4为开漏输入,其余为普通双向I/O口P3M1=0xb0;while(1){P34=1;//p3.4置为开漏高阻态if(P34==1)//KEY1直接关灯键{delay(2);//延时消抖if(P34==1){LED_PWM=0;//熄灭LED}}P35=1;//p3.5置为开漏高阻if(P35==1)//KEY2按键一直按着,LED逐渐变亮{delay(2);//延时消抖if(P35==1){if(LED_PWM100)LED_PWM++;//灯光渐亮}}P37=1;//p3.7置为开漏高阻if(P37==1)//KEY3按键一直按着,LED逐渐变暗{delay(2);//延时消抖if(P37==1){if(LED_PWM0)LED_PWM--;//灯光渐暗}}}}/********************************************************************函数名:T0定时器中断服务程序调用:无参数:无返回值:无结果:提供PWM波输出I/O口的电平翻转备注:********************************************************************/voidTime
本文标题:单片机课程设计-触控调光灯
链接地址:https://www.777doc.com/doc-8553648 .html